6.1 实验简介 火焰传感器 火焰是由各种燃烧生成物、中间物、高温气体、碳氢物质以及无机物质为主体的高温固体微粒构成的。火焰的热辐射具有离散光谱的气体辐射和连续光谱的固体辐射。不同燃烧物的火焰辐射强度、波长分布有所差异,但总体来说,其对应火焰温度的 1 ~ 2 μ m 近红外波长域具有最大的辐射强度。例如汽油燃烧时的火焰辐射强度的波长。
火焰传感器是机器人专门用来搜寻火源的传感器,当然火焰传感器也可以用来检测光线的亮度,只是本传感器对火焰特别灵敏。火焰传感器利用红外线对对火焰非常敏感的特点,使用特制的红外线接受管来检测火焰,然后把火焰的亮度转化为高低变化的电平信号,输入到处理器中,处理器根据信号的变化做出相应的程序处理。
火焰传感器是探测在物质燃烧时,产生烟雾和放出热量的同时,也产生可见的或大气中没有的不可见的光辐射。
火焰传感器又称感光式火灾传感器,它是用于响应火灾的光特性,即探测火焰燃烧的光照强度和火焰的闪烁频率的一种火灾传感器。
6.2 实验目的 1、通过该实验项目,学生能够了解火焰传感器的硬件电路和工作原理;
2、通过该实验项目,学生能够学会编写火焰传感器的程序。
6.3 实验内容 1、编写一个读取火焰传感器输出电平信号的程序; 2、将火焰检测状态做简单的处理显示,正常无火焰状态为
0,检测
到火焰状态为1;
3、用按键
KEY1控制ZIGBEEN是否发送数据。
6.4 实验设备 6.4.1 硬件部分 1、ZIGBEE
ZigBee_DEBUG 指示灯 1 可调电阻 红外发射 ZigBee复位键 ZigBe按键 拨码开关 节点按键 复位键 传感器A端口
电源开关 调试底板一个;
J-LINK接指示灯 2 传感器C端口 传感器B端口 电源 图6-1 ZIGBEE调试底板
2、20PIN转接线一条和带USB的J-Link仿真器一个;
20PIN转接线,另一端接转接板
方口USB线,另一端连接电上电指示灯 图6-2 J-Link仿真器
3、转接板一个;
10PIN转接线接口 20PIN转接线接口
串口接口
图 6-3 转接板
4、9~12V电源适配器2个;
图6-4 电源适配器
5、带普通USB线的ZIGBEE仿真器一个;
10PIN转接线
普通USB线
电源 (上)和状态指示灯
图6-5 ZIGBEE仿真器
6、智能网关一台;
ZigBee模块组合接
USB下载数据线 电源及开关
开关按钮
SD卡
图6-6 智能网关
显示屏
7、ZIGBEE模块两个;
图 5-7 ZIGBEE 模块
8、火焰传感器一个;
火焰感应输出信号指GND输入 TTL信号模拟信号
灵敏度调节
图 6-8 火焰传感器
+5V输入
9、10PIN转接线和传感器连接线各一条。
图6-9 转接线与传感器连接线
6.4.2 软件部分 1、Keil uVision42、JLINK
集成开发环境;
仿真器驱动;
6.5 实验知识 6.5.1 火焰传感器 火焰传感器:由各种燃烧生成物、中间物、高温气体、碳氢物质以及无机物质为主体的高温固体微粒构成的。火焰的热辐射具有离散光谱的气体辐射和连续光谱的固体辐射。不同燃烧物的火焰辐射强度、波长分布有所差异,但总体来说,其对应火焰温度的近红外波长域及紫外光域具有很大的辐射强度,根据这种特性可制成火焰传感器。
根据火焰的光特性,目前使用的火焰传感器有三种:一种是对火焰中波长较短的紫外光辐射敏感的紫外传感器;另一种是对火焰中波长较长的红外光辐射敏感的红外传感器;第三种是同时探测火焰中波长较短的紫外线和波长较长的红外线的紫外/红外混合传感器。
具体根据探测波段可分为:单紫外、单红外、双红外、三重红外、红外\\紫外、附加视频等火焰传感器;
根据防爆类型可分为:隔爆型、本安型 。
6.5.2 模块介绍,如图1、 尺寸:35mm X
6-8所示
宽11mm X高14mm
2、 主要芯片:LM393、火焰检测探头 3、 工作电压范围:DC 3-12V (默认4、 工作电流:<1.6mA(5V) 5、 特点:
a、 具有信号输出指示灯;
b、 单路信号输出,输出信号可以直接接单片机c、 OUT
5V)
IO口;
口输出高低电平信号,高电平为3.8V,低电平为0V;
d、 灵敏度可调(精调),调节火焰检测范围; e、 带固定安装孔,方便安装调试; f、 电路板输出
OUT标识为开关量,可直接接单片机IO口,无
火焰时输出高电平指示灯灭,有火焰时输出低电平,指示灯亮,响应时间<2μs;
g、 用于火焰检测,可检测
760纳米~1100纳米范围内的热源,
火焰探测角度为45°范围;
6.5.3 火焰传感器工作原理
电路中用到,火焰传感器电路、信号放大电路、单片机系统、状态显示系统构成。其基本工作原理:经过信号放大电路,火焰传感器电路将感受到红外光程度以高低电平形式输出至单片机系统, 由状态显示系统进行显示。
火焰传感器工作框图如图6-10:
火焰传信号放单片机图6-10 电路工作框图 状态显6.5.4 火焰传感器的硬件电路图
电路中,火焰传感器电路如图6-11:
图6-11 火焰传感器硬件图
6.6 实验步骤 1、烧好ZIGBEE和智能网关程序。(如果没有动传感器ZIGBEE和网关的程序,那么此步骤可以跳过;如果动了,详细下载过程可参考“传感器实验之环境搭建.doc”文档,这里恕不赘述。)
2、将火焰传感器接到传感器
A端口。可以在图6-1所示中找到传感
器A端口的位置,对应原理图上的J4,如图6-11所示,切勿把传感器
位置装错了
3、连接好外围硬件电路,如图
6-12所示。(这个连接过程当中很
多的卡槽,千万别把卡槽卡装反了,不然很容易烧坏J-Link。)
转接板,这样类似的卡槽千万别装反了,不然可能烧坏
J-Link,左边直接用USB线连接电脑
ZIGBEEN调试底板和ZIGBEEN模块
20PIN连接线
电源
10PIN连接线
图 6-12 外围硬件连接示意图
传感器链接
4、将仿真器USB连接入PC 机,插好电源,并打开开发实验箱上的电源开关和启动按钮,跳到网关显示界面,然后点击功能键进入,如6-13图所示。
点击这进入功能界面
图 6-13 网关显示界面
5、找到传感器实验图标如图6-14所示,点击进入传感器实验显示界
面如6-15图所示。
图6-14 传感器实验显示程序 图6-15 网关传感器显示界面
6、新建一个文件夹命名为“火焰传感器”,并在该文件夹下创建一
个“RVMDK“文件夹(存放工程用);
7、然后在“RVMDK”文件夹下新建一个“OBJ”文件夹(用来存放编
译输出信息);
8、在“传感器实验/实验例程/实验6 传感器之火焰篇/code”文件
夹下找到“rsc”文件夹,把它复制到到“火焰传感器”文件夹下,即与“RVMDK”文件夹并列;
9、启动Keil μVision4;
10、单击菜单栏的“Project”,选择“New uVision Project”,
新建一个工程,命名为“FALME”;
11、保它存在刚建立好的“火焰传感器”里面的“RVMDK“文件夹下; 12、右键“Target 1”,选择“Manage Components”选项; 13、把“Target 1”修改为“FALME”,把Source Group1”改命为
“Starup”并创建六个Groups,分别是“user”“usart”“lib”“led”“sensor”“key”。如图6-16所示;
14、然后给每个Group分别在添加好对应的.c文件,(.c文件在刚刚
复制过来的“rsc”文件夹里面),添加完成图6-16所示;
图6-16 文件示意图
15、单击工具栏的“Rebuid”图标,直到编译没有警告和错误,如
果有就根据警告和错位,进行修改程序;
16、点击工具栏的“Target Options”,选择“Output”,把输出文
件位置设置在“OBJ”下,并且设置有hex输出;
17、点击工具栏的“Target Options”配置好18、打开
J-Link;
ZIGBEE地板上的电源开关,点击“LOAD”进行程序烧写验
证;(以上建工程详细过程可以参考实验二)
19、验证:用打火机打燃放在火焰传感器探测头前,观察显示屏上
状态的变化;
20、验证完毕后,退出
J-Link仿真界面,关闭Keil μVision4软
件;关闭硬件电源,捡收好硬件设备,并整理桌面;
21、实验完毕。
6.7 实验验证 6.7.1 程序是否能运行和编译成功 如图6-17所示为编译生成hex输出文件成功图:
图 6-17编译通过截图
6.7.2 用打火机打燃置于火焰传感器探测头前,观察显示屏上显示的
状态是否发生变化
1、图
6-18所示为火焰传感器未感应到火焰时网关上所显示:
图6-18未感应火焰时的显示
2、
图6-19所示为火焰传感器感应到火焰时网关上所显示:
图 6-19 感应到火焰时的显示
6.8 实验部分参考程序解析(完整程序见源程序文件) 6.8.1 采集数据函数 协议介绍:
整个数据位其实一共是10个字节,除去2个字节的头和2个字节的校验,所以一共要采集的是数据其实有6个字节。(可以参照“传感器通信协议.doc”文档)
sensor_get_data(senser_type,&sensordata[2]) ;是采集函数,它首先保留了两个字节作头。然后调用u8 sensor_get_data(u8 type,u8* data1)函数。
u8 sensor_get_data(u8 type,u8* data1) {
u8* data = &data1[1];
u8 no_sensor = 1; //有无传感
器判断标志
*data1 = type; //传感器类型 //************ 传感器采集数据 ************// switch(type) {
case SENSOR_FLAME: //判断火焰传感器 GetSensorData(data); //采集数据 break; default:
no_sensor = 0; break; }
return no_sensor; } 分析:
从这个函数不难看出,这里有1个字节的传感器型号。所以传感器还要获取只有五个字节的数据,其中包括一个字节的符号。 void GetSensorData(u8* data) {
data[0] = 0; data[1] = 0;
data[2] = !SENSOR2_IN(); //读取传感器输出值
data[3] = 0; data[4] = 0; }
分析:
这便是传感器采集的五个字节的数据。从图6-20不难看出,当火焰靠近传感器的时候,STM32采集进来的是低电平信号,此时LED被点亮。这里特别需要注意的是,这里我们为了保持网关平台采集信号的一致性,也就是高电平触发报警,所以这里的信号必须进行取反处理;所以火焰传感器使用data[2] = !SENSOR2_IN(),进行数据采集,其中SENSOR2_IN();的宏定义为
((Sensor_IO_PORT->IDR&Sensor_IO_PIN2)>>Sensor_IO_NUM2);其本质也就是采集PB7口的电平变化情况来判断火焰检测的状态。
TTL输
图6-20火焰传感器的原理图
6.8.2 串口发送数据函数
void USART2_Senddata(u8* str) {
u8 i,checksun_xor=0,checksun_add=0; u8 ct = 10;
str[0] = 0xff; //数据接头1
str[1] = 0x55; //数据接头2
//*********** 数据校验 *************// for(i=0;i str[8] = checksun_xor; str[9] = checksun_add; //********** 数据发送 **************// while( ct-- != 0) { USART_SendData(USART2, *str++); while(USART_GetFlagStatus(USART2, USART_FLAG_TXE) == RESET); } } 分析: 这里发送的数据一共是10个字节,前面两个字节是FF、55,这两个字节是ZIGBEE与网关数据传送的接头,第三个字节是传感器的类型,然后就是传感器采集函数的那五个字节的数据,最后两个字节就是校验。 思考题: 1. 修改程序,当检测到火焰时使用D5亮来指示火焰的发生。 因篇幅问题不能全部显示,请点此查看更多更全内容
Copyright © 2019- yrrf.cn 版权所有 赣ICP备2024042794号-2
违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com
本站由北京市万商天勤律师事务所王兴未律师提供法律服务