[活动] 基于K22F的PM2.5+甲醛监测器(4)

[复制链接]
 楼主| Ketose 发表于 2016-1-16 13:12 | 显示全部楼层 |阅读模式
本帖最后由 Ketose 于 2016-1-16 13:12 编辑

使用K22F读ZE08-CH2O传感器的甲醛浓度值

1、电化学甲醛模组 ZE08-CH2O介绍

ZE 08 -CH 2 O型电化学甲醛模组是一个通用型、小型化模组。利用电化学原理对空气中存在的CH 2 O进行探测,具有良好的选择性,稳定性。内置温度传感器,可进行温度补偿;同时具有数字输出与模拟电压输出,方便使用。ZE 08 -CH 2 O是将成熟的电化学检测技术与精良的电路设计紧密结合,设计制造出的通用型气体模组。

2、通讯及管脚说明

3、代码说明

本程序使用K22F的UART2进行串口数据的读取,然后按照数据格式计算出甲醛浓度,具体计算参考下面的代码部分

代码:

  1. int main(void)

  2. {
  3.     uint8_t rxChar, txChar;
  4.     uint32_t byteCountBuff = 0;

  5.     // Initialize variable uartState of type uart_state_t
  6.     uart_state_t uartState;

  7.     // Fill in uart config data
  8.     uart_user_config_t uartConfig = {
  9.         .bitCountPerChar = kUart8BitsPerChar,
  10.         .parityMode      = kUartParityDisabled,
  11.         .stopBitCount    = kUartOneStopBit,
  12.         .baudRate        = 9600
  13.     };

  14.     // Enable clock for PORTs, setup board clock source, config pin
  15.     hardware_init();

  16.     // Initialize the uart module with base address and config structure
  17.     UART_DRV_Init(UART2_IDX, &uartState, &uartConfig);

  18.         uint8_t receiveBuffer[9];
  19.         uint8_t rx;
  20.         
  21.     while(true)
  22.     {
  23.                 rx = 0x00;
  24.                 for(int i=0;i<9;i++)
  25.                         receiveBuffer[i] = 0;
  26.                 // Call received API
  27.                 UART_DRV_ReceiveData(UART2_IDX, &rx, 1u);

  28.                 // Wait until we receive a character
  29.                 while (kStatus_UART_RxBusy == UART_DRV_GetReceiveStatus(UART2_IDX, NULL));
  30.                 if(rx == 0xFF)
  31.                 {
  32.                         receiveBuffer[0] = rx;
  33.                         for(int i=1;i<9;i++)
  34.                         {
  35.                                 // Call received API
  36.                                 UART_DRV_ReceiveData(UART2_IDX, &rx, 1u);

  37.                                 // Wait until we receive a character
  38.                                 while (kStatus_UART_RxBusy == UART_DRV_GetReceiveStatus(UART2_IDX, NULL));
  39.                                 receiveBuffer[i] = rx;
  40.                         }
  41.                 }
  42.         // Echo received character
  43.         //txChar = rxChar;
  44.         //UART_DRV_SendData(BOARD_DEBUG_UART_INSTANCE, &txChar, 1u);
  45.                 /*国家标准室内0.08mg/m3 = 833 * 0.08 = 66.64 ppb。*/
  46.                 int pm25Value = receiveBuffer[4]*256 + receiveBuffer[5];
  47.                 float result = pm25Value / 66.64 * 0.08;
  48.                 int v1 = (int)result;
  49.                 int v2 = (int)((result - v1)*1000);
  50.                 PRINTF("CH2O: %d.%03d(mg/m3)\r\n",v1,v2);
  51.     }

  52. }

4、输出结果:


实验结果是打开门窗后测得的结果,国家标准是0.08,应该还算不错。。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
orangebanana 发表于 2016-1-18 20:44 | 显示全部楼层
这个甲醛传感器用的是什么型号啊
 楼主| Ketose 发表于 2016-1-18 20:46 | 显示全部楼层
orangebanana 发表于 2016-1-18 20:44
这个甲醛传感器用的是什么型号啊

ZE08-CH2O
您需要登录后才可以回帖 登录 | 注册

本版积分规则

个人签名:我最讨厌两种人:一是有种族歧视的; 二是黑人;三是不识数的!

66

主题

3258

帖子

15

粉丝
快速回复 在线客服 返回列表 返回顶部