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

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



4 軟件框架說明
軟件的核心是一個基于main.c中的三態狀態機和pid_entry線程中的級聯PID控制算法。

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

OLED實時顯示系統關鍵數據
遠程Web Dashboard
通過瀏覽器訪問的實時監控儀表盤,包含儀表、狀態指示和在線調參區

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

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

7 代碼地址
本項目已開源,歡迎大家復刻。
GitHub:https://github.com/Cylopsis/Little-TempControled-Box
-
物聯網
+關注
關注
2945文章
47818瀏覽量
414838 -
溫控箱設計
+關注
關注
0文章
8瀏覽量
6346 -
RT-Thread
+關注
關注
32文章
1613瀏覽量
44868
發布評論請先 登錄
RT-Thread開發,如何有效學習RT-Thread的五個步驟
國民技術攜手RT-Thread共同推進MCU與RT-Thread操作系統廣泛適配
RT-Thread全球技術大會:RT-Thread Smart更好的兼容Linux生態
RT-Thread全球技術大會:Kconfig在RT-Thread中的工作機制
RT-Thread學習筆記 RT-Thread的架構概述
基于RT-Thread的簡單物聯網溫控箱 | 技術集結
評論