最新新闻:

电容存储电量计算公式「分补电容如何计算」

时间: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。

文中有任何错误,欢迎留言指正!

声明:文章仅代表原作者观点,不代表本站立场;如有侵权、违规,可直接反馈本站,我们将会作修改或删除处理。

图文推荐

热点排行

精彩文章

热门推荐