彭璐佳, 張莉萍, 黃 勃, 譚蓮子, 童宏偉
(上海工程技術(shù)大學(xué) 電子電氣工程學(xué)院,上海 201620)
在炎熱的夏天,經(jīng)過太陽對車體的照射后,人們剛進(jìn)入車內(nèi)時(shí)就算打開空調(diào)也無法使車內(nèi)溫度快速下降,此時(shí)可以利用風(fēng)扇增加車內(nèi)空氣的流通,增加舒適感。帶有通用串行總線(universal serial bus,USB)接頭的小風(fēng)扇安裝方便,可與車上的USB接口相連,當(dāng)空調(diào)制冷使車內(nèi)溫度達(dá)到令人體舒適的溫度時(shí)令風(fēng)扇停止轉(zhuǎn)動。
文獻(xiàn)[1]設(shè)計(jì)的可變速風(fēng)扇中,采用C51系列單片機(jī)作為主控制芯片,該芯片I/O接口少,可以擴(kuò)展功能模塊數(shù)量相較于STM32系列單片機(jī)要少,而且8位的傳統(tǒng)的C51單片機(jī)處理能力也不及STM32。一些設(shè)計(jì)中雖然具有液晶顯示屏,但是LCD1602液晶顯示屏沒有薄膜晶體管(thin film transistor,TFT)液晶屏清晰。結(jié)合如今的研究現(xiàn)狀,本文提出一種智能USB風(fēng)扇,選用以ARM Cortex-M3為內(nèi)核的STM32為主控制芯片,利用Keil μVision5進(jìn)行軟件編程,實(shí)現(xiàn)風(fēng)扇根據(jù)環(huán)境溫度的變化自動調(diào)速,改進(jìn)前人設(shè)計(jì)風(fēng)扇中的缺點(diǎn),并使這種風(fēng)扇能夠應(yīng)用在車輛中。
車載智能風(fēng)扇系統(tǒng),以STM32為控制核心,外設(shè)控制及顯示模塊主要有按鍵控制部分、溫度檢測部分、液晶顯示部分和電機(jī)驅(qū)動部分,整體框圖如圖1所示。上電復(fù)位后,液晶顯示屏顯示車內(nèi)的環(huán)境溫度、風(fēng)扇的轉(zhuǎn)動狀態(tài)。按下按鍵,進(jìn)入設(shè)置界面,設(shè)置使風(fēng)扇變速的限值溫度,低于下限溫度時(shí)風(fēng)扇停止轉(zhuǎn)動,介于下限溫度與上限溫度值之間時(shí)隨溫度升高轉(zhuǎn)速變快,隨溫度的降低轉(zhuǎn)速變慢,大于上限溫度值時(shí)全速轉(zhuǎn)動,實(shí)現(xiàn)直流風(fēng)扇的智能調(diào)速。
圖1 車載智能風(fēng)扇系統(tǒng)總體設(shè)計(jì)框圖
STM32系列微控制器是具有高性能、高度兼容、易開發(fā)、低功耗、低工作電壓以及實(shí)時(shí)、數(shù)字信號處理的32位閃存微控制器產(chǎn)品[2]。本系統(tǒng)設(shè)計(jì)中應(yīng)用了STM32F103VET6芯片,內(nèi)置ARM Cortex—M3內(nèi)核,擁有多條I/O口以及APB總線和外設(shè),所有型號的器件都包含2個(gè)12位的ADC、3個(gè)通用16位的定時(shí)器和一個(gè)脈寬調(diào)制(pulse width modulation,PWM)定時(shí)器,還包含標(biāo)準(zhǔn)和先進(jìn)的通信接口:多達(dá)2個(gè)內(nèi)部集成電路(inter-integrated circuit,I2C)總線和串行外設(shè)接口(serial peripheral interface,SPI)、3個(gè)通用同步異步收發(fā)機(jī)(universal synchronous asynchronous receiver transmitter,USART)、一個(gè)通用串行總線(universal serial bus,USB)和一個(gè)控制器局域網(wǎng)(controller area network,CAN)[3]。這些豐富的外設(shè)配置,使得STM32F103系列適用于多種應(yīng)用場合。
車載智能風(fēng)扇系統(tǒng)電源電路采用USB—5V供電,其電路如圖2所示,電源為STM32主控制芯片供電,進(jìn)而驅(qū)動直流風(fēng)扇轉(zhuǎn)動。
圖2 USB—5V電源供電電路
溫度采集模塊選用數(shù)字溫度傳感器DS18B20,測溫范圍為-55~+125 ℃,增量值為0.5 ℃[4]。本系統(tǒng)使用的溫度傳感器為默認(rèn)配置的12位分辨率,最大工作周期為750 ms[5]。
設(shè)計(jì)中DS18B20將數(shù)字信號輸出接至STM32單片機(jī)的PE6口,上拉電阻值R=4.7 kΩ,有利于增加DS18B20輸出數(shù)字信號的穩(wěn)定性,其電路如圖3所示。
圖3 溫度傳感器電路
按鍵模塊由5個(gè)獨(dú)立按鍵組成,分別連接STM32的PC8,PC9,PC10,PC13,利用電容器的充放電特性對抖動過程中產(chǎn)生的電壓毛刺進(jìn)行平滑處理,實(shí)現(xiàn)消抖,使用獨(dú)立按鍵使單片機(jī)程序易處理按鍵掃描。
驅(qū)動模塊選用L298N芯片,具有雙路H橋電機(jī)驅(qū)動,可以同時(shí)驅(qū)動兩路直流電機(jī),對該模塊的供電電壓為5 V,內(nèi)置防共態(tài)導(dǎo)通電路,輸入端懸空時(shí),電機(jī)不會誤動作,內(nèi)置帶遲滯效應(yīng)的過熱保護(hù)電路,無須擔(dān)心電機(jī)堵轉(zhuǎn)[6]。該模塊的原理如圖4所示,可直接與風(fēng)扇中的直流電機(jī)相連。
圖4 電機(jī)驅(qū)動模塊原理
液晶顯示模塊為TFT液晶顯示屏,選用ILI9341芯片,與STM32主控芯片連接原理如圖5所示,液晶顯示屏主界面顯示風(fēng)扇的轉(zhuǎn)動狀態(tài)、溫度,參數(shù)設(shè)置界面中顯示各個(gè)參數(shù)的設(shè)置值。
圖5 液晶顯示模塊原理
在Keil MDK中選擇STM32F103VE型號的產(chǎn)品,新建工程,用C語言進(jìn)行編程。整體設(shè)計(jì)流程如圖6所示。
圖6 系統(tǒng)軟件設(shè)計(jì)流程
中央處理器(central processing unit,CPU)首先對DS18B20初始化,再進(jìn)行ROM操作命令,最后才能對存儲器操作,數(shù)據(jù)操作,每一步操作都要遵循嚴(yán)格的工作時(shí)序和通信協(xié)議。DS18B20存儲的溫度是16位的帶符號擴(kuò)展的二進(jìn)制補(bǔ)碼形式,當(dāng)工作在12位分辨率時(shí),其中5個(gè)符號位,7個(gè)整數(shù)位,4個(gè)小數(shù)位,溫度=符號位+整數(shù)+小數(shù)×0.062 5[7]。根據(jù)DS18B20的通信協(xié)議,在每次讀寫之前要對DS18B20進(jìn)行復(fù)位,復(fù)位成功后發(fā)送一條只讀存儲器(read only memory,ROM)指令,最后發(fā)送隨機(jī)存取存儲器(random access memory,RAM)指令[8],對DS18B20進(jìn)行讀寫操作后,最終將溫度值顯示在液晶顯示屏上。溫度采集流程如圖7所示。
圖7 溫度采集流程
首先對按鍵相應(yīng)的GPIO口進(jìn)行初始化,通過按鍵掃描程序判斷按鍵是否被按下,并讀出被按下按鍵的GPIO口值,實(shí)現(xiàn)相應(yīng)按鍵的功能,Set_Value_Mode設(shè)置了參數(shù)模式的選擇,按鍵在不同參數(shù)模式的選擇下,對不同的參數(shù)模式進(jìn)行操作。通過E2PROM將設(shè)置的參數(shù)寫出[9]。
STM32通過8080通信接口與ILI9341芯片通信,實(shí)現(xiàn)對液晶屏的控制[10]。編程初始化LCD控制器ILI9341芯片與STM32控制器的管腳連接配置,CS為TFTLCD片選信號,WR為向TFTLCD寫入信號,RD為從TFTLCD讀取信號,RS為命令/數(shù)據(jù)標(biāo)志[11]。調(diào)用函數(shù)顯示預(yù)設(shè)的中英文字符。
電機(jī)根據(jù)車內(nèi)環(huán)境溫度自動調(diào)速,通過溫度傳感器讀取溫度值后控制PWM波的占空比來實(shí)現(xiàn),首先判斷當(dāng)前溫度是否在設(shè)定值的范圍,若在設(shè)定溫度的范圍內(nèi),則計(jì)算溫度范圍與PWM值的比率,通過配置STM32通用定時(shí)器TIM3,使GPIO口輸出PWM信號,采用PWM波控制直流電機(jī)兩端的電壓[12],當(dāng)電源電壓不變的情況下,輸出電壓平均值取決于PWM波占空比的大小,改變了占空比的值即改變了輸出電壓的平均值,從而實(shí)現(xiàn)電機(jī)轉(zhuǎn)速的控制,實(shí)現(xiàn)了PWM調(diào)速。PWM波占空比改變時(shí),電機(jī)轉(zhuǎn)速亦改變。若低于最低溫度,則風(fēng)扇停止;高于最高溫度,則風(fēng)扇全速運(yùn)轉(zhuǎn)。
由鍵盤將下限溫度設(shè)為25 ℃,上限溫度設(shè)為35 ℃,開發(fā)板上電復(fù)位后,溫度傳感器測量出六組車內(nèi)環(huán)境溫度值:36.5,33,31.4,29.7,27.3,25.6,23 ℃,其對應(yīng)的PWM占空比和風(fēng)力依次為(100 %,大);(80 %,大);(64 %,中);(47 %,中);(23 %,小);(6 %,小);(0 %,無)。
軟件設(shè)置中,溫度范圍低于下限溫度時(shí),風(fēng)力為無,PWM波占空比為0 %~40 %時(shí),風(fēng)力顯示為??;PWM波占空比為40 %~70 %時(shí),風(fēng)力顯示為中;PWM波占空比為70 %~100 %時(shí),風(fēng)力顯示為大。實(shí)驗(yàn)結(jié)果符合軟件設(shè)置要求,剛進(jìn)入車內(nèi)時(shí)溫度為36.5 ℃,風(fēng)扇全速轉(zhuǎn)動,當(dāng)空調(diào)制冷使車內(nèi)溫度逐漸降低時(shí),風(fēng)扇在設(shè)定的溫度范圍內(nèi),隨溫度的降低,PWM波的占空比變小,風(fēng)扇的轉(zhuǎn)速變慢,風(fēng)力顯示中根據(jù)風(fēng)扇速的范圍顯示大、中、小。
經(jīng)過實(shí)驗(yàn)調(diào)試后,該車載智能風(fēng)扇系統(tǒng)可以實(shí)現(xiàn)通過按鍵切換液晶屏上的狀態(tài)顯示界面和參數(shù)設(shè)置界面,并通過按鍵設(shè)定使風(fēng)扇調(diào)速的環(huán)境溫度值的上下限,根據(jù)溫度傳感器檢測的車內(nèi)環(huán)境溫度,改變PWM波的占空比來改變電機(jī)的轉(zhuǎn)速,實(shí)現(xiàn)風(fēng)扇的自動調(diào)速,并將風(fēng)扇的運(yùn)行狀態(tài)及車內(nèi)環(huán)境溫度顯示在液晶顯示屏上。該系統(tǒng)采用USB接口供電,易于在車內(nèi)工作,主控制器選用STM32,具有豐富的GPIO接口,可擴(kuò)展多個(gè)功能模塊,將各模塊有機(jī)結(jié)合在一起構(gòu)成一個(gè)系統(tǒng),使用Keil MDK調(diào)用固件庫函數(shù)進(jìn)行編程,有利于今后對系統(tǒng)功能的擴(kuò)展,應(yīng)用前景廣泛。