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