文/聶晗 王軍民
在工業(yè)生產(chǎn)中,工件加工常需要使用烘箱進(jìn)行加熱處理,以使器件達(dá)到更高的工作需求,現(xiàn)有的溫控系統(tǒng)已基本能滿足工業(yè)化生產(chǎn)需求,但無法做到定時定溫的物件烘烤制作。常規(guī)加熱器加熱工藝無法準(zhǔn)確控制溫度,而且需要人實時駐守以防止發(fā)生意外。這為生產(chǎn)生活帶來了極大的不便,也增加了人工成本。本文設(shè)計的基于物聯(lián)網(wǎng)控制的恒溫控制系統(tǒng)很好的解決這一問題。
該系統(tǒng)主要由手機(jī)APP、溫度采集模塊、MCU控制單元、設(shè)備控制模塊、Wi-Fi通信模塊、電源模塊等六大部分組成。其中采用Arduino Uno作為主控MCU,使用Blinker作為物聯(lián)網(wǎng)接入方案并使用其提供的APP定制方案,使用18b20作為溫度傳感器采集實時溫度,使用可控硅調(diào)節(jié)發(fā)熱設(shè)備工作,電源模塊主要為MCU以及加熱設(shè)備提供電源。系統(tǒng)設(shè)計結(jié)構(gòu)圖如圖1所示。
本系統(tǒng)采用Arduino Uno作為MCU,Arduino是以ATmege單片機(jī)為控制核心的單片機(jī)控制板,其中Arduino Uno的處理器核心為ATmega328,具有14路數(shù)字I/O口,其中6路可用作PWM輸出,6路可作模擬輸入。常用的Arduino Uno板除了擁有Atmega最小系統(tǒng)外,還包含穩(wěn)壓電路,USB轉(zhuǎn)串口模塊,一些指示燈還有一些擴(kuò)展用插座,如圖2所示。
本系統(tǒng)采用DS18b20作為溫度采集傳感器,DS18B20是美國DALLAS半導(dǎo)體公司生產(chǎn)的單總線智能智能溫度傳感器,測溫范圍在-55℃~125℃,固有分辨率可精確到0.5℃。與傳統(tǒng)的熱敏電阻測溫不同的是,DS18B20可以直接讀出被測溫度值,再加上其體積小,對外界抗干擾能力強(qiáng)并且精度高、硬件開銷低,所以在生產(chǎn)生活中被大量采用。
DS18B20有三個引腳:
(1)GND為電源地;
(2)DQ為數(shù)字信號輸出/輸入端;
(3)VDD為外接供電電源輸入端,使用時極為簡單。
本實驗采用的測溫探頭如圖3 所示,采用聚乙烯四氟鍍銀引線,具有防水、防油、耐高溫的特性,其耐溫量程為-50℃~200℃。
Esp8266是樂鑫公司推出的一款廉價、超低功耗但幾乎全能的Wi-Fi芯片,支持SPI、I2C、UART等方式進(jìn)行通信。UART通信時,可直接支持AT指令,大大簡化了開發(fā)難度。Esp8266有8個引腳,但是和Arduino通信時只需要接5個即可,Arduino擁有Esp8266庫,使用時直接調(diào)用庫函數(shù)即可。
直接通過繼電器來控制加熱設(shè)備的通斷來實現(xiàn)控溫,到溫度達(dá)到設(shè)定溫度的上閾值時,斷開電源,溫度下降直到設(shè)定溫度的下閾值時,接通電源使加熱器工作。通過這樣的方式使溫度穩(wěn)定在設(shè)定溫度的波動范圍內(nèi)。
該系統(tǒng)使用Blinker作為物聯(lián)網(wǎng)接入方案。Blinker是一套跨平臺、跨硬件的物聯(lián)網(wǎng)解決方案,提供手機(jī)APP端、設(shè)備端、服務(wù)端支持,使用例如Onenet、阿里云等公有云服務(wù)進(jìn)行數(shù)據(jù)傳輸存儲。Blinker提供了一套物聯(lián)網(wǎng)設(shè)備開發(fā)api封裝了不同平臺的底層代碼,無論開發(fā)者使用什么云平臺、什么硬件,開發(fā)起來都大同小異,極大地方便了開發(fā)者。在手機(jī)APP開發(fā)上,Blinker提供了自定義布局來讓開發(fā)者定制自己的APP操作界面。
本系統(tǒng)使用Blinker在Arduino上基于Wi-Fi連接進(jìn)行開發(fā)。由系統(tǒng)需要實現(xiàn)的功能上來定制,我們需要實現(xiàn)監(jiān)控溫度,所以需要有當(dāng)前溫度顯示;我們需要手動開關(guān)加熱設(shè)備以及顯示加熱設(shè)備工作狀態(tài),所以需要開關(guān);我們需要設(shè)定溫度以及加熱時間,所以需要控制溫度時間設(shè)定。如圖4所示即是手機(jī)APP界面設(shè)計。
圖1:系統(tǒng)組成圖
圖2:Arduino Uno
圖3:18B20溫度探頭
圖4:APP功能定制圖
圖5:MCU控制流程圖
Blinker為Arduino提供了blinker Arduino支持庫。使用Blinker.begin()函數(shù)來初始化Wi-Fi設(shè)置,并連接網(wǎng)絡(luò)廣播設(shè)備信息等待APP連接。Blinker.run()函數(shù)需要頻繁調(diào)用以保持設(shè)備間連接并處理收到的數(shù)據(jù),建議放在loop()函數(shù)中。手機(jī)APP通過定時向設(shè)備發(fā)送心跳包,設(shè)備收到心跳包后會返回設(shè)備當(dāng)前狀態(tài),如果用戶有自定義狀態(tài)需要在收到心跳包時返回,可調(diào)用Blinker.attachHeartbeat()函數(shù)。設(shè)備建立后APP會立刻發(fā)送心跳包,此后每30s~60s發(fā)送一次,這也就意味著手機(jī)客戶端不能實時更新數(shù)據(jù),不過每次進(jìn)入都是實時數(shù)據(jù),時間間隔也基本滿足需求。
MCU檢測溫度設(shè)定值變化,若發(fā)生變化則重新設(shè)定定時值以及溫度值??傞_關(guān)直接控制通斷,定時記滿直接斷開繼電器,在定時器未滿時,當(dāng)溫度高于設(shè)定值上閾值斷開繼電器,當(dāng)溫度低于下閾值連通繼電器。流程圖如圖5所示。
此系統(tǒng)基本完成了設(shè)計要求并基本實現(xiàn)了總體功能,在此溫控系統(tǒng)的工作過程中,通過手機(jī)APP中對應(yīng)的功能就可以控制實驗室的設(shè)備工作狀態(tài),不需要人為值守,大大解放了生產(chǎn)力并節(jié)約了人力成本,為使用者提供了方便的同時也降低了安全事故的發(fā)生概率。在設(shè)備控制的方面,本系統(tǒng)采用了比較簡單的方式來實現(xiàn)控溫,未來若想實現(xiàn)更高級的控溫效果可考慮使用PID控溫方式,并使用測量溫度范圍更廣的溫度傳感器來擴(kuò)寬使用范圍。