一. 簡介
ZE08-CH2O型電化學甲醛模組是一個通用型、小型化模組。 利用電化學原理對空氣中存在CH2O(甲醛)進行探測,具有良好的選擇性,穩(wěn)定性。 內(nèi)置溫度傳感器,可進行溫度補償; 同時具有數(shù)字輸出與模擬電壓輸出,方便使用。
ZE08-CH2O傳感器模塊是將成熟的電化學檢測技術與精良的電路設計緊密結合,設計制造出的通用型氣體模組。
二. 模塊參數(shù)
1.特點
2.引腳說明
ZE08-CH2O模塊內(nèi)部已集成了數(shù)據(jù)處理電路,將甲醛濃度信號轉換為電信號,最后轉化為數(shù)據(jù)信號,通過串口(UART)發(fā)送出來;
ZE08-CH2O模塊也支持模擬信號輸出,即Pin2腳DAC,將信號轉化為0-2V電壓信號,連接至單片機ADC轉換引腳,實現(xiàn)模擬信號的轉化。
3.參考電路
控制電路采用了串口(UART)的通訊方式,模塊只需接上5.0V電源,并將UART引腳接到單片機的UART引腳上。
三. 通訊協(xié)議
ZE08-CH2O模塊采用串口通訊,串口波特率等參數(shù)如下,波特率出廠默認為9600,不可更改:
通信分為主動上傳式和問答式,出廠默認主動上傳,每間隔1S發(fā)送一次濃度值,命令行格式如下:
1.主動上傳式指令
所得到的氣體濃度計算公式為:
氣體濃度值=氣體濃度高位*256+氣體濃度低位
2.問答式指令
問答式指令即需要單片機主動發(fā)送讀取濃度值指令,模塊才會返回當前的濃度值。
切換到問答式,命令行格式如下:
讀氣體濃度值格式如下:
模塊接收到讀取濃度指令后,就會返回一條氣體濃度值數(shù)據(jù):
四. 控制程序
此次例程采用了模塊默認的主動上傳式模式,每1s接收一個甲醛濃度值。
void show() //顯示當前數(shù)據(jù),LCD第一行
{
LCD1602_write(0,0x80);
LCD1602_writebyte("CH2O:"); //顯示當前的甲醛濃度值
LCD1602_write(1,0x30+ch2o/10000%10);
LCD1602_writebyte(".");
LCD1602_write(1,0x30+ch2o/1000%10);
LCD1602_write(1,0x30+ch2o/100%10);
LCD1602_write(1,0x30+ch2o/10%10);
LCD1602_write(1,0x30+ch2o%10);
LCD1602_writebyte("mg/m3");
}
void main()
{
uchar h,l;
LCD1602_cls(); //LCD 1602 調(diào)用初始化程序
TMOD=0x21; //配置定時
TH0=0x4c; //50ms 定時賦值
TL0=0x00;
ET0=1;
TR0=1;
TH1=0xfd; //串口波特率定時初始
TL1=0xfd;
SCON=0x50; //只發(fā)送
EA=1; //打開定時總中斷
ES=1; //打開串口中斷
TR1=1;
h=byte_read(0x2000);
l=byte_read(0x2001); //讀取保存的數(shù)據(jù)
ch2o_H=h*256+l;
if(ch2o_H>700)
ch2o_H=80;
while(1)
{
show(); //顯示函數(shù)
key(); //按鍵處理程序
}
}
void UART_4() interrupt 4 //處理接收的串口數(shù)據(jù),接收甲醛傳感器指令
{
if(RI)
{
RI=0; //RI 置0
UART_dat[bz]=SBUF; //暫存串口數(shù)據(jù)
switch(bz)
{
case 0:
if(UART_dat[bz]==0xFF) bz=1;
else bz=0;
break;
case 1:
if(UART_dat[bz]==0x17) bz=2;
else bz=0;
break;
case 2:
if(UART_dat[bz]==0x04) bz=3;
else bz=0;
break;
case 3:
if(UART_dat[bz]==0x00) bz=4;
else bz=0;
break;
case 4:
bz=5;
break;
case 5:
bz=6;
break;
case 6:
if(UART_dat[bz]==0x13) bz=7;
else bz=0;
break;
case 7:
if(UART_dat[bz]==0x88) bz=8;
else bz=0;
break;
case 8: //校驗接收的數(shù)據(jù) 正確則處理接收的數(shù)據(jù)
if((UART_dat[bz]+UART_dat[1]+UART_dat[2]+UART_dat[3]+UART_dat[4]+UART_dat[5]+UART_dat[6]+UART_dat[7])%256==0)
{
ch2o=UART_dat[4]*256+UART_dat[5];
ch2o=ch2o*13.392857;
bz=0;
}else
{
bz=0;
}
break;
}
}
-
傳感器
+關注
關注
2545文章
50459瀏覽量
751119 -
模塊
+關注
關注
7文章
2658瀏覽量
47294 -
電路設計
+關注
關注
6659文章
2421瀏覽量
202846 -
dac
+關注
關注
43文章
2261瀏覽量
190757 -
指令
+關注
關注
1文章
606瀏覽量
35618
發(fā)布評論請先 登錄
相關推薦
評論