查看: 10293|回复: 14

[经验] GD32F207读ZE08-CH2O甲醛传感器测量甲醛浓度值

[复制链接]
  • TA的每日心情

    2023-7-25 22:49
  • 签到天数: 385 天

    连续签到: 1 天

    [LV.9]以坛为家II

    发表于 2016-2-4 14:45:12 | 显示全部楼层 |阅读模式
    分享到:
    本帖最后由 党国特派员 于 2016-2-5 00:23 编辑

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

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

    传感器特点        1.高灵敏度、高分辨率、低功耗、使用寿命长
            2.提供UART、模拟电压信号、PWM波形等多种输出方式
            3.高稳定性、优秀的抗干扰能力、温度补偿、卓越的线性输出

    2、通讯及管脚说明
    QQ图片20160116130527.png.thumb.jpg
    3、接线
    ZE08-CH20模块会每隔一秒钟通过Pin6(UART_TX)向外传送一次数据,所以我们使用小红板的USART2接口来接收数据。PA3接传感器Pin6,PA2接传感器的Pin5。在这里还有一个问题,因为小红板上的USART2使用PD5和PD6,本来我是想使用USART2的Remap到PD5和PD6上去,但是测试后不起作用。不知道是我程序有问题还是这个芯片的BUG,有待求证。
    4、驱动代码:
    ch2o.h

    1. /**
    2. ****************************************************************************************
    3. *
    4. * @file ch2o.h
    5. *
    6. * @brief ch2o甲醛传感器操作模块头文件
    7. *
    8. * Copyright (C) sunsjw 2015
    9. *
    10. * $Rev: 1.0 $
    11. *
    12. ****************************************************************************************
    13. */
    14. #ifndef __CH2O_H
    15. #define __CH2O_H

    16. #ifdef __cplusplus
    17. extern "C" {
    18. #endif
    19.    
    20. #include "gd32f20x.h"

    21. void CH2O_Init(void);


    22. #ifdef __cplusplus
    23. }
    24. #endif

    25. #endif

    复制代码
    ch2o.c
    1. /**
    2. ****************************************************************************************
    3. *
    4. * @file ch2o.c
    5. *
    6. * @brief ch2o甲醛传感器操作模块头
    7. *
    8. * Copyright (C) sunsjw 2015
    9. *
    10. * $Rev: 1.0 $
    11. *
    12. ****************************************************************************************
    13. */
    14. #include "ch2o.h"

    15. /**
    16. * @brief  h2o甲醛传感器初始化
    17. * @param[in] None
    18. * \retval  None
    19. */
    20. void CH2O_Init()
    21. {
    22.         GPIO_InitPara gpio_stru;
    23.         
    24.         //Config usart2 RX
    25.         gpio_stru.GPIO_Mode = GPIO_MODE_IN_FLOATING;
    26.         gpio_stru.GPIO_Pin = GPIO_PIN_3;
    27.         gpio_stru.GPIO_Speed = GPIO_SPEED_10MHZ;
    28.         
    29.         GPIO_Init(GPIOA,&gpio_stru);
    30.         //Config usart2 TX
    31.         gpio_stru.GPIO_Mode = GPIO_MODE_AF_PP;
    32.         gpio_stru.GPIO_Pin = GPIO_PIN_2;
    33.         gpio_stru.GPIO_Speed = GPIO_SPEED_10MHZ;
    34.         
    35.         GPIO_Init(GPIOA,&gpio_stru);
    36. }
    复制代码
    主程序读ch2o代码:
    1. void ShowCH2O(void)
    2. {
    3.         uint8_t rx;
    4.         
    5.         rx = 0x00;
    6.         for(int i=0;i<9;i++)
    7.                 showBuffer[i] = 0;
    8.         // Call received API
    9.         while(USART_GetBitState(USART2,USART_FLAG_RBNE) != SET);
    10.         rx = USART_DataReceive(USART2);

    11.         if(rx == 0xFF)
    12.         {
    13.                 showBuffer[0] = rx;
    14.                 for(int i=1;i<9;i++)
    15.                 {
    16.                         // Call received API
    17.                         while(USART_GetBitState(USART2,USART_FLAG_RBNE) != SET);
    18.                         rx = USART_DataReceive(USART2);

    19.                         showBuffer[i] = rx;
    20.                 }
    21.         }
    22.         /*国家标准室内0.08mg/m3 = 833 * 0.08 = 66.64 ppb。*/
    23.         int pm25Value = showBuffer[4]*256 + showBuffer[5];
    24.         float result = pm25Value / 66.64 * 0.08;
    25.         /*
    26.         int v1 = (int)result;
    27.         int v2 = (int)((result - v1)*1000);
    28.         PRINTF("CH2O: %d.%03d(mg/m3)\r\n",v1,v2);
    29.         */
    30.         sprintf((char*)showBuffer,":%1.3f mg/",result);
    31.         OLED_ShowCHinese(0,0,4);//显示汉字甲
    32.         OLED_ShowCHinese(16,0,5);//显示汉字醛
    33.         OLED_ShowString(32,0,showBuffer);
    34.         OLED_ShowCHinese(112,0,10);//显示m³        
    35. }
    复制代码
    USART配置代码:
    1. void USART_config(void)
    2. {
    3.         USART_InitPara usart_stru;
    4.         
    5.         usart_stru.USART_BRR = 9600;
    6.         usart_stru.USART_HardwareFlowControl = USART_HARDWAREFLOWCONTROL_NONE;
    7.         usart_stru.USART_Parity = USART_PARITY_RESET;
    8.         usart_stru.USART_STBits = USART_STBITS_1;
    9.         usart_stru.USART_RxorTx = USART_RXORTX_RX| USART_RXORTX_TX;
    10.         usart_stru.USART_WL = USART_WL_8B;
    11.         
    12.         USART_Init(USART2,&usart_stru);
    13.         USART_Enable(USART2,ENABLE);
    14. }
    复制代码
    实验效果:

    IMG_20160205_001824.jpg



    回复

    使用道具 举报

  • TA的每日心情

    2021-12-7 12:35
  • 签到天数: 1354 天

    连续签到: 1 天

    [LV.10]以坛为家III

    发表于 2016-2-10 23:01:42 | 显示全部楼层
    参考和学习了
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2018-11-19 16:39
  • 签到天数: 2 天

    连续签到: 1 天

    [LV.1]初来乍到

    发表于 2016-2-16 13:59:00 | 显示全部楼层
    亲,可以将内容一并发到经验频道,很有机会获得每月之星的呢http://jingyan.eeboard.com/
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    发表于 2016-4-29 17:27:20 | 显示全部楼层
    同学你好,为啥我下了你的历程到我的STM32F103之后显示不来,忘交流一下
    回复 支持 反对

    使用道具 举报

  • TA的每日心情

    2023-7-25 22:49
  • 签到天数: 385 天

    连续签到: 1 天

    [LV.9]以坛为家II

     楼主| 发表于 2016-5-11 09:56:47 | 显示全部楼层
    淤血菲菲 发表于 2016-4-29 17:27
    同学你好,为啥我下了你的历程到我的STM32F103之后显示不来,忘交流一下

    你的OLED驱动正常吗?

    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2016-5-11 14:33
  • 签到天数: 1 天

    连续签到: 1 天

    [LV.1]初来乍到

    发表于 2016-5-11 14:37:37 | 显示全部楼层
    你好,我想问一下,只用这个图中的那一个表就可以了吗?
    为什么我做的老感觉串口没有通
    回复 支持 反对

    使用道具 举报

  • TA的每日心情

    2023-7-25 22:49
  • 签到天数: 385 天

    连续签到: 1 天

    [LV.9]以坛为家II

     楼主| 发表于 2016-5-11 17:23:36 | 显示全部楼层
    clg111 发表于 2016-5-11 14:37
    你好,我想问一下,只用这个图中的那一个表就可以了吗?
    为什么我做的老感觉串口没有通 ...

    是啊,你可以用逻辑分析仪看下。

    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2016-5-11 14:33
  • 签到天数: 1 天

    连续签到: 1 天

    [LV.1]初来乍到

    发表于 2016-5-27 14:56:24 | 显示全部楼层
    能不能说一下,你用的这款模块的功耗是多少
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    无聊
    2016-5-27 16:09
  • 签到天数: 8 天

    连续签到: 1 天

    [LV.3]偶尔看看II

    发表于 2016-5-27 16:06:58 | 显示全部楼层
    好贴必须支持
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2018-3-29 09:22
  • 签到天数: 15 天

    连续签到: 1 天

    [LV.4]偶尔看看III

    发表于 2016-5-29 09:46:43 | 显示全部楼层
    党国的代码不错呀
    回复 支持 反对

    使用道具 举报

    您需要登录后才可以回帖 注册/登录

    本版积分规则



    手机版|小黑屋|与非网

    GMT+8, 2024-4-24 09:40 , Processed in 0.185796 second(s), 34 queries , MemCache On.

    ICP经营许可证 苏B2-20140176  苏ICP备14012660号-2   苏州灵动帧格网络科技有限公司 版权所有.

    苏公网安备 32059002001037号

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.