微控制器 ADC詳解

2021-09-11 16:41:01 字數 3284 閱讀 8178

之前有說到,計算機世界裡,只有數字量0和1,那你有沒有想過乙個問題,那要不是數字量怎麼表示。

比如這樣。

他在微控制器中是怎樣儲存傳輸的呢?

理論篇

數字量:在時間上和數量上都是離散的物理量稱為數字量。把表示數字量的訊號叫數碼訊號。把工作在數碼訊號下的電子電路叫數位電路。數字量由多個開關量組成。如三個開關量可以組成表示八個狀態的數字量。

例如:用電子電路記錄從自動生產線上輸出的零件數目時,每送出乙個零件便給電子電路乙個訊號,使之記1,而平時沒有零件送出時加給電子電路的訊號是0,所在為記數。可見,零件數目這個訊號無論在時間上還是在數量上都是不連續的,因此他是乙個數碼訊號。最小的數量單位就是1個。

模擬量:在時間上或數值上都是連續的物理量稱為模擬量。把表示模擬量的訊號叫模擬訊號。把工作在模擬訊號下的電子電路叫模擬電路。模擬量是連續的量,數字量是不連續的。反映的是電量測量數值(如電流、電壓)。

例如:熱電偶在工作時輸出的電壓訊號就屬於模擬訊號,因為在任何情況下被測溫度都不可能發生突跳,所以測得的電壓訊號無論在時間上還是在數量上都是連續的。而且,這個電壓訊號在連續變化過程中的任何乙個取值都是具體的物理意義,即表示乙個相應的溫度。

所以為了方便儲存、分析和傳輸,我們常常把模擬訊號轉化成數碼訊號,像這樣。

是不是明白了呢?

我們知道,模擬訊號在時間上和數值上都是連續的,這個在計算機中是不能實現的,所以把時間離散化,把一段時間分成n等分,記住每個時間段的數值大小就能表示出原始模擬訊號變化。當然,這裡時間段劃分的越小,數值的精度越高,模數轉化的精度就越高。

這------在微控制器的世界裡是有專門的模組完成的,或者單獨的晶元,或是電路直接整合在微控制器裡面,所以,就是adc

adc

adc是模數轉換器轉換器 的**商的英文簡稱,是一種能將模擬訊號轉變為數碼訊號的電子元件。通常是將訊號取樣並保持以後,再進行量化編碼,這兩個過程是在轉化的同時實現的。

具體的轉化步驟在這裡就不展開說了,如果是開發者使用,我們應該關注哪些引數

解析度-說明ad對輸入訊號的分辨能力,及數值部分的精度。一般模擬取樣中使用16位還是24位的ad晶元說的就是解析度.

例如:輸入模擬電壓的變化範圍為0~3.3 v,輸出16位二進位制數可以分辨的最小模擬電壓為3.3v / 216=0.05 mv;

2 .轉化誤差-表示ad實際電壓與理論電壓的偏差,一般用最低有效位來表示,單位lsb,通常以相對誤差的形式出現,比如相對誤差≤±lsb/2,表明實際輸出的數字量和理論量誤差小於最低位的一半。

轉換精度-這裡一般用轉化誤差和解析度來表述,具體就是ad最大量化過程中採用了四捨五入的方法及模擬處理部分的精度問題。

轉化時間-即從訊號輸入開始到輸出穩定的訊號所經過的時間。不同的ad準換的速度不同,根據實際要求來選型。

工作電壓基準電壓(內部或者外部基準):工作電壓是ad晶元工作的額定電壓,關鍵的是基準電壓,又叫參考電壓,可以來之晶元內部又或者外部接入,其決定了ad的解析度,所有基準電壓一定要穩。

圖位ni資料採集入門可以參考

到這裡,是不是關於ad的所有內容都懂了呢,另外還有da-即數字量轉模擬量,da轉換的基本原理就是先把數字量每一位**按其「權」的大小轉換成相應的模擬量,然後將各分量相加,其總和就是與數字量相應的模擬量。

實戰篇

這裡使用stmf103配置為例,簡述整個配置流程。

1)開啟 pa 口時鐘設定 pa1 為模擬輸入

stm32f103zet6 的 adc 通道 1 在 pa1 上,所以,我們先要使能 porta 的時鐘,然後設定 pa1 為模擬輸入。

2)使能 adc1 時鐘,並設定分頻因子

要使用 adc1,第一步就是要使能 adc1 的時鐘,在使能完時鐘之後,進行一次 adc1 的復位。接著我們就可以通過 rcc_cfgr 設定 adc1 的分頻因子。分頻因子要確保 adc1 的時鐘( adcclk)不要超過 14mhz。

3)設定 adc1 的工作模式

在設定完分頻因子之後,我們就可以開始 adc1 的模式配置了,設定單次轉換模式、觸發方式選擇、資料對齊方式等都在這一步實現。

4)設定 adc1 規則序列的相關資訊。

接下來我們要設定規則序列的相關資訊,我們這裡只有乙個通道,並且是單次轉換的,所以設定規則序列中通道數為 1,然後設定通道 1 的取樣週期。

5)開啟 ad 轉換器,並校準

在設定完了以上資訊後,我們就開啟 ad 轉換器,執行復位校準和 ad 校準,注意這兩步是必須的!不校準將導致結果很不準確。

6)讀取 adc 值

在上面的校準完成之後, adc 就算準備好了。接下來我們要做的就是設定規則序列 1 裡面的通道,然後啟動 adc 轉換。在轉換結束後,讀取 adc1_dr 裡面的值就是了。(摘自正點原子stm32f1開發指南)

這裡附上樓主認為寫的不錯的模電的電路工作原理鏈結  

微控制器筆記 ADC

mcp3421高精度adc轉換器 csdn部落格 blog.csdn.net 乙個專案的需求,使用的微控制器型號為stm32f030f4,雖然微控制器自帶了12位adc轉換器,解析度可以達到805.66uv 此型號沒有內部參考電壓,所以使用工作電壓作為參考電壓,所以精度值計算 3.3v除以2的12次...

微控制器之ADC

我們在前面的導航鍵中涉及到了ad轉換,但我們不知道是如何轉換以及其原理作用,我們這篇就來詳細的解釋一下 需要知道的一些知識點 ad資料採集電路及採集步驟說明 其中 比較流程ad應用程式設計要點adc資料採集的步驟 特別說明 1 數碼管所顯示的adc轉換結果並不是電壓值,而是電壓進行轉換後所得的乙個值...

應廣微控制器adc 應廣微控制器adc和pwm例程

應廣微控制器otp單核系列主要有以下幾個系列,15x系列為純io,13x系列為帶12bit的adc,17x系列為帶8bit的adc,現在我用pms132b寫個adc pwm例程,方便大家快速上手.不多說,上 include extern.h adc word usadcsum word usadcs...