YA-C21A型二氧化碳传感器

一、传感器简介

       YA-C21A型二氧化碳传感器是一种通用智能小型传感器,利用非色散红外(NDIR)原理对空气中存在的二氧化碳进行探测,具有良好的选择性和无氧气依赖性,寿命长。内置温度补偿。该传感器同时具有数字输出、模拟输出以及PWM输出,方便使用。该传感器是将成熟的红外吸收气体检测技术与精密光路设计、精密电路设计紧密结合而制作出的高性能传感器。(这是官方说法,个人认为该传感器最吸引我的地方就是多种输出方式)

二、技术指标

传感器型号 YA-C21A
检测气体 二氧化碳
供电电压 4.5~5.5V DC
平均电流 <60mA  (5V供电时)
峰值电流 150mA (5V供电时)
接口电平 3.3V(兼容5V)
测量范围

0-5000ppm(可选)

输出信号 串口输出、PWM输出、模拟输出
预热时间 3min
响应时间 T<120s
工作温度 0-50摄氏度
工作湿度 0-95%
重量 5g

三、引脚定义图

四、以PWM输出为例编程

1.PWM输出图示

由图可以看出pwm波以2ms高电平为起始信号,ppm值与脉冲宽度呈线性关系,每个输出周期为1004ms

2.例程(均为自行编写且测试通过,以SCT89C52C搭载)

/*此头文件是二氧化碳浓度程序头文件*/

#ifndef __PWM_H
#define __PWM_H

void InitTimer0(void);
unsigned int Read_Pwm(void);

#endif
 

#include<reg51.h>

unsigned int r;
sbit pwm=P1^1;

void InitTimer0(void)
{
    TMOD = 0x01;
    TH0 = 0x00;
    TL0 = 0x00;
    EA = 1;
    ET0 = 1;
    TR0 = 0;//先关闭定时器0
}

void Timer0Interrupt(void) interrupt 1
{
    TH0 = 0x00;
    TL0 = 0x00;
    r++;
}

unsigned int Read_Pwm()
{
    float t;
    unsigned int result;
    r=0;//使用前清零
    InitTimer0();//定时器0初始化
    while(pwm);//度过高电平
    while(!pwm);//度过低电平
    TR0=1;//开启定时器0
    while(pwm);//度过高电平
    TR0=0;//关闭定时器0
    t=r*65535*1.09;//循环所得
    t+=(TH0*256+TL0);//最终us数
    t/=1000;//最终ms数
    result=t;
    result-=2;//减去其实2ms
    result*=2;//最终的浓度
    return result;
}
代码很简单,只要准确找到周期开始的时刻,用定时器0对脉冲宽度进行准确计时即可。

 

左肩膀理想右肩担当,君子不怨永远不会停下脚步!