本文介绍的是37款传感器中的火焰传感器,传感器的图形如下:
该传感器共有四个引脚,中间两个引脚是电源引脚,上面是D0引脚,下面是A0引脚。根据参考文献1中的内容判断,A0引脚应该是向外输出传感器的模拟值。而根据参考文件2中的叙述,D0引脚输出的应该是开关量,通过旋转蓝色模块上的旋钮调节开关量的阈值。本文中主要使用A0引脚。
用打火机检测打火机由远及近接近火焰传感器,再由近及远离开的过程中A0引脚的输出值。测试代码如下:
int flame = A0; //定义火焰传感器接口
void setup()
{
pinMode(flame,INPUT);//定义flame为输入接口
Serial.begin(9600);//设定波特率为9600
}
void loop()
{
Serial.println(analogRead(flame));//输出模拟值,并将其打印出来
}
将串口监视器中输出的数值集合导入到Matlab中绘制图形如下:
开始的时候,打火机没有点火,并且距离火焰传感器比较远。这时候火焰传感器的模拟引脚输出值比较大,是一条近似的直线。然后打火机点火并逐渐接近火焰传感器,这时模拟引脚输出值越来越小,于是曲线到了第一个波谷处。然后打火机逐渐远离火焰传感器,这时模拟引脚输出值逐渐增大。后面曲线的意义是打火机靠近又远离火焰传感器,最后打印机停止点火。
由曲线可以看出,火焰距离传感器越近,传感器的A0引脚输出值就越小。
最后设计了简单的电路检验火焰传感器的使用。代码如下:
int led = 2; //定义LED 接口
int flame = A0; //定义火焰传感器接口
void setup()
{
pinMode(Led, OUTPUT); //定义LED 为输出接口
pinMode(flame,INPUT);//定义flame为输入接口
}
void loop()
{
if( analogRead(flame)<200)//200是随意给的值
{
digitalWrite(Led, HIGH);
}
else
{
digitalWrite(Led, LOW);
}
}
实物连接图如下:
PS:从视频中可以看出,火焰传感器是有方向性的,如果火焰正对着火焰传感器的探测头,则引脚输出正常。如果火焰在传感器的两侧或者上下方向,则火焰传感器的输出不是很准确。
说明:本文是测试之前买的37款传感器中火焰传感器的文章,当时使用CSDN的博客自动迁移功能从网易博客迁移到CSDN时迁移漏了,这段时间重新拾起Arduino,因为要用到火焰传感器,翻之前的文章时才发现迁移漏了,特此补上本文。