0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

单片机掉电检测与数据掉电保存方案解读

电子设计 作者:厂商供稿 2018-10-15 08:18 次阅读

单片机在正常工作时,因某种原因造成突然掉电,将会丢失数据存储器(RAM)里的数据。在某些应用场合如测量、控制等领域,单片机正常工作中采集和运算出一些重要数据,待下次上电后需要恢复这些重要数据。因此,在一些没有后备供电系统的单片机应用系统中,有必要在系统完全断电之前,把这些采集到的或计算出的重要数据存在在EEPROM中。为此,通常做法是在这些系统中加入单片机掉电检测电路与单片机掉电数据保存。

用法拉电容可从容实现单片机掉电检测与数据掉电保存。电路见下图。这里首先用6V供电(如7806),为什么用6V不用5V是显而易见的.电路中的二极管们一般都起两个作用,一是起钳位作用,钳去0.6V,保证使大多数51系列的单片机都能在4.5V--5.5V之间的标称工作电压下工作.而4.5-5.5间这1V电压在0.47F电容的电荷流失时间就是我们将来在单片机掉电检测报警后我们可以规划的预警回旋时间。二是利用单向导电性保证向储能电容0.47F/5.5V单向冲电。

两只47欧电阻作用:第一,对单片机供电限流。一般地单片机电源直接接7805上,这是个不保险的做法,为什么?因为7805可提供高达2A的供电电流,异常时足够把单片机芯片内部烧毁.有这个47欧姆电阻保护,即使把芯片或者极性插反也不会烧单片机和三端稳压器,但这个电阻也不能太大,上限不要超过220欧,否则对单片机内部编程时,会编程失败(其实是电源不足).第二,和47UF和0.01UF电容一起用于加强电源滤波.第三,对0.47F/5.5V储能电容,串入的这只47欧电阻消除"巨量法拉电容"的上电浪涌.实现冲电电流削峰。

单片机掉电检测与数据掉电保存方案解读

现在我们算一算要充满0.47F电容到5.5V,即使用5.5A恒流对0.47F电容冲电,也需要0.47秒才能冲到5.5V,因此我们可以知道:

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维持高电平的,单片机掉电保存中断程序不被触发。

最后还有两个重要软件和硬件note

软件上:首先INX0在硬件上(设计)是处于最高优先级的,这里还必须要在软件保证最高级别的优先.从而确保单片机掉电时外部中断0能打断其他任何进程,最高优先地被检测和执行.其次在INX0的掉电保存写入子程序模块入口,还要用:

MOV P1,#00H
MOV P2,#00H
MOV P3,#00H
MOV P0,#00H
SJMP 掉电保存

来阻断法拉电容的电荷通过单片机口线外泄和随后跳转掉电保存写入子程序模块.(见硬件要点)

硬件上:凡是驱动单片机外部口线等的以输出高电平驱动外部设备,其电源不能和电片机的供电电压VCC去争抢(例如上拉电阻供电不取自单片机VCC).而应直接接在电源前方,图中4.7K电阻和口线PX.Y就是一个典型示例,接其它口线PX.Y'和负载也雷同.这里与上拉4.7K电阻相串联二极管也有两个作用:1、钳去0.6V电压以便与单片机工作电压相匹配,防止口线向单片机内部反推电.造成单片机口线功能紊乱.2、利用二极管单向供电特性,防止掉电后单片机通过口线向电源和外部设备反供电.

上面的单片机掉电检测电路,在与掉电保存写入子程序模块结合起来就可以保证在单片机掉电期间,不会因法拉电容上的积累电荷为已经掉电的外部电路无谓供电和向电源反供电造成电容能量泄放缩短掉电维持时间.

有了这些基础,我们来计算0.47UF的电容从5.5V跌落到4.5V(甚至可以下到3.6V)所能维持的单片机掉电工作时间.这里假设设单片机工作电流为20MA(外设驱动电流已经被屏蔽)不难算出:

T=1V*0.47*1000(1000是因为工作电流为豪安)/20=23.5秒!


声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 单片机
    +关注

    关注

    6034

    文章

    44548

    浏览量

    634400
  • 数据存储器
    +关注

    关注

    1

    文章

    69

    浏览量

    17780
收藏 人收藏

    评论

    相关推荐

    掉电保护,超级电容没放完电,重新上电,导致CPU检测不准确

    CPU有两个引脚,一个引脚控制超级电容是否给CPU供电,另一个是CPU检测电源是否掉电检测到高电平时不让电容供电,检测到低电平时电容供电,电源断电之后,让电容供电,
    发表于 10-24 09:43

    物联网系统中空开产品掉电报警的实现方案

    掉电检测和保护电路:就是对系统电压进行监测,当系统电压值下降到低压警戒值时,电路会发现并做出反应,发出一个警告信号,处理器接收到警告信号之后马上进行数据保存等操作,防止系统数据丢失。
    的头像 发表于 09-30 17:26 508次阅读
    物联网系统中空开产品<b class='flag-5'>掉电</b>报警的实现<b class='flag-5'>方案</b>

    增加AC-DC电源掉电试验结果与分析

    围(通常是-2%)之外的时间差ST,如图1所示。通俗地讲,就是开关电源在没有输入后,输出还能撑多久。很多情况下,系统在检测到AC掉电后,需要对数据进行保存、传输,对执行器的状态进行设置
    发表于 06-20 14:46

    ESP32进入light sleep电压降低触发掉电检测,怎么规避这个问题?

    之后,仍会出现重启,只是打印的信息不同了。 请问:针对可能是进入light sleep电压降低触发掉电检测,怎么规避这个问题?谢谢您
    发表于 06-20 07:05

    请问ESP32S3的OTA过程是否支持保存烧写进度,掉电重启后从掉电前位置开始烧写?

    请问ESP32S3的OTA过程是否支持保存烧写进度,掉电重启后从掉电前位置开始烧写? 例如OTA数据共需要20帧进行传输,传输了10帧数据
    发表于 06-05 08:10

    AD7606B不掉电情况下切换SER模式,采集数据异常的原因?

    AD7606B上电状态 PAR 模式,采集数据正常;不掉电情况下 切换 SER 模式,采集数据异常; AD7606B上电状态SER 模式,采集数据正常;不
    发表于 05-20 06:04

    STM8S003电压不稳定导致来回频闪单片机无法复位怎么解决?

    电解电容,16V2200UF,导致瞬间掉电大概只能掉到4.5V(示波器抓取),本想是调节单片机掉电电压,但是STM8无法调节,后来想到一个办法,在中断里面写上低于5V复位,这样的话每次单片机
    发表于 04-25 06:16

    touchgfx掉电重启后卡死无法显示怎么解决?

    萌新求助。。。在cubeIDE上生成的例程,debug调试时正常显示,一旦掉电重启就会卡死无法显示,加载了freeRTOS,创建两个任务,一个touchgfx,一个led灯闪烁。掉电重启后灯也不会亮
    发表于 04-08 07:37

    使用分散加载将部分程序放到RAM,RAM掉电数据就没有了,如何复原?

    我使用分散加载将部分程序放到RAM,RAM掉电数据就没有了,重新上电后,芯片是如何将RAM区程序复原的呢。
    发表于 03-06 07:01

    FLASH、EEPROM的区别和扩展【硬件干货】

    EEPROM和FLASH总体差异     部分MCU片内不带程序存储器ROM,可执行代码只能放在外面的EEPROM、FLASH(外扩)中;     单片机对于数据的处理和系统的大量数据采集,需要考虑
    的头像 发表于 02-27 08:37 1923次阅读
    FLASH、EEPROM的区别和扩展【硬件干货】

    当BOD阈值设置为2.7V时,VDDD电压在不触发BOD复位的情况下保持在2.7V以下所需的最大脉冲宽度是多少?

    以下波形表示 VDDD 和 XRES。 在确定单片机重置原因的过程中,观察到以下波形。 VDDD 的 BOD(掉电检测)阈值设置为 2.7V。 尽管 VDDD 接近低于 2.7V 的值,但它很快就会
    发表于 01-31 08:16

    S7-1200如何实现内部数据掉电保持?

    S7-1200 PLC 可以通过多种方式实现内部数据掉电保持,以确保在断电或重启后数据不会丢失。
    的头像 发表于 01-29 16:11 7133次阅读

    GD32MCU如何实现掉电数据保存?#MCU #GD32 #单片机 #嵌入式

    单片机mcu
    聚沃科技
    发布于 :2024年01月23日 09:39:20

    GD32MCU如何实现掉电数据保存

    大家在GD32 MCU应用时,是否会碰到以下应用需求:希望在MCU掉电保存一定的数据或标志,用以记录一些关键的数据
    的头像 发表于 01-22 09:55 2908次阅读
    GD32MCU如何实现<b class='flag-5'>掉电</b><b class='flag-5'>数据</b><b class='flag-5'>保存</b>?

    请问ADE9078用户电能寄存器在掉电以后会复位吗?

    还是保存掉电之前3S的值?如果保存掉电前3S的值,再次上电以后,剩余的累加时间为7S(10-3)还是10S? 用户电能寄存器在掉电以后会复
    发表于 12-26 06:34