趙志強(qiáng)
(201620 上海市 上海工程技術(shù)大學(xué))
水溫檢測(cè)與控制廣泛存在于生活和生產(chǎn)中,例如自動(dòng)加熱浴缸的水溫控制、鍋爐中的水溫檢測(cè)與控制等。傳統(tǒng)的水溫檢測(cè)通常以熱電阻熱電偶為檢測(cè)元件[1],PLC 為控制器,系統(tǒng)較冗雜,成本較高。本文采用數(shù)字式溫度傳感器DS18B210 溫度傳感器作為檢測(cè)元件,基于ARM 的STM32 芯片作為控制器,設(shè)計(jì)了一種高效準(zhǔn)確的水溫檢測(cè)與控制系統(tǒng)。該系統(tǒng)調(diào)試簡(jiǎn)單,維護(hù)成本低且功能拓展性高,為溫度檢測(cè)與控制提供了參考。
本系統(tǒng)包括以ARM Cortex-M4 為內(nèi)核的STM32F429 控制板、電熱合金絲加熱棒、半導(dǎo)體制冷片、DS18B20 溫度傳感器、語(yǔ)音播報(bào)電路、繼電器控制電路。
本系統(tǒng)采用的DS18B20 溫度傳感器具有較好的防水性能[2],因此可將溫度傳感器置于水箱中,直接采集水溫并將水溫顯示到LED 數(shù)碼管上。STMF429 微處理器將采集到的水溫?cái)?shù)據(jù)與設(shè)定的閾值溫度進(jìn)行比較。若水溫低于閾值溫度,則接通控制加熱棒的繼電器,啟動(dòng)加熱棒,直到實(shí)際水溫達(dá)到閾值溫度,停止加熱并播報(bào)語(yǔ)音提示;若水溫比閾值溫度高,則接通制冷片繼電器,啟動(dòng)制冷片,待水溫冷卻到閾值溫度時(shí),停止制冷并播報(bào)提示語(yǔ)音。系統(tǒng)設(shè)計(jì)如圖1 所示。
圖1 系統(tǒng)控制原理圖Fig.1 System control schematic diagram
硬件系統(tǒng)主要包括STM32F429 微處理器、水溫檢測(cè)模塊、顯示模塊、語(yǔ)音播報(bào)模塊、加熱模塊、制冷模塊。
DS18B20 溫度傳感器是由DALLAS 半導(dǎo)體公司推出的一種“一線總線”接口的溫度傳感器[3],它具有體積小、適用電壓范圍大、測(cè)溫范圍寬、連接簡(jiǎn)單等特點(diǎn)。本系統(tǒng)采用的是一種防水性較強(qiáng)的DS18B20 傳感器,適用于本系統(tǒng)中直接采集水溫。DS18B20 溫度傳感器與STM32F429 芯片的連接如圖2 所示。
圖2 溫度傳感器電路連接圖Fig.2 Temperature sensor circuit connection diagram
本系統(tǒng)采用兩片74HC595 緩沖器驅(qū)動(dòng)四位八段數(shù)碼管顯示,前三位用于顯示溫度的整數(shù)部分,最后一位用于顯示溫度的小數(shù)部分。驅(qū)動(dòng)緩沖器的電路連接如圖3 所示。
圖3 數(shù)碼管驅(qū)動(dòng)器連接電路圖Fig.3 Digital tube driver connection circuit diagram
本系統(tǒng)采用四位八段數(shù)碼管,共陽(yáng)極連接,通過(guò)動(dòng)態(tài)掃描的方式顯示溫度傳感器測(cè)得的溫度。連接電路圖如圖4 所示。
圖4 數(shù)碼管電路連接圖Fig.4 Digital tube circuit connection diagram
語(yǔ)音播報(bào)模塊采用WM8978 多媒體數(shù)字信號(hào)編譯碼器。WM8978 是歐勝(Wolfson)推出的一款全功能音頻處理器,它帶有一個(gè)HI-FI 級(jí)數(shù)字信號(hào)處理內(nèi)核,支持增強(qiáng)3D 硬件環(huán)繞音效,以及5 頻段的硬件均衡器,可以有效改善音質(zhì),并有一個(gè)可編程的陷波濾波器,用以去除屏幕開(kāi)、切換等噪音[5]。WM8978 同樣集成了對(duì)麥克風(fēng)的支持,以及用于一個(gè)強(qiáng)悍的揚(yáng)聲器功放,可提供高達(dá)900 mW 的高質(zhì)量音響效果揚(yáng)聲器功率。一個(gè)數(shù)字回放限制器可防止揚(yáng)聲器聲音過(guò)載。WM8978 進(jìn)一步提升耳機(jī)放大器輸出功率,在推動(dòng)16 Ω 耳機(jī)時(shí),每聲道最大輸出功率高達(dá)40 mV??梢赃B接市面上絕大多數(shù)適合隨身聽(tīng)的高端HI-FI耳機(jī)。
WM8988 的主要特性有:I2S 接口,支持最高192 K,24 bit 音頻播放;DAC 信噪比98 dB;ADC 信噪比90 dB;支持無(wú)電容耳機(jī)驅(qū)動(dòng)(提供40 mW@16 Ω 的輸出能力);支持揚(yáng)聲器輸出(提供0.9 W@8 Ω 的驅(qū)動(dòng)能力);支持立體聲差分輸入/麥克風(fēng)輸入;支持左右聲道音量獨(dú)立調(diào)節(jié);支持3D 效果,支持5 路EQ 調(diào)節(jié)[6]。
WM8978 的控制通過(guò)I2S 接口(即數(shù)字音頻接口)同MCU 進(jìn)行音頻數(shù)據(jù)傳輸(支持音頻接收和發(fā)送),通過(guò)二線(MODE=0,即IIC 接口)或三線(MODE=1)接口進(jìn)行配置。WM8978 的I2S 接口,由4 個(gè)引腳組成:(1)ADCDAT:ADC 數(shù)據(jù)輸出;(2)DACDAT:DAC 數(shù)據(jù)輸入;(3)LRC:數(shù)據(jù)左/右對(duì)齊時(shí)鐘;(4)BCLK:位時(shí)鐘,用于同步本系統(tǒng)應(yīng)用WM8978 的播放音頻功能,并為日后升級(jí)系統(tǒng)的語(yǔ)音控制提供可能性。WM8978 的原理圖如圖5 所示,有SPK-和SPK+連接揚(yáng)聲器。
圖5 WM8978 電路原理圖Fig.5 WM8978 circuit schematic
系統(tǒng)必須首先執(zhí)行初始化過(guò)程,初始化I/O端口,設(shè)置定時(shí)器,并確定每個(gè)外設(shè)是否成功連接。配置DS18B20 溫度傳感器來(lái)收集水溫,將收集的水溫與預(yù)設(shè)溫度進(jìn)行比較。如果收集的溫度低于設(shè)定溫度,則加熱繼電器開(kāi)始加熱;如果收集的溫度高于設(shè)定溫度,則冷卻繼電器開(kāi)始冷卻。直到檢測(cè)到的水溫等于設(shè)定的水溫,停止繼電器動(dòng)作,發(fā)送語(yǔ)音播報(bào)命令。主程序流程圖如圖6 所示。
圖6 主程序流程圖Fig.6 Main program flow chart
DS18B20 共有6 種信號(hào)類型:復(fù)位脈沖、應(yīng)答脈沖、寫(xiě)0、寫(xiě)1、讀0 和讀1。所有這些信號(hào),除了應(yīng)答脈沖以外,都由主機(jī)發(fā)出同步信號(hào)[7],并且發(fā)送所有的命令和數(shù)據(jù)都是字節(jié)的低位在前。DS18B20 配置方法如下:
(1)單總線上的所有通信都是以初始化序列開(kāi)始。主機(jī)輸出低電平,保持低電平時(shí)間至少480 us,以產(chǎn)生復(fù)位脈沖。接著主機(jī)釋放總線,4.7 K 的上拉電阻將單總線拉高,延時(shí)15~60 μs,并進(jìn)入接收模式(Rx)。
(2)DS18B20 拉低總線60~240 μs,以產(chǎn)生低電平應(yīng)答脈沖。
(3)寫(xiě)時(shí)序包括寫(xiě)0 時(shí)序和寫(xiě)1 時(shí)序。所有寫(xiě)時(shí)序至少需要60 μs,且在二次獨(dú)立的寫(xiě)時(shí)序之間至少需要1 μs 的恢復(fù)時(shí)間,兩種寫(xiě)時(shí)序均起始于主機(jī)拉低總線。寫(xiě)1 時(shí)序:主機(jī)輸出低電平,延時(shí)2 μs,然后釋放總線,延時(shí)60 μs;寫(xiě)0 時(shí)序:主機(jī)輸出低電平,延時(shí)60 μs,然后釋放總線,延時(shí)2 μs。
(4)單總線器件僅在主機(jī)發(fā)出讀時(shí)序時(shí)才向主機(jī)傳輸數(shù)據(jù),所以在主機(jī)發(fā)出讀數(shù)據(jù)命令后,必須馬上產(chǎn)生讀時(shí)序,以便從機(jī)能夠傳輸數(shù)據(jù)。所有讀時(shí)序至少需要60 μs,且在兩次獨(dú)立的讀時(shí)序之間至少需要1 us 的恢復(fù)時(shí)間。每個(gè)讀時(shí)序都由主機(jī)發(fā)起,至少拉低總線1 μs。主機(jī)在讀時(shí)序期間必須釋放總線,并且在時(shí)序起始后的15 μs之內(nèi)采樣總線狀態(tài)。典型的讀時(shí)序過(guò)程為:主機(jī)輸出低電平延時(shí)2 μs,然后主機(jī)轉(zhuǎn)入輸入模式延時(shí)12 μs,然后讀取單總線當(dāng)前的電平,然后延時(shí)50 μs[8]。
4.1.1 溫度測(cè)試實(shí)驗(yàn)
通過(guò)本系統(tǒng)對(duì)一系列標(biāo)準(zhǔn)溫度進(jìn)行多次測(cè)量,測(cè)試本系統(tǒng)的測(cè)溫準(zhǔn)確性。針對(duì)5 個(gè)不同標(biāo)準(zhǔn)溫度,分別采集5 次溫度,并取5 次采集值的平均值,評(píng)估系統(tǒng)測(cè)溫的準(zhǔn)確性。測(cè)溫實(shí)驗(yàn)數(shù)據(jù)如表1 所示(單位℃)。
表1 溫度測(cè)量實(shí)驗(yàn)結(jié)果Tab.1 Experimental results of temperature measurement
由表1 可知,不同溫度下的誤差最大為1 ℃。綜合5 次不同溫度下的測(cè)量,總體最大誤差為0.34 ℃。
4.1.2 溫度控制實(shí)驗(yàn)
通過(guò)本系統(tǒng),預(yù)設(shè)3 個(gè)不同的標(biāo)準(zhǔn)水溫,再通過(guò)電子溫度計(jì)測(cè)試實(shí)際水溫,測(cè)試系統(tǒng)控溫的準(zhǔn)確性,實(shí)驗(yàn)數(shù)據(jù)如表2 所示(單位℃)。
表2 溫度控制實(shí)驗(yàn)結(jié)果Tab.2 Temperature control experiment results
由以上數(shù)據(jù)可知,本系統(tǒng)本次實(shí)驗(yàn)中的控溫最大誤差1.2 ℃,平均最大誤差為0.9 ℃。
從實(shí)驗(yàn)數(shù)據(jù)可看出,本系統(tǒng)溫度測(cè)量基本與實(shí)際溫度相符,能較準(zhǔn)確地實(shí)現(xiàn)對(duì)溫度的控制,且揚(yáng)聲器可成功聽(tīng)到溫度語(yǔ)音播報(bào)。但溫度測(cè)量和溫度控制均有一定誤差。同一標(biāo)準(zhǔn)溫度多次測(cè)量時(shí),實(shí)際測(cè)量溫度有下降趨勢(shì)。此外,由于本系統(tǒng)所使用的的控溫算法較為簡(jiǎn)單,因此對(duì)控溫誤差也有一定影響。經(jīng)分析得到,由于水溫與室溫有溫差,所以水溫有隨時(shí)間改變的趨勢(shì),水溫將逐漸趨于室溫。此外,水中溫度不完全均衡,因此溫度傳感器擺放的位置也會(huì)影響溫度測(cè)量和溫度控制的準(zhǔn)確性。
本文設(shè)計(jì)了一種基于STM32 微處理器的電熱水器控溫系統(tǒng),采用STM32F429 使得開(kāi)發(fā)靈活性大,升級(jí)空間大;而采用防水性DS18B20溫度傳感器具有很好的防水性,而且所測(cè)得的水溫較準(zhǔn)確。軟件上通過(guò)比較算法判斷實(shí)際水溫與系統(tǒng)預(yù)設(shè)水溫的差值,從而實(shí)現(xiàn)對(duì)加熱或制冷繼電器的控制,最終實(shí)現(xiàn)對(duì)水溫的較理想控制。在預(yù)設(shè)好系統(tǒng)標(biāo)準(zhǔn)溫度后,可實(shí)現(xiàn)一鍵控溫的效果。本文綜合并有效利用了軟硬件優(yōu)勢(shì),設(shè)計(jì)了一套控制邏輯簡(jiǎn)潔直觀、安裝調(diào)試簡(jiǎn)單易操作、控溫效果準(zhǔn)確理想的電熱水器水溫控制系統(tǒng),具有一定的實(shí)用價(jià)值。