谷寶磊
(江蘇聯(lián)合職業(yè)技術(shù)學(xué)院徐州經(jīng)貿(mào)分院 信息技術(shù)系,江蘇 徐州 221004)
R-17MED傳感器為化學(xué)傳感器,所謂化學(xué)傳感器,是指傳感器在感知物理量的過程中會(huì)有化學(xué)反應(yīng)發(fā)生。以液體電化學(xué)氧體積分?jǐn)?shù)傳感器為例,該傳感器包括擴(kuò)散柵、由金或鉑等貴金屬制成的傳感電極(陰極)、由鉛或鋅等金屬制成的工作電極(陽極)、電解液(如糊狀氫氧化鉀或醋酸鉀),另外還有外部濕度柵或過濾膜等。當(dāng)氧氣遇到傳感器陰極后,被還原為羥基,羥基離子在鉛電極上被氧化后會(huì)出現(xiàn)電流,從而將氧氣體積分?jǐn)?shù)的物理量轉(zhuǎn)化為電信號(hào)。R-17MED傳感器輸出的模擬電壓信號(hào)與氧氣體積分?jǐn)?shù)的關(guān)系如表1所示。
表1 傳感器輸出的模擬電壓信號(hào)與氧氣體積分?jǐn)?shù)的關(guān)系
含氧氣體進(jìn)入傳感器后,其內(nèi)部發(fā)生化學(xué)變化后,輸出與氧氣體積分?jǐn)?shù)成線性關(guān)系的電壓信號(hào)。其輸出電壓正端接后級(jí)電路的輸出端,該系統(tǒng)中輸出電壓正端接12位A/D芯片TLC2543,R-17MED輸出電壓負(fù)端與后級(jí)電路共地即可(如圖1所示)。
圖1 R-17MED化學(xué)傳感器使用示意圖
該系統(tǒng)前端采用的TLC2543為12位A/D芯片,具有較高的精度,因此讓R-17MED輸出的微弱信號(hào)(電壓正端)可以直接送至TLC2543的采集通道(AIN4)進(jìn)行A/D轉(zhuǎn)換[1](如圖2所示)。
圖2 系統(tǒng)硬件連接圖
為了提高信號(hào)采集的分辨率,圖2中TLC2543的參考電壓選擇+2.5 V(由外部高穩(wěn)定性的專門基準(zhǔn)電壓芯片提供),由此計(jì)算本系統(tǒng)的采集精度為
2 500 mV/(212-1)=2 500 mV/4 095≈0.61 mV。
根據(jù)表1傳感器輸出的模擬電壓信號(hào)與氧氣體積分?jǐn)?shù)的線性關(guān)系,可以計(jì)算出氧氣體積分?jǐn)?shù)
φ=21.0+1.676 6×(U0-7.0)。
(1)
根據(jù)式(1),當(dāng)R-17MED傳感器輸出信號(hào)每增加0.61 mV,氧氣體積分?jǐn)?shù)相應(yīng)增加。
Δφ=1.676 6×ΔU=1.676 6×0.61=1.022%。
(2)
該檢測的精度可滿足多數(shù)場合應(yīng)用需要。輸出電壓U0與A/D轉(zhuǎn)換結(jié)果D存在公式(3)的關(guān)系,
U0/2 500=D/4 095。
(3)
將式(3)代入式(1)可得到氧氣體積分?jǐn)?shù)與A/D轉(zhuǎn)換結(jié)果D計(jì)算公式為
φ=21.0+1.676 6×(0.610 5×D-7.0),
(4)
由此可以根據(jù)轉(zhuǎn)換結(jié)果編程計(jì)算氧氣體積分?jǐn)?shù)。
基于R-17MED化學(xué)傳感器的氧氣體積分?jǐn)?shù)檢測儀系統(tǒng),在程序?qū)崿F(xiàn)方面主要包含TLC2543驅(qū)動(dòng)程序模塊、LCD驅(qū)動(dòng)程序模塊,系統(tǒng)主函數(shù)根據(jù)本文氧氣體積分?jǐn)?shù)檢測算法,調(diào)用各功能模塊中的子函數(shù),實(shí)現(xiàn)氧氣體積分?jǐn)?shù)的檢測。表2對(duì)該系統(tǒng)的各程序模塊功能做了描述說明。
表2 系統(tǒng)各程序模塊功能描述
3.2.1 TLC2543簡介 TLC2543是IT公司生產(chǎn)的一種12位串行的A/D轉(zhuǎn)換器,其使用開關(guān)電容逐次逼近的技術(shù)以完成A/D的轉(zhuǎn)換過程。該芯片采用SPI串行口與外界進(jìn)行通信,可以節(jié)省51系列單片機(jī)的I/O口資源。TLC2543共有20個(gè)引腳,如圖2中的TLC2543所示,其中的AIN0,AIN1,…,AIN10引腳分別對(duì)應(yīng)11路模擬電壓輸入。REF+和REF-分別接+2.5 V和地時(shí),可以測量0~2.5 V內(nèi)的直流電壓。輸出的數(shù)據(jù)大小和模擬電壓的大小成線性關(guān)系[2],如果輸出數(shù)據(jù)為0Xfff,則表示為+5 V,如果輸出數(shù)據(jù)為0X000,則表示為0 V。CS為片選端,低電平有效;CLK為通信時(shí)鐘端;SDI為數(shù)據(jù)輸入端;SDO為數(shù)據(jù)輸出端EOC為數(shù)據(jù)轉(zhuǎn)化結(jié)束端。
3.2.2 TLC2543驅(qū)動(dòng)模塊軟件流程圖 在使用TLC2543時(shí),需要按照規(guī)定的方式,首先向芯片內(nèi)寫入控制字。TLC2543的控制字為8位數(shù)據(jù),從SDO端串行輸入,它規(guī)定了TLC2543要轉(zhuǎn)換的模擬量通道號(hào)、轉(zhuǎn)換后的輸出數(shù)據(jù)長度及輸出數(shù)據(jù)的格式如圖3所示。
圖3 TLC2543驅(qū)動(dòng)流程圖
3.3.1 對(duì)點(diǎn)陣式LCD操作的軟件流程圖 要實(shí)現(xiàn)128×64圖形點(diǎn)陣LCD的讀、寫操作,其工作流程是初始化(清屏)→制定漢字的顯示位置(頁和列地址)→漢字顯示。其中對(duì)LCD的操作主要有讀狀態(tài)、寫指令和寫數(shù)據(jù)[3],其軟件流程圖如圖4所示。
圖4 點(diǎn)陣型LCD操作流程圖
3.3.2 對(duì)點(diǎn)陣式LCD驅(qū)動(dòng)模塊程序?qū)崿F(xiàn) 因篇幅限制,僅介紹顯示氧氣體積分?jǐn)?shù)檢測結(jié)果的函數(shù)Void DisplayResult(float Q){}。
Void DisplayResult(float Q)
{
unsigned char i,j,k;//i為體積分?jǐn)?shù)的整數(shù)位數(shù)字,j,k分別為體積分?jǐn)?shù)第1位、第2位數(shù)字
unsigned int N;
N=(unsigned int)(Q*100);//將體積分?jǐn)?shù)轉(zhuǎn)為3位整數(shù)
i=N/100;//取體積分?jǐn)?shù)的整數(shù)位數(shù)字
……
Display-English(pd[i]);//顯示體積分?jǐn)?shù)的整數(shù)位
DisPlay-English(dot);//顯示小數(shù)點(diǎn)
Display-English(pd[j]);//顯示氣體體積分?jǐn)?shù)第1位小數(shù)點(diǎn)
Display-English(pd[k]);//顯示氣體體積分?jǐn)?shù)第2小數(shù)點(diǎn)
}
/*為節(jié)省LCD顯示屏的顯示空間,在LCD屏幕上將氧氣體積分?jǐn)?shù)簡稱為“濃度”,文中對(duì)“濃”“度”兩個(gè)漢字進(jìn)行取模,來標(biāo)示氧氣體積分?jǐn)?shù)*/
/*程序中需要顯示漢字、字符的字模[4]*/
unsigned char code nong[]={0x10,0x61,0x06,0xE0,0x00,0x38,0x88,0xE8,0x5C,0x8B,0x08,0x08,0x28,0x98,0x08,0x00,0x04,0x04,0xFF,0x10,0x08,0x06,0x01,0xFF,0x40,0x21,0x06,0x19,0x21,0xC0,0x40,0x00};//漢字“濃”的16*16字模
unsigned char code du[]={0x00,0x00,0xFC,0x04,0x24,0x24,0xFC,0xA5,0xA6,0xA4,0xFC,0x24,0x24,0x24,0x04,0x00,0x80,0x60,0x1F,0x80,0x80,0x42,0x46,0x2A,0x12,0x12,0x2A,0x26,0x42,0xC0,0x40,0x00};//漢字“度”的16*16字模
unsigned char code pe[]={0xF0,0x08,0xF0,0x00,0xE0,0x18,0x00,0x00,0x00,0x21,0x1C,0x03,0x1E,0x21,0x1E,0x00};//%的8*16字模
unsigned char code Eq[]={0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x00,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x00};//“=”的8*16字模
unsigned char code d0[]={……};//數(shù)字0~9的字模,因篇幅限制,省略;
unsigned char code *pd[]={d0,d1,…,d9};//指向數(shù)組的指針數(shù)組
unsigned char dot[]={……};//小數(shù)點(diǎn)的8*16字模
/*初始化12864LCD,指定體積分?jǐn)?shù)的顯示位置,顯示LCD屏幕上相關(guān)輔助提示信息*/
void LCD-Init(void)
{
ClearLCD();
gotoxy(6,0);//在第6頁的0列顯示
Display-Character(nong);//顯示漢字“濃”;
Dispaly-Character(du);//顯示漢字“度”
Display-English(Equ);//顯示“=”
gotoxy(6,80);
Dispaly-English(pe);//顯示“%”
}
系統(tǒng)主程序的軟件流程圖如圖5所示,系統(tǒng)上電后,首先對(duì)LCD進(jìn)行初始化,再向TLC2543發(fā)送指令,設(shè)置工作方式及選擇采集通道[5],然后讀取采集結(jié)果,并將結(jié)果送到LCD顯示。
#include
#include
#include “12864.C”//包含12864LCD模塊驅(qū)動(dòng)程序文件
void main(void)
{
unsigned int N;//12位A/D轉(zhuǎn)換結(jié)果
float φ;//儲(chǔ)存體積分?jǐn)?shù)
LCD-Init();//LCD初始化設(shè)置
While (1)
{
N=A-D(4);//選擇TLC2543的通道4進(jìn)行A/D轉(zhuǎn)換
φ=21.0+1.6766*(N*0.6105-7.0);
gotoxy(6,48);//從第6頁的第48列開始顯示點(diǎn)陣
DisplayResult(φ);//顯示檢測體積分?jǐn)?shù)
}
}
圖5 主程序流程圖
采用Keil軟件編譯通過后,啟動(dòng)調(diào)試,可看到LCD顯示屏上的檢測數(shù)值為43.04%。本測試中,R-17MED氧氣體積分?jǐn)?shù)傳感器輸出電壓為20 mV 時(shí),根據(jù)傳感器輸出的模擬電壓信號(hào)與氧氣體積分?jǐn)?shù)的線性關(guān)系,對(duì)應(yīng)檢測環(huán)境的氧氣體積分?jǐn)?shù)可由式(1)得出:
φ=21.0+1.676 6×(20-7.0)=42.80%,
實(shí)際檢測結(jié)果為43.04%,僅僅存在少量誤差。經(jīng)過分析大量實(shí)驗(yàn)數(shù)據(jù),測試精度可達(dá)97.78%。
基于R-17MED化學(xué)傳感器的氧氣體積分?jǐn)?shù)檢測儀具有小型化、智能化、操作使用簡單的特點(diǎn),經(jīng)過大量的測試數(shù)據(jù)驗(yàn)證,系統(tǒng)性能可靠,測試數(shù)據(jù)精度符合生產(chǎn)管理需要,效果良好。具有現(xiàn)實(shí)的推廣意義,可以應(yīng)用在醫(yī)療、環(huán)境檢測、煤礦、糧食存儲(chǔ)、制藥、石油化工等行業(yè)。減少和預(yù)防事故發(fā)生,保障特殊環(huán)境下工作人員的健康和安全,促進(jìn)生產(chǎn)發(fā)展,提高經(jīng)濟(jì)效益。同時(shí)該系統(tǒng)可以通過進(jìn)一步完善上位機(jī)軟件實(shí)現(xiàn)氧氣體積分?jǐn)?shù)本地和遠(yuǎn)程兩種顯示,實(shí)現(xiàn)聲音報(bào)警。系統(tǒng)具有很好的擴(kuò)展性,配合不同化學(xué)氣體傳感器元件,適當(dāng)調(diào)節(jié)參數(shù)就可實(shí)現(xiàn)對(duì)不同氣體的測量。
參考文獻(xiàn):
[1] 馬明建,周長城.數(shù)據(jù)采集與處理技術(shù)[M].西安:西安交通大學(xué)出版社,1998:250-256.
[2] 馬忠國,趙家貴.檢測技術(shù)[M].北京:中國計(jì)量出版社,1997:40-51.
[3] 何立民.單片機(jī)的C語言應(yīng)用程序設(shè)計(jì)[M].北京:北京航空航天大學(xué)出版社,1997:161-166.
[4] 譚浩強(qiáng).C語言程序設(shè)計(jì)[M].北京:清華大學(xué)出版社,2012:126-136.
[5] 徐愛鈞,徐陽.Keil C51單片機(jī)高級(jí)語言應(yīng)用編程與實(shí)踐[M].北京:電子工業(yè)出版社,2013:126-136.