新聞中心

EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 基于STM32的六氟化硫智能濃度監(jiān)測(cè)儀設(shè)計(jì)*

基于STM32的六氟化硫智能濃度監(jiān)測(cè)儀設(shè)計(jì)*

作者:洪明虎,戴其華,馮友志(泰州職業(yè)技術(shù)學(xué)院機(jī)電技術(shù)學(xué)院,江蘇泰州 225300) 時(shí)間:2022-09-24 來(lái)源:電子產(chǎn)品世界 收藏
編者按:本文設(shè)計(jì)了一種六氟化硫濃度智能監(jiān)測(cè)系統(tǒng),該系統(tǒng)基于STM32單片機(jī)開(kāi)發(fā),通過(guò)超聲波傳感器監(jiān)測(cè)電力設(shè)備使用環(huán)境中的六氟化硫濃度,當(dāng)出現(xiàn)濃度超標(biāo)時(shí),及時(shí)報(bào)警,確保人生安全。同時(shí)該系統(tǒng)結(jié)合人體感應(yīng)傳感器、語(yǔ)音播報(bào)系統(tǒng),當(dāng)有人接近設(shè)備時(shí)可語(yǔ)音播報(bào)當(dāng)前六氟化硫濃度,做到實(shí)時(shí)提醒。

*2021年泰州職業(yè)技術(shù)學(xué)院院級(jí)科研項(xiàng)目資助;項(xiàng)目號(hào):TZYKY-21-17。

本文引用地址:http://www.butianyuan.cn/article/202209/438530.htm

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

1   系統(tǒng)總體設(shè)計(jì)

超聲波在不同介質(zhì)中,傳播速度是不同的,根據(jù)這一原理,當(dāng)不同濃度的SF6 氣體和空氣混合后,超聲波通過(guò)固定距離所需時(shí)間與SF6 濃度存在一定關(guān)系,通過(guò)所需時(shí)間長(zhǎng)短反應(yīng)SF6 濃度[4]。

本設(shè)計(jì)是一套集STM32 單片機(jī)系統(tǒng)、超聲波測(cè)量傳感器、人體紅外感應(yīng)傳感器、電源模塊、以及顯示模塊設(shè)計(jì)成一體的SF6 濃度監(jiān)測(cè)系統(tǒng),該設(shè)備可實(shí)現(xiàn)SF6濃度測(cè)量、溫濕度監(jiān)測(cè)以及觸摸屏顯示、超限語(yǔ)音等功能。當(dāng)有人接近電力設(shè)備時(shí),系統(tǒng)及時(shí)顯示監(jiān)測(cè)濃度值,當(dāng)濃度超標(biāo)時(shí)進(jìn)行操作。

1663991764200415.png

2   硬件模塊設(shè)計(jì)

2.1 芯片及電源模塊設(shè)計(jì)

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

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

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

image.png

圖2 控制系統(tǒng)電路

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

image.png

圖3 電源電路

2.2 傳感器采集電路設(shè)計(jì)

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

image.png

圖4 SF6傳感器電路

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

1663992056692312.png

圖5 SHT30電路

考慮到智能化使用需求,該監(jiān)測(cè)儀具備人體接近語(yǔ)音播報(bào)功能,當(dāng)人體靠近被測(cè)環(huán)境時(shí),人體紅外感應(yīng)傳感器HC-SR501 觸發(fā)語(yǔ)音模塊JR6001 對(duì)當(dāng)前監(jiān)測(cè)值進(jìn)行實(shí)時(shí)播報(bào)。人體紅外感應(yīng)傳感器與語(yǔ)音模塊供電電壓均為5 V,硬件電路如圖6、圖7 所示。為了保護(hù)單片機(jī)系統(tǒng),人體紅外感應(yīng)模塊觸發(fā)電平輸出與單片機(jī)引腳之間采用光耦隔離。

1663992187712549.png

圖6 人體紅外感應(yīng)模塊電路

image.png

圖7 語(yǔ)音模塊

3   系統(tǒng)軟件設(shè)計(jì)

本系統(tǒng)進(jìn)行代碼編寫(xiě)與軟件調(diào)試均采用keil 軟件,主要程序流程圖如圖8 所示。當(dāng)設(shè)備電源開(kāi)啟后,系統(tǒng)各功能進(jìn)行初始化,初始化完成后對(duì)系統(tǒng)參數(shù)進(jìn)行讀取,接下來(lái)就是對(duì)SF6 傳感器以及溫濕度傳感器數(shù)據(jù)在不超標(biāo)的情況下進(jìn)行循環(huán)采集,采集過(guò)程中如發(fā)現(xiàn)泄漏超標(biāo),將實(shí)時(shí)通過(guò)器進(jìn)行報(bào)警。在實(shí)時(shí)數(shù)據(jù)采集過(guò)程中,當(dāng)有人接近時(shí),語(yǔ)音播報(bào)系統(tǒng)將播報(bào)當(dāng)前監(jiān)測(cè)值。

1663992305144219.png

3.1 主程序

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

u16 SF6_DATA,SF6_POLL_CNT=0; // 定義輪詢計(jì)數(shù)和SF6 數(shù)據(jù)初始化

u8 IR_CNT=60; // 定義有人計(jì)時(shí)

u8 Threshold_STA=0;// 定義閾值更新標(biāo)志位/* 定時(shí)器4 中斷回調(diào)函數(shù)*/

void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim)

{

  if(htim->Instance == TIM4)

{

if(READ_IR==0)

{

SF6_POLL_CNT=0;

IR_CNT++;

}

// 當(dāng)感應(yīng)到附近有人存在時(shí)輪詢計(jì)數(shù)歸零,有人計(jì)時(shí)累加

else

{

SF6_POLL_CNT++;

IR_CNT=0;

} // 附近無(wú)人輪詢計(jì)數(shù)累加,有人計(jì)時(shí)歸零if(KEY_ON==1) // 當(dāng)按鍵寄存器被按下,按鍵計(jì)數(shù)累加

{

KEY_CNT++; // 按鍵計(jì)數(shù)每秒累加

}

  }

}

int main(void)

{

HAL_Init(); //HAL 庫(kù)初始化

SystemClock_Config(); // 系統(tǒng)時(shí)鐘初始化

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

MX_DMA_Init(); //DMA 初始化

MX_ADC1_Init(); //ADC 初始化

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

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

HAL_TIM_Base_Start_IT(&htim4);// 開(kāi)啟定時(shí)器4中斷

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

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

FLASH_READ(); // 讀取單片機(jī)內(nèi)部FLASH 存儲(chǔ)的SF6 報(bào)警閾值

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

while(1)

{

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

{

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

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

}

if(READ_IR==0) // 當(dāng)感應(yīng)到附近有人后

{

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

{

SF6_POLL_CNT =0;// 輪詢計(jì)數(shù)清零sensor_read();

IR_CNT=0;

}

}

if(KEY_CNT ≥ 20)// 當(dāng)20S 無(wú)按鍵時(shí),OLED 恢復(fù)顯示當(dāng)前SF6 濃度

{

KEY_CNT=0;

KEY_STA=0;

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

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

}

}

}

3.2 傳感器監(jiān)測(cè)程序設(shè)計(jì)

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

傳感器讀取數(shù)據(jù)處理。

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

void sensor_read(void)

{

if(SF6_DATA ≥ SF6_ Threshold)

//SF6 數(shù)據(jù)在串口接收中斷中完成讀取,當(dāng)超過(guò)閾值后處理過(guò)程

{

if(SF6_ADC ≥ SF6_ Threshold)

{

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

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

HAL_UART_Transmit(&huart1, warn_buff ,2,1000);// 串口1 發(fā)送報(bào)警數(shù)據(jù)

}

else // 當(dāng)SF6 測(cè)量濃度未超過(guò)閾值,則正常更新OLED 屏數(shù)據(jù)

{

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

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

if (SF6_POLL_CNT ==0) // 當(dāng)有人播放“正常語(yǔ)音”

{

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

}

}

SF6_POLL_CNT =0;// 輪詢計(jì)數(shù)清零,進(jìn)入下次輪詢周期

}

3.3 顯示及按鍵程序設(shè)計(jì)

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

OLED 顯示數(shù)字

x,y: 起點(diǎn)坐標(biāo)

num:顯示數(shù)字

len:數(shù)字位數(shù)

size:字體大小

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

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

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

size,u8 mode)

1672709338317070.png


1672709403785356.png

1672709469472702.png

{

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

{

HAL_Delay(20); // 延時(shí)消抖

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);// 顯示數(shù)字

KEY_ON++1; // 按鍵標(biāo)志位置累加

KEY_CNT=0; // 按鍵計(jì)數(shù)歸零

}

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

{

HAL_Delay(20); // 延時(shí)消抖

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);//

顯示數(shù)字

KEY_ON++; // 按鍵標(biāo)志位置累加

KEY_CNT=0; // 按鍵計(jì)數(shù)歸零

}

}

}

4   系統(tǒng)調(diào)試

進(jìn)行初期硬件靜態(tài)測(cè)試,確認(rèn)各元器件焊點(diǎn)無(wú)虛焊、漏焊等不良現(xiàn)象,電源網(wǎng)絡(luò)無(wú)短路后,通電進(jìn)行硬件電路功能調(diào)試。待硬件電路功能基本實(shí)現(xiàn)后開(kāi)始進(jìn)行軟件燒錄、調(diào)試以及系統(tǒng)測(cè)試。如圖所示實(shí)物系統(tǒng)測(cè)試,測(cè)試過(guò)程中,出現(xiàn)按鍵功能混亂問(wèn)題,通過(guò)修正軟件后解決該問(wèn)題。

image.png

圖9 實(shí)物圖

5   結(jié)語(yǔ)

基于STM32 的SF6 濃度儀設(shè)計(jì),明確了設(shè)計(jì)需求,結(jié)合設(shè)計(jì)需求,對(duì)各功能模塊進(jìn)行硬件系統(tǒng)及軟件系統(tǒng)設(shè)計(jì),整個(gè)系統(tǒng)耗電量小,體積小、精度高,能滿足電力行業(yè)監(jiān)測(cè)的實(shí)際要求,下一步計(jì)劃采用5G物聯(lián)網(wǎng)技術(shù)實(shí)現(xiàn)多點(diǎn)聯(lián)控,APP 內(nèi)報(bào)警提示。

參考文獻(xiàn):

[1] 郭利民,趙紅梅,呂運(yùn)朋,等.SF6氣體泄漏環(huán)境在線智能檢測(cè)系統(tǒng)的設(shè)計(jì)[J].儀表技術(shù)與傳感器,2011,(8):76-78.

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

[3] 彭靜.電力系統(tǒng)SF6氣體泄露監(jiān)測(cè)系統(tǒng)的設(shè)計(jì)[J].電器工業(yè),2011,(2):47-50.

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

[5] 李芯怡,孫夢(mèng)茹,郭思薔,等. 基于STM32F103型單片機(jī)的新型車載護(hù)童報(bào)警裝置設(shè)計(jì)[J].電子設(shè)計(jì)工程,2021,5(10):101-104.

(本文來(lái)源于《電子產(chǎn)品世界》雜志2022年9月期)



評(píng)論


相關(guān)推薦

技術(shù)專區(qū)

關(guān)閉