用MSP430F1121內(nèi)置比較器設(shè)計高精度A/D變換器
Σ-ΔA/D技術(shù)具有高分辨率、高線性度和低成本的特點。本文基于TI公司的MSP430F1121單片機,介紹了采用內(nèi)置比較器和外圍電路構(gòu)成類似于∑-△的高精度A/D實現(xiàn)方案,適合用于對溫度、壓力和電壓等緩慢變化信號的采集應(yīng)用。
在各種A/D轉(zhuǎn)換器中,最常用是逐次逼近法(SAR)A/D,該類器件具有轉(zhuǎn)換時間固定且快速的特點,但難以顯著提高分辨率;積分型A/D 有較強的抗干擾能力,但轉(zhuǎn)換時間較長;過采樣Σ-ΔA/D由于其高分辨率,高線性度及低成本的特點,正得到越來越多的應(yīng)用。根據(jù)這些特點,本文以TI公司的MSP430F1121單片機實現(xiàn)了一種類似于Σ-ΔA/D技術(shù)的高精度轉(zhuǎn)換器方案。
MSP430F1121是16位RISC結(jié)構(gòu)的FLASH型單片機,該芯片有14個雙向I/O口并兼有中斷功能,一個16位定時器兼有計數(shù)和定時功能。I/O口輸出高電平時電壓接近VCC,低電平時接近Vss,因此,一個I/O口可以看作一位DAC,具有PWM功能。
該芯片具有一個內(nèi)置模擬電壓比較器,只須外接一只電阻和電容即可構(gòu)成一個類似于Σ-Δ技術(shù)的高精度單斜率A/D。一般而言,比較器在使用過程中會受到兩種因素的影響,一種是比較器輸入端的偏置電壓的積累;另一種是兩個輸入端電壓接近到一程度時,輸出端會產(chǎn)生振蕩。
MSP430F1121單片機在比較器兩輸入端對應(yīng)的單片機端口與片外輸入信號的連接線路保持不變的情況下,可通過軟件將比較器兩輸入端與對應(yīng)的單片機端口的連接線路交換,并同時將比較器的輸出極性變換,這樣抵消了比較器的輸入端累積的偏置電壓。通過在內(nèi)部將輸出連接到低通濾波器后,即使在比較器輸入端兩比較電壓非常接近,經(jīng)過濾波后也不會出現(xiàn)輸出端的振蕩現(xiàn)象,從而消除了輸出端震蕩的問題。
利用內(nèi)置比較器實現(xiàn)高精度A/D
圖1是一個可直接使用的A/D轉(zhuǎn)換方案,該方案是一個高精度的積分型A/D轉(zhuǎn)換器。其基本原理是用單一的I/O端口,執(zhí)行1位的數(shù)模轉(zhuǎn)換,以比較器的輸出作反饋,來維持Vout與Vin相等。
圖1 利用MSP430F1121實現(xiàn)的實用A/D轉(zhuǎn)換器電路
如圖1所示,產(chǎn)生1位DAC的電路為一路通用I/O口、一個串聯(lián)的電阻和電容。在電容上產(chǎn)生Vout,要維持Vout=Vin,必須通過 I/O口對電容進行充放電,而由比較器的輸出來決定是進行充電還是放電(即I/O口輸出高低電平),這樣A/D形成了一個類似于帶負反饋的閉環(huán)系統(tǒng)。以圖 1的電路為例,當(dāng)比較器輸出為高電平時,說明Vout>Vin,此時應(yīng)對電容放電,則I/O口輸出低電平;當(dāng)比較器輸出為低電平時,說明Vout <Vin,應(yīng)對電容充電,則I/O口輸出高電平。
充、放電維持的時間確定的方法是每隔一個極短且固定的時間t后,查詢比較器的輸出狀態(tài),如果比較器的輸出狀態(tài)沒變,則維持I/O口的輸出;當(dāng)比較器的輸出狀態(tài)發(fā)生改變,則I/O口的輸出狀態(tài)也應(yīng)改變。因此,I/O的某一狀態(tài)(高/低電平)維持的時間可能是Xt(X為整數(shù)),從而在整個A/D轉(zhuǎn)換過程中,形成了一系列的X1、X2、…、Xi、…、 Xn。Xn為一隨機數(shù),其值由比較器的輸出狀態(tài)而定。在每個單位時間t后,如果I/O口的輸出為高電平,則事先設(shè)定的計數(shù)加1,當(dāng)A/D轉(zhuǎn)換完成后,記錄下I/O口輸出高電平的次數(shù)為m。
而A/D轉(zhuǎn)換完成的時間主要取決于對A/D轉(zhuǎn)換的精度要求。當(dāng)要求一個12位的A/D,則其時間為4096t,即對比較器輸出作 4096次查詢,每次查詢間隔時間為t(參考后面的程序及說明)。同樣16位的A/D的時間為65535t。在此,將對應(yīng)轉(zhuǎn)換精度要求的4096或 65535設(shè)為N,并結(jié)合上文所述,N=X1+X2+……Xn。
那么結(jié)合電容的充放電公式:
V(t)=V(1-exp(-t/RC))
可對積分型A/D作以下數(shù)學(xué)上的推斷,從而求出Vin。
N=X1+X2+……Xn
高電平的次數(shù)為m
假設(shè):Vin(t)=Vin
根據(jù)Vout=Vin和電容的充放電的公式可得:
Vout(t)=Vin+m(Vcc-Vin)(1-exp(-t/RC))-(N-m)Vin(1-exp(-t/RC)
m(Vcc-Vin)(1-exp(-t/RC))為充電過程
(N-m)Vin(1-exp(-t/RC)為放電過程
因此:Vin=Vcc×m/N (1)
上式成立的前提條件是Vin 在短時間內(nèi)不變,且對確定Vout的電容要預(yù)充電,在開始進行A/D轉(zhuǎn)換前使Vout=Vin,即通過I/O口對電容預(yù)充電使比較器在發(fā)生第一次翻轉(zhuǎn)后,開始進行積分A/D轉(zhuǎn)換。
如果對(1)式作一些處理,可使得A/D轉(zhuǎn)換的處理更加方便:如果電源電壓Vcc為3.0V,取N=3000,則分辨率為1mV,當(dāng)m= 1245時, Vin=1.245V;如果N=30000,則分辨率為0.1mV,在m=12456時,則Vin=1.2456V。這樣,只要通過對m的確定就可以得到 Vin的值,避免了直接用公式(1)帶來的計算上的麻煩。
圖2 用比較器做A/D轉(zhuǎn)換的子程序代碼
應(yīng)用實例
上面介紹的低成本A/D轉(zhuǎn)換器方案適用于緩慢變化電信號的采集,如溫度、壓力、光和電壓等。結(jié)合芯片的低功耗特點,該方案適合于電池供電的便攜式儀器。
用圖1所示電路可以構(gòu)成一個簡單的信號測量系統(tǒng),用HT1621作為液晶顯示驅(qū)動器,P1.0~P1.3四個I/O口控制HT1621。測量結(jié)果直接可以看到,利用該電路可以構(gòu)成一個具有12位以上分辨率的毫伏表。
因此,可以將測量結(jié)果放入FLASH存儲器中,具有記憶和回放功能。MSP430F1121 還有一個16位定時器,可以與一個I/O端口構(gòu)成一個UART,用于發(fā)送測量結(jié)果,上傳給PC機,可以構(gòu)成一個低采樣率的簡易存儲示波器。