时间:2022-11-20 19:30:16来源:搜狐
今天带来电容存储电量计算公式「分补电容如何计算」,关于电容存储电量计算公式「分补电容如何计算」很多人还不知道,现在让我们一起来看看吧!
我们设计的简易PLC所提供的变量,有一类是断电记忆的。
所谓断电记忆也就是数据在断电重启之后保持断电前的数值。
MCU的存储器分为两类:RAM和ROM。
两者的最大区别是RAM在断电以后保存在上面的数据会自动消失,而ROM不会自动消失,可以长时间断电保存。
为了实现断电记忆,需要把数据写入到ROM,即FLASH中。
不幸的是,FLASH有两个致命的缺点:
1)擦写次数有限,一般仅有10万次的擦写次数,超过擦写次数,FLASH将被损坏。
2) FLASH的存储位只能由1改为0,如果需要将0改为1,则需要将数据擦除,最小擦除的单位为1个page。对于STM32F103为2KB,对于STM32F051为1KB。
通过BACKUP寄存器实现断电记忆Cortex系列的处理器还有一种backup寄存器供断电记忆数据使用,比如给RTC时钟使用。
该寄存器的数据可以由VBAT的电压来维持,而一般VBAT电压由纽扣电池供电。
比如,我们选择CR1220的电池,其容量为40mAh, VBAT的工作电流低到2uA。
CR1220的电池可以保证backup寄存器的数据在断电之后一年内不丢失。
通过FLASH实现断电记忆美中不足的是,STM32F103仅有84个字节的backup寄存器。
当需要断电记忆的数据比较多时,还是需要将其存入到FLASH中。
可以分为两种数据:
1)不会经常改变的数据,比如用户设置的运行参数(比如密码、温控器的温度阈值等)。
对于这种数据,只需要做几分钟的缓存,在数据改变过后几分钟再写入FLASH即可。
即使数据未存入FLASH,用户重新设置即可。由于发生概率低,也不会有什么问题。
2)改变频率非常高的数据,比如计数器,有一个客户将我们的控制器用于流水线上的计件。
基本上1s数据加一次,而且要求绝对准确。
保证任何不能错计任何数据。
对于这种应用,如果还是采用1分钟缓存的方法,10万次的擦写次数大概可以使用66天,不能满足要求。
而且如果在这1分钟内发生了断电,数据没能写入FLASH,将会导致这段时间的数据丢失。
当时,由于backup 寄存器数据有限,不得以需要采用FLASH来存储。
技术方案断电延时电路
如上的电路图所示,二极管D1用于电源反接的保护,V 经过R1、R2的分压以及C5的滤波之后送入MCU的A/D口,用于检测电源电压。
补充:有网友留言,把检测电压的电路接到反向保护二极管的负极没有办法检测到掉电,放在正极是否更好?
我们的考虑是,放在D1的正极,当有负电压输入时(比如脉冲群),负电压经过R1,R2会直接到IO口,会形成所谓的潜通路。瞬间几千V的高压,是否会造成R1、R2以及IO口损坏,值得研究。
为了保证可靠,就放在了负极,避免了形成潜通路,同时对高频正脉冲可以通过E1,C1的可靠过滤。
当掉电时,E1开始放电,此时并不能立即检测到掉电,当放电至22V时,MCU认为掉电了,开始执行相应动作。
浪费了从23.2V到22V左右的能量,由于负载电流小,浪费这点能量并不导至C1无法取值。所以还是值得的。
小小的细节,却能体现我们设计电路时的深思熟虑,这得益于我们的团队之前从事汽车电子所形成的可靠性设计的思维。
E1用于储能,用于当电源断电时,给MCU供电,保证存储在RAM中的数据可靠存入FLASH。
采用大电容给控制器供电,MCU实时检测输入电压。
做了几下的设计改进:
1)MCU的供电和其它负载(比如继电器、WiFI模块等)的供电分开,MCU专门由一路电源供电。
2)让用户采用控制器所支持的最高工作电压为24V的电源供电。
3)在100us的定时中断时,启动A/D转换并读上次转换数据,如果读到的转换数据所对应的电压低于22V,则说明发生电源断电,立即切断所有输出,以及一些内设模块。从而在100us内就将功耗降到最低。
4) 在主程序中,判断由定时中断置位的断电标志,如果判断有检测到断电,降低主频,
立即将需要断电存储却暂存在RAM保存的数据写入FLASH。
电容容量的计算DC-DC最低输入电压为5.0V左右。
STM32F103在禁用外设时,其工作电流大概为8mA@16MHz。
算上DC-DC的效率80%,以及DC-DC和LM1117的工作电流,以8/80% 2mA=12mA计算。
FLASH擦除时间为40ms/page, 写入速度为70us/1bit。
假设需要存入的数据总量为1024Byte即512Word。
由擦写 写入需要花费的时间为80ms,实际可以在运行过程中先擦写一个page备用,从而可以省去擦写的时间,在这里,仍以80ms来考虑。
要求断电之后,电容E1上的电压以12mA 的电流放电,从22V放电至 5V的时间需要大于80ms。
根据电容流过电容的电流I=C*du/dt,将电流、电压降、时间等代入,得到:
C=12mA * 80ms /(22-5)=56uF,可选择100uF的电容。
另一种计算方法可以从能量的角度考虑,计算更准确:
电容从22V放电至5V,所释放的能量为1/2*C*(22*22-5*5),考虑到DC-DC的效率0.8,到5V的能量为:
1/2*C*459*0.8=5V*12mA*t=60mW*80ms。
解得C=26uF。
文中有任何错误,欢迎留言指正!
声明:文章仅代表原作者观点,不代表本站立场;如有侵权、违规,可直接反馈本站,我们将会作修改或删除处理。
图文推荐
2022-11-20 19:29:09
2022-11-20 19:23:54
2022-11-20 19:23:08
2022-11-20 19:17:55
2022-11-20 19:17:04
2022-11-20 19:12:13
热点排行
精彩文章
2022-11-20 19:29:27
2022-11-20 19:24:09
2022-11-20 19:23:30
2022-11-20 19:18:06
2022-11-20 19:12:37
2022-11-20 19:11:46
热门推荐