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;
-
管理系統
+關注
關注
1文章
2417瀏覽量
35824 -
無線模塊
+關注
關注
12文章
621瀏覽量
48449
發布評論請先 登錄
相關推薦
評論