用普通單片機實現的A/D轉換電路
發布時間:2012-10-29 責任編輯:Lynnjiao
【導讀】目前單片機在電子產品中已得到廣泛應用,許多類型的單片機內部已帶有A/D轉換電路,但此類單片機會比無A/D轉換功能的單片機在價格上高幾元甚至很多,本文給大家提供一種實用的用普通單片機實現的A/D轉換電路,它隻需要使用普通單片機的2個I/O腳與1個運算放大器即可實現,而且它可以很容易地擴展成帶有4通道A/D轉換功能,由於它占用資源很少,成本很低,其A/D轉換精度可達到8位或更高,因此很具有實用價值。
其電路如圖一所示:

圖1:用普通單片機實現的A/D轉換電路的電路圖
其工作原理說明如下:
1、硬件說明:
圖1中“RA0”和“RA1”為單片機的兩個I/O腳,分別將其設置為輸出與輸入狀態,在進行A/D轉換時,在程序中通過軟件產生PWM,由RA0腳送出預設占空比的PWM波形。RA1腳用於檢測比較器輸出端的狀態。
R1、C1構成濾波電路,對RA0腳送出的PWM波形進行平滑濾波。RA0輸出的PWM波形經過R1、C1濾波並延時後,在U1點產生穩定的電壓值,其電壓值U1=VDD*D1/(D1+D2),若單片機的工作電壓為穩定的+5V,則U1=5V*D1/(D1+D2)。
圖1中的LM324作為比較器使用,其輸入負端的U1電壓與輸入正端的模擬量電壓值進行比較,當U1大於模擬量輸入電壓時,比較器的輸出端為低電平,反之為高電平。
2、A/D轉換過程:
如果使RA0輸出PWM波形,其占空比由小到大逐漸變化,則U1的電壓會由小到大逐漸變化,當U1電壓超過被測電壓時,比較器的輸出端由高電平變為低電平,因此可以認為在該變化的瞬間被測的模擬量與U1的電壓相等。
由於U1的電壓值=VDD*D1/(D1+D2),當VDD固定時,其電壓值取決於PWM波形的占空比,而PWM的占空比由單片機軟件內部用於控製PWM輸出的寄存器值決定,若軟件中用1個8位寄存器A來存放RA0輸出的PWM的占空比值D1,因此在RA1檢測到由“1”變為“0”的瞬間,A寄存器的值D1即為被測電壓的A/D轉換值,其A/D轉換結果為8位。如果用16位寄存器來作輸出PWM的占空比,則A/D轉換值可達到16位。
3、A/D轉換誤差分析及解決辦法:
A/D轉換的誤差主要由以下幾個方麵決定,分別說明如下:
(1) 單片機的電源電壓VDD:在該A/D轉換中,VDD電壓是造成A/D轉換誤差的主要原因,如果使VDD電壓精度做到較高,則A/D轉換誤差可以做到很小,在VDD電壓精度為0.5%情況下,實際的A/D轉換誤差小於1%。
(2) 軟件產生的PWM占空比:若用於產生PWM的軟件設計不良,會使存放占空比的寄存器值與實際輸出的PWM占空比不一致,這會導致測量誤差。
(3) 比較器輸入端的失調電壓:該電壓對A/D轉換精度有一定影響,但影響較小。
(4) RC濾波電路的紋波:在R1、C1取值不當的情況下,U1處的電壓紋波較大,並且延時時間不夠,會使A/D轉換產生誤差,因此R1、C1取值不能太小,但太大又會影響A/D轉換速度,推薦使用圖一中所示的R1、C1參數,在紋波合理的情況下,其轉換誤差也可通過軟件消除。
A/D轉換誤差的解決辦法:
(1) 對VDD造成的誤差,隻能通過提高VDD電壓精度來解決,它相當於A/D轉換的基準電壓。
(2) 對於軟件中PWM設計不良導致的誤差,可修改軟件進行解決,本文提供了用軟件產生PWM的程序流程圖,實際使用中可按此流程設計程序。
(3) 對比較器及RC濾波電路的紋波導致的誤差,在軟件中可通過上、下檢測法進行消除,即先將PWM的占空比由小到大變化,使U1電壓由低往高逐漸變化,在比較器輸出端變化時記錄其A/D轉換值,再將PWM的占空比由大到小變化,使U1電壓由高到低變化,在比較器輸出端變化時記錄其A/D轉換值,將兩次的A/D轉換值進行平均,可有效地消除這兩種誤差。
(4) 對A/D轉換值進行數字濾波,如多次轉換求平均值等。數字濾波消除誤差的方法很多,在此不再贅述。
[member]
[page]
4、A/D轉換速度及提高辦法:
由於該A/D轉換是通過PWM濾波後再進行比較來完成的,其PWM的產生與濾波都需要一定的時間,因此其A/D轉換速度較慢,適用於對A/D轉換速度要求不高的產品中,其A/D轉換速度取決於以下幾個方麵:
(1) 單片機的運行速度:單片機的運行速度越高則PWM的頻率可以越高, RC值就可以取得越小,其延時時間也可以更短,轉換速度就更快。
(2) 被測電壓值的大小:由於U1電壓時是由小到大逐漸加大的,當被測電壓值較小時,U1電壓上升到相應值的時間就越短,完成A/D轉換的速度就越快。
(3) 初始占空比:初始占空比越高,U1電壓較大,其上升到被測電壓值的時間也就會越短,完成A/D轉換的速度也就越快。
由上所述,A/D轉(zhuan)換(huan)的(de)速(su)度(du)可(ke)以(yi)通(tong)過(guo)提(ti)高(gao)單(dan)片(pian)機(ji)的(de)工(gong)作(zuo)頻(pin)率(lv),並(bing)在(zai)預(yu)知(zhi)被(bei)測(ce)電(dian)壓(ya)範(fan)圍(wei)時(shi)盡(jin)可(ke)能(neng)地(di)設(she)置(zhi)較(jiao)高(gao)的(de)初(chu)始(shi)占(zhan)空(kong)比(bi)值(zhi)來(lai)加(jia)快(kuai)轉(zhuan)換(huan)速(su)度(du),如(ru)果(guo)所(suo)要(yao)求(qiu)的(de)A/D轉換精度要求不高,還可以在軟件中縮短PWM輸出的延時時間來提高A/D轉換速度。若單片機帶有外部電平變換中斷和定時器中斷,其A/D轉換的精度和速度還可以得到提高。
5、輸入電壓的測量範圍:
A/D轉換的輸入電壓測量範圍為0V至單片機的電源電壓(VDD),若需要提高被測電壓範圍,可將輸入電壓通過電阻分壓後進行測量,但其A/D轉換的誤差會受分壓電阻影響。
6、A/D轉換通道的多路擴展:
圖中所用的運算放大器為LM324,該集成電路內部帶有4個運放,其餘3個運放的輸入端可分別作為另外3個A/D轉換通道,其輸出端與單片機連接,在軟件上略作修改,就可以在不增加成本的情況下實現4路A/D轉換。
7、用同樣的工作原理實現D/A轉換:
如圖2所示,可使該電路很容易地隻用單片機的一個I/O腳實現D/A轉換功能。其輸出的模擬量電壓Vout=VDD*D1/(D1+D2)。該輸出電壓帶有紋波,當RC值足夠大時,該紋波值幾乎為零,可忽略不計。

圖2:隻用單片機的一個I/O腳實現D/A轉換功能
8、單片機的A/D轉換軟件程序流程圖:

圖3:單片機的A/D轉換軟件程序流程圖
- 噪聲中提取真值!瑞盟科技推出MSA2240電流檢測芯片賦能多元高端測量場景
- 10MHz高頻運行!氮矽科技發布集成驅動GaN芯片,助力電源能效再攀新高
- 失真度僅0.002%!力芯微推出超低內阻、超低失真4PST模擬開關
- 一“芯”雙電!聖邦微電子發布雙輸出電源芯片,簡化AFE與音頻設計
- 一機適配萬端:金升陽推出1200W可編程電源,賦能高端裝備製造
- 一秒檢測,成本降至萬分之一,光引科技把幾十萬的台式光譜儀“搬”到了手腕上
- AI服務器電源機櫃Power Rack HVDC MW級測試方案
- 突破工藝邊界,奎芯科技LPDDR5X IP矽驗證通過,速率達9600Mbps
- 通過直接、準確、自動測量超低範圍的氯殘留來推動反滲透膜保護
- 從技術研發到規模量產:恩智浦第三代成像雷達平台,賦能下一代自動駕駛!
- 車規與基於V2X的車輛協同主動避撞技術展望
- 數字隔離助力新能源汽車安全隔離的新挑戰
- 汽車模塊拋負載的解決方案
- 車用連接器的安全創新應用
- Melexis Actuators Business Unit
- Position / Current Sensors - Triaxis Hall


