單片機(jī)實(shí)現(xiàn)低成本A/D轉(zhuǎn)換
在前面的文章中分別介紹了兩種用普通單片機(jī)實(shí)現(xiàn)低成本A/D轉(zhuǎn)換的方法,這兩種方法中在單片機(jī)的外部都要使用到一個(gè)比較器,在本文中繼續(xù)向大家介紹低成本的A/D轉(zhuǎn)換的一種方法,只是這種方法成本會(huì)更低,而且外部無需使用比較器。此種方法的A/D轉(zhuǎn)換精度不高,只有6~7bit,并且被測電壓范圍較為有限,但在某些精度要求不高,且被測電壓值變化不大的場合也很有實(shí)用價(jià)值,比如溫度測量方面。
其電路如圖一所示:
其工作原理說明如下:
1、硬件說明:
圖一中的R1、R2和C1構(gòu)成RC充電電路,被測量通過R1、R2對(duì)C1充電。N1為單片機(jī),本電路中采用MICROCHIP的PIC12C508A來舉例說明。C2為給電源供電用的濾波電路,VD1為保護(hù)用穩(wěn)壓二極管,以避免輸入電壓過高而損壞單片機(jī)。
2、A/D轉(zhuǎn)換過程:
首先GP5輸出低電平,使電容C1上的電量完全放光,隨后GP5即轉(zhuǎn)變?yōu)檩斎霠顟B(tài),此時(shí)單片機(jī)開始計(jì)時(shí),被測電壓經(jīng)過R1、R2電阻對(duì)電容C1進(jìn)行充電,電容C1上的電壓會(huì)逐漸升高,C1上的電壓U滿足以下公式:
其中U為電容C1上的電壓,E為輸入電壓(被測量),T=(R1+R2)*C1,t為時(shí)間。
當(dāng)C1上的電壓U達(dá)到單片機(jī)I/O腳的門嵌電壓時(shí),單片機(jī)的GP5由低電平狀態(tài)轉(zhuǎn)變?yōu)楦唠娖綘顟B(tài)。記錄從充電開始至此時(shí)所經(jīng)過的時(shí)間t。
從上式可知,當(dāng)單片機(jī)I/O腳的門嵌電壓、R1、R2、C1值都固定不變時(shí),被測量的電壓值E與時(shí)間t呈一一對(duì)應(yīng)關(guān)系。
因此測量輸入電壓對(duì)C1電容充電到門嵌電壓的時(shí)間,進(jìn)行查表計(jì)算,就可以得到被測電壓值,從而實(shí)現(xiàn)了A/D轉(zhuǎn)換。
3、A/D轉(zhuǎn)換誤差分析及解決辦法:
A/D轉(zhuǎn)換的誤差主要由以下幾個(gè)方面決定,分別說明如下:
(1)單片機(jī)的電源電壓VDD:在該A/D轉(zhuǎn)換中,VDD電壓變化較大時(shí)有可能造成I/O口的門嵌電壓發(fā)生變化,不過其影響較小。
(2)單片機(jī)內(nèi)部的定時(shí)器對(duì)C1電容上電壓上升時(shí)間的測量偏差:該測量偏差是A/D轉(zhuǎn)換誤差的主要因素。
(3)電阻、電容不穩(wěn)定導(dǎo)致的誤差:當(dāng)電阻R1、R2或電容C1的值發(fā)生變化時(shí),也會(huì)使C1電容的電壓上升至門嵌電壓時(shí)間發(fā)生變化,這也將影響A/D轉(zhuǎn)換結(jié)果。
(4)單片機(jī)I/O腳的輸入阻抗:如果單片機(jī)的I/O腳輸入阻抗較低,相當(dāng)于使RC值發(fā)生變化,也會(huì)影響A/D轉(zhuǎn)換結(jié)果。
(5)單片機(jī)的門嵌電壓:對(duì)于不同的單片機(jī),其門嵌電壓可能略有相同,這也會(huì)導(dǎo)致測量誤差。
A/D轉(zhuǎn)換誤差的解決辦法:
(1)對(duì)VDD造成的誤差,只能通過提高VDD電壓精度來解決,VDD的電壓最好能穩(wěn)定在2%范圍內(nèi),普通的7805就有2%的穩(wěn)壓精度。
(2)對(duì)單片機(jī)內(nèi)部的定時(shí)器產(chǎn)生的誤差,可以增加RC值,從而使C1電容上電壓上升時(shí)間延長,計(jì)數(shù)器測得的值較大,誤差會(huì)較小。不過R值若太大,受I/O口輸入阻抗影響也會(huì)較大。
(3)R1、C1選用精度較高較穩(wěn)定的電阻、電容,或增加一個(gè)微調(diào)電阻器來解決。
(4)若單片機(jī)I/O腳輸入阻抗較低,可以減小R1、R2電阻,增加C1電容來解決。
4、A/D轉(zhuǎn)換速度及提高辦法:
由于該A/D轉(zhuǎn)換是通過被測值經(jīng)過一個(gè)電阻對(duì)電容充電使電壓到達(dá)門嵌電壓后測量充電時(shí)間來得到A/D轉(zhuǎn)換值的,因此其A/D轉(zhuǎn)換速度會(huì)比較慢,它適用于對(duì)A/D轉(zhuǎn)換速度要求不高的產(chǎn)品中,其A/D轉(zhuǎn)換速度取決于以下幾個(gè)方面:
(1)RC值:當(dāng)RC值太大時(shí),測量速度會(huì)較慢,減小RC值可以提高A/D轉(zhuǎn)換速度,但由于計(jì)數(shù)時(shí)間較短,測量誤差會(huì)增大。
(2)被測電壓值的大?。河捎贑1上的電壓U是由小到大逐漸加大的,當(dāng)被測電壓值較小時(shí),U電壓上升到門嵌值的時(shí)間就越長,完成A/D轉(zhuǎn)換的速度就越慢。反之被測電壓越高,測量速度越快。
由上所述,A/D轉(zhuǎn)換的速度可以通過減小RC值來提高。若單片機(jī)帶有外部電平變換中斷,其A/D轉(zhuǎn)換的精度還可以得到提高。
5、輸入電壓的測量范圍:
A/D轉(zhuǎn)換的輸入電壓測量范圍為單片機(jī)門嵌電壓至單片機(jī)的電源電壓(VDD),若需要提高被測電壓范圍,可將輸入電壓通過電阻分壓后進(jìn)行測量,但其A/D轉(zhuǎn)換的誤差會(huì)受分壓電阻影響。
6、單片機(jī)的A/D轉(zhuǎn)換應(yīng)用實(shí)例:
下圖為采用PIC12C508實(shí)現(xiàn)A/D轉(zhuǎn)換的應(yīng)用實(shí)例,圖中用4個(gè)發(fā)光二極管來作相應(yīng)的電壓值范圍指示。其電壓測量范圍為1.4V至2.55V,其測量精度為10mV。
該應(yīng)用實(shí)例與原程序可參考MICROCHIP公司的單片機(jī)應(yīng)用筆記,該文件可從MICROCHIP網(wǎng)站上下載。
擴(kuò)展閱讀:單片機(jī)入門經(jīng)驗(yàn)談