STM32采集AD的輸入阻抗問題


  在做一款消費電子產品時,需要采集電池電壓(3.3V-4.2V),同時在休眠的時候希望盡量減小待機電流。電池電壓采集電路采用兩個1%的300K電阻進行分壓,由該電路引起的待機電路為4.2/(300+300)mA=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),還是存在誤差。說明此時跟周期不是主要原因。

  問題出在輸如阻抗大於IC里ADC允許的最大阻抗。充電時電流分兩路,一路經過R1到R2到地,還有一路經過R1流入MCU的AD接口。(不知是不是IO口會有一定的漏電流到地,IL)此時相當於在R2旁邊並了一個電阻到地,檢測點的電壓不是標准的1/2Vbat.

  那么為了更准確地檢測電池電壓,那么只好把電阻改小。如果選兩個50K的電阻,那么此處帶來的電流會后42uA.所以在電路上做了個調整:

  

  原來接地的地方改接到一個IO口,在需要檢測的時候輸出低電平,不需要的時候輸出高電平。然后分壓電阻使用兩個30K的問題得到解決,電壓檢測誤差小於0.02V,待機電流比原來的還小了幾個微安。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM