目錄
項(xiàng)目概述
RT-Thread使用情況概述
硬件框架
軟件框架說明
演示效果
改進(jìn)方向
代碼地址
1 項(xiàng)目概述
本項(xiàng)目是一個(gè)簡易的、較高精度的、易于擴(kuò)展的桌面級溫控系統(tǒng)。實(shí)現(xiàn)對箱內(nèi)溫度的精確控制,并通過Wi-Fi接入網(wǎng)絡(luò),配套了功能完善的Web可視化監(jiān)控和調(diào)參Dashboard,實(shí)現(xiàn)了完整的物聯(lián)網(wǎng)閉環(huán)。整個(gè)項(xiàng)目充分利用了RT-Thread多線程、設(shè)備驅(qū)動(dòng)框架和網(wǎng)絡(luò)組件的能力,實(shí)現(xiàn)了一個(gè)軟硬件結(jié)合的完整解決方案。
硬件平臺(tái):NXP FRDM-MCXA156
RT-Thread版本:5.2.1
核心功能:
整機(jī)最大功耗24W
溫控范圍常溫~70°C(接入制冷片/更高溫的PTC可以拓展范圍)
較高精度的恒溫控制(最大波動(dòng)范圍3°C,穩(wěn)態(tài)波動(dòng)范圍1°C)
多傳感器數(shù)據(jù)融合
OLED本地顯示
Web遠(yuǎn)程監(jiān)控與在線調(diào)參
項(xiàng)目亮點(diǎn):級聯(lián)PID+前饋復(fù)合控制算法、三態(tài)控制狀態(tài)機(jī)、TCP-WebSocket橋接的Web可視化方案。
2RT-Thread使用情況概述
RT-Thread作為項(xiàng)目的核心操作系統(tǒng),為功能的實(shí)現(xiàn)提供了堅(jiān)實(shí)的基礎(chǔ)。其穩(wěn)定可靠的內(nèi)核、豐富的組件和簡潔的API,讓整個(gè)開發(fā)過程事半功倍。
內(nèi)核與調(diào)度器:項(xiàng)目創(chuàng)建了多個(gè)線程來處理不同任務(wù),包括主控線程、PID控制線程、OLED刷新線程、網(wǎng)絡(luò)服務(wù)線程和LED指示線程。利用RT-Thread的搶占式調(diào)度器,確保了溫度控制等高優(yōu)先級任務(wù)的實(shí)時(shí)性。
設(shè)備驅(qū)動(dòng)框架:通過RT-Thread統(tǒng)一的設(shè)備模型,輕松地操作了多個(gè)硬件外設(shè):
Pin設(shè)備:用于控制LED指示燈和加熱/散熱模式切換的繼電器。
ADC設(shè)備:用于讀取NTC熱敏電阻的電壓值,進(jìn)而計(jì)算PTC加熱片的實(shí)時(shí)溫度。
PWM設(shè)備:用于精確控制PTC加熱片和散熱風(fēng)扇的功率輸出。
I2C設(shè)備:用于驅(qū)動(dòng)OLED顯示屏(基于u8g2軟件包)和讀取板載P3T1755環(huán)境溫度傳感器。
Sensor框架:用于讀取DHT11、P3T1755傳感器數(shù)據(jù)。
網(wǎng)絡(luò)協(xié)議棧:使用了內(nèi)置的lwIP協(xié)議棧和SAL套接字抽象層,快速實(shí)現(xiàn)了穩(wěn)定可靠的TCP服務(wù)器,為遠(yuǎn)程監(jiān)控提供了數(shù)據(jù)通道。
WLAN無線框架:通過rt_wlan_connect接口,便捷地實(shí)現(xiàn)了Wi-Fi網(wǎng)絡(luò)連接功能。
FinSH/MSH命令行:通過自定義的get_status和tune命令,所有關(guān)鍵參數(shù)都可以在運(yùn)行時(shí)通過串口動(dòng)態(tài)調(diào)整。
軟件包生態(tài):
u8g2:本地UI圖形庫。
dhtxx:DHT11溫濕度傳感器軟件包。
p3t1755: 板載I2C溫度傳感器軟件包。
3 硬件框架
系統(tǒng)硬件由核心控制、傳感器、執(zhí)行器和人機(jī)交互四部分組成

核心控制器:NXP FRDM-MCXA156開發(fā)板。
傳感器模塊:
箱內(nèi)溫濕度:DHT11傳感器,通過RT-Thread Sensor框架讀取。
PTC表面溫度:NTC熱敏電阻,通過ADC采樣并使用Steinhart-Hart模型計(jì)算,用于內(nèi)環(huán)控制和過溫保護(hù)。
環(huán)境溫度:開發(fā)板板載的P3T1755 I2C傳感器。
執(zhí)行器模塊:
加熱:LR7843 MOSFET驅(qū)動(dòng)PTC陶瓷發(fā)熱片,通過PWM信號調(diào)節(jié)功率。
散熱:12V直流風(fēng)扇,同樣由PWM信號驅(qū)動(dòng)。
模式切換:通過一個(gè)繼電器切換PWM輸出信號到MOSFET或風(fēng)扇,實(shí)現(xiàn)加熱/散熱模式的自動(dòng)切換。
人機(jī)交互模塊:
本地:SSD1306 OLED顯示屏,實(shí)時(shí)顯示系統(tǒng)狀態(tài)、當(dāng)前溫度、目標(biāo)溫度等關(guān)鍵信息。
遠(yuǎn)程:通過Wi-Fi連接,在PC或手機(jī)瀏覽器上訪問可視化Dashboard。
硬件連線圖



4 軟件框架說明
軟件的核心是一個(gè)基于main.c中的三態(tài)狀態(tài)機(jī)和pid_entry線程中的級聯(lián)PID控制算法。

軟件模塊說明
主控與狀態(tài)機(jī) (main.c)
main函數(shù)負(fù)責(zé)初始化所有設(shè)備(傳感器、PWM、ADC、Wi-Fi),并創(chuàng)建各個(gè)應(yīng)用線程。
main函數(shù)內(nèi)的while(1)循環(huán)是系統(tǒng)的主狀態(tài)機(jī)。它周期性地讀取箱內(nèi)溫度,并與目標(biāo)溫度和遲滯范圍(hysteresis_band)比較,自動(dòng)在HEATING(加熱)、WARMING(保溫)、COOLING(散熱)三種狀態(tài)間切換。
狀態(tài)切換時(shí),會(huì)通過STATE_PIN控制繼電器,將PWM信號通路切換到對應(yīng)的執(zhí)行器(PTC或風(fēng)扇),并重置PID積分項(xiàng),防止?fàn)顟B(tài)突變。
核心控制算法 (pid_entry線程)
這是一個(gè)獨(dú)立的線程,以更高的頻率(CONTROL_PERIOD_MS)運(yùn)行,負(fù)責(zé)核心的溫度控制算法。
級聯(lián)PID+前饋(加熱/保溫模式):
外環(huán)PID (pid_box): 根據(jù)箱內(nèi)溫度與目標(biāo)溫度的差值,計(jì)算出一個(gè)期望的PTC目標(biāo)溫度 (ptc_target_temp)。這使得PTC的加熱速率能根據(jù)箱內(nèi)離目標(biāo)的遠(yuǎn)近動(dòng)態(tài)調(diào)整。
內(nèi)環(huán)PID (pid_ptc): 根據(jù)PTC實(shí)際溫度與外環(huán)給出的ptc_target_temp的差值,計(jì)算出PWM的調(diào)節(jié)量。這可以快速響應(yīng)PTC自身的溫度波動(dòng),實(shí)現(xiàn)更穩(wěn)定的熱量輸出。
前饋控制: 建立了一個(gè)ptc_target_temp到base_pwm的映射表 (ff_table)。PID的輸出是疊加在這個(gè)PWM基礎(chǔ)值之上的微調(diào),這大大加快了系統(tǒng)收斂速度,減少了PID積分飽和的風(fēng)險(xiǎn)。
PI控制(散熱模式):
切換到散熱模式后,算法切換為簡單的pid_cool PI控制器,根據(jù)箱內(nèi)溫度與目標(biāo)溫度的差值直接控制風(fēng)扇的轉(zhuǎn)速。
過溫保護(hù): 算法實(shí)時(shí)監(jiān)測PTC溫度,一旦超過設(shè)定的安全閾值(PTC_MAX_SAFE_TEMP),立即將PWM輸出置零,確保系統(tǒng)安全。
遠(yuǎn)程控制服務(wù) (remote.c)
在remote_server_thread_entry線程中,創(chuàng)建了一個(gè)TCP服務(wù)器,監(jiān)聽5000端口。
服務(wù)器接收兩種文本命令:
get_status: 將系統(tǒng)中所有關(guān)鍵的實(shí)時(shí)變量(各處溫度、濕度、PID參數(shù)、控制狀態(tài)、PWM占空比等)打包成一個(gè)JSON字符串返回。
tune ...: 將收到的參數(shù)直接傳遞給main.c中的tune()函數(shù),實(shí)現(xiàn)了對目標(biāo)溫度、PID增益、前饋表等所有關(guān)鍵參數(shù)的運(yùn)行時(shí)修改。
OLED顯示 (screen.c)
screen_on線程負(fù)責(zé)驅(qū)動(dòng)OLED屏幕。
UI界面清晰地展示了當(dāng)前的工作模式(HEATING/COOLING/WARMING)、4個(gè)溫度值(當(dāng)前、目標(biāo)、環(huán)境溫度、PTC當(dāng)前溫度),以及一個(gè)直觀的溫差指示條。
5 演示效果
本地OLED顯示

OLED實(shí)時(shí)顯示系統(tǒng)關(guān)鍵數(shù)據(jù)
遠(yuǎn)程Web Dashboard
通過瀏覽器訪問的實(shí)時(shí)監(jiān)控儀表盤,包含儀表、狀態(tài)指示和在線調(diào)參區(qū)

溫度歷史曲線圖,可以直觀地分析系統(tǒng)的響應(yīng)速度、超調(diào)和穩(wěn)態(tài)誤差(K線圖可以得到的信息更多,而且看起來很有趣)
MSH 命令行調(diào)試
通過串口連接,可以直接使用get_status查看系統(tǒng)狀態(tài),或使用tune命令修改參數(shù)。

6 改進(jìn)方向
硬件
把DHT11換成更好的(比如DHT22),DHT11的精度和響應(yīng)速度都不太行,我手里暫時(shí)沒有其它的溫度傳感器了,所以只能先用這個(gè)。
功能
可以允許用戶通過Web界面預(yù)設(shè)一條隨時(shí)間變化的溫度曲線(例如:先60℃保溫30分鐘,再升到70℃保溫1小時(shí)),使溫控箱能用于更復(fù)雜的場景。
參數(shù)優(yōu)化
目前的參數(shù)還不太好,還有很大的優(yōu)化空間。由于溫度的變化很慢,所以如果通過實(shí)驗(yàn)測定最優(yōu)參數(shù)的話會(huì)非常消耗時(shí)間,目前正在嘗試通過建模擬真的方式尋找最優(yōu)參數(shù),因?yàn)槠谥杏悬c(diǎn)忙,所以還沒做完。

7 代碼地址
本項(xiàng)目已開源,歡迎大家復(fù)刻。
GitHub:https://github.com/Cylopsis/Little-TempControled-Box
-
物聯(lián)網(wǎng)
+關(guān)注
關(guān)注
2945文章
47820瀏覽量
414948 -
溫控箱設(shè)計(jì)
+關(guān)注
關(guān)注
0文章
8瀏覽量
6346 -
RT-Thread
+關(guān)注
關(guān)注
32文章
1614瀏覽量
44877
發(fā)布評論請先 登錄
RT-Thread Vector軟件包:嵌入式開發(fā)的動(dòng)態(tài)數(shù)組容器 | 技術(shù)集結(jié)
RT-Thread開發(fā),如何有效學(xué)習(xí)RT-Thread的五個(gè)步驟
RT-Thread資深開發(fā)者朱天龍正式加盟RT-Thread
RT-Thread軟件包定義和使用
國民技術(shù)攜手RT-Thread共同推進(jìn)MCU與RT-Thread操作系統(tǒng)廣泛適配
RT-Thread全球技術(shù)大會(huì):螢石研發(fā)團(tuán)隊(duì)使用RT-Thread的技術(shù)挑戰(zhàn)
2022 RT-Thread全球技術(shù)大會(huì):螢石EZIOT SDK對RT-Thread的支持
RT-Thread全球技術(shù)大會(huì):RT-Thread Smart更好的兼容Linux生態(tài)
RT-Thread全球技術(shù)大會(huì):Kconfig在RT-Thread中的工作機(jī)制
RT-Thread全球技術(shù)大會(huì):在RT-Thread上編寫測試用例
RT-Thread全球技術(shù)大會(huì):RT-Thread測試用例集合案例
RT-Thread全球技術(shù)大會(huì):RT-Thread對POSIX的實(shí)現(xiàn)情況介紹
RT-Thread學(xué)習(xí)筆記 RT-Thread的架構(gòu)概述
基于RT-Thread的簡單物聯(lián)網(wǎng)溫控箱 | 技術(shù)集結(jié)
評論