福建農林大學機電工程學院 翁海勇 俞加明 葉大鵬
掉電數據保護是系統設備一個重要的功能。目前,掉電數據保護的方法主要有2種:(1)加足夠容量備用蓄電池,使系統掉電后繼續工作;(2)不加備用電池,把掉電時需要保護的數據存儲在非易失性存儲器中,如FLASH和EEPROM[3]。第一種方法器件體積大、費用高并且蓄電池壽命短;第二種方法簡單,但擦寫器件的壽命有限[4]。本設計在第二種的基礎上提出一種改進方法,即利用LM358作為電壓比較器,當檢測到系統掉電時才將數據寫入EEPROM中。該方法不僅實現了系統數據掉電的保護,而且延長了EEPROM的壽命。
如圖1,通過調節R2,使系統正常供電時,Ua>Ub=3.5V,c端輸出高電平;當系統掉電時,因二極管D1的隔離,使LM358得不到供電。由于電容C2和電感L的存在,電容C2和電感L1繼續為單片機提供短暫時供電,并且因下拉電阻R5的存在,使得c端輸出低電平。用于觸發單片機INT0中斷。
根據STC12C5A60S2系列單片機資料[1],對EEPROM寫一個字節和擦除一個扇區所需的時間分別為55μs和21ms。正常模式下,典型功耗為2mA-7mA。5V單片機和3.3V單片機對EEPROM進行操作的有效最低電壓分別為Umin=3.7V和Umin=2.4V。
系統掉電后,等效電路模型為RLC串聯回路[6]。放電過程時電路的微分方程為:

根據R、L和C的參數值的不同,可分為欠阻尼振蕩狀態、臨界阻尼狀態、過阻尼狀態。方程(1)的解可分為以下三種:

綜上所述:當負載R一定時,選取合適的電容和電感(本文選取C2=6600uf/25V、L1=0.1H)。L1和C2的具體參數可通過試驗測試得到。只要uc(t)從初始狀態的uc(t)|t=0衰減到uc(t)|t=t0=Umin的時間大于維持觸發中斷對EEPROM進行操作所需的時間t0就能滿足系統正常工作的要求。
主程序和中斷服務子程序流程圖分別如圖2和圖3所示。
與本設計有關的程序如下:


圖1 系統電路原理圖

圖2 主程序

圖3 中斷服務子程序

分析:系統掉電時,INT0中斷被觸發,在中斷服務子函數中對EEPROM進行擦除和寫的操作。
該系統的實現,應用于二維運動控制平臺。系統掉電時,X軸和Y軸坐標以及其他參數被寫入EEPROM中。系統重新上電后,讀取出存儲在EEPROM里X軸和Y軸坐標及其他參數,工作平臺以該位置為起點繼續沿著原設定的位置運動。
本設計的核心就是基于LM358作為電壓比較器,檢測到系統掉電時才對EEPROM進行擦寫,避免了每執行一遍程序對EEPROM進行擦除一次而造成其壽命短的問題。軟、硬件結構設計簡單,提高了系統的實用性。本文給出了典型的應用程序,具有良好的可移植性。加入循環語句可以把多個數據存EEPROM或從EEPROM里讀出[2][5]。
[1]STC_8051單片機全球第一品牌.全球最大的8051單片機設計公司,http://www.mcu-memory.com/.
[2]王朝輝,陸楓.一種高可靠性的單片機掉電保護設計[J].武漢科技大學學報(自然科學版),2006(8).
[3]武志軍.AVR單片機掉電數據保護應用實例[J].電子世界,2010(10).
[4]張延寧,王琦.EEPROM在儀表系統應用中的幾個問題[J].單片機與嵌入式系統應用,2010(3).
[5]洪運富,吳文全.汽車里程數據的存儲算法研究[J].儀表技術,2007(9).
[6]邱光源(原著),羅先覺(修訂).電路(第五版)[M].北京:高等教育出版社,2006(5).