1理论分析
MQ- 2 气体传感器所使用的气敏材料是在清洁空气中电导率较低的二氧化锡(SnO2)。当传感器所处环境中存在可燃气体时,传感器的电导率随空气中可燃气体浓度的增加而增大。使用简单的电路即可将电导率的变化转换为与该气体浓度相对应的输出信号。MQ-2 气体传感器对液化气、丙烷、氢气的灵敏度高,对天然气和其它可燃蒸汽的检测也很理想。这种传感器可检测多种可燃性气体,是一款适合多种应用的低成本传感器。
2实验详解
2.1实验目的
1)、通过实验掌握CC2530 芯片GPIO 的配置方法
2)、掌握MQ-2 气体传感器的使用
2.2实验设备
硬件:PC 机一台; ZB2530(底板、核心板、仿真器、USB 线) 一套;MQ-2 气体传感一套
软件:2000/XP/win7 系统,IAR 8.20 集成开发环境。
2.3实验相关电路图
接线方式:
1、VCC:接电源正极(5V)
2、GND:接电源负极
3、DO:TTL 开关信号输出
4、AO:模拟信号输出(悬空没有使用)
2.4实验相关寄存器
实验中使用P0_5 做为检测引脚,当浓度高于设定值时,P0_5 为低电平,平时正常状态时为高电平。DO 输出电平和厂家有关,请参考具体模块的参数。相关寄存器如下:。
配置P0_5的方法:
P0DIR &= ~0x20; //配置与MQ-2 连接的P0.5 为输入口
#define DATA_PIN P0_5 //定义P0.5 口为传感器的输入端
2.5参考代码(部分代码)
/**Includes*********************************************************************/
#include <ioCC2530.h>
/**宏定义***********************************************************************/
//定义数据类型
typedef unsigned char uchar;
typedef unsigned int uint;
//定义端口
#define LED1 P1_0 //定义P1.0口为LED1控制端
#define DATA_PIN P0_5 //定义P0.5口为传感器的输入端
/**函数声明*********************************************************************/
void DelayMS(uint msec);
void InitGpio(void);
/**
* @brief 主函数
* @param None
* @retval None
*/
void main(void)
{
uint i=0;
InitGpio(); //设置LED灯和MQ2相应的IO口
while(1) //无限循环
{
LED1 = 1; //熄灭P1.0口灯
if(DATA_PIN == 0) //当浓度高于设定值时 ,执行条件函数
{
DelayMS(10); //延时抗干扰
if(DATA_PIN == 0) //确定 浓度高于设定值时 ,执行条件函数
{
for (i=0; i<10; i++)
{
LED1 = ~LED1; //闪烁LED1,提示用户
DelayMS(100);
}
}
}
}
}
/**
* @brief 以毫秒为单位延时 16M时约为535,系统时钟不修改默认为16M
* @param msec 延时参数,值越大,延时越久
* @retval None
*/
void DelayMS(uint msec)
{
uint i,j;
for (i=0; i<msec; i++)
for (j=0; j<535; j++);
}
/**
* @brief 设置LED灯和MQ2相应的IO
* @param None
* @retval None
*/
void InitGpio(void)
{
P1DIR |= 0x01; //P1.0定义为输出口
P0DIR &= ~0x20; //P0.6定义为输入口
}
2.6实验现象
用打火机挥发出来气体靠近MQ2,板子P05检测到有害气体。然后D1 开始一闪一闪。