-
1 # 宋先生tao
-
2 # 技術閒聊
微控制器的ADC介面屬於模數轉換介面,將外部的模擬量訊號轉化為數字訊號,微控制器屬於數字器件,需將模擬訊號轉化為數字訊號才能夠為微控制器處理。目前市場的很多微控制器都自帶ADC轉換介面,若無ADC轉換介面,可以使用ADC數模轉換晶片外擴。
▲微控制器最小系統
ADC模組是將模擬訊號轉化位數字訊號,數字訊號用0和1表示,ADC模組有參考電壓,假設給的參考電壓是5V,ADC是12位的(幾位表示用二進位制幾位數儲存模擬量轉化後的數字量,12位的ADC則可儲存數字量範圍為:(二進位制)000000000000~111111111111,轉換為十進位制數字範圍為0~2^12即0~4095。
也就是說把參考電壓分為2^12份即4096份,最小解析度為VREF/4096。
也就是說二進位制的000000000000代表輸入模擬量0V,而111111111111代表最大值VREF。
▲微控制器原理
下面以上圖C8051微控制器為例子,如原理圖所示,該微控制器工作電源為3.3V,參考電壓為2.048V,所以模擬量的輸入範圍為0~2.048V。若所需採集的電壓範圍大於參考電壓值時,可以使用電阻分壓進行降壓或者使用運放進行縮小等。
該微控制器ADC為12位的。也就是說輸入電壓為0時,微控制器轉換後的數字量結果為000000000000(二進位制),當輸入電壓為2.048V時,微控制器轉換後的數字量結果為111111111111(二進位制),十進位制為4095。
也就是說,輸入電壓的值V=2.048×ADC採集到的數字量÷4095。
比如我們要採集一個0~10V範圍的模擬量電壓進行顯示,那麼,可以先將0~10V的電壓縮小5倍,可以使用電阻分壓,也可以採用運放縮小等方式,然後接入微控制器的ADC取樣口,可以接入上圖的P2.2口。
最後換算公式為:V = result * 2.048/ 4095 * 5;其中 result為微控制器採集到的數字量。
-
3 # 玩轉嵌入式
微控制器只能處理0和1數字訊號,而不能 直接處理模擬量訊號。如果要處理模擬量訊號,則需要用到AD轉換,即模擬量轉化為數字量。目前大多數的微控制器都具有片上AD取樣資源,如果沒有片上AD資源可以透過外接AD轉化晶片,再和微控制器連線。AD轉化的原理介紹如下。
AD取樣原理微控制器的AD取樣是將一定範圍內的模擬量轉化為一定範圍的數字量。模擬量的範圍取決於AD取樣的參考電壓,數字量的範圍取決於AD取樣的位數。比如微控制器AD取樣的參考電壓是(0-5)V,AD取樣位數為10位,則AD取樣就將(0-5)V的模擬量對應到了(0-1023)的數字量,即將(0-5)V滿量程分成了1024份,即對應如下圖所示。
所以,在AD取樣時,就有兩個非常重要的關鍵引數,微控制器取樣時的參考電壓和微控制器AD取樣的位數。被採集的電壓不能超過參考電壓,取樣的精度取決於AD取樣的位數。
AD取樣的計算方法假設參考電壓為VF,取樣位數為10位(最大-0-1023,共1024份),微控制器在某一時刻的取樣值為ADValue,則透過如下公式可算出,此時所對應的電壓值V:
V = ADValue×VF/1024。
其實,AD取樣的過程,就是對模擬量做微分的過程,所分成的份數越多,那麼取樣誤差也就越小,也就是說,AD取樣的位數越多,那麼取樣的精度越高。目前常用的AD取樣位數有10位,12位,16位,24位等。
-
4 # 電子產品設計方案
透過AD轉換微控制器可以把模擬訊號轉換為數字訊號
微控制器透過AD輸入口可以採集到外界的電壓值。根據I=U/R的關係,可以用於測量電流;使用NTC和固定電阻進行分壓,可以測量到溫度;使用分敏電阻和固定電阻進行分壓,可以測量到光線的強度。
微控制器怎麼透過AD轉換得到電壓值如果微控制器的ADC為12位,那麼它的最大值為4095。微控制器在進行AD轉換前需要先設定一個參考電壓。假如把參考電壓設定為5V,5V=4095,0V=0;根據這樣的關係,我們就可以把模擬電壓進行數字化了。比如:2V=2/5*4095=1638。
微控制器透過ADC測電流電子產品的設計中,我們往往需要加入過流保護。有了微控制器ADC的協助,就可以實現這個功能。我們可以給負載串聯一個阻值較小的電阻,微控制器透過AD輸入口採集這個小電阻的壓降,根據I=U/R的關係就可以計算出電流的大小。電流過大時,及時切斷負載的電源。
單片透過ADC測溫度NTC是負溫度係數的熱敏電阻,溫度越高,電阻值越小;它的阻值變化與溫度有著一定的對應關係。使用固定阻值的精密電阻與NTC進行分壓,微控制器的ADC輸入口採集分壓點的電壓。根據採集到的電壓就可以計算出NTC當前的阻值,再根據NTC阻值與溫度關係表,可以得到當前的溫度。
微控制器如何處理ADC採集到的資料?為了使測量結果更準確,在實際應用中,往往會進行多次集,然後進行軟體濾波。常見的軟體濾波方法有:
算術平均濾波法:連續採集多個數據,累加起來再進行平均
中位值濾波法:連續採集多個數據,然後從小到大排列,取中間的數值
中位值算術平均濾波法:連續採集多個數據,然後從小到大排列,去除最大和最小的數值,其它的加起來進行平均
限幅濾波法:根據經驗,如果採集到的資料偏差超出了最大值,就放棄不使用。
還有更多的軟體濾波方法就不多說了,大家可以根據實際應用需求,選用合適的軟體濾波方法。
-
5 # IT自動化交流
ADC硬體電路
ADC取樣的硬體電路比較簡單,經過調整之後的電路透過R、C濾波接到ADC取樣埠。
如果對精度有要求,可以在微控制器的AD基準電壓的輸入腳Vref接入高精度的穩壓電源。
可以採用TL431提供Vref電壓。
需要注意輸入取樣電壓的瞬時值不能操作ADC埠允許的輸入電壓範圍。
ADC埠的輸入電阻不能過大,否則在多路ADC轉換時,ADC模組的取樣電容可能沒有足夠的時間取樣到電壓就開始轉換,影響ADC的精度。
一般來說,微控制器只有有限幾個ADC模組,而為了支援儘可能多的ADC通道,在微控制器內部透過查模擬開關進行通道的切換。
比如STM32F103的微控制器,其內部有3個ADC模組,支援10幾個ADC通道。
因此微控制器在做ADC轉換時,有如下三個步驟:
切換通道,透過微控制器的通道選擇暫存器控制內部的模擬開關切換ADC通道。
電壓取樣,透過一定ADC時鐘的延時,使得ADC埠電壓被採集到ADC模組的取樣電容上。
數值轉換,透過逐次逼近的原理,對取樣到取樣電容上的電壓與參考電壓Vref進行比較,得到AD數值。
這幾個步驟都需要編寫微控制器的程式實現。ADC一次取樣率的計算,
一次ADC取樣的時間包括:
取樣電容取樣的時間+轉換時間,
取樣電容取樣的時間透過暫存器進行設定。
逐次逼近的ADC,採用二分法進行逐次逼近,其轉換時間一般為ADC的位數+1個ADC時鐘。
比如14位的ADC,其轉換時間為15個ADC時鐘。
對於週期性的自動觸發轉換,其單次取樣的時間必須要小於ADC的轉換週期。
比如:
取樣時間為10us,ADC時鐘為1us,14位的ADC,單次轉換時間約為10us+15us=25us,取樣率必須<50KHz。
微控制器的ADC程式,主要包括以個方面:ADC模組的初始化,包括:
輸入埠的初始化配置,需要把埠配置成模擬輸入口。
參考電壓初始化,選擇參考電壓。
ADC時鐘初始化,設定ADC時鐘的分頻等,使得ADC的時鐘既能滿足ADC模組的規格要求,又能滿足ADC取樣速率的要求。
設定取樣時間,以及轉換的啟動觸發源。
如果需要進行週期性等間隔取樣,比如取樣市電電壓、電流計算真有效值,可以利用定時器作為ADC的啟動觸發源。
否則可以透過軟體控制ADC的啟動位進行觸發轉換。
...
ADC轉換的狀態機
大部分工程師編寫的ADC程式碼,將ADC配置->取樣->轉換->讀結果一次性操作完成。在程式碼中,透過延時進行取樣,再while等待轉換完成標誌之後讀取數值。
這樣的程式碼執行效率低,在ADC轉換時,無法處理其它邏輯,響應的實時性差。
軟體控制觸發的ADC,其狀態機如下:
以下是本人使用的ADC轉換程式,用來檢測溫度、溼度、電壓等模擬量。
如果是週期性的自動觸發轉換,需要配置轉換完成中斷,在該中斷程式中讀取結果進行處理。
回覆列表
樓上的回覆大概的講解了如何處理ADC取樣。我這邊系統的從類比電路的角度來給你講一下。
為了實現控制,控制系統需要採集一次迴路的電流和電壓訊號。將這些訊號透過霍爾感測器轉化成小訊號電流,再透過取樣電阻轉換成電壓,然後經過濾波、放大等環節調理後,送到AD 晶片進行資料轉換,轉換後的值一路送到微控制器 進行處理,上述過程完成了一次完整的ADC取樣。
首先經過霍爾感測器將電壓電流訊號,轉化成小的電流訊號。
然後是取樣濾波環節,一般一介RC濾波,濾除由霍爾感測器等的雜波干擾。
其次是放大環節,經霍爾感測器採集的訊號往往是小電流訊號,需要經過放大後變成電壓訊號輸入到微控制器。
ADC轉換。經過放大後的晶片需要經過AD晶片,如AD7656等,將模擬量轉換成數字量,輸入DSP。
經AD轉換晶片轉換的數字量輸入微控制器進行處理,完成ADC取樣。
有時候ADC取樣過來的訊號,需要經過比較處理變化成0/1保護訊號,此時就需要經過整流、比較等過程。