源電流檢查是一個常用的功能。
例如,對于電池供電的產(chǎn)品,需要實時監(jiān)測電流,判斷電池的狀態(tài),提醒用戶及時給電池充電或更換電池板。
又如通過測量電池電流來判斷停電,停電后利用電容上儲存的電荷及時供電,維持錄音工作。 在此期間,RAM中的數(shù)據(jù)會被寫入flash等非易失性存儲中,再次上電后讀取恢復(fù),從而實現(xiàn)掉電記憶功能。
為了保證該功能的可靠性,產(chǎn)品必須滿足電源瞬態(tài)測試要求。 例如電源中斷50ms,停電后,并聯(lián)在電源兩端的電解電容可以繼續(xù)放電,維持負(fù)載的正常工作。
50ms瞬時中斷要求電容器對負(fù)載放電50ms后,電容器兩端電流仍能滿足設(shè)備正常工作要求。
電容值的估算
下面以電路為例,12V電源經(jīng)LDO穩(wěn)壓,+3.3V供給負(fù)載。
低壓降電路
經(jīng)計算,+3.3V電源負(fù)載電壓為50mA;
對于線性穩(wěn)壓器,其輸入電壓等于輸出負(fù)載電壓加上線性穩(wěn)壓器的工作電壓(即靜態(tài)電壓);
上圖中Iin=Iload+IQ,從尺寸書上可以看出其靜態(tài)電壓約為6mA,所以+12V外接電源的負(fù)載電壓為50mA+6mA=56mA。
需要注意的是,對于DC-DC電源,輸入電壓和輸出電壓需要通過效率從功率的角度進(jìn)行轉(zhuǎn)換;
從尺寸書上也可以得知,LDO的最小壓降最大值為1.10V,即輸入電流需要在3.3V+1.1V=4.4V以下,LDO可以輸出一個+3.3V的電流穩(wěn)定。
LDO的靜態(tài)電壓和壓差
根據(jù)這個參數(shù),+12V輸入電源兩端的電解電容C1必須取大值才能保證+3.3V電源電流在斷電50ms內(nèi)穩(wěn)定,負(fù)載才能正常工作。
+12V斷電時,C1通過LDO向負(fù)載放電,其放電電壓為56mA。
從放電開始,能穩(wěn)定輸出+3.3V電流到+3.3V的電壓降ΔU=(12-4.4)=7.6V;
由電容I=C*du/dt的電壓電流關(guān)系可得C=I*Δt/ΔU=56mA*50ms/7.6V=368uF;
通過仿真軟件,用示波器檢測LDO輸入電流斷電后的波形。 可知,電容以56mA恒流放電時,放電至LDO+3.3V穩(wěn)定輸出電流4.4V對應(yīng)的時間為49.9mS,與理論分析一致。 一致。
電容器恒流放電的電流波形
電解電容的容量偏差通常為標(biāo)稱的±20%;
鋁電解電容器的電氣性能參數(shù)受濕度影響:隨著溫度升高,電解液的粘度降低,從而提高其導(dǎo)電率。 因此,溫度升高時電容減小,水溫升高時電容減小,這些現(xiàn)象比其他類型的電解電容器更顯著;
-40℃容量比常溫容量提高10%;
為此,電容器的容量偏差應(yīng)考慮為標(biāo)稱容量的±30%;
理論估算得到實際容量要求368uF,應(yīng)選用368F/70%=525uF的電容,可選用680uF的電容;
軟件設(shè)計審查
第一部分,根據(jù)計算出的負(fù)載電壓,設(shè)備正常工作的最小電流,瞬態(tài)時間的要求,由電容器的電壓電流關(guān)系推導(dǎo)出電容器的電容值; 并通過電源瞬態(tài)測試進(jìn)行驗證。
處理器的中斷資源有限,中斷處理函數(shù)通常只用于實時性要求特別高的業(yè)務(wù);
例如通訊;
耗時長、實時性要求差的業(yè)務(wù),通常在主循環(huán)中處理;
因此,斷電檢查和寫入RAM數(shù)據(jù)或FLASH通常在主程序中完成;
代碼中不能有while for death,比如軟件延時,死等待ADC完成等硬件標(biāo)志。
需要評估所有中斷的執(zhí)行時間,主程序的執(zhí)行時間最長;
在停電的情況下,執(zhí)行輸入電流測量和保存數(shù)據(jù)程序可能需要這樣的時間;
對于處理器來說,擦除FLASH的一頁(1kB)的最大時間是40ms;
寫入1個字?jǐn)?shù)據(jù)最長時間為70us,保存50個字?jǐn)?shù)據(jù)最長時間為3.5ms;
如果需要同時備份一組數(shù)據(jù),斷電后50個字的數(shù)據(jù)保存總時間高達(dá)87ms;
事實上,50ms的保持時間并不滿足處理器內(nèi)部FLASH的掉電記憶要求。
雖然沒有額外備份一組數(shù)據(jù),但考慮到總的中斷時間,主程序不可能在3ms內(nèi)協(xié)程一次。
如果使用內(nèi)置的,如系列,只支持以(4KB)為單位的擦除操作,所需時間最短為40ms,最長為200ms。 畢竟不能在50ms內(nèi)完成斷電。 記憶;
如果使用,如系列,可以按頁寫,即通過IIC通信發(fā)送一頁數(shù)據(jù),然后開始寫操作,這樣寫時間可以達(dá)到5ms左右;
一個容量為8KB的page的大小,也就是寫入32 Bytes。 考慮碼率的通信時間,總成本約為6ms,寫入100字節(jié)數(shù)據(jù)約需18ms。 即使備份另一組數(shù)據(jù),也可以在36ms以內(nèi)完成,所以協(xié)程主程序的最大時間為14ms,努力是可以達(dá)到的;
可能有人會問為什么斷電后還要把數(shù)據(jù)保存在非易失性存儲器中?
如果不考慮成本,鐵電存儲作為非易失性存儲,可以不受限制的隨時寫入;
FLASH的擦寫壽命通常為10萬次;
擦寫壽命通常為100萬次;
通過在軟件算法中對不同磁道進(jìn)行讀寫平衡,可以延長擦寫壽命。
但是,對于一些快速變化的數(shù)據(jù),還是可以滿足使用壽命要求的;
一些外部輸入的高速計數(shù),如生產(chǎn)線上的生產(chǎn)計件,假設(shè)1秒內(nèi)有一個計數(shù)。 如果數(shù)據(jù)發(fā)生變化寫入非易失性存儲器,大約一秒擦寫一次; 大約2天擦寫次數(shù)會達(dá)到16萬次。
根據(jù)以上信息,
電源電流測量電路剖析
測量電源電流測量電路
上圖是一個簡單的電源電流測量電路,將電源電流通過內(nèi)阻分壓后接到MCU的ADC口。
晶閘管D1不僅起到電源反接保護(hù)作用,而且防止電容C1上的電流回流到輸入電源檢測電路中,以便停電后立即進(jìn)行測量;
有幾個問題需要考慮:
1)測量電路的工作電壓,以智能灌溉球閥控制器為例,設(shè)備采用9V酸性電池供電,實測容量約為;
MCU休眠幀率可以做到10uA左右;
根據(jù)設(shè)定的定時澆水邏輯,借助RTC的Alarm功能,每晚定時被喚醒,驅(qū)動球閥開啟施肥。
驅(qū)動電壓約500mA,驅(qū)動時間約1s,執(zhí)行1次耗電0.14mAh,三天執(zhí)行3次總耗電0.42mAh;
設(shè)備待機三天耗電量約為0.24mAh;
三天總耗電量0.66mAh,電池可使用606天;
電源電流測量電路的平均工作電壓約為64uA,三天耗電量為1.54mAh,遠(yuǎn)小于單片機的睡眠幀率。 在此電壓下,電池只能使用180天左右;
減小R2的阻值雖然可以降低測量電路的電壓,但是阻值大的電阻精度差,PCB板表面絕緣的內(nèi)阻也會影響檢測精度。
2)MCU端口保護(hù),在該電路中,MCU端口通過分壓內(nèi)阻R2暴露在外;
當(dāng)發(fā)生靜電放電、電磁干擾、雷擊、接地不良、感性負(fù)載切換等情況時,可能有浪涌電流或浪涌電壓從外部接入MCU;
浪涌電流時間很短,一般為幾十毫秒,幅度可達(dá)數(shù)千伏;
D1導(dǎo)通后正向電流可以被C1和C2吸收,由于D1導(dǎo)通所需的響應(yīng)時間和布線寄生電感的影響,難免會有高壓脈沖進(jìn)入IO口;
電源電流越大,R3兩端的分壓值越大。 當(dāng)分壓值超過MCU工作電流與MCU端口上拉保護(hù)晶閘管正向?qū)娏髦蜁r,
然后電壓通過上拉保護(hù)晶閘管流向MCU的電源;
假設(shè)供電電流為Vin,單片機工作電流為V+3.3V,單片機內(nèi)部上拉和下拉保護(hù)晶閘管的導(dǎo)通電流為Vf,流經(jīng)單片機的晶閘管為Iin滿足以下關(guān)系:
當(dāng)(V_{+3.3V}+V_f)">時,
根據(jù)單片機的尺寸書,如果流過保護(hù)晶閘管的電壓超過10mA,可能會損壞IO口。
對應(yīng)的輸入電流為:
同樣,當(dāng)負(fù)電流高于1008V時,IO口可能損壞;
對于這些情況,靠近 MCUIO 端口放置的小電容器可以起到至關(guān)重要的保護(hù)作用;
浪涌電流或靜電的特點是時間很短,最多只有幾十秒;
電容兩端電流不能突變,輸入電流通過R2、R3對電容充電,時間常數(shù)τ為,
電容器兩端的電流為:
應(yīng)保證在高壓脈沖持續(xù)時間內(nèi),電容兩端的電流不能充電到單片機內(nèi)部保護(hù)晶體管導(dǎo)通的點;
考慮持續(xù)時間為20us、幅度為2000V的電流,必須滿足:
frac{20us}{-ln(1-frac{0.3}{2000})}=0.13s">
frac{0.13}{R_2//R_3}=14uF">
問題是,
1)如果保護(hù)電流高達(dá)幾千V,浪涌電流持續(xù)幾十us,為防止對MCU造成損壞電流與電壓成什么比,需要的電容值比較大;
2)出于保護(hù)的目的,選擇了大電容,同時會導(dǎo)致電容放電緩慢,導(dǎo)致MCU無法及時檢測到掉電。 為實現(xiàn)停電記憶,要求有較長的瞬時停電時間;
浪涌電流需要通過雙極型TVS或壓敏電阻內(nèi)阻進(jìn)行鉗位。
電源電流測量電路的改進(jìn)
可用二極管來控制測量電路的通斷,如右圖所示:
開關(guān)控制電源電流測量電路
MCU的IO口輸出高低電平,通過Q1、Q2控制電源電流測量電路的通路;
只有在需要檢查時才輸出高電平使Q1和Q2導(dǎo)通。 電源電流經(jīng)R2、R6分壓后送至ADC端口進(jìn)行測量。 如果是電池供電,此時會消耗電池的電量。
還有一種更簡單的電路也可以達(dá)到同樣的效果;
優(yōu)化電源電流測量電路
與之前的電路相比,少了一個PNP二極管和兩個電路,可以省幾毛錢。 螞蟻腳也是肉。 摘下口罩后,大體情況不明朗,還能省一點。
電路設(shè)計的要點是選擇合適的柵極、集電極結(jié)和發(fā)射結(jié)電阻,使二極管Q1處于飽和導(dǎo)通狀態(tài);
假設(shè)二極管始終處于放大狀態(tài),
供電電流為Vin,MCU端口輸出高電平為VO;
B極電壓為IB,C極電壓為IC,BE極壓降為VF;
流過內(nèi)阻R1的電流為VE,流過二極管CE的電流為VCE。
二極管C極的電壓放大倍數(shù)為β,建立如下關(guān)系:
(1)
(2)
(3)
(4)
(5)
由1、4可得電流與電壓成什么比,
進(jìn)一步得到:
VCE的時候
若VO=3.3V,VF=0.7V,R1=10KΩ,R2=100KΩ,則Q1處于飽和導(dǎo)通狀態(tài)的條件為:
(kΩ)
取電壓放大倍數(shù)β的最小值為50,Vin的最大值為20V,則右式最小值為219kΩ;
因此,R4只需大于219kΩ即可使Q1處于飽和導(dǎo)通狀態(tài);