【RT-Thread作品秀】基于RT-T、NB-Iot的開關(guān)柜應(yīng)急電源設(shè)計
作者:王國偉
概述
設(shè)計目的
在日常生活中,我們經(jīng)常會遇到突然斷電的情況,無論是由于用電習(xí)慣不好造成的跳閘,還是在市電突然斷電的情況下,開關(guān)柜內(nèi)的檢測設(shè)備會停止工作,這是不允許的,所以本作品設(shè)計了基于RT-Thread、NBIot的開關(guān)柜應(yīng)急電源,解決了以上問題。
應(yīng)用領(lǐng)域
我們這個產(chǎn)品的主要作用是基于、NB-Iot的開關(guān)柜應(yīng)急電源,除此之外還可以廣泛應(yīng)用于節(jié)能供電、大樓照明、道路交通照明、隧道照明、電力、工礦企業(yè)、防電梯等??焖偾袚Q型應(yīng)急電源針對于切換時間要求嚴(yán)格的設(shè)備或特殊照明系統(tǒng)(高壓鈉燈、汞燈、金鹵燈等氣體放電燈)、數(shù)控產(chǎn)品、精密儀器設(shè)備。所以總體來說,我們的產(chǎn)品的實用性很高。
主要技術(shù)特點本作品由4部分組成:反激式開關(guān)電源(自主設(shè)計)、NB-iot模塊、(基于stm32單片機采用RT-Thread操作系統(tǒng))控制單元、蓄電池組成,其中前三者集成到一塊PCB上,可以完成為蓄電池充電、為柜內(nèi)設(shè)備供電、蓄電池定期活化、紅外遙控活化、蓄電池過放保護等功能。在市電狀態(tài)下采用市電為開關(guān)柜內(nèi)檢測設(shè)備供電。
市電斷電情況下由蓄電池為柜內(nèi)設(shè)備供電。同時將市電還是蓄電池供電的狀況及電池電量等信息通過NB-Iot物聯(lián)網(wǎng)模塊上傳至中移OneNet平臺,用戶可通過網(wǎng)頁監(jiān)控斷電保護系統(tǒng)運行狀態(tài)。
開發(fā)環(huán)境(所采用的軟、硬件方案)
硬件:stm32f103,M5311,反激式開關(guān)電源
RT-Thread版本:Nano
開發(fā)工具及版本:AD09 MDK5.14
RT-Thread使用情況概述
如軟件流程圖2.1-B所示,STM32基于RT-Thread Nano進行編寫,共分為四個線程。線程1為NB-IOT模塊軟件初始化線程,功能為檢查SIM卡是否插入、信號是否正常、以及與OneNet云平臺建立連接;線程2為蓄電池電量、電網(wǎng)狀態(tài)讀取線程,功能為實時讀取蓄電池的電量以及電網(wǎng)是否斷電;線程3為系統(tǒng)控制線程,功能為根據(jù)系統(tǒng)的狀態(tài)輸出高低電平控制晶體管電路的導(dǎo)通和斷開,并進行狀態(tài)指示;線程4為信息上傳線程,功能為將系統(tǒng)的狀態(tài)信息(蓄電池電量、電網(wǎng)狀態(tài))上傳OneNet云平臺。
硬件框架
(1)系統(tǒng)中的各個模塊的電源供給:
反激式開關(guān)電源以市電220V作為輸入,輸出DC24V供給STM32控制系統(tǒng)的串聯(lián)型穩(wěn)壓電路轉(zhuǎn)換為3.3V作為STM32控制系統(tǒng)的電源,同時DC24V 供給NB-IOT模塊中的X34063電源模塊,同樣轉(zhuǎn)換為3.3V作為NB-IOT模塊的電源(之所以要把STM32控制系統(tǒng)、NBIOT模塊分開供電,是因為要保證系統(tǒng)中的NB-IOT模塊拔出后,系統(tǒng)仍能正常運行,而串聯(lián)型穩(wěn)壓電源的最大輸出電流不足以額外給NB-IOT模塊供電)。當(dāng)市電狀態(tài)異常時,反激式開關(guān)電源無DC輸出,串聯(lián)型穩(wěn)壓電路和X34063的電源模塊由蓄電池供電。
(2)系統(tǒng)中的信號采集:
本系統(tǒng)通過反激式開關(guān)電源的次級線圈的輸出來檢測市電供電情況,若市電供電異常(停電),則反激式開關(guān)電源停止工作,電源次級無輸出。反之,若市電供電正常,反激式開關(guān)電源工作正常,電源次級有輸出。市電狀態(tài)監(jiān)測電路將電源次級的電平作為輸入,輸出TTL電平向STM32控制系統(tǒng)通知市電狀態(tài)(與反激式開關(guān)電源隔離)。
蓄電池的電量通過AD采樣后信號傳送至STM32控制系統(tǒng),STM32控制系統(tǒng)經(jīng)過線性運算,得知蓄電池電量。
(3)系統(tǒng)中的控制信號:
STM32控制系統(tǒng)通過輸出高低電平控制晶體管開關(guān)電路A、B的導(dǎo)通與斷開,晶體管開關(guān)電路A控制反激式開關(guān)電源是否給蓄電池充電;晶體管開關(guān)電路B控制蓄電池是給負載供電。STM32控制系統(tǒng)通過串口向NB-IOT模塊收發(fā)數(shù)據(jù),NBIOT模塊再將數(shù)據(jù)上傳至OneNet云平臺。
(4)系統(tǒng)的控制邏輯:
當(dāng)市電供電正常時,通過反激式開關(guān)電源給蓄電池充電,同時反激式開關(guān)電源給負載、STM32控制系統(tǒng)、NB-IOT模塊供電,若市電供電異常(停電),STM32控制系統(tǒng)判斷蓄電池電量,若蓄電池電量充足則由蓄電池給負載、STM32控制系統(tǒng)、NB-IOT模塊供電。同時將市電供電狀態(tài)、蓄電池的電量通過NB-IOT模塊上傳至OneNet云平臺,設(shè)備上的指示燈指示設(shè)備工作狀態(tài)、蓄電池是否竊電等信息。用戶可以查看設(shè)備指示燈,或在OneNet云平臺在線查看系統(tǒng)運行狀態(tài),來實時監(jiān)測電力供應(yīng)情況。
軟件框架說明
STM32基于RT-Thread Nano進行編寫,共分為四個線程。線程1為NB-IOT模塊軟件初始化線程,功能為檢查SIM卡是否插入、信號是否正常、以及與OneNet云平臺建立連接線程2為蓄電池電量、電網(wǎng)狀態(tài)讀取線程,功能為實時讀取蓄電池的電量以及電網(wǎng)是否斷電;線程3為系統(tǒng)控制線程,功能為根據(jù)系統(tǒng)的狀態(tài)輸出高低電平控制晶體管電路的導(dǎo)通和斷開,并進行狀態(tài)指示;線程4為信息上傳線程,功能為將系統(tǒng)的狀態(tài)信息(蓄電池電量、電網(wǎng)狀態(tài))上傳OneNet云平臺。
當(dāng)單片機程序開始運行時。首先運行rt_hw_init()函數(shù),進行硬件初始化包括,控制端口IO口的初始化、AD采樣端口的初始化、串口的初始化等。隨后進入線程1進行NB-IOT模塊的軟件初始化,當(dāng)初始化完成時將標(biāo)記量置1。當(dāng)標(biāo)記量為1時說明初始化已經(jīng)完成,可以執(zhí)行2、3、4線程。
軟件模塊說明
源碼文件中HardWare文件夾中為各個模塊的代碼。代碼較為簡單這里不再做說明。
演示效果
比賽感悟
經(jīng)歷了作品題目的確立、設(shè)備的制作和調(diào)試、裸機代碼編寫,和RT-Thread的移植,RT-Thread是組內(nèi)成員第一次接觸到的RTOS,是一款開源的、可擴展性好、方便剪裁移植的國產(chǎn)實時操作系統(tǒng)。雖然已經(jīng)久仰RT-Thread大名,只有在自己閱讀野火編寫的RT-Thread的內(nèi)核源碼和親手移植的過程中才能真正的體會到它的靈巧、高效。欣賞RT-Thread的內(nèi)核源碼和親手移植的過程中,鍛煉了自己的編程技巧和調(diào)試技巧,而且在使用過RT-Thread后,如果日后再使用其他RTOS也不是一件難事了。這次比賽不僅使得我們的能力得到了鍛煉,也使得我們的眼界更加開闊。感謝主辦發(fā)為我們提供這次比賽機會,謝謝。