STM32+ze-08甲醛传感器使⽤教程
新房⼦快下来了,装修后怕甲醛影响⾝体,便决定⾃⼰动⼿做⼀个甲醛传感器检测,本来很简单的⼀个东西,做了快⼀个⽉了,简直是累死个⼈,下⾯听我慢慢给⼤家道来。
硬件平台:stm32f103c8t6,甲醛传感器
程序功能: uart2 与传感器通信,将采集到的数据通过uart1打印出,通过串⼝调试助⼿便可看到。
记得以前⽩嫖过⼀个某讯的空⽓检测仪,带甲醛检测、PM2.5检测。于是想着废物利⽤,把⾥⾯的传感器取出来岂不是美哉?于是就开始了悲惨的遭遇。
这个就是空⽓检测仪,我把上⾯的传感器取下来,死活测不出数据来,后来从某宝买了个回来,数据便有了,简直坑爹啊
买了个这个,花了35块,我看还有80多的,100多的,不同的⼚家,不同的价格,由于⾃费,我就挑了个35块包邮的。图⽚给⼤家做个参考,我就不发链接了。
某讯的空⽓检测仪⾥⾯的传感器长这样:
不知道是不是ze-08,反正长的⼀样,唯⼀不同的是,就是不出数据。
接下来为⼤家讲⼀下⼯作原理,⽹上卖的这种传感器都⼀样,规格书除了⼚家不⼀样,其它的参数全⼀样,每⼀位代表的数据,这些全⼀样,所以说,你⽤我这套程序,就可以驱动⽹上买的传感器了。
这个传感器有好多数据模式,串⼝,DAC,pwm。我们在这⾥选⽤常⽤的串⼝作为通信接⼝,程序容易写,单⽚机资源也够⽤。
这个是串⼝2中断处理函数,⾸先判断0XFF,收到了0XFF就代表接收到了数据,然后将接收到的数据保存到数组中。
//串⼝2中断
void USART2_IRQHandler(void)
{
static int i = 0;                                      //Êý×éϱê
static int flag_data = 0;
unsigned char res;
if(USART_GetITStatus(USART2,USART_IT_RXNE) == 1)
{
USART_ClearITPendingBit(USART2,USART_IT_RXNE);  //Çå³ýUART ÖжϱêÖ¾
buff_usart2[i++] = USART_ReceiveData(USART2);
if(!(buff_usart2[0] == 0xFF))
{
i=0;
buff_usart2[0]=0;
}
if(i==9)
{
if(buff_usart2[8]==FucCheckSum(buff_usart2,9))
{
flag_usart2 = 1;
}
i=0;
}
}
在规格书中介绍,需要将采集到的数据取反,并给出了个函数,我们照抄就可以。
extern unsigned char FucCheckSum(unsigned char *i,unsigned char ln)
{
unsigned char j,tempq=0;
i+=1;
for(j=0;j<(ln-2);j++)
{
tempq+=*i;
i++;
}
tempq=(~tempq)+1;
return(tempq);
}
将数据采集后还有⼀个甲醛计算公式:
国家甲醛计算标准:0.08mg/m3 = 833 * 0.08 = 66.64 ppb
不清楚是真的还是假的,⼿册就是这么写的。
最后我们看⼀下主函数:
while(1)
{
if(flag_usart2 == 1)                                      //ZE08_CH2O
{
flag_usart2 = 0 ;                                      //Çå³ýUART2 ÖжÏ
/*¹ú¼Ò±ê×¼ÊÒÄÚ 0.08mg/m3 = 833 * 0.08 = 66.64 ppb */
pm25Value = buff_usart2[4]*256 + buff_usart2[5];
result = pm25Value / 66.64 * 0.08;
//printf("pm25 = %d \r\n",pm25Value);
printf("¼×È©Á¿ = %f \r\n",result);
}
}
这样,我们就可以从串⼝调试助⼿看到打印出的数据了,这样就可以⽅便⼤家移植甲醛传感器,进⾏更综合的项⽬了。

更多推荐

数据,传感器,采集,检测