在這篇文章中,小編將為大家?guī)?a href="/tags/ADC" target="_blank">ADC模數轉換器的相關報道。如果你對本文即將要講解的內容存在一定興趣,不妨繼續(xù)往下閱讀哦。
一、ADC模數轉換器分類
1、積分型
積分型AD工作原理是將輸入電壓轉換成時間(脈沖寬度信號)或頻率(脈沖頻率),然后由定時器/計數器獲得數字值。
2、逐次比較型
逐次比較型AD由一個比較器和DA轉換器通過逐次比較邏輯構成,從MSB開始,順序地對每一位將輸入電壓與內置DA轉換器輸出進行比較,經n次比較而輸出數字值。其電路規(guī)模屬于中等。
3、并行比較型/串并行比較型
并行比較型AD采用多個比較器,僅作一次比較而實行轉換,又稱FLash(快速)型。由于轉換速率極高,n位的轉換需要2n-1個比較器。
4、串并行比較型
Half flash(半快速)型:是由2個n/2位的并行型AD轉換器配合DA轉換器組成,用兩次比較實行轉換。
三步或多步實現AD轉換的叫做分級(Multistep/Subrangling)型AD,而從轉換時序角度又可稱為流水線(Pipelined)型AD,現代的分級型AD中還加入了對多次轉換結果作數字運算而修正特性等功能。
5、Σ-Δ調制型
Σ-Δ型AD由積分器、比較器、1位DA轉換器和數字濾波器等組成。原理上近似于積分型,將輸入電壓轉換成時間(脈沖寬度)信號,用數字濾波器處理后得到數字值。
6、壓頻變換型
壓頻變換型是通過間接轉換方式實現模數轉換的。將輸入的模擬信號轉換成頻率,然后用計數器將頻率轉換成數字量。
二、ADC模數轉換器電路設計
我們先來看一下電路設計:
我們可以看到,電源輸出VIN通過R6和R5兩個分壓電阻,將其線性的降壓到ADC1_CH0電路中,并接到PA0引腳上??梢杂嬎愕玫揭韵聝热荩?
我們通過了這個兩個電阻分壓的線性降壓電路將11.1v到12.6v的電壓降低到2.868v到3.256v。為什么這個做呢?原因是STM32的AD轉換引腳能夠接受的模擬電壓范圍為的最大值是3v。當我們通過STM32的ADC采集將降壓后的電源轉為數字信號,再通過程序還原成原始的電壓數值,我們就可以得到電源電壓了。假設ADC采集到的電壓為v,于是我們可以得到電源電壓V的值的計算方法為:
接下來,我們來編寫STM32程序,通過ADC采集到我們的電源電壓:
這樣我們就完成了ADC1的CH0的配置工作。之后我們還需要編寫一個函數用于讀取ADC1中CH0的數字信號值:
最后,我們通過在main函數中對ADC1中的CH0進行配置,并在主循環(huán)中讀取電源電壓信息:
當我們通過調用adc_get(0)函數得到采集電壓v之后,再通過uart_write(v)函數將電壓值發(fā)送到串口當中方便我們觀察。讀者只需要了解得到電壓v之后如何計算出電源電壓即可。例如我們從串口中得到的數據如下:
實際上,我們得到了很多組數據,它們之間會存在一些小的差別,但并不很大。
我們,可以在電源電壓接近11v時再進行一次采集和計算,我們采集到的數據為50 DF:
通過上述方法計算得到電源電壓為:
16進制轉10進制: 0xDF50 = 57168
除以16通道分辨率: 57168 / 65535 = 0.872327764
乘以電路中分壓值3.256v: 0.872327764 × 3.256 = 2.840299199
轉為實際電源電壓: 2.840299199 × 387 ÷ 100 = 10.992
最后,我們就得到了電源電壓為10.992v約等于11v
于是,我們通過程序來計算上面的內容:
這樣我們就完成了通過STM32采集電源的電壓,方便我們以后實時查看小車的電源情況。
以上便是此次的全部內容,經由小編的介紹,不知道你對ADC模數轉換器是否充滿了興趣?如果你想對它有更多的了解,不妨嘗試在我們的網站里進行搜索哦。