tft每日頭條

 > 科技

 > 超級電容容量計算

超級電容容量計算

科技 更新时间:2025-02-02 20:49:40

我們設計的簡易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來存儲。

技術方案

超級電容容量計算(數據斷電記憶方案的設計)1

斷電延時電路

如上的電路圖所示,二極管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。

文中有任何錯誤,歡迎留言指正!

,

更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!

查看全部

相关科技资讯推荐

热门科技资讯推荐

网友关注

Copyright 2023-2025 - www.tftnews.com All Rights Reserved