基于C8051F單片機(jī)的紅外軸溫探測(cè)器零點(diǎn)校正技術(shù)
引言
本文引用地址:http://2s4d.com/article/80619.htm在數(shù)據(jù)采集系統(tǒng)中,前級(jí)放大器的零點(diǎn)漂移是探測(cè)誤差的主要來源,特別是在環(huán)境惡劣的條件下。例如,用于鐵路軸溫檢測(cè)的紅外探頭,要在環(huán)境溫度—40℃至+55℃的范圍內(nèi)可靠的工作,其零點(diǎn)的溫漂范圍很大,是很難采用簡(jiǎn)單的軟件修正和硬件補(bǔ)償技術(shù)完全解決的。本文介紹利用C8051F007單片機(jī),在進(jìn)行溫度數(shù)據(jù)采集和處理的同時(shí),通過片上DAC對(duì)前級(jí)放大器進(jìn)行零點(diǎn)自動(dòng)調(diào)整,采用“軟硬兼施”的閉環(huán)調(diào)整方法,補(bǔ)償了系統(tǒng)的零點(diǎn)漂移。
根據(jù)本課題的特點(diǎn),由于環(huán)境溫度變化的速度十分緩慢,當(dāng)采集時(shí)間相對(duì)環(huán)境溫度變化較短時(shí),可以認(rèn)為在采集過程中零點(diǎn)的漂移量是相對(duì)固定的。那么,當(dāng)傳感器差動(dòng)放大器的輸入端上產(chǎn)生零點(diǎn)漂移時(shí),我們可以在非數(shù)據(jù)采集時(shí)間內(nèi)動(dòng)態(tài)地調(diào)整放大器的輸出參考點(diǎn),抵消掉零點(diǎn)漂移帶來的影響。
此種方法同樣可用于其它傳感器零點(diǎn)漂移范圍較大、信號(hào)變化較慢的情況。
零點(diǎn)誤差的產(chǎn)生
傳感器輸出電壓VS由零點(diǎn)電壓VZ和信號(hào)電壓VR組成,
VR是與被測(cè)量物理量直接相關(guān)的電壓,要通過ADC轉(zhuǎn)換成數(shù)字量。VZ是零點(diǎn)電位,從長(zhǎng)時(shí)間來看,VZ往往是隨環(huán)境溫度緩慢變化的,但在較短的采集時(shí)間內(nèi),也可以近似看作不變。
為了只將VR進(jìn)行放大采集,我們將另行提供一個(gè)補(bǔ)償電壓VN,并且使VN=VZ,將VS和VN輸入到一個(gè)差模放大器的兩輸入端。設(shè)放大器的增益為G,則放大器輸出為(VZ+VR-VN)G。如果VN=VZ,則輸出為VRG,直接得到我們需要的電壓。但實(shí)際中,VZ會(huì)隨時(shí)間緩慢變化,我們無法時(shí)刻做到VN=VZ。而一旦VN≠VZ,輸出就會(huì)產(chǎn)生零點(diǎn)誤差(VZ-VN)G,尤其是在G很大的時(shí)候,誤差會(huì)十分明顯。
根據(jù)探測(cè)現(xiàn)場(chǎng)的實(shí)際情況,平時(shí)無列車通過,探頭暫停采集的時(shí)候,我們可以利用ADC不停地捕捉零點(diǎn)漂移,并通過DAC輸出補(bǔ)償電壓VN,隨時(shí)去掉零點(diǎn)誤差。而當(dāng)列車通過探頭的時(shí)間內(nèi),單片機(jī)停止校正并鎖存DAC調(diào)零輸出,探頭以此刻DAC調(diào)整的輸出狀態(tài)作為探測(cè)零點(diǎn)開始進(jìn)行工作。
主要器件介紹
儀表放大器AD620
儀表放大器是一個(gè)雙端輸入的差動(dòng)放大器,除了高精度,高穩(wěn)定性的特點(diǎn)外,其輸出零點(diǎn)參考電壓可以通過REF管腳的電壓任意設(shè)置,這就為我們調(diào)整零漂提供了可能。
AD620的輸入端有著高達(dá)109Ω的輸入阻抗;輸入失調(diào)電壓30uV,輸出失調(diào)電壓400uV。輸入偏置電流很低,通常在0.5nA最高不超過2nA;增益為100時(shí),增益誤差0.15%;增益100時(shí)的共模抑制比高達(dá)130dB;輸入噪聲9nV/,輸出噪聲72nV/。除此以外,AD620的溫度穩(wěn)定性也十分優(yōu)異:增益大于1時(shí),增益的溫度系數(shù)為-50ppm,輸入失調(diào)電壓和輸出失調(diào)電壓的平均溫度系數(shù)分別為0.3uV/℃和5.0uV/℃。
與通用運(yùn)放不同的是,通用運(yùn)放大多用連接在輸入與輸出間的外部電阻控制自身閉環(huán)增益,而儀表放大器采用內(nèi)部反饋網(wǎng)絡(luò),它的增益控制電阻是不與輸入、輸出端連接在一起的,有專門用來連接增益設(shè)置電阻的引腳。AD620通過接在1、8腳之間的電阻來設(shè)置增益大小,增益G與增益設(shè)置電阻之間的關(guān)系如公式1。
一般通用運(yùn)放的輸出都是對(duì)地輸出,而儀表放大器的輸出是相對(duì)于放大器的輸出參考引腳電位的。通過在輸出參考引腳施加不同的電壓可以設(shè)置對(duì)地輸出電壓的輸出零點(diǎn)。儀表放大器的對(duì)地輸出電壓公式如公式2。
C8051F007單片機(jī)
本設(shè)計(jì)方案需要用到高速M(fèi)CU和高精度ADC、DAC,Silicon Laboratories公司的高性能單片機(jī)C8051F007正好滿足這一需要。該單片機(jī)集成了8051內(nèi)核,但時(shí)鐘頻率更高,處理能力更強(qiáng)。片上集成8通道12位ADC和2個(gè)12位DAC,除了完成采集和處理任務(wù)之外,還有足夠的模擬部件進(jìn)行零漂調(diào)整。比用分離元件既提高了可靠性,又簡(jiǎn)化了電路,也降低了成本。
·片上集成DAC
C8051F007片上集成的兩個(gè)DAC使用方法十分簡(jiǎn)單,DAC可以用單片機(jī)內(nèi)部提供的2.43V參考電壓,也可以外部提供。我們?cè)谶@里使用內(nèi)部參考電壓。參考電壓配置寄存器是REF0CN,地址是0xD1。無論使用DAC0還是DAC1,都需要將寄存器的0、1位置“1”。
在本應(yīng)用中,bit2到bit0設(shè)置成“000”,也就是12位轉(zhuǎn)換數(shù)值的MSB到LSB存在DAC0H的bit3到DAC0L的bit0。
DAC1的設(shè)置過程與DAC0相同,不再贅述。
·片上集成ADC
C8051F007片上集成了一個(gè)8通道12位ADC。8個(gè)通道既可以單獨(dú)設(shè)置成單通道,也可以兩兩設(shè)置成雙端差動(dòng)采集。在ADC的輸入端還有一個(gè)前端放大器,放大倍數(shù)可以編程。ADC參考電壓可以外部提供,也可以使用內(nèi)部參考電壓。內(nèi)部參考電壓2.43V。可以選擇多個(gè)ADC轉(zhuǎn)換開啟信號(hào)。
ADC使用前,也要先設(shè)置參考電壓,內(nèi)部參考電壓的設(shè)置過程可以參考DAC。
接著設(shè)置ADC的輸入方式寄存器AMX0CF(地址0xBA)和通道選擇寄存器AMUX0SL(0xBB)。8個(gè)輸入通道兩兩分成一組(通道0和通道1、通道2和通道3、通道4和通道5、通道6和通道7)。AMX0CF的bit0到bit3可以分別設(shè)置這四組輸入的方式。置“1”將該組兩個(gè)輸入設(shè)置成雙端輸入方式,清0則該組兩通道各自為單端輸入方式。AMUX0SL的bit3到bit0為輸入端口選擇位,控制多路器是外部某一輸入端口與ADC相連。具體設(shè)置方式可以參考C8051F007的數(shù)據(jù)手冊(cè)。
寄存器ADC0CF,用來設(shè)置ADC的轉(zhuǎn)換速率和輸入增益。地址0xBC,復(fù)位初始數(shù)值0x60,表1給出了寄存器ADC0CF的配置說明。
Bit7- Bit 5: ADC轉(zhuǎn)換時(shí)鐘設(shè)定,通過設(shè)定000至1xx來控制ADC的轉(zhuǎn)換周期分別為1、2、4、8和16倍時(shí)鐘。
Bit4- Bit 3: 無用
Bit2- Bit 1: ADC內(nèi)部前置放大器增益設(shè)置,通過設(shè)定000至1xx來控制放大器分別為1、2、4、8和16倍的增益。
ADC0CN寄存器,用于控制ADC的各種轉(zhuǎn)換功能。地址0xE8,復(fù)位初始數(shù)值0x00,表2給出了ADC0CN寄存器的配置說明
Bit7: ADC開啟位
0:ADC進(jìn)入掉電狀態(tài)
1:ADC進(jìn)入激活狀態(tài),可以隨時(shí)進(jìn)行轉(zhuǎn)換
Bit6: 采樣跟蹤模式設(shè)定
0:在下一次采樣之前,ADC一直在跟蹤
1:按照ADSTM1-0(Bit3-2)設(shè)定的方式跟蹤 ADSTM1-0(Bit3-2)
00:向ADBUSY寫入1時(shí)開始跟蹤,需要3個(gè)轉(zhuǎn)換周期
01:定時(shí)器3溢出開始跟蹤,需要3個(gè)轉(zhuǎn)換周期
10:管腳CNVTS上升沿開始跟蹤,需要3個(gè)轉(zhuǎn)換周期
11:定時(shí)器2溢出開始跟蹤,需要3個(gè)轉(zhuǎn)換周期
Bit5: 轉(zhuǎn)換完成中斷標(biāo)志
0:自上次中斷標(biāo)志清除后,沒有轉(zhuǎn)換完成
1:ADC完成一次轉(zhuǎn)換
Bit4: ADC忙碌位
讀:
0:轉(zhuǎn)換完成或自復(fù)位后無轉(zhuǎn)換;當(dāng)中斷開啟時(shí),該位由1變到0時(shí)觸發(fā)中斷
1:ADC正在忙于轉(zhuǎn)換
寫:
0:無效果
1:如果ADSTM1-0(Bit3-2)=00b時(shí),觸發(fā)一次轉(zhuǎn)換
Bit3-2: 轉(zhuǎn)換觸發(fā)模式:
00:向ADBUSY寫1觸發(fā)轉(zhuǎn)換
01:定時(shí)器3溢出觸發(fā)
10:管腳CNVTS上升沿觸發(fā)
11:定時(shí)器2溢出觸發(fā)
Bit1: 窗口比較中斷標(biāo)志(軟件清零)
0:窗口比較不滿足匹配條件
1:窗口比較滿足匹配條件
Bit0: 數(shù)據(jù)寄存器左對(duì)齊設(shè)置位
0:數(shù)據(jù)寄存器右對(duì)齊
1:數(shù)據(jù)寄存器左對(duì)齊
零漂校正過程
首先我們?cè)O(shè)定在某一環(huán)境下,探頭輸出沒有零點(diǎn)漂移,那么根據(jù)公式2,我們得到初始狀態(tài)儀表放大器輸出為(V+-V-)G+VREF。DAC0輸出中點(diǎn)電位1.2V,即VREF=1.2V。我們可以調(diào)節(jié)放大器反相輸入端的可調(diào)電位器,使放大器輸出電壓VC,該電壓在零到ADC最大采集電壓之間,略高于0V即可,這樣為的是使ADC可以采集到放大器輸出在這個(gè)電壓上下變化的情況。由于ADC不能采集0V以下的電壓,所以該電壓不能選擇0V。在這里我們選擇0.5V,太高了會(huì)縮小電壓采集的范圍。此時(shí)
當(dāng)環(huán)境改變時(shí),設(shè)此時(shí)傳感器產(chǎn)生零點(diǎn)漂移為DVS。放大器輸出(V+-V-)G+DVSG+VREF,零點(diǎn)漂移DVS·G。此時(shí)通過ADC采集放大器輸出電壓,如果輸出大于VC,則減小DAC0的輸出,即減小VREF;相反,如果輸出小于VC,則增大DAC0的輸出,即增大VREF,這樣如此采集->調(diào)整->采集.......使放大器輸出電壓穩(wěn)定在。
比較式3和式4可以看出,我們完全是靠DAC0的變化量DVREF將DVS·G抵消掉。
消除零點(diǎn)漂移是一個(gè)逐漸逼近的過程,每次逼近的步長(zhǎng)可以通過軟件設(shè)定,但由于受到DAC分辨率的影響,最小步長(zhǎng)是DAC的1LSB代表的電壓,所以我們最小只能將零漂控制在0到最小步長(zhǎng)之間。受DAC輸出范圍的限制,初始時(shí)DAC0輸出1.2V,若設(shè)此時(shí)的零漂為VD(通常我們認(rèn)為是零),那么,我們能夠調(diào)節(jié)的最大零點(diǎn)漂移范圍是[VD-1.2/G,VD+1.2/G]。當(dāng)單片機(jī)的系統(tǒng)時(shí)鐘為16M時(shí),完成一個(gè)采集,調(diào)整的周期最多用數(shù)百uS。列車通過時(shí)間一般在十分鐘以內(nèi),在此時(shí)間內(nèi)完成的數(shù)據(jù)采集,對(duì)緩慢的零點(diǎn)漂移來說影響是不大的。
硬件、軟件實(shí)現(xiàn)
放大器零點(diǎn)校正的硬件原理圖如圖1所示。
儀表放大器的同相輸入端接紅外傳感器輸出電壓;反相輸入端輸入調(diào)零電壓。放大器1、8腳間接入增益設(shè)置電阻。5腳的參考電壓輸入,連接單片機(jī)C8051F007片上DAC0的輸出,通過DAC的輸出來自動(dòng)校正放大器的零點(diǎn)。實(shí)際電路中VREF也可通過電位器分壓來取得調(diào)整電壓,以提高調(diào)整細(xì)度。放大器輸出電壓經(jīng)AIN0送至單片機(jī)片上的ADC轉(zhuǎn)化為數(shù)字量。
單片機(jī)C語言編程框圖如圖2所示。
系統(tǒng)在不采集傳感器輸出電壓的時(shí)候自身進(jìn)行系統(tǒng)調(diào)零,先將放大器參考點(diǎn)電壓設(shè)置為0.5V,也就是讓DAC0輸出0.5V。然后采集放大器的輸出電壓,如果輸出電壓大于0.5V,可以減小參考電壓抵消漂移;相反,如果輸出電壓小于0.5V,說明有負(fù)向零點(diǎn)漂移產(chǎn)生,則要增大參考電壓抵消漂移。
結(jié)語
根據(jù)儀表放大器的輸出公式我們可以看出,當(dāng)放大倍數(shù)很高時(shí),零點(diǎn)漂移也會(huì)同時(shí)被放大。這樣,如果零點(diǎn)漂移本身范圍過大時(shí),有可能超出DAC的調(diào)節(jié)范圍。通常有效調(diào)節(jié)零漂的跨度要略小于DAC的輸出范圍,可在DAC輸出范圍的兩頭各劃出一段數(shù)據(jù)區(qū)作為超限標(biāo)志。程序中每次調(diào)節(jié)DAC0輸出后,要隨時(shí)檢測(cè)被轉(zhuǎn)化數(shù)字量的大小,一旦發(fā)現(xiàn)DAC輸出值超出調(diào)節(jié)范圍,可以及時(shí)對(duì)外發(fā)出超限警告。
實(shí)際設(shè)計(jì)中,零點(diǎn)的調(diào)整只是解決本傳感器的一個(gè)問題,其它例如不同環(huán)溫下的非線性問題還需要另行解決,好在采用C8051F007高性能單片機(jī),其功能和速度均可同時(shí)滿足上述要求。 ■
參考文獻(xiàn):
1 .C8051F00x datasheet http://www.silabs.com/public/documents/tpub_doc/dsheet
2.AD620 datasheet http://www.analog.com/UploadedFiles/Data_Sheets/897653854AD620_g.pdf
3.王鐵流等,“紅外軸溫監(jiān)測(cè)系統(tǒng)中列車信號(hào)的計(jì)算機(jī)模擬”,《電子技術(shù)應(yīng)用》,1995.9
評(píng)論