假設MCU的供電是3.3V,ADC能夠測量的電壓范圍是0-3.3V,如果要測量如電池電壓6V的這種場景,該怎么辦呢?
很容易能夠想到的方法是先進行電阻分壓,將高于3.3V的電壓分到ADC的量程內進行采集,最后再換算回實際電壓。這就引入了一個問題,分壓電壓該選多大?比如進行1/2分壓,是選2個1KΩ串聯還是選兩個1MΩ串聯呢?電阻值能否隨意選擇呢?
先說結論:電阻不能隨意選,首先它不能太大!
以STM32F103為例子,在數據手冊中可以看到外部輸入阻抗有一個最大值50kΩ的要求。
這個值是由下面的計算公式算出來的,
需要注意的是輸入阻抗的最大值并不是固定不變的,不是說只要小于50kΩ就可以,因為它和ADC時鐘頻率、采樣周期、轉換位數都有關系。比如上面表格中,當ADC時鐘頻率14Mhz,采樣周期1.5 cycels,轉換位數12時,最大輸入阻抗就是0.4kΩ。
Tab 46標稱的最大輸入阻抗50kΩ,是在ADC時鐘頻率14Mhz,采樣周期55.5 cycles,轉換位數12時計算出來的值,它同時也是ADC模塊所能接受的最大值 (受硬件決定,這也是為什么Tab 47最后兩行寫NA的原因,雖然根據公式也能算出來一個比50更大的值)。
簡單來說,可以這么理解:因為ADC內部的采樣保持電路(電容組成),如果外面的電阻大,就會導致RC電路充電時間長,如果采樣周期小,就會引起電容在沒完全充滿電的情況下就被采集,自然ADC得到的數就不準。
從提高ADC采樣速率的角度來說,電阻越小,RC充放電速度快,ADC的采樣速率就能更高。不過電阻小,會增大功耗,在對功耗有要求的場合,這個電阻還不能選的太小。
對于必須低輸入阻抗,同時又需要低功耗的場合,可以先用大電阻分壓,后面再用運放跟隨器的方式。
電阻大小的問題說完了,還有最后一個問題,等效輸入阻抗和第一幅圖里的兩個串聯分壓電阻是什么關系?等效輸入阻抗是R1、還是串聯值R1+R2,還是并聯值R1*R2/R1+R2呢?這個問題曾困惑了我好久,當年上學時學的理論知識全交給老師了。
這個問題可以這么簡單想,假設R2是0Ω,進入到ADC的電壓就是GND,和R1是多大就沒關系了,等效輸入阻抗就是0Ω。再假設R2無窮大,等于是斷開,電阻只有R1了。這么一想答案就清晰了吧,等效輸入阻抗是兩個分壓電阻的并聯。
審核編輯:劉清
-
mcu
+關注
關注
146文章
17019瀏覽量
350373 -
adc
+關注
關注
98文章
6452瀏覽量
544145 -
電池電壓
+關注
關注
0文章
195瀏覽量
11659 -
STM32F103
+關注
關注
33文章
476瀏覽量
63496 -
Vcc
+關注
關注
2文章
305瀏覽量
35862
原文標題:MCU ADC如何測量超過VCC的電壓?
文章出處:【微信號:TopSemic,微信公眾號:TopSemic嵌入式】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論