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