用普通單片機實現(xiàn)低成本高精度AD與DA轉(zhuǎn)換_第1頁
用普通單片機實現(xiàn)低成本高精度AD與DA轉(zhuǎn)換_第2頁
用普通單片機實現(xiàn)低成本高精度AD與DA轉(zhuǎn)換_第3頁
用普通單片機實現(xiàn)低成本高精度AD與DA轉(zhuǎn)換_第4頁
用普通單片機實現(xiàn)低成本高精度AD與DA轉(zhuǎn)換_第5頁
已閱讀5頁,還剩3頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

1、用普通單片機實現(xiàn)低成本高精度A/D與D/A轉(zhuǎn)換(之一)摘要:用普通單片機實現(xiàn)低成本的多路A/D與D/A轉(zhuǎn)換,其轉(zhuǎn)換結(jié)果為8bit或更高。關(guān)鍵詞:單片機A/D轉(zhuǎn)換 D/A轉(zhuǎn)換 PWM (脈沖寬度調(diào)制)比較器目前單片機在電子產(chǎn)品中已得到廣泛應(yīng)用,許多類型的單片機內(nèi)部已帶有A/D轉(zhuǎn)換電路,但此類單片機會比無A/D轉(zhuǎn)換功能的單片機在價格上高幾元甚至很多,本文給大家提供一種實用的用普通單片機實現(xiàn)的 A/D轉(zhuǎn)換電路,它只需要使用普通單片機的2個I/O腳與1個運算放大器即可實現(xiàn),而且它可以很容易地擴展成帶有4通道A/D轉(zhuǎn)換功能,由于它占用資源很少,成本很低,其 A/D轉(zhuǎn)換精度可達(dá)到8位或更高,因此很具有實用

2、價值。其電路如圖一所示:DLpwm 波形 JUWUL模陽量輸入小 >單片機R 10k U1=5V+DH(D14D2)Cl500)(this.resized=true; this.width=500; this.alt='點擊 查看原 圖' this.style.cursor='hand'" onclick="if(!this.resized)(returntrue;elsewindow.open('border="0"width="500">圖一其工作原理說明如下:1、硬件說明:圖一

3、中“RA。和“RAT為單片機的兩個I/O腳,分別將其設(shè)置為輸出與輸入狀態(tài),在進(jìn)行 A/D 轉(zhuǎn)換時,在程序中通過軟件產(chǎn)生 PWM ,由RA0腳送出預(yù)設(shè)占空比的 PWM波形。RA1腳用于 檢測比較器輸出端的狀態(tài)。R1、C1構(gòu)成濾波電路,對RA0腳送出的PWM波形進(jìn)行平滑濾波。 RA0輸出的PWM波形經(jīng)過 R1、C1濾波并延時后,在U1點產(chǎn)生穩(wěn)定的電壓值,其電壓值 U1=VDD*D1/ (D1+D2 ),若單 片機的工作電壓為穩(wěn)定的 +5V,則U1=5V*D1/ (D1+D2 )。圖一中的LM324作為比較器使用,其輸入負(fù)端的U1電壓與輸入正端的模擬量電壓值進(jìn)行比較,當(dāng)U1大于模擬量輸入電壓時,比較

4、器的輸出端為低電平,反之為高電平。2、A/D轉(zhuǎn)換過程:如果使RA0輸出PWM波形,其占空比由小到大逐漸變化,則U1的電壓會由小到大逐漸變化,當(dāng)U1電壓超過被測電壓時,比較器的輸出端由高電平變?yōu)榈碗娖?,因此可以認(rèn)為在該變化 的瞬間被測的模擬量與 U1的電壓相等。由于U1的電壓值=VDD*D1/ (D1+D2 ),當(dāng)VDD固定時,其電壓值取決于 PWM波形的占空比, 而PWM的占空比由單片機軟件內(nèi)部用于控制PWM輸出的寄存器值決定,若軟件中用1個8位寄存器A來存放RA0輸出的PWM的占空比值D1 ,因此在RA1檢測到由“1變?yōu)椤?的瞬間, A寄存 器的值D1即為被測電壓的A/D轉(zhuǎn)換值,其A/D轉(zhuǎn)換

5、結(jié)果為8位。如果用16位寄存器來 作輸出PWM的占空比,則A/D轉(zhuǎn)換值可達(dá)到16位。3、A/D轉(zhuǎn)換誤差分析及解決辦法:A/D轉(zhuǎn)換的誤差主要由以下幾個方面決定,分別說明如下:(1) 單片機的電源電壓 VDD :在該A/D轉(zhuǎn)換中,VDD電壓是造成A/D轉(zhuǎn)換誤差的主要原因, 如果使VDD電壓精度做到較高,貝U A/D轉(zhuǎn)換誤差可以做到很小,在 VDD電壓精度為0.5%情 況下,實際的A/D轉(zhuǎn)換誤差小于1%。(2) 軟件產(chǎn)生的PWM占空比:若用于產(chǎn)生 PWM的軟件設(shè)計不良,會使存放占空比的寄存 器值與實際輸出的PWM占空比不一致,這會導(dǎo)致測量誤差。(3) 比較器輸入端的失調(diào)電壓:該電壓對A/D轉(zhuǎn)換精度有

6、一定影響,但影響較小。(4) RC濾波電路的紋波:在 R1、C1取值不當(dāng)?shù)那闆r下,U1處的電壓紋波較大,并且延時 時間不夠,會使A/D轉(zhuǎn)換產(chǎn)生誤差,因此 R1、C1取 值不能太小,但太大又會影響 A/D轉(zhuǎn)換 速度,推薦使用圖一中所示的R1、C1參數(shù),在紋波合理的情況下,其轉(zhuǎn)換誤差也可通過軟件消除。A/D轉(zhuǎn)換誤差的解決辦法:(1) 對VDD造成的誤差,只能通過提高 VDD電壓精度來解決,它相當(dāng)于 A/D轉(zhuǎn)換的基準(zhǔn)電 壓。(2) 對于軟件中PWM設(shè)計不良導(dǎo)致的誤差, 可修改軟件進(jìn)行解決,本文提供了用軟件產(chǎn)生 PWM的程序流程圖,實際使用中可按此流程設(shè)計程序。(3) 對比較器及RC濾波電路的紋波導(dǎo)致

7、的誤差,在軟件中可通過上、下檢測法進(jìn)行消除,即先將PWM的占空比由小到大變化,使 U1電壓由低往高逐 漸變化,在比較器輸出端變化 時記錄其A/D轉(zhuǎn)換值,再將PWM的占空比由大到小變化,使 U1電壓由高到低變化,在比較 器輸出端變化時記錄其 A/D轉(zhuǎn)換值,將兩次的A/D轉(zhuǎn)換值進(jìn)行平均,可有效地消除這兩種誤 差。(4) 對A/D轉(zhuǎn)換值進(jìn)行數(shù)字濾波,如多次轉(zhuǎn)換求平均值等。數(shù)字濾波消除誤差的方法很多, 在此不再贅述。4、A/D轉(zhuǎn)換速度及提高辦法:由于該A/D轉(zhuǎn)換是通過PWM濾波后再進(jìn)行比較來完成的,其 PWM的產(chǎn)生與濾波都需要一定 的時間,因此其A/D轉(zhuǎn)換速度較慢,適用于對 A/D轉(zhuǎn)換速度要求不高的產(chǎn)

8、品中,其 A/D轉(zhuǎn)換 速度取決于以下幾個方面:(1) 單片機的運行速度:單片機的運行速度越高則PWM的頻率可以越高,RC值就可以取得越小,其延時時間也可以更短,轉(zhuǎn)換速度就更快。(2) 被測電壓值的大?。河捎?U1電壓時是由小到大逐漸加大的,當(dāng)被測電壓值較小時,U1電壓上升到相應(yīng)值的時間就越短,完成A/D轉(zhuǎn)換的速度就越快。(3) 初始占空比:初始占空比越高,U1電壓較大,其上升到被測電壓值的時間也就會越短, 完成A/D轉(zhuǎn)換的速度也就越快。由上所述,A/D轉(zhuǎn)換的速度可以通過提高單片機的工作頻率,并在預(yù)知被測電壓范圍時盡可 能地設(shè)置較高的初始占空比值來加快轉(zhuǎn)換速度,如果所要求的A/D轉(zhuǎn)換精度要求不高

9、,還可以在軟件中縮短PWM輸出的延時時間來提高 A/D轉(zhuǎn)換速度。若單片機帶有外部電平變換 中斷和定時器中斷,其 A/D轉(zhuǎn)換的精度 和速度還可以得到提高。5、輸入電壓的測量范圍:A/D轉(zhuǎn)換的輸入電壓測量范圍為 0V至單片機的電源電壓(VDD ),若需要提高被測電壓范圍, 可將輸入電壓通過電阻分壓后進(jìn)行測量,但其A/D轉(zhuǎn)換的誤差會受分壓電阻影響。6、A/D轉(zhuǎn)換通道的多路擴展:圖中所用的運算放大器為 LM324,該集成電路內(nèi)部帶有4個運放,其余3個運放的輸入端可分 別作為另外3個A/D轉(zhuǎn)換通道,其輸出端與單片機連接,在軟件上略作修改,就可以在不增 加成本的情況下實現(xiàn)4路A/D轉(zhuǎn)換。7、用同樣的工作原

10、理實現(xiàn) D/A轉(zhuǎn)換:如圖二所示,可使該電路很容易地只用單片機的一個I/O腳實現(xiàn)D/A轉(zhuǎn)換功能。其輸出的模擬量電壓Vout=VDD*D1/ (D1+D2 )。該輸出電壓帶有紋波,當(dāng) RC值足夠大時,該紋波值幾 乎為零,可忽略不計。PWM波形JU1JUULCt1 LM324IV模報量輸出Vout-VDD*Dli1Dl+D2)單片機500)this.resized=true; this.width=500; this.alt='點擊 查看原 圖; this.style.cursor='hand", onclick="if(!this.resized)returnt

11、rue;elsewindow.open(' border="0”>圖二8、單片機的A/D轉(zhuǎn)換軟件程序流程圖:500) (this.resized=true; this.width=500;this.alt='點擊查看原圖' this.style.cursor='hand'" onclick="if(!this.resized) (return true; else window.open(' border="0">用普通單片機實現(xiàn)低成本 A/D轉(zhuǎn)換(二)摘要:用普通單片機實現(xiàn)低成本的多

12、路A/D轉(zhuǎn)換。關(guān)鍵詞:單片機 A/D轉(zhuǎn)換 比較器 計時器在此前筆者曾介紹了普通單片機實現(xiàn)低成本A/D轉(zhuǎn)換的一種方法,在實際使用中還有其它的不少方法可以實現(xiàn)低成本 A/D轉(zhuǎn)換,在本文中我們繼續(xù)為電子設(shè)計者們提供又一種 A/D轉(zhuǎn)換方法,該方法同樣占用較少的單片機資源,成本也很低,仍然有很強的實用性,該電路曾在鋰離子電池充電器中作 A/D轉(zhuǎn)換使 用,效果良好。其電路如圖一所示:500) (this.resized=true; this.width=500; this.alt='點擊查看原圖' this.style.cursor='hand'" onclick

13、="if(!this.resized)(returntrue;elsewindow.open('border="0"width="500">圖一其工作原理說明如下:1、硬件電路說明:圖一中的R1和N1 (TL431 )產(chǎn)生一個2.495V的穩(wěn)定電壓,作為 A/D轉(zhuǎn)換比較基準(zhǔn)。R2、VI、 VD1、VD2和R3構(gòu)成一個恒流源電 路給C1充電,C1上的電壓與恒流源的電流大小及充電時 間成正比。MC74HC4051為8選1模擬開關(guān),其輸入通道由單片機控制來選擇。LM393作為 比較器,當(dāng)C1上的電壓由低到高上升到超過模擬開關(guān)輸出電壓時,

14、其輸出端會從低電平轉(zhuǎn)變 為高電平?!癛A(L “RA1'和“RA2為單片機的3個I/O腳,RA0設(shè)置為輸入狀態(tài),用于檢測 比較器輸出電平變化,RA1和RA2設(shè)置為輸出狀態(tài), RA1輸出高電平時,V2導(dǎo)通,用于將C1上的電荷放空,RA2用于選擇模擬開關(guān)的輸入通道。2、A/D轉(zhuǎn)換過程:首先RA2輸出低電平,使模擬開關(guān)選擇X0 (基準(zhǔn)電壓)作為輸入,RA1輸出高電平,使 V2導(dǎo)通將C1上的電量放完,然后使RA1輸出低電平,使V2截止,此時C1上的電容開始被充電, 同時計數(shù)器開始計數(shù),當(dāng)C1上的電壓不斷上升,并達(dá)到比較器輸入負(fù)端的電壓(此時為基準(zhǔn)電壓Vref)時,比較器的輸出端由低電平轉(zhuǎn)為高電

15、平,此時記錄下計數(shù)器的計數(shù)值,為T1。 接著RA2輸出高電平,使模擬開關(guān)選擇X1 (被測電壓)作為輸入,RA1輸出高電平,使 V2導(dǎo)通將C1上的電量放完,然后使RA1輸出低電平, 使V2截止,此時C1上的電容又開始被充 電,同時計數(shù)器開始計數(shù),當(dāng)C1上的電壓不斷上升,并達(dá)到比較器輸入負(fù)端的電壓(此時為基準(zhǔn)電壓)時,比較器的輸出端由低電平轉(zhuǎn)為高電平,此時記錄下計數(shù)器的計數(shù)值,為T2。由于C1是被恒流充電,因此 C1上的電壓與充電時間成正比,即 V=T*k。當(dāng)C1的容值與充電 的恒流值不變時,k是一個固定不變的常數(shù)。由此可以得到: Vref/T1=V1/T2 ,即 V1=Vref*T2/T1由于V

16、ref是基準(zhǔn)電壓(2.495V),因此只要利用單片機的定時器測出T1和T2,就可以計算出被測電壓V1的值。3、A/D轉(zhuǎn)換誤差分析及解決辦法:A/D轉(zhuǎn)換的誤差主要由以下幾個方面決定,分別說明如下:1、 基準(zhǔn)電壓Vref:在該A/D轉(zhuǎn)換中,Vref電壓是造成A/D轉(zhuǎn)換誤差的主要原因,如果使 Vref 電壓精度做到較高,則 A/D轉(zhuǎn)換誤差可以做到很小,在 Vref電壓精度為0.5%情況下,實際的 A/D轉(zhuǎn)換誤差小于1%。2、定時器誤差:若單片機對比較器輸出端的電位變化反應(yīng)慢,或定時器誤差較大,則測量 到的T1與T2值不準(zhǔn),也會導(dǎo)致測量誤差。3、 比較器輸入端的失調(diào)電壓:該電壓對A/D轉(zhuǎn)換精度有一定影

17、響,但影響較小。4、運算誤差:由于 V1值要經(jīng)過乘除法運算后得到,在進(jìn)行運算過程中如果數(shù)據(jù)處理不當(dāng), 如余數(shù)處理不當(dāng),也會產(chǎn)生誤差。5、干擾誤差:當(dāng)輸入電壓不穩(wěn)時,恒流源的輸出電流會有一定的影響,會產(chǎn)生干擾誤差。A/D轉(zhuǎn)換誤差的解決辦法:1、 對Vref造成的誤差,只能通過提高 Vref電壓精度來解決,它相當(dāng)于 A/D轉(zhuǎn)換的基準(zhǔn)電壓。2、 對于定時器誤差,在單片機中可使 RA0 口采用帶電平變化中斷功能的 I/O 口,以提高反應(yīng) 速度,同時減少恒流源的電流大小,或加大 C1電容容量,可以增加T1、T2的測量時間,使 計數(shù)值加大,達(dá)到提高 A/D轉(zhuǎn)換精度的目的。3、選用靈敏度高的比較器可解決比較

18、器輸入端導(dǎo)致的誤差問題。4、對運算誤差,可以通過軟件上的改進(jìn)來解決。5、對于干擾造成的誤差,可對 A/D轉(zhuǎn)換值進(jìn)行數(shù)字濾波,如多次轉(zhuǎn)換求平均值等方法來解 決。數(shù)字濾波消除誤差的方法很多,在此不再贅述。4、A/D轉(zhuǎn)換速度及提高辦法:由于該A/D轉(zhuǎn)換是通過恒流源對 C1電容充電后再進(jìn)行比較來完成的,C1電容的充電過程需要一定的時間,因此其A/D轉(zhuǎn)換速度較慢,適用于對A/D轉(zhuǎn)換速度要求不高的產(chǎn)品中,其A/D轉(zhuǎn)換速度取決于以下幾個方面:1、 恒流源的電流大?。汉懔髟吹某潆婋娏髟酱螅珻1上的電壓上升速度就越快,到達(dá)被比較 電壓的時間也就更短,轉(zhuǎn)換速度就更快。2、C1電容的大?。浩涞览砼c前一點一樣,當(dāng)電容小時,電壓上升速度就越快,到達(dá)被比較電壓的時間也會越短,轉(zhuǎn)換速度就越快。 但由于計數(shù)值小,由定時器造成的測量誤差也有可能加大。3、 單片機的工作頻率:由于 A/D轉(zhuǎn)換值是經(jīng)過乘除運算后完成的,因此單片機的運算速度 也會對A/D轉(zhuǎn)換速度有影響,尤其當(dāng)計數(shù)器值為16位時。由上所述,A/D轉(zhuǎn)換的速度可以通過提高單片機的工作頻率,增大恒流源的輸出電流,減小C1電容容值來加快A/D轉(zhuǎn)換速度,但要注意當(dāng)T1、T2計數(shù)值太小時有可能使定時器因素造 成的誤差增大,因此在實際使

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論