單片機(jī)系統(tǒng)中的掉電檢測(cè)與數(shù)據(jù)存儲(chǔ)問題
由于電能表的計(jì)量是要求持續(xù)性的,而主供電系統(tǒng)不可能是持續(xù)的,注意這里需要一個(gè)掉電檢測(cè)與數(shù)據(jù)存儲(chǔ)的問題。首先檢測(cè)出供電系統(tǒng)已經(jīng)斷電,然后啟用備用電源存儲(chǔ)數(shù)據(jù),而且數(shù)據(jù)必須存儲(chǔ)在掉電不易失的存儲(chǔ)器(如EEPROM,F(xiàn)LASH等)中。
本文引用地址:http://m.butianyuan.cn/article/201611/316455.htm本應(yīng)用中,需要檢測(cè)出掉電后備用電源能提供足夠的電能供單片機(jī)進(jìn)行數(shù)據(jù)存儲(chǔ)??傮w思路,本應(yīng)用中單片機(jī)采用的是STC89C58RD+,單片機(jī)內(nèi)部已經(jīng)集成了16K的EEPROM,所以不需要另外外接存儲(chǔ)器。ADE7755已經(jīng)自帶了電源監(jiān)控功能,前面的ADE7755的介紹中已經(jīng)有所描述,所以亦無須擔(dān)心。這里只需要解決好單片機(jī)的掉電問題即可。在系統(tǒng)的穩(wěn)壓前端設(shè)置監(jiān)測(cè)點(diǎn),當(dāng)監(jiān)測(cè)點(diǎn)的電壓下降到另一個(gè)基準(zhǔn)比較電壓時(shí)產(chǎn)生單片機(jī)外部中斷。當(dāng)單片機(jī)接收到外部中斷后啟動(dòng)數(shù)據(jù)存儲(chǔ)程序,將數(shù)據(jù)存儲(chǔ)到片內(nèi)EEPROM內(nèi)。當(dāng)主供電系統(tǒng)恢復(fù)供電后,單片機(jī)首先讀取EEPROM數(shù)據(jù),然后再恢復(fù)計(jì)數(shù)。
2)掉電檢測(cè)
有電壓采集轉(zhuǎn)換、電壓比較等方案。經(jīng)過綜合考慮,這里采用LM393比較器來對(duì)比監(jiān)測(cè)點(diǎn)與參考點(diǎn)電壓,一旦監(jiān)測(cè)點(diǎn)電壓降到某種程度,比較器就會(huì)有高電平輸出,由此產(chǎn)生單片機(jī)外部中斷。
另外有一種反其道而行之的方案。在降壓后的交流端加一個(gè)光耦產(chǎn)生中斷,一旦中斷消失程序轉(zhuǎn)向數(shù)據(jù)存儲(chǔ)。
3)備用電源
雖然備用電源可以采用可充電電池,大電容等方案,但由于這里所需要的電量并不是很大,持續(xù)時(shí)間也不需要很長(zhǎng),只需要能完成數(shù)據(jù)存儲(chǔ)即可。所以這里選擇了大電容作為備用電源這一方案。選擇了在穩(wěn)壓后端與單片機(jī)電源端直接并聯(lián)了兩個(gè)達(dá)3300uF的大容量電解電容。同時(shí),為安全起見,在單片機(jī)的電源輸入端還串入了一個(gè)低正向壓降壓降的二極管來阻止大電容向除單片機(jī)意外的其他電路放電。
4)數(shù)據(jù)存儲(chǔ)
不可易失存儲(chǔ)方案很多,比如EEPROM,F(xiàn)LASH,鐵電等。但Flash讀寫比較麻煩,鐵電也需要另加外圍器件,所以這里選擇單片機(jī)內(nèi)置的EEPROM無疑是最好的選擇。不僅讀寫簡(jiǎn)單方便,可多次擦寫,減少外圍器件與單片機(jī)IO口,而且為備用電源減輕了很大的負(fù)擔(dān)。
最后,需要說明的是,實(shí)際上現(xiàn)在很多高檔單片機(jī)已經(jīng)集成上述功能。比如AVR自帶的BOD(Brown-outDetection)電路,內(nèi)置模擬比較器,C8051F系列自帶AD而且在掉電時(shí)自動(dòng)產(chǎn)生中斷。也有獨(dú)立的專用復(fù)位芯片,如TPS3705,ISL88706等。
5)理論計(jì)算
(1)按恒流充放電的簡(jiǎn)化計(jì)算:Q=CV=IT.Q是電量,C是電容量,V是電壓,I是電流,T是時(shí)間
那么T=CV/I,在本例中可以估算時(shí)間為T=0.0033f*(5.0V-3.8V)/0.012A=0.33s,即330ms.
330/8.5=38.8mS,即最多可以保存38字節(jié)數(shù)據(jù)到EEPROM中,38字節(jié)對(duì)于本應(yīng)用已經(jīng)足夠。
數(shù)據(jù)說明:
單片機(jī)在3.8V到5.5V之間工作正常;單片機(jī)的工作電流典型值是4mA;最大工作電流20mA;普通外置EEPROM的讀寫一個(gè)字節(jié)的時(shí)間是8.5mS左右。據(jù)下面引述資料顯示,此計(jì)算是保守估算,故可靠性有所保證。
STC單片機(jī)datasheet上是這樣描述的:
1.同一次修改的數(shù)據(jù)放在同一扇區(qū)中,不是同一次修改的數(shù)據(jù)放在另外的扇區(qū),就不須讀出保護(hù)。
2.如果一個(gè)扇區(qū)只用一個(gè)字節(jié),那就是真正的EEPROM,STC 單片機(jī)的Data Flash 比外部EEPROM 要快很多,讀一個(gè)字節(jié)/ 編程一個(gè)字節(jié)大概是0.2uS/60uS。
3.如果在一個(gè)扇區(qū)中存放了大量的數(shù)據(jù),某次只需要修改其中的一個(gè)字節(jié)或一部分字節(jié)時(shí),則另外的不需要修改的數(shù)據(jù)須先讀出放在STC單片機(jī)的RAM中,然后擦除整個(gè)扇區(qū),再將需要保留的數(shù)據(jù)和需修改的數(shù)據(jù)一并寫回該扇區(qū)中。這時(shí)每個(gè)扇區(qū)使用的字節(jié)數(shù)是使用的越少越方便(不需讀出一大堆需保留數(shù)據(jù))。
評(píng)論