<span id="txdtf"><th id="txdtf"></th></span>

    <address id="txdtf"><form id="txdtf"></form></address>

      <sub id="txdtf"><listing id="txdtf"><menuitem id="txdtf"></menuitem></listing></sub>

      <address id="txdtf"></address>
      <span id="txdtf"></span><address id="txdtf"><nobr id="txdtf"><meter id="txdtf"></meter></nobr></address>

      新聞中心

      EEPW首頁 > 嵌入式系統 > 設計應用 > 基于STM32的六氟化硫智能濃度監測儀設計*

      基于STM32的六氟化硫智能濃度監測儀設計*

      作者:洪明虎,戴其華,馮友志(泰州職業技術學院機電技術學院,江蘇泰州 225300)時間:2022-09-24來源:電子產品世界收藏
      編者按:本文設計了一種六氟化硫濃度智能監測系統,該系統基于STM32單片機開發,通過超聲波傳感器監測電力設備使用環境中的六氟化硫濃度,當出現濃度超標時,及時報警,確保人生安全。同時該系統結合人體感應傳感器、語音播報系統,當有人接近設備時可語音播報當前六氟化硫濃度,做到實時提醒。

      *2021年泰州職業技術學院院級科研項目資助;項目號:TZYKY-21-17。

      本文引用地址:http://www.tpagfe.com/article/202209/438530.htm

      六氟化硫(SF6)以其優異的絕緣和滅弧性能,被廣泛用于電力工業的高壓、超高壓斷路器和GIS(Gas Insulated Switchgear,氣體絕緣金屬封閉開關設備)中,由于設備的制造、安裝質量差異和設備老化等因素,SF6 氣體設備發生泄漏是一種普遍現象[1]。純凈的SF6氣體無毒,在常溫下化學性質穩定,實際操作中,泄漏的SF6 被電擊后將產生有毒氣體,這不僅會危及電力安全,對大氣環境造成極大危害,而且會造成低層空間缺氧使人窒息[2],出于安全考慮,必須對泄漏的SF6 氣體濃度進行實時監測,傳統的SF6 氣體濃度檢測方法是采用氣敏傳感器進行檢測,但氣敏傳感器的精度低、壽命短[3],同時傳統檢測硬件系統在成本、功耗以及性能方面均不能滿足當前需求,因此本文提出基于STM32 的SF6 實時監測設備設計。

      1   系統總體設計

      超聲波在不同介質中,傳播速度是不同的,根據這一原理,當不同濃度的SF6 氣體和空氣混合后,超聲波通過固定距離所需時間與SF6 濃度存在一定關系,通過所需時間長短反應SF6 濃度[4]。

      本設計是一套集STM32 單片機系統、超聲波測量傳感器、人體紅外感應傳感器、電源模塊、以及顯示模塊設計成一體的SF6 濃度監測系統,該設備可實現SF6濃度測量、溫濕度監測以及觸摸屏顯示、超限語音等功能。當有人接近電力設備時,系統及時顯示監測濃度值,當濃度超標時進行操作。

      1663991764200415.png

      2   硬件模塊設計

      2.1 芯片及電源模塊設計

      此次設計選用的是STM32F103C8T6 型單片機,出自ST(意法半導體)公司,是一款基于Cortex-M3 內核與ARMv7-M 架構的32 位微控制器,時鐘頻率高達72 MHz,該芯片功耗低,外圍IO 口充足,同時具有9 個通信接口[5]。

      單片機控制系統外圍接口電路如圖2,該系統外部采用8 M無源晶體振蕩器作為其高速時鐘,采用32.768 kKz 的無源晶體振蕩器作為RTC 時鐘。程序采用SWD 燒寫模式。單片機的電源引腳接3.3 V 并就近放置一個0.1 μF 的濾波電容。其余引腳分

      配給USART,ADC,I2C 等外設。電源部分采用AC-DC模塊,

      1663991899431895.png

      圖2 控制系統電路

      將市電交流220 V 轉換成12 V 直流,配合壓敏電阻,共模電感,濾波電容,提高了電路的安全性和穩定性,屏蔽了外部電源干擾造成整個系統的崩潰。由于系統內部功能模塊采用5 V 供電和3.3 V 供電,因此次設計時采用TI 公司的TPS5430 DC-DC 穩壓芯片,將12 V 電壓降低至5 V,再利用LDO 將5 V 降低至3.3 V給單片機供電。具體電路設計如圖3 所示。

      image.png

      圖3 電源電路

      2.2 傳感器采集電路設計

      系統采用SZQ68 型SF6 傳感器,是基于超聲波吸收原理,具備高靈敏度,壽命長。其測量范圍為0~2 000 ppm,測量精度為±5%。該傳感器輸入供電電壓為5 V,通信接口為串口。串口電平為3.3 V 可以與單片機直連。硬件電路如圖4 所示。

      image.png

      圖4 SF6傳感器電路

      溫濕度傳感器為SHT30,供電電壓為3.3 V,通信方式為I2C。由于STM32F1 系列單片機的硬件I2C 不穩定,容易造成鎖死。此次設計中SHT30 的引腳并未與單片機的I2C 外設引腳直接相連接,通過模擬I2C 來讀取溫濕度,這在一定程度上造成了CPU 性能的浪費。硬件電路如圖5 所示。

      1663992056692312.png

      圖5 SHT30電路

      考慮到智能化使用需求,該監測儀具備人體接近語音播報功能,當人體靠近被測環境時,人體紅外感應傳感器HC-SR501 觸發語音模塊JR6001 對當前監測值進行實時播報。人體紅外感應傳感器與語音模塊供電電壓均為5 V,硬件電路如圖6、圖7 所示。為了保護單片機系統,人體紅外感應模塊觸發電平輸出與單片機引腳之間采用光耦隔離。

      1663992187712549.png

      圖6 人體紅外感應模塊電路

      image.png

      圖7 語音模塊

      3   系統軟件設計

      本系統進行代碼編寫與軟件調試均采用keil 軟件,主要程序流程圖如圖8 所示。當設備電源開啟后,系統各功能進行初始化,初始化完成后對系統參數進行讀取,接下來就是對SF6 傳感器以及溫濕度傳感器數據在不超標的情況下進行循環采集,采集過程中如發現泄漏超標,將實時通過器進行報警。在實時數據采集過程中,當有人接近時,語音播報系統將播報當前監測值。

      1663992305144219.png

      3.1 主程序

      STM32 模塊主程序典型代碼如下 :

      u16 SF6_DATA,SF6_POLL_CNT=0; // 定義輪詢計數和SF6 數據初始化

      u8 IR_CNT=60; // 定義有人計時

      u8 Threshold_STA=0;// 定義閾值更新標志位/* 定時器4 中斷回調函數*/

      void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim)

      {

        if(htim->Instance == TIM4)

      {

      if(READ_IR==0)

      {

      SF6_POLL_CNT=0;

      IR_CNT++;

      }

      // 當感應到附近有人存在時輪詢計數歸零,有人計時累加

      else

      {

      SF6_POLL_CNT++;

      IR_CNT=0;

      } // 附近無人輪詢計數累加,有人計時歸零if(KEY_ON==1) // 當按鍵寄存器被按下,按鍵計數累加

      {

      KEY_CNT++; // 按鍵計數每秒累加

      }

        }

      }

      int main(void)

      {

      HAL_Init(); //HAL 庫初始化

      SystemClock_Config(); // 系統時鐘初始化

      MX_GPIO_Init(); //GPIO 引腳初始化

      MX_DMA_Init(); //DMA 初始化

      MX_ADC1_Init(); //ADC 初始化

      MX_TIM3_Init(); // 定時器3 初始化,用于us延時

      MX_TIM4_Init(); // 定時器4 初始化,1S 定時,用于輪詢SF6 測量數值

      HAL_TIM_Base_Start_IT(&htim4);// 開啟定時器4中斷

      MX_USART1_UART_Init();// 串口1 初始化,用于播放語音報警

      MX_USART3_UART_Init();// 串口3 初始化,用于SF6 傳感器通信

      FLASH_READ(); // 讀取單片機內部FLASH 存儲的SF6 報警閾值

      OLED_Init(); //OLED 顯示屏初始化

      while(1)

      {

      if(SF6_POLL_CNT ≥ 600)//10 分鐘輪詢一次SF6 數值并更新一次OLED 屏

      {

      HAL_UART_Transmit(&huart3,POLL_BUFF ,len,1000);// 發送輪詢命令

      HAL_Delay(100); // 延時100 mssensor_read();

      }

      if(READ_IR==0) // 當感應到附近有人后

      {

      HAL_Delay(20); // 延時,防止誤報if((READ_IR==0)&&(IR_CNT ≥ 60))// 有人隔1 分鐘循環讀取超聲波SF6 傳感器

      {

      SF6_POLL_CNT =0;// 輪詢計數清零sensor_read();

      IR_CNT=0;

      }

      }

      if(KEY_CNT ≥ 20)// 當20S 無按鍵時,OLED 恢

      復顯示當前SF6 濃度

      {

      KEY_CNT=0;

      KEY_STA=0;

      OLED_ShowNum(0,0, SF6_ADC,4,16,1);//OLED

      屏幕更新數字

      OLED_ShowString(8,16,”ppm”,16,1);// 顯示單位

      ppm

      }

      }

      }

      3.2 傳感器監測程序設計

      /*****************

      傳感器讀取數據處理。

      *****************/

      void sensor_read(void)

      {

      if(SF6_DATA ≥ SF6_ Threshold)

      //SF6 數據在串口接收中斷中完成讀取,當超過閾值后處理過程

      {

      if(SF6_ADC ≥ SF6_ Threshold)

      {

      OLED_ShowNum(0,0, SF6_DATA,4,16,1);//OLED屏幕更新數字

      OLED_ShowString(8,16,”ppm”,16,1); // 顯示單位ppm

      HAL_UART_Transmit(&huart1, warn_buff ,2,1000);// 串口1 發送報警數據

      }

      else // 當SF6 測量濃度未超過閾值,則正常更新OLED 屏數據

      {

      OLED_ShowNum(0,0, SF6_DATA,4,16,1);//OLED屏幕更新數字

      OLED_ShowString(8,16,”ppm”,16,1);// 顯示單位ppm

      if (SF6_POLL_CNT ==0) // 當有人播放“正常語音”

      {

      HAL_UART_Transmit(&huart1, normal_buff ,2,1000);

      }

      }

      SF6_POLL_CNT =0;// 輪詢計數清零,進入下次

      輪詢周期

      }

      3.3 顯示及按鍵程序設計

      /*************

      OLED 顯示數字

      x,y: 起點坐標

      num:顯示數字

      len:數字位數

      size:字體大小

      mode:0 ,反色顯示;1,正常顯示

      ************/

      void OLED_ShowNum(u8 x,u8 y,u32 num,u8 len,u8

      size,u8 mode)

      {

      u8 t,temp,m=0;

      if(size1==8)m=2;

      for(t=0;t<len;t++)

      {

      temp=(num/OLED_Pow(10,len-t-1))%10;

      if(temp==0)

      {

      OLED_ShowChar(x+

      (size/2+m)*t,y,’0’,size,mode);

      }

      else

      {

      OLED_ShowChar(x+(size/2+m)*t,y,temp+’0’,size,mode);

      }

      }

      }

      /*************

      OLED 顯示字符串

      x,y: 起點坐標

      chr:字符開頭

      size:字體大小

      mode:0 ,反色顯示;1,正常顯示

      ************/

      void OLED_ShowString(u8 x,u8 y,u8 *chr,u8 size,u8mode)

      {

      while((*chr>=’ ‘)&&(*chr<=’~’))

      {

      OLED_ShowChar(x,y,*chr,size,mode);

      if(size1==8)x+=6;

      else x+=size/2;

      chr++;

      }

      }

      /**********

      當減少或者增加按鍵按下后,OLED 顯示相應閾值*********/

      void Threshold_change (void)

      {

      if(ADD_KEY==0) // 當增加閾值按鍵按下

      {

      HAL_Delay(20); // 延時消抖

      if(ADD_KEY==0)

      {

      SF6_ Threshold+=10;// 閾值增加10

      if(SF6_ Threshold ≥ 2000) SF6_ Threshold=2000;

      // 最高值為2000ppm

      OLED_Clear();

      OLED_ShowChinese(0,0,0,16,1);// 顯示“閾”

      OLED_ShowChinese(18,0,1,16,1);/ 顯示“值”

      OLED_ShowString(36,0,”:”,16,1);// 顯示“:”

      OLED_ShowNum(54,0, SF6_ Threshold,4,16,1);//

      顯示數字

      KEY_ON++1; // 按鍵標志位置累加

      KEY_CNT=0; // 按鍵計數歸零

      }

      if(CUT_KEY==0) // 當減少閾值按鍵按下

      {

      HAL_Delay(20); // 延時消抖

      if(CUT_KEY==0)

      {

      SF6_ Threshold-=10;// 閾值減少10

      if(SF6_ Threshold ≤ 100) SF6_ Threshold=100;

      // 最低值為100ppm

      OLED_Clear();

      OLED_ShowChinese(0,0,0,16,1);// 顯示“閾”

      OLED_ShowChinese(18,0,1,16,1);/ 顯示“值”

      OLED_ShowString(36,0,”:”,16,1);// 顯示“:”

      OLED_ShowNum(54,0, SF6_ Threshold,4,16,1);//

      顯示數字

      KEY_ON++; // 按鍵標志位置累加

      KEY_CNT=0; // 按鍵計數歸零

      }

      }

      }

      4   系統調試

      進行初期硬件靜態測試,確認各元器件焊點無虛焊、漏焊等不良現象,電源網絡無短路后,通電進行硬件電路功能調試。待硬件電路功能基本實現后開始進行軟件燒錄、調試以及系統測試。如圖所示實物系統測試,測試過程中,出現按鍵功能混亂問題,通過修正軟件后解決該問題。

      image.png

      圖9 實物圖

      5   結語

      基于STM32 的SF6 濃度儀設計,明確了設計需求,結合設計需求,對各功能模塊進行硬件系統及軟件系統設計,整個系統耗電量小,體積小、精度高,能滿足電力行業監測的實際要求,下一步計劃采用5G物聯網技術實現多點聯控,APP 內報警提示。

      參考文獻:

      [1] 郭利民,趙紅梅,呂運朋,等.SF6氣體泄漏環境在線智能檢測系統的設計[J].儀表技術與傳感器,2011,(8):76-78.

      [2] 蔡藝劇,黃勇,尹遴,等.一種新的微量氣體濃度檢測方法[J].化工自動化及儀表,2012,39(4):477-479.

      [3] 彭靜.電力系統SF6氣體泄露監測系統的設計[J].電器工業,2011,(2):47-50.

      [4] 張龍飛,韓方源,梁沁沁,等.基于超聲法的微量SF6泄漏檢測[J].電子技術應用,2016,42(8):101-104.

      [5] 李芯怡,孫夢茹,郭思薔,等. 基于STM32F103型單片機的新型車載護童報警裝置設計[J].電子設計工程,2021,5(10):101-104.

      (本文來源于《電子產品世界》雜志2022年9月期)



      評論


      相關推薦

      技術專區

      關閉
      国产aV无码片毛片一级韩国

        <span id="txdtf"><th id="txdtf"></th></span>

        <address id="txdtf"><form id="txdtf"></form></address>

          <sub id="txdtf"><listing id="txdtf"><menuitem id="txdtf"></menuitem></listing></sub>

          <address id="txdtf"></address>
          <span id="txdtf"></span><address id="txdtf"><nobr id="txdtf"><meter id="txdtf"></meter></nobr></address>