嵌入式學習之ADC
相信很多學習嵌入式的同學都會使用ADC模塊,筆者在大學時代也經常使用ADC做溫度采樣,往往得到溫度值就暗自開心,也沒有深究ADC中連續采樣、單次采樣和被動觸發模式是干嘛用的。直到工作多年后才發現ADC的應用不僅僅那么簡單,涉及到的采樣頻率,分辨率,轉換誤差和轉換時間都需要去深入了解,這樣才能得到更精確的模擬信號量。
本文引用地址:http://www.104case.com/article/202105/425838.htmADC采樣頻率
ADC采樣模塊,就是用來得到當前傳感器的值。比如可以通過高鐵中的溫度傳感器得到高鐵中的溫度,通過煙霧傳感器得到煙霧濃度,通過雷達得到前方是否有障礙物等等。在電力電子的世界,傳感器就相當于人的眼睛,耳朵和感覺,人的大腦就相當于CPU;通過ADC采樣模塊得到了外界參數,再送入CPU,由CPU控制列車降速,停止,升溫降溫等等操作。在高精度的傳感器和CPU方面,歐洲,韓國,日本和美國還是要比我國做得好,我們只是在他們的基礎之上,應用做得好,還需要多多投入基礎研發。
我們來看一個例子,230V 50Hz的家用市電,CPU是如何采樣的呢?
第一步:將模擬信號經過變壓互感器進行降壓到0-3V以內,再將得到的小信號送給單片機
第二步:軟件經過采樣,得到數字信號;再將數字信號乘以采樣比將得到模擬信號的波形。理論上來說,采樣頻率越高,得到的信號越準確,更接近于實際信號,但是更加耗費單片機的資源;采樣頻率越小,得到的信號精度越差,但是對單片機的性能要求不高。實際應用中,需要根據實際的芯片性能,對采樣信號進行采樣頻率的設定。ADC采樣,大家需要牢記采樣定理:
在進行模擬/數字信號的轉換過程中,當采樣頻率fs.max大于信號中最高頻率fmax的2倍時(fs.max>2fmax),采樣之后的數字信號完整地保留了原始信號中的信息,一般實際應用中保證采樣頻率為信號最高頻率的2.56~4倍
采樣定理又稱取樣定理或抽樣定理,它說明了采樣頻率和信號之間的關系,是模擬信號離散化的重要依據;簡單來講就是采樣頻率一定要大于信號最高頻率的2倍,這樣你才能得到真實的信號。
比如下面的這個例子,市電頻率50Hz,使用20K,1K和50Hz的采樣頻率去模擬市電,只有20K和1K能夠模擬出真實的波形;50Hz完全失真,提取不到市電的信號。
ADC轉換參數
ADC的轉換參數有:分辨率,ADC轉換時間和轉換誤差等
分辨率:AD模塊對模擬信號分辨能力,及數值部分的精度;我們將常說的16位或12位的采樣芯片,說的就是ADC的分辨率;比如輸入0-3V,12位AD采樣分辨率為3V/2^12=0.732mV;16位AD采樣分辨率為3V/2^16=0.0458mV;分辨率越高,采樣的范圍越精確,價格也越貴;
轉換時間:從軟件發出開始采樣到采樣完成的時間。進行一個采樣時,需要經過如下步驟:
第一步:軟件發出采樣指令,ADC先將需要采樣的通道值保持住;保證采樣得到的都是同一時刻的值;
第二步:通過比較寄存器將每一個需要采樣的通道與基準電壓比較,并將比較的值存入ADC結果寄存器;比較完成后,發出轉換完成信號;
第三步:CPU讀到轉換完成的信號后,開始讀取結果寄存器的值,完成采樣;
這個步驟跟芯片性能密切相關,一定要注意,采樣周期不能大于轉換時間,否則CPU此次采樣還未完成,下一次采樣已經開始,CPU負荷太重會導致各種位置問題。
ADC采樣方式
ADC的采樣方式一般有:單次采樣,連續采樣和觸發采樣;
單次采樣:軟件發出采樣指令,CPU啟動采樣,采樣完成;ADC停止工作;采樣頻率由軟件控制
連續采樣:軟件發出采樣指令,CPU啟動采樣,采樣完成,接著又開始采樣個采樣頻率與ADC轉換頻率一致;
觸發采樣:收到觸發信號,CPU啟動采樣,采樣完成;ADC停止工作。觸發信號可以為定時器或過零或者周期處,也可以為外部引腳,被觸發一次采樣一次;采樣頻率與觸發信號頻率一致;
最常見的是觸發采樣,一般在定時器的零點和周期處分別采樣,得到平均值去計算或保護;
在工業控制領域,ADC往往不是單獨存在,筆者經常把ADC和PWM聯系在一起使用,在PWM的零點和周期處采樣,再根據PWM驅動duty上一次的值計算出下一次的duty值,去控制輸出量電壓電流功率等等;下一節我們將通過PWM和ADC的結合深入了解工業控制中是如何控制物理量的;如新能源汽車的充電電流,變頻器的輸出電壓等等。
評論