CM106-05红外二氧化碳传感器的应用
来源:互联网 发布:剑三和尚捏脸数据光头 编辑:程序博客网 时间:2024/04/25 07:29
co2传感器在我们生活中运用得越来越广泛,比如在智能家居中运用co2传感器监测家里的co2浓度,在农业中用来监测蔬菜大棚的co2浓度,在交通运输中也运用得非常的广,几乎涉及我们生活中得每一个行业中,言归正传。下面我们简单的来谈一下四方科技的红外二氧化碳传感器,其实所有的二氧化碳传感器都差不多,就是参数的不一样,所有了解一款,其他的也就了解了。
四方红外二氧化碳CM106-05传感器
表 2.引脚定义表
◆UART 通讯协议
1 协议概述
1) 本协议数据,均为 16 进制数据。如 “46”为十进制的[70];
2) [xx]为单字节数据(无符号,0-255);双字节数据高字节在前,低字节在后;
3) 波特率:9600, DataBits: 8, StopBits: 1, Parity: No。
2 串口通讯协议格式
上位机发送格式
起始符 长度 命令号 数据 1 …… 数据 n 校验和HEAD LEN CMD DATA1 …… DATAn CS11H XXH XXH XXH …… XXH XXH协议格式详细说明
协议格式 详细说明起始符 上位机发送固定为[11H],模块应答固定为[16H]长度 帧字节长度,=数据长度+1(包括 CMD+DATA)命令号 指令号数据 读取或者写入的数据,长度可变校验和 数据累加和,=256-[(HEAD+LEN+CMD+DATA) mod (256)]3 串口协议命令号表
编号 功能名称 命令号 功能描述1 读取 CO2 测量结果 0x012 CO2 浓度值调零校准 0x033 读取模块软件版本号 0x1E4 协议详细描述
4.1 读取 CO2 测量结果
发送:11 01 01 ED
应答:16 05 01 [DF1] [DF2] [DF3] [DF4] [CS]
功能:读取 CO2 测量结果(单位:ppm)
说明:CO2 测量值 = [DF1]*256 + [DF2]
应答实例:
应答:16 05 01 02 58 00 00 8B // 对应 CO2 浓度为 600ppm
4.2 CO2 浓度值调零校准
发送:11 03 03 [DF1] [DF2] [CS]
应答:16 01 03 E6
功能:CO2 浓度值调零校准
说明:
1、 调零目标值= [DF1]*256 + [DF2]。单位为 ppm,范围为(400 ~ 1500 ppm)
2、 进行 CO2 调零之前,请确认当前环境 CO2 值为调零目标值,稳定时间最少 2 分钟以上。
例如:当需要将模块调零到 600ppm 时,发送命令:11 03 03 02 58 8F
4.3 读取模块软件版本号
发送:11 01 1E D0
应答:16 0C 1E [DF1] …… [DF11] [CS]
功能:读取模块固件版本号
说明:
1、 [DF1]……[DF10] 表示详细版本号的 ASCII 码
2、[DF11] 预留。
例如:当模块版本号为 CM V0.0.20 时,应答数据如下:
应答:16 0C 1E 43 4D 20 56 30 2E 30 2E 32 30 00 97 //ASCII 码对应为 CM V0.0.20
◆PWM 输出
检测量程:400~5000ppm
正向脉宽:(PPM/5)+2ms
PWM 输出图示
其资料大概就是这些
下面我们谈一下在stm32程序中读取co2测量结果
在co2.c 中的代码为:
u8 Check_CO2[4] = {0x11,0x01,0x01,0xED};
void Check_co2(void)
{
UartSend(USART3,4,Check_CO2);
Delay_ms(5);
}
void AnalysisCO2(unsigned char* protocalData,unsigned int protocalLenth)
{
unsigned int i;
for(i = 0;i<protocalLenth+3;i++)
Debug ("%02x ",protocalData [i]);
Debug ("\n");
if(protocalData[0]==0x16 && protocalData [1] == 0x05 && protocalData[2] == 0x01)
{
environment.co2_standard =protocalData[3]*256 + protocalData[4]; //计算出二氧化碳的浓度
Debug ("shifang CO2=%d\n",environment.co2_standard);
environment.environment_data[8]=protocalData[3];
environment.environment_data[9]=protocalData[4];
}
if(environment.ON_OFF_Flag==1) //开机情况下
{
CO2_Display(); //二氧化碳在LCD 屏上的显示 (程序略)
}
}
我做的主要的代码就是这些了 还有一些都是些简单的,就不用说了 希望对各位有帮助啊 (不喜勿喷哦,谢谢)
- CM106-05红外二氧化碳传感器的应用
- 红外测温传感器的现状
- arduino和MG111二氧化碳传感器采集co2
- 传感器的应用
- Android的传感器应用
- 磁性传感器的应用
- Android传感器的应用
- TI红外测温传感器TMP006
- HC-SR501红外热释电传感器
- RBF神经网络在红外CO2传感器压力补偿中的应用研究
- 遥控器红外解码的原理及应用
- 总结——调试STM32F103ZET6及外围传感器_MH-Z14A二氧化碳传感器
- 数字传感器:新兴的应用
- android距离传感器的应用
- 开发传感器应用的步骤
- 浅谈Android传感器的应用
- unity加速传感器的应用
- iOS扬声器和听筒模式的切换以及距离传感器红外感应的设置
- js 年月日中文格式日期转换成Date
- Android 扫描身份证
- 单片机ISP、IAP和ICP几种烧录方式的区别
- 什么情况使用什么设计模式(Android源码设计模式解析与实战)
- 接口和抽象类的区别
- CM106-05红外二氧化碳传感器的应用
- Git Submodule
- 线上问题排查:Maximum number of threads (1000) created for connector with address null and port 9502
- viewpage+fragment
- 持续集成:Jmeter+Maven+Jenkins自动化框架搭建(五):不同环境配置及运行结果判断
- Mysql 用MyBatis Generator 生成mapper.dao等
- 全文检索的基本原理
- K Closest Numbers In Sorted Array
- 使用字体图标