岚宝科技甲醛(HCHO)传感器驱动程序

《数据传感器——甲醛传感器》

       数据采集端使用的甲醛(HCHO)模块是岚宝科技生产的。此电化学甲醛模块是一个通用性模组,利用电化学原理对空气中存在的CH2O进行探测,通过USART与MCU通信。以下将会详细的叙述传感器的尺寸规格及传输协议;

表1-2传感器参数

检测气体

甲醛

干扰气体

酒精,一氧化碳等气体

输出数据

UART输出

工作电压

3.3V

预热时间

≤3分钟

响应时间

≤60秒

恢复时间

≤60秒

量程

0~1.00mg/m3

分辨率

≤0.01 mg

工作温度

0~50℃

工作湿度

15%RH-90%RH(无凝结)

存储温度

0~50℃

使用寿命

5年(无腐蚀空气)

      规格管脚图如下:岚宝科技甲醛(HCHO)传感器驱动程序_第1张图片

       传输协议:默认波特率9600,无校验位,8位数据位,1位停止位;传输格式如下:

读取协议    

发送:

            起始     数量   指令  结束

返回:


         起始       数量  指令     甲醛mg       甲醛ppm      结束

校零协议

发送:

         起始      数量   指令  结束

读取协议

例1:

发送:A5 5A 02 80 AA

返回:A5 5A 06 80 00 05 00 04 AA

甲醛mg值 (0X00*256+0X05)/100=0.05 mg

甲醛ppm值(0X00*256+0X04)/100=0.04 ppm

 

例2:

发送:A5 5A 02 80 AA

返回:A5 5A 06 80 00 7B 00 64 AA

甲醛mg值    (0X00*256+0X7B)/100=1.23  mg

甲醛ppm值   (0X00*256+0X64)/100=1.00  ppm

 

       在本项目中首映USART3用于驱动HCHO模块,相关代码如下:

       传感器USART启动代码,以下分为命令发送及USART中断接收两部分,因为浮点数不利于二进制数据传输,在原始数据的基础上添加增量后处于分辨率得到unsigned 类型数;如:HCHO的测量范围为0-1.00,分辨率为00.1;HCHO的增量为0,处于分辨率后数值的范围为0-100的unsigned型;代码如下:

//HCHO数据读取命令
u8 USART3_TX_BUF[5]={0xa5,0x5a,0x02,0x80,0xAA};		//发送缓冲
	for(i=0;i<5;i++)
		uart3SendData(USART3_TX_BUF[i]);

//串口3中断服务程序
//用于接收HCHO的数据
void USART3_IRQHandler(void)                	
{
	u8 Res;
	static char start=0;
	static uint8_t USART3_RX_STA=0;
	if(USART_GetITStatus(USART3, USART_IT_RXNE) != RESET)//接收中断
	{
		Res =USART_ReceiveData(USART3); //读取接收到的数据
		if(Res == 0xa5) //如果接收的第一位数据是0Xa5
		{
			USART3_RX_STA = 0;     //让数组索引值从0开始
			start = 1;  //这个变量是来确定第二位是否接收到了0X5a
		}

		if(start == 1)
		{
			switch (USART3_RX_STA)
			{
				case 1:
					USART3_RX_BUF[0] = Res ;	break;//接收0x5a
				case 4:
					USART3_RX_BUF[1] = Res ;	break;//接收HCHO 的高8位
				case 5:
					USART3_RX_BUF[2] = Res ;	break;//接收HCHO 的低8位
				default:	break;
			}
			USART3_RX_STA++;
			if(USART3_RX_STA >=6 && (0x5a == USART3_RX_BUF[0]))
			{
				start  = 0;
				USART3_RX_STA=0;//重新开始接收
				//V_Hcho的分辨率为0.01,乘100;
				V_Hcho =((USART3_RX_BUF[1]<<8) + USART3_RX_BUF[2])*100;
				Tx_Data[1] = V_Hcho;//用于存放数据转换后的值
			}
		}                   
	}
}


你可能感兴趣的:(STM32)