51單片機進(jìn)階開發(fā)(四)之A/D、D/A
單片機怎么與模擬信號“交流”
我們都知道單片機只能識別0或1兩種數(shù)字信號,但是現(xiàn)實世界所有的存在都以具體的模擬量為主,比如電壓,電流,氣壓,質(zhì)量等等,那單片機要怎么才能和這些信號打交道呢?要是沒有“交流”那電子世界不就會亂套了,那可能比哥倫布剛發(fā)現(xiàn)印第安人那刻還亂吧。是不是就必須得有工具來“翻譯”這些信息了,這里就不得不利用數(shù)模轉(zhuǎn)換功能了,學(xué)了電子技術(shù)基礎(chǔ)的朋友應(yīng)該都有印象吧。它們就像單片機與外界信息交流的翻譯官。
我們做項目開發(fā)時基本都會用到數(shù)模轉(zhuǎn)換(A/D、D/A),尤其是A/D單元,幾乎是項目必用的。所以它們的地位還是很重要的,基礎(chǔ)版的51單片機內(nèi)部是沒有集成這些單元的,所以課本上介紹這些知識時都會使用外接芯片來講解,但是現(xiàn)在新出的芯片幾乎都是內(nèi)部集成數(shù)模轉(zhuǎn)換功能,只要對著手冊在程序中設(shè)置一下引腳功能就可以進(jìn)行操作了。所以之前的內(nèi)容中我一直沒介紹外接數(shù)模轉(zhuǎn)換芯片這一塊的知識,現(xiàn)在來介紹這一部分內(nèi)容也是比較尷尬的事,畢竟介紹再多工作中用到的概率不大。所以今天就寫些一看就懂的內(nèi)容,書本上有的電路,程序就不舉例說明了。
A/D和D/A轉(zhuǎn)換模型分類都比較多,這些細(xì)節(jié)可以參考相關(guān)書籍做了解。反正說白了,數(shù)模轉(zhuǎn)換原理是簡單的,普通的模塊也是廉價的,不然現(xiàn)在的MCU也不會集成它。但是高性能的數(shù)模轉(zhuǎn)換芯片國內(nèi)現(xiàn)在是欠缺的,這就影響了國內(nèi)工業(yè)在很多高精行業(yè)芯片不得不依靠進(jìn)口。長江后浪推前浪,但愿這些可以早日突破吧。
A/D轉(zhuǎn)換基礎(chǔ)
A/D變換就是將模擬信號轉(zhuǎn)換為數(shù)字信號傳入給單片機,通常用于單片機采集各類信號,最終都會以檢測電壓的形式體現(xiàn)出來,轉(zhuǎn)換過程通常包含采樣、量化和編碼3個步驟。

采樣是將連續(xù)的模擬信號變成不連續(xù)的模擬信號,就像控制一個快速開關(guān),開關(guān)定時開啟閉合過程,一個連續(xù)的模擬信號就形成一系列的脈沖信號,稱為采樣信號。
在理想數(shù)據(jù)采集系統(tǒng)中,只要滿足采樣定理——采樣頻率不小于被采集信號最高頻率的2倍(即fs ≥2fmax ),則采樣輸出信號就可以無失真的重現(xiàn)原輸入信號,而在實際應(yīng)用中通常會設(shè)置更高的采樣頻率,當(dāng)然采樣頻率越高,計算量就越大,對芯片的處理能力要求就越高。比如我們測試心率,胎兒到大人每分鐘心率從四五十到兩百多都有可能。即每秒最多4次,那我們的采樣頻率是不是設(shè)置8Hz就能測出心率了呢?當(dāng)然不是這樣的,即使是80hz也不一定能測出準(zhǔn)確的數(shù)據(jù),實際開發(fā)中我們得設(shè)置幾百Hz甚至上千Hz的采樣頻率。
量化過程是將模擬信號變成數(shù)字信號的過程,輸入信號的幅值變化就與實際的數(shù)值對應(yīng)起來,完成了從模擬到數(shù)字的變換;量化過程也會引入誤差,增加采樣頻率和幅值的表示位數(shù)可以減少誤差。將量化過程得到的量化值進(jìn)行二進(jìn)制編碼,對相同范圍的模擬量,編碼位數(shù)越多,量化誤差越小。

D/A轉(zhuǎn)換基礎(chǔ)
與A/D轉(zhuǎn)換相反,D/A轉(zhuǎn)換就是使用單片機輸出模擬信號,和A/D一樣也是有轉(zhuǎn)換精度的,最常見的應(yīng)用就是波形發(fā)生器,汽車,儀表類行業(yè)對這個要求會比較高。

正如圖中所畫,D/A轉(zhuǎn)換時恰好和A/D轉(zhuǎn)換相反,內(nèi)部由多個按一定規(guī)律設(shè)計的阻電阻網(wǎng)絡(luò)的控制開關(guān),通過比較器逐級比較從而輸出與設(shè)計值最接近的模擬量。
有興趣練習(xí)這部分內(nèi)容的朋友不妨用你手頭的單片機做一個信號發(fā)生器或示波器,我這邊的文章后期才會選擇一些典型案例做一個例程專欄出來。
就寫到這里,相關(guān)基礎(chǔ)的文章太多,深入的寫嘛,因為我不是相關(guān)行業(yè)內(nèi)的應(yīng)用也只是普通,簡單的。以我的能力也不好做過多評論,反正我至今都想不通也不想去多想老美逆全球化來搞我們這種損人不利己的衰招的意義,完全反人類,耗費地球資源。難過的還是世界人民,不扯了,加油,明天還是美好的周末。

