以下的電路,是一個可靠的簡單的掉電檢測、法拉電容能量儲存等完整硬件電路和相應的軟件細節,是筆者在產品上一個成熟的可靠的自詡經典電路和心血,在這里完全公開地提供給二姨愛社(21IC)下的全體表兄表弟表姐表妹們以供大家一起來批判賞析借鑒和改進.
首先提請老表們別一看電路繁瑣就不想繼續看下去:大電容儲存實現掉電保護并非人們想象的那么容易做.
我們往往突然一個跳躍靈感一絲燦爛思想火花,但最終都沒幻化為顯示而最終不了了之,在我們遺憾嘆息至于我們是否思考過常常并不是我們"太過創新"超越了現實(我們能超越我國的現實的器件工業和材料工業水平嗎)最后我們總不得不以理論不完全等同于實踐來為自己無奈和熄滅的靈感作排解!其真正原因我們作過真正思考過嗎?!
事實上一個理論成立,現實上完全具備可實現性的一個電路單元,最后我們并未達到預想效果,甚至以失敗了告終,原因何在??----細節..細節..還是細節...永遠的細節!!!!細節為王!
所以敬請大家耐心地靜靜地留意這里的每個電路技巧和對細節,其實每個細節都充滿著體貼人性和柔情.這里讓我們一道來感悟一種做事就是做人和精益求精的思想和行動境界,即使你是表弟表兄級男性電子工程師對你的設計和實現都應具備女性的細膩周到和柔情.
電路見下:這里首先用6V供電(如7806),為什么用6V不用5V是顯而易見的.這里的二極管們一般都起兩個作用,一是利用單向導電性保證向儲能電容0.47F/5.5V單向沖電;二是起鉗位作用,鉗去0.6V,保證使大多數51系列的單片機都能在4.5V--5.5V之間的標稱工作電壓下工作.而4.5-5.5間這1V電壓在0.47F電容的電荷流失時間就是我們將來在掉電報警后我們可以規劃的預警回旋時間.
兩只47歐電阻也有兩個作用:
1:和47UF和0.01UF電容一起用于加強電源濾波.
2.對單片機供電限流
一般電子工程師都喜歡把單片機電源直接接7805上,這是個非常不好的習慣,為什么?7805可提供高達2A的供電電流,異常時足夠把單片機芯片內部燒毀.有這個電阻47歐姆電阻擋作及時把芯片或者極性插反也不會燒單片機和三端穩壓器,但這電阻也不能太大,上限不要超過220歐,否則對單片機內部編程時,會編程失敗(其實是電源不足).
3.對0.47F/5.5V儲能電容,串入的這只47歐電阻消除"巨量法拉電容"的上電浪涌.實現沖電電流削峰
大家算一算要充滿0.47F電容到5.5V,即使用5.5A恒流對0.47F電容沖電,也需要0.47秒才能沖到5.5V,既然知道了這個問題,大家就清楚:
1.如果沒有47歐姆電阻限流,上電瞬間三端穩壓器必然因強大過電流而進入自保.
2.長達0.47秒(如果真有5.5A恒流充電的話)緩慢上電,如此緩慢的上電速率,將使得以微分(RC電路)為復位電路的51單片機因為上電太慢無法實現上電復位.(其實要充滿0.47UF電容常常需要幾分種).
3.正因為上電時間太慢,將無法和今天大多數主流型以在線寫入(ISP)類單片機與寫片上位計算機軟件上預留的等待應答時間嚴重不匹配(一般都不大于500MS),從而造成應答失步,故總是提示"通信失敗".
知道這個道理你就不難理解這個電路最上面的二極管和電阻串聯起來就是必須要有上電加速電路.這里還用了一只(內部空心不帶藍色的)肖特基二極管(1N5819)從法拉電容向單片機VCC放電,還同時阻斷法拉電容對上電加速電路的旁路作用,用肖特基二極管是基于其在小電流下導通電壓只有0.2V左右考慮的,目的是盡量減少法拉電容在掉電時的電壓損失.多留掉點維持時間.
三極管9014和鉗制位二極管分壓電阻墊位電阻(470歐姆)等構成基極上發射極雙端輸入比較器,實現掉電檢測和發出最高優先級的掉電中斷,這部分電路相當于半只比較器LM393,但電路更簡單耗電更省(掉電時耗電小于0.15MA).
47K電阻和470歐姆二極管1N4148一道構成嵌位電路,保證基極電位大約在0.65V左右 (可這樣計算0.6(二極管導通電壓)+5*0.47/47),這樣如果9014發射極電壓為0(此時就是外部掉電),三極管9014正好導通,而且因為51單片機P3.2高電平為弱上拉(大約50UA),此時9014一定是導通且弱電流飽和的,這樣就向單片機內部發出最高硬件優先級的INX0掉電中斷.
而在平時正常供電時,因發射極上也大約有6*0.22/2.2=0.6V電壓上頂,不難發現三極管9014一定處于截止狀態,而使P3.2維持高電平的.
下面還有兩個重要軟硬件要點和建議:
1.硬件要點:凡是驅動單片機外部口線等的以輸出高電平驅動外部設備,其電源不能和電片機的供電電壓VCC去爭搶(例如上拉電阻供電不取自單片機VCC).而應直接接在電源前方,圖中4.7K電阻和口線PX.Y就是一個典型示例,接其它口線PX.Y'和負載也雷同.這里與上拉4.7K電阻相串聯二極管也有兩個作用:
1.鉗去0.6V電壓以便與單片機工作電壓相匹配,防止口線向單片機內部反推電.造成單片機口線功能紊亂.
2.利用二極管單向供電特性,防止掉電后單片機通過口線向電源和外部設備反供電.
上面的硬件設計,在與軟件結合起來(見下面敘述)就可以保證在掉電期間,不會因法拉電容上的積累電荷為已經掉電的外部電路無謂供電和向電源反供電造成電容能量泄放縮短掉電維持時間.
2.軟件要點:首先INX0在硬件上(設計)是處于最高優先級的,這里還必須要在軟件保證最高級別的優先.從而確保掉電時外部中斷0能打斷其他任何進程,最高優先地被檢測和執行.其次在INX0的中斷程序入口,還要用:
MOV P1,#00H
MOV P2,#00H
MOV P3,#00H
MOV P0,#00H
SJMP 掉電保存
來阻斷法拉電容的電荷通過單片機口線外泄和隨后跳轉掉電寫入子程序模塊.(見硬件要點)
有了上面的預備和細節處理,下面我們信心百倍地一道來計算0.47UF的電容從5.5V跌落到4.5V(甚至可以下到3.6V)所能維持的單片機掉電工作時間.
這里設單片機工作電流為20MA(外設驅動電流已經被屏蔽)不難算出:
T=1V*0.47*1000(1000是因為工作電流為豪安)/20=23.5秒!!!!!
天!這個對單片機而言相當于從原始社會到共產主義社會的歷史慢長.休說是寫內部FLASH ROM,就是從新寫片子本身都能寫