用法拉电容从容实现单片机掉电数据保存
公式
Q = I*t;
Q = C*U;
今天,因为MCU内部一般都带FLASH ROM和伴随着法拉级电容的出现,事实上已经宣布背掉电电池或者用达拉斯DS存储器实现掉电数据保存的传统的思维和电路已经成为历史!
以下的电路,是一个可靠的简单的掉电检测、法拉电容能量储存等完整硬件电路和相应的软件细节,是笔者在产品上一个成熟的可靠的自诩经典电路和心血,在这里完全公开地提供给二姨爱社(21IC)下的全体表兄表弟表姐表妹们以供大家一起来批判赏析借鉴和改进.
首先提请老表们别一看电路繁琐就不想继续看下去,事实是:大电容储存实现掉电保护并非人们想象的那么容易做.
我们往往突然萌发一个跳跃灵感闪烁一丝思想火花,但最终都没幻化为现实结果而最终不了了之,在我们遗憾叹息之于我们是否思考过常常并不是我们思维"太过创新"需求和愿望大大超越了现实(我们能超越我国的现实的器件工业和材料工业水平吗)最后我们总不得不以理论不完全等同于实践来为自己无奈和熄灭的灵感作排解!其真正原因我们作过真正思考吗?!
事实上一个理论成立,现实上完全具备可实现性的一个电路单元,到最后我们并未达到预想效果,甚至以失败了告终,原因何在??----细节..细节..还是细节...永远的细节!!!!细节为王!!!!!
所以敬请大家耐心地静静地留意这里的每个电路技巧和对细节,事实上你会发现这里每个细节都充满着技巧智慧体贴人性和柔情.每处都让我们感悟了一种做事就是做人和精益求精的思想和行动境界,即使你是表弟表兄级男性电子工程师对你的设计和实现都应具备女性的细腻周到和柔情.
电路见下:这里首先用6V供电(如7806),为什么用6V不用5V是显而易见的.这里的二极管们一般都起两个作用,一是利用单向导电性保证向储能电容0.47F/5.5V单向冲电;二是起钳位作用,钳去0.6V,保证使大多数51系列的单片机都能在4.5V--5.5V之间的标称工作电压下工作.而4.5-5.5间这1V电压在0.47F电容的电荷流失时间就是我们将来在掉电报警后我们可以规划的预警回旋时间.
两只47欧电阻也有两个作用:
1:和47UF和0.01UF电容一起用于加强电源滤波.
2.对单片机供电限流
一般电子工程师都喜欢把单片机电源直接接7805上,这是个非常不好的习惯,为什么?7805可提供高达2A的供电电流,异常时足够把单片机芯片内部烧毁.有这个电阻47欧姆电阻挡即使把芯片插反或者电源极性颠倒也不会烧单片机和三端稳压器,但这限流电阻也不能太大,上限不要超过220欧为益,否则对单片机内部编程时,计算机会告警提示"编程失败"(其实是电源不足).
3.对0.47F/5.5V储能电容,串入的47欧电阻还消除了"巨量法拉电容"的上电浪涌.实现冲电电流削峰。
大家算一算要充满0.47F电容到5.5V,即使用5.5A恒流对0.47F电容冲电,也需要0.47秒才能冲到5.5V,既然知道了这个问题,大家就清楚:
I*t = UC 5.5*t=(5.5)*0.47 t=0.47S
1.如果没有47欧姆电阻限流,上电瞬间三端稳压器必然因强大过电流而进入自保.
2.长达0.47秒(如果真有5.5A恒流充电的话)缓慢上电,如此缓慢的上电速率,将使得以微分(RC电路)为复位电路的51单片机因为上电太慢无法实现上电复位.(其实要充满0.47UF电容常常需要几分钟).
3.正因为上电时间太慢,将无法和今天大多数主流型以在线写入(ISP)类单片机写片上位计算机软件上预留的等待应答时间严重不匹配(一般都不大于500MS),从而造成应答失步,故写片时总是提示"通信失败".
知道这个道理我们就不难理解这个电路最上面的二极管和电阻串联起来就是必须要加上的“上电加速电路”.这里还用了一只(内部空心不带蓝色的)肖特基二极管(1N5819)来从法拉电容向单片机VCC的单向放电,和同时阻断法拉电容对上电加速电路的旁路作用;用肖特基二极管是基于其在小电流下,导通压降只有0.2V左右考虑的,目的是尽量减少法拉电容在掉电时的电压损失.力争获得最留掉点维持时间.
三极管9014和钳位二极管分压电阻垫位电阻(即470欧姆)等一道构成基极发射极双端输入比较器,实现掉电检测和发出最高优先级的掉电中断,这部分电路相当于半只比较器LM393,但电路更简单耗电更省(掉电时耗电小于0.15MA).
47K电阻和470欧姆二极管1N4148一道构成嵌位电路,保证基极电位大约在0.65V左右 (可这样来非常近似地计算0.6(二极管导通电压)+5*0.47/47),这样如果9014发射极电压为0(此时就是外部掉电),三极管9014正好导通,而且因为51单片机P3.2高电平为弱上拉(大约50UA),此时9014一定是导通且在弱电流下是饱和导通的,这样就向单片机内部发出一次最高硬件优先级的INX0掉电中断.
而在平时正常供电时,因发射极上也有大约6*0.22/2.2=0.6V垫位电压在上顶,容易理解三极管9014在此刻一定处于截止状态,而使P3.2维持高电平.
下面还有两个重要软硬件要点和建议提请注意:
1.硬件要点:凡是单片机外部以输出高电平驱动的口线,其电流都不能到单片机的供电电压VCC上去争抢(例如上拉电阻供电不取自单片机VCC而应直接接在电源前方),图中4.7K电阻和口线PX.Y就是一个典型示例,接其它口线PX.Y'和负载也雷同.这里与上拉4.7K电阻相串联二极管也有两个作用:
1.钳去0.6V电压以便与单片机工作电压相匹配,从而防止口线向单片机内部反推电.带来单片机口线功能紊乱.
2.利用二极管单向供电特性,防止掉电后单片机通过口线向电源和外部设备反供电造成电荷泄露.
上面的硬件设计,还要与软件结合起来(见下面叙述)才能保证在掉电期间,不会因法拉电容上的积累电荷向已经掉电的外部电路无谓供电和向电源内部反向供电造成法拉电容上能量泄放从而缩短掉电维持时间.
2.软件要点:首先INX0在硬件上(硬件设计已经保证)是处于最高优先级的,这里还必须要在软件上再次保证INX0是最高优级别的中断.从而确保掉电时外部中断0能打断其他任何进程,最高地优先地被检测和执行到.其次在INX0的中断程序入口,还要用:
MOV P1,#00H
MOV P2,#00H
MOV P3,#00H
MOV P0,#00H
SJMP 掉电保存
来阻断法拉电容的电荷通过单片机口线外泄和随后立即跳转到掉电写入子程序模块.(见硬件要点)
有了上面的预备和细节处理,下面我们完全有理由信心百倍地一道来计算0.47UF的电容从5.5V跌落到4.5V(甚至可以下到3.6V)所能维持的单片机掉电工作时间.
这里设单片机工作电流为20MA(外设驱动电流已经被屏蔽)不难算出:
I*T= UC
T=UC/I=(5.5-4.5)*0.47/0.02= 23.5S
T=1V*0.47*1000(1000是因为工作电流为豪安)/20=23.5秒!!!!!
天!这个时间对单片机而言简直相当于从原始社会到共产主义社会的历史慢长.休说是从容写入内部FLASH ROM掉电保护数据,就是把芯片从新写入新程序都可以写5次!!!!!!!!!!
说说汽车电脑的数据存储方式——为什么电瓶断电很多数据就丢失了
汽车长时间停放后,电瓶由于自放电的原因,会彻底没电了,即使打开钥匙门汽车也没有任何反应,仪表灯都不亮。此后当我们换上新电瓶后,却发现行车电脑里面的很多数据都丢失了,比如系统时间归零、小里程表归零、车窗一键升降功能失效、故障码消失,等等,甚至还有一些车型会发生防盗系统锁死、音响锁死、发动机无法启动等现象。这究竟是怎么回事呢?为什么电瓶断电,汽车电脑里面的数据就会丢失呢?下面我们来分析一下这个问题。
现在的汽车都是非常智能化的,发动机、变速箱、车身、制动、转向等各种系统都是通过电子控制来完成的,这就需要一个电控单元来完成这项工作,即俗称的汽车电脑。一般汽车上不同的总成使用不同的控制单元,它们的名称也不一样,比如控制发动机的称为ECU,控制变速箱的称为TCU,控制车身的称为ECM,等等,还有一些单独控制某些系统的电控单元,比如控制制动系统的ABS控制单元、控制电动助力转向系统的EPS控制单元,等等。也有些车型把发动机和变速箱的电控单元合二为一,统称为ECU。
这些汽车电脑在结构上都属于单片机。所谓的单片机,是相对于普通的微型计算机而言的。典型的微型计算机,包括运算器、控制器、存储器、输入输出接口这四个基本组成部分,一般把运算器和控制器封装在一块芯片上,这就是我们所熟知的中央处理器(CPU),而存储器和输入输出接口都是独立存在的;如果把这四部分都集成在一块芯片上,这样的芯片就称为单片微型计算机,简称单片机。这种单片机在我们的生活中是大量存在的,小到收音机、洗衣机、电视机等常用家用电器,大到汽车、飞机、轮船等各种机械设备,几乎都是使用单片机来控制。
我们还是来看汽车上的单片机,也就是我们常说的汽车电脑。它们之所以能控制汽车的运行,是因为它的内部存储了相应的控制程序。比如说发动机控制单元ECU,它根据发动机上各种传感器传递过来的信号,与ECU内部存储的控制程序相对比,计算出最佳的数据后,发出控制信号给发动机,控制喷油器的喷油脉宽和点火正时;在比如自动变速箱控制单元TCU,它根据车速、节气门位置等信号,与TCU内部存储的控制程序向对比,计算出最佳的数据后,发出控制信号给变速箱,让变速箱切换到最合适的档位上;其它的各控制单元也同样如此,都是按照预定程序自动地对各种传感器的输入信号进行处理,然后输出信号给执行器,从而控制汽车的运行。
大家需要理解这一点:汽车电脑中的各种控制程序,是车企经过大量实验和实际的汽车运行数据采集,而优化计算出来的最佳结果,这个过程通常需要几十年的技术积累,不是一朝一夕就能完成的。所以那些“百年车企”的实力绝对不容小觑,它们丰富的经验绝对不是那些“造车新势力”在几年之内就能追赶得上的。比如丰田对自动变速箱的调校,大众对双离合变速箱的调校,奔驰对汽车乘坐舒适性及豪华氛围的营造,宝马对汽车操控性能的调校,等等,都是非常有历史沉淀的。
上文说了,汽车的电脑中存储了汽车的控制程序,这些控制程序都是储存在单片机的存储器中的。汽车单片机的存储器事实上分为两个部分,一部分是程序存储器,也称为只读存储器或固件存储器,英文简称ROM。它的容量一般比较大,用来存储汽车的原始的、没有经过修正的控制程序,即汽车出厂时车企输入到汽车电脑中的程序。这个程序在没有经过厂家的授权之前,任何人都是无权改动的,即使把汽车断电、把电脑拆下来,这些程序仍然会存储在电脑中,既不会改变,也不会消失。说白了它就类似于电脑中的C盘,只要不是重新做系统,它就不会有任何的改变。
存储器的另一部分是临时存储器,英文简称RAM,它是用来存储汽车运行中各种变量和传感器参数,以及汽车运行过程中产生的故障码、自适应学习值,等等,还有一些对汽车运行关系不大的简单程序以及后期各种人为的设置,比如一键升窗、时间、密码等。汽车电脑在运行时,一般会把这些数据做为修正值来使用。但是这些数据都是临时存储在单片机中的,只要断电,这些数据就会消失。类似于我们手机或电脑中的缓存,只要我们把电池拆下来,这些缓存就消失了。
由于RAM的存在,汽车就有了神奇的自适应学习的能力。比如说,汽车的节气门有积碳,怠速时节气门开度会变大,这个参数会临时存储在RAM中,ECU在调控发动机怠速时做为修正值来参考使用,仍然能保持发动机稳定的怠速;但是当我们清洗节气门后,或者把电瓶断电,这个参数就消失了,ECU就会按照ROM中的程序来调控发动机怠速,这样发动机就会出现怠速抖动、怠速过高等故障。一般这种情况下我们就需要用维修电脑来给ECU做匹配,或者让汽车运行一段时间自动的适应,其实就是一个将临时数据写入RAM的过程。
再比如,我们的汽车在跑完高速后,会感觉变得更“通透”了,加速更顺畅了,变速箱换档更积极了。这也是汽车电脑自适应学习的功劳。现在的汽车高度智能化,它会记录汽车日常的运行数据,并把它默认成你的驾驶习惯。如果我们经常在城市中驾驶,长时间处于怠速、低速、低档位行驶状态,汽车电脑会将这些参数记录下来,并以此来控制车辆,慢慢的你的车就会变得油门反应迟钝,加速变慢,换档迟缓,处于一种“钝化”状态,就像一个人,长时间不运动就会变得非常懒惰一样;而汽车在高速行驶时,发动机处于高转速、高负荷、高档位状态,经常急加速和急减速,汽车处于一种非常激进的亢奋状态,汽车电脑也会将这些参数记录下来,并据此来控制车辆,渐渐的你的车就会变得油门反应灵敏,加速迅猛,换档积极,处于一种良好的积极进取状态。所以,汽车跑完高速后油门变得更灵敏,不是汽车本质发生了什么变化,而是你的驾驶习惯改变了,而汽车的自适应学习功能又适应了这种变化。但是这些参数,同样会在汽车断电后消失,因为它们也是临时存储在RAM中的。
那么为什么我们关点火开关时这些数据不会丢失呢?这是因为汽车上所有的控制单元都有专门的供电线路,这些线路不受点火开关的控制。即使关闭点火开关,它们仍然有电源供给,这样就能保证数据不会丢失。但是如果我们断开电瓶的连接线,相当于把汽车上所有的电气设备都断了电,这些临时的数据就会丢失了。
有人会说,那为什么不把这些参数或功能都写入ROM中呢?这样在汽车断电后这些数据就不会丢失了。其实这主要是从安全性方面考虑的。汽车在运行中会不断的产生新的数据,如果这些数据都储存起来,汽车电脑需要一个庞大的存储器,并具有超强的运算能力,但事实上单片机的存储量和运算能力都是有限的,所以不能无限的存储,另外也要防止外来数据对固有程序的影响;而RAM是一种循环式的存储器,容量是固定的,新的数据会自动替换旧的数据。正因为如此,汽车电脑中的RAM是非常昂贵的,容量通常都比较小。这就像我们在电脑上下载应用软件,一般不会把它安装到C盘里,就是为了避免C盘过于臃肿,影响电脑的运行速度。
最后总结全文:汽车之所以断电后电脑中的数据就会丢失,主要的原因就是这些数据都是存储在临时存储器中的。如果我们不想让它们丢失,在更换电瓶时就要连接一个备用电瓶,让汽车电脑始终保持供电。另外我们在查找汽车故障时一定要先读取故障码然后再断电,因为故障码也是临时存储在RAM中的,断电后也会消失。
相关问答
单片机 的EEPROM为何断电还能存有 数据 ?是内部拥有电源么?-ZOL问答单片机的EEPROM断电还能存有数据,是因为EEPROM是电可擦除可编程的ROM。可用电信号时进行清除和改写的存储器,使用方便,芯片不离开插件板便右擦除或改写其中的数...
51 单片机 如何存储 数据 ?不知道你是想保存什么类型的数据,是掉电保护的还是缓存的?如果是保存掉电不保护的缓存数据,可以用单片机内部的RAM空间,包括20H~7FH直接寻址区、80H~FFH中非...
单片机 存储器的划分方法?单片机的存储器可分为程序存储器(ROM)和数据存储器(RAM)。程序存储器是专门用来存放程序和常数的。数据存储器是程序在运行中存放临时数据的,掉电后数据即...
80c51 单片机 rom和ram分别存放什么?ROM用于存放用户程序,掉电以后程序数据不丢失;RAM存放运算数据和寄存器数据,掉电以后数据会消失。在单片机的RAM区分布着一些寄存器,称之为SFR特殊功能寄存...
PIC16F87X 单片机 的 掉电 保护程序?单片机自带掉电检测电路的,就可直接进入掉电中断,处理掉电保护程序,否则外加电路。单片机自带掉电检测电路的,就可直接进入掉电中断,处理掉电保护程序,否则外...
什么是 单片机 CPU存储器?单片机CPU存储器:指为了保证程序能够连续地执行下去,CPU必须具有某些手段来确定一条指令的地址。程序计数器PC正是起到了这种作用,所以通常又称其为指令地址...
PLC在什么情况下内部存储的 数据 会丢失?PLC底层是单片机,单片机一般通过RAM和ROM这些东西来保存数据,RAM是断电就消失了,而ROM在断电下依然可以保持,除非是外力来让它改变了,请关注:机电猫因为数...PL...
充电宝给 单片机 供电自动断电的原因?1.充电宝给单片机供电会自动断电。2.这是因为充电宝在给单片机供电时,会根据单片机的充电状态和电池电量进行自动断电的控制。当单片机充电完成或者电池电量...
STC15W408AS这款 单片机 进入 掉电 模式请问如何用串口唤醒?由于掉电模式时内部时钟停止工作,串口无法接收数据,所以串口不能产生中断,要想唤醒单片机,只能把串口接收到的起始信号当作外部中断信号,唤醒单片机,显然接...
51系列的 单片机 ,片内最大容量的ROM是多大的?-ZOL问答程序存储器有片内和片外存储器两种;数据存储器也有片内和片外存储器两种。2、地址范围及容量程序存储器是片内外统一寻址,片内程序存储空间+片外程序存储空间=...