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