在做一款消費電子產品時,需要采集電池電壓(3.3V-4.2V),同時在休眠的時候希望盡量減小待機電流。電池電壓采集電路采用兩個300K電阻進行分壓,由該電路引起的待機電路為4.2V/(300+300)K=7uA.此時比較合理(整機的待機電流要求30uA以內)。初始設計電路如下:
在編程采集數據時發現測試電壓與實際電壓有偏差,測試值總比實際值偏小一點。在軟件上做補償,把值修正了。但是換一個板子測試的時候發現測試的電壓又不準了,此時知道通過軟件補償這種方法行不通。那么只能從硬件找原因。查找datasheet發現AD的輸入阻抗最大只有50KΩ。
圖中,Rain:外部輸入阻抗,STM32芯片中這個值最大為50KΩ;Radc:采樣開關電阻,最大值為1KΩ;Cadc:內部采樣和保持電容,最大值為8pF。在ADC數據采集的時候需要有電流流入,那么Rain會產生一個壓降。阻容網絡中的Radc和Cadc上,對電容的充電由Radc控制。隨著源電阻(Radc)的增加,對保持電容的充電時間也相應增加。對Cadc的充電由Rain+Radc控制,因此充電時間常數為tc=(Radc+Rain)×Cadc。如果時間過短,ADC轉換的數值會小于實際值。通過以上數據知道,采集精度跟采集時間和輸入阻抗有關。但是通過計算得知,如果輸入阻抗為300KΩ,那么充電時間約為2.4us。在軟件上把采樣周期調到最大(ADC_SampleTime_239_5Cycles,頻率為12M,時間19.9us),還是存在誤差,說明此時跟周期不是主要原因。問題出在輸入阻抗大于ADC允許的最大阻抗。充電時電流分兩路,一路經過R1到R2到地,還有一路經過R1流入MCU的AD接口,此時相當于在R2旁邊并了一個電阻到地,檢測點的電壓不是標準的1/2VBAT+。那么為了更準確地檢測電池電壓,那么只好把電阻改小。如果選兩個50K的電阻,那么此處帶來的電流會后42uA.所以在電路上做了個調整:
原來接地的地方改接到一個IO口,在需要檢測的時候輸出低電平,不需要的時候輸出高電平。然后分壓電阻使用兩個30K的問題得到解決,電壓檢測誤差小于0.02V,待機電流比原來的還小了幾個微安。
-
電子產品
+關注
關注
6文章
1161瀏覽量
58293 -
阻抗
+關注
關注
17文章
958瀏覽量
46023 -
adc
+關注
關注
98文章
6507瀏覽量
544912 -
電壓
+關注
關注
45文章
5611瀏覽量
115898
發布評論請先 登錄
相關推薦
評論