回覆列表
  • 1 # 宋先生tao

    樓上的回覆大概的講解了如何處理ADC取樣。我這邊系統的從類比電路的角度來給你講一下。

    為了實現控制,控制系統需要採集一次迴路的電流和電壓訊號。將這些訊號透過霍爾感測器轉化成小訊號電流,再透過取樣電阻轉換成電壓,然後經過濾波、放大等環節調理後,送到AD 晶片進行資料轉換,轉換後的值一路送到微控制器 進行處理,上述過程完成了一次完整的ADC取樣。

    首先經過霍爾感測器將電壓電流訊號,轉化成小的電流訊號。

    然後是取樣濾波環節,一般一介RC濾波,濾除由霍爾感測器等的雜波干擾。

    其次是放大環節,經霍爾感測器採集的訊號往往是小電流訊號,需要經過放大後變成電壓訊號輸入到微控制器。

    ADC轉換。經過放大後的晶片需要經過AD晶片,如AD7656等,將模擬量轉換成數字量,輸入DSP。

    經AD轉換晶片轉換的數字量輸入微控制器進行處理,完成ADC取樣。

    有時候ADC取樣過來的訊號,需要經過比較處理變化成0/1保護訊號,此時就需要經過整流、比較等過程。

  • 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轉換程式,用來檢測溫度、溼度、電壓等模擬量。

    如果是週期性的自動觸發轉換,需要配置轉換完成中斷,在該中斷程式中讀取結果進行處理。

  • 中秋節和大豐收的關聯?
  • 三菱勁炫音響還有提升空間嗎?