1设计思路
利用热电偶传感器采集天然气燃烧时的火焰温度,一般天然气燃烧时的温度为600度——850度之间。考虑到天然气质量可能造成燃烧温度稍低,认为采集到的温度大于500度,则有火焰燃烧。
利用气流传感器检测天然气管道中是否有天然气流动。
利用2.4G无线模块将 状态上传到主机,和接收主机下发的指令。
3完成功能
当我们正常使用燃气时,燃气管道内有天然气流动,炉灶上有火焰燃烧,这时我们可以用来煮饭或烧水。但是发生故障时:比如长时间烧水或煮饭,无人看管,导致 沸水溢出,将火焰浇灭,致使天然气泄漏;天然气管道老化,致使天然气泄漏。这时通过检测是否有天然气流动和炉灶上是否有火焰燃烧来判断是否有故障发生,当有故障发生时驱动电动阀门切断天然气, 并将故障上发给主机,报警。
可以定时用气,在主机上设置时间,主机将命令下发,时间到达后,切断天然气。
4方案框图
实物图(从机)
安装于煤气灶上
***********************************
*函 数 名: Relay_Switch()
*功能说明: 电磁阀开关
*形 参:0---关阀,1---开阀,
*说明:若阀门新的状态与旧的状态不一样,则执行动作,并检测阀门反馈的位置信号
若15s内阀门仍没有到达极限位置,则关闭阀门,认为阀门故障
************************************
1. /////水阀 动作 状态 检测 /////
2. if(Relay_kongzhi != 0)
3. {
4. Relay_kongzhi_time++; //气阀控制时间
5. if(Relay_kongzhi_time == 400 ) //气阀控制时间 50ms一次 20s
6. {
7. Relay_kongzhi_time=0; //气阀控制时间清零
8. Relay_kongzhi=0; //气阀控制标志,0不动作 1开阀 2关阀
9. // Relay_kongzhi_ERR=1;//气阀控制状态 0阀无故障 1阀有故障
10. }
11. }else if(Relay_kongzhi == 0) //气阀控制标志,0不动作 1开阀 2关阀
*************************
*函 数 名: Air_Detec
*功能说明: 气流检测
*************************
1. //主机下发火焰状态
2. if( Air_Flow_Read() ) //读取气体状态 1为有气体
3. //if( 1 )
4. {
5. Air_Flow_State=1; //有气体 气体流动标志为 1
6.
7. if(Fir_State==0) //若无火焰(则开始漏气计时);若10S内仍没火焰,则认为漏气
8. AirTim++; //火焰状态 ,主机下发
9. else
10. AirTim = 0; //有火焰 ,漏气计时清零
11.
12. Air_0_time=0; //无气体流动时间
13. }else
14. {
15. if(++Air_0_time>=2) //连续两次无气体流动,认为无气体
16. {
17. Air_0_time = 0; //无气体流动时间清零
18. AirTim = 0; //漏气时间清零
19. Air_Flow_State=0;//气体流动标志为 0 无气体
20. if( (Air_Flow_State==1) && (Fir_State==0) && (AirTim>=100) )//有气体流动 并且连续10S内无火焰
21. { //则开始报警
22. Relay_State = 0x02;//阀状态,主动关阀
23. Air_Flow_State=0x01;//微流量传感器状态
24. LED_Con(ON);
25. AirTim = 0;
**********************************
*函 数 名: Wireless_Detec
*功能说明: 无线通讯数据处理
**********************************
1. case 0x03: //主机下发配置信息,
2. {
3. // Water_Num = RX_Buff[4];
4. // WriteByte(Water_Lou_Addr,Water_Num); //记录水流瞬时流量值
5. }break;
6. case 0x04: //主机下发动作,本模块用
7. {
8. i = RX_Buff[3]; //气阀的控制if(i==0x00)
9. {
10. Relay_State = 0x00;
11. }
12. else
13. {
14. Relay_State = 0x01;
15. Air_Flow_State=0x01;//微流量传感器状态
16. }
17. TX_Buff[2] = 0x02;
18. TX_Buff[3] = Relay_State;
19. // TX_Buff[3] = 0x0;
20. TX_Buff[4] = 0x00;
21. crcdat = getCRC16(TX_Buff,Modbus_Buff_Len - 2);//前5个字节校验
22. TX_Buff[5] = crcdat & 0xff;
23. TX_Buff[6] = (crcdat >> 8) & 0xff;
24. } break;
25. case 0x05: //主机索要本模块状态
26. {if( (i&0x02) != 0 )
27. Relay_State=0x00
28. TX_Buff[2] = 0; //子功能码
29. TX_Buff[3] = Air_Flow_State;//微流量传感器状态
30. TX_Buff[4] = Relay_State; //电磁阀状态
31. // TX_Buff[3] = 0;//微流量传感器状态
32. // TX_Buff[4] = 1; //电磁阀状态
33. crcdat = getCRC16(TX_Buff,Modbus_Buff_Len - 2);//前5个字节校验
34. TX_Buff[5] = crcdat & 0xff;
35. TX_Buff[6] = (crcdat >> 8) & 0xff;
全部0条评论
快来发表一下你的评论吧 !