楊秀秀,晏菁
(安徽師范大學(xué),安徽蕪湖,241000)
1880 年,第一臺電風(fēng)扇誕生。為適應(yīng)更加人性化的要求,以及科技發(fā)展的支持,電風(fēng)扇已經(jīng)進(jìn)行了多次改進(jìn),目前市場上最常見的一種風(fēng)扇可通過按鍵或遙控器手動(dòng)進(jìn)行不同風(fēng)速的選擇,此種風(fēng)扇在使用者處于睡眠狀態(tài)時(shí),不能根據(jù)溫度的變化及時(shí)進(jìn)行調(diào)速,不能使用戶處于最舒適的狀態(tài);且當(dāng)溫度下降時(shí),轉(zhuǎn)速依舊處于固定設(shè)置值,造成電能資源的浪費(fèi)。為解決這一問題,本系統(tǒng)設(shè)計(jì)了一種可根據(jù)環(huán)境溫度及時(shí)改變風(fēng)扇轉(zhuǎn)速的溫控調(diào)速程序,同時(shí)為風(fēng)扇添加顯示模塊,實(shí)時(shí)顯示環(huán)境溫度、日期、時(shí)間、轉(zhuǎn)速高低等信息,方便用戶使用[1]-[2]。
基于STM32的多功能溫控風(fēng)扇,其系統(tǒng)結(jié)構(gòu)框圖如圖1所示。其主要由微控制器、溫度檢測模塊、人機(jī)交互模塊、執(zhí)行模塊和電源構(gòu)成;整個(gè)系統(tǒng)采用5V 電源進(jìn)行供電。微控制器從溫度檢測模塊讀取溫度,用戶可通過人機(jī)交互模塊對執(zhí)行模塊的狀態(tài)進(jìn)行了解和控制。
圖1 硬件系統(tǒng)結(jié)構(gòu)圖
本系統(tǒng)使用以Cortex-M4 為內(nèi)核的STM32F407ZGT6 芯片作為微控制器,該芯片具有1MB的FLASH 容量、112 個(gè)通用IO 口、1 個(gè)可變靜態(tài)存儲控制器FSMC(Flexible Static Memory Controller)接口、1 個(gè)實(shí)時(shí)時(shí)鐘(RTC)等眾多資源。其中FSMC 接口為STM32 系列采用的新型的存儲器擴(kuò)展技術(shù),能夠滿足不同類型的靜態(tài)存儲擴(kuò)展[3]。STM32的RTC 可自動(dòng)進(jìn)行月份天數(shù)和夏令時(shí)的補(bǔ)償,為時(shí)間的顯示提供了極大的方便[4]。根據(jù)本設(shè)計(jì)需要實(shí)現(xiàn)的功能,核心板電路包括供電接口、復(fù)位電路、后備電池接口、IO 擴(kuò)展接口、JTAG/SWD 接口等外圍電路。供電接口為整個(gè)核心板提供電源;復(fù)位電路包括上電復(fù)位和按鍵復(fù)位;后備電池使用CR1220 紐扣電池,在核心板斷電時(shí)為實(shí)時(shí)時(shí)鐘提供電源;IO 擴(kuò)展接口方便使用杜邦線接入外部設(shè)備;JTAG/SWD 接口支持仿真器接入進(jìn)行調(diào)試和程序下載到開發(fā)板。
溫度檢測使用DS18B20 數(shù)字化溫度傳感器,具有“一線總線”接口,抗干擾能力強(qiáng),其測量范圍從-55℃至+125℃,精度可達(dá)±0.5℃,工作電壓在3V 至5.5V 范圍內(nèi)。本設(shè)計(jì)選擇直插型封裝,3 個(gè)引腳分別為GND、DQ 和VCC,硬件電路設(shè)計(jì)如圖2 所示,VCC 和GND 兩腳給器件提供電源回路,供電端接入0.1uf 電容進(jìn)行濾波,DQ 為數(shù)據(jù)通信引腳,串聯(lián)一電阻到VCC,為DQ 管腳提供靜態(tài)偏置,再連接到單片機(jī)的PG9 引腳,使用PG9 對器件進(jìn)行寫入或讀取操作[5]。
圖2 DS18B20 硬件電路
人工交互模塊主要由獨(dú)立按鍵和TFT_LCD 彩屏液晶屏構(gòu)成。4 個(gè)獨(dú)立按鍵key0,key1,key2,key3 一端分別連接到單片機(jī)的PE4,PE3,PE2,PA0 上,一端接地,故而獨(dú)立按鍵屬于低電平有效。獨(dú)立按鍵未接上拉電阻,采用MCU 配置相應(yīng)IO 口為上拉模式,簡化硬件電路設(shè)計(jì)。人機(jī)界面采用ST7735S 驅(qū)動(dòng)的1.8 寸TFT_LCD 顯示屏,3.3V 供電;屏幕分辨率為128RGB*160,采用4 線SPI 接口。模塊共有8 個(gè)管腳,分別連接到STM32的FSMC 接口[6],各引腳說明如表1 所示。
本設(shè)計(jì)的執(zhí)行模塊為L9110 驅(qū)動(dòng)的電機(jī)風(fēng)扇模塊。由于STM32 引腳輸出的驅(qū)動(dòng)電流不足以驅(qū)動(dòng)電機(jī)轉(zhuǎn)動(dòng),為達(dá)到使用引腳輸出的PWM 波驅(qū)動(dòng)電機(jī)轉(zhuǎn)動(dòng)的目的,外加兩通道推挽式功率放大專用集成電路器件L9110,其每個(gè)通道能通過的持續(xù)電流可達(dá)800mA,峰值電流高達(dá)1.5A,兩路輸出可直接驅(qū)動(dòng)電機(jī)正轉(zhuǎn)或反轉(zhuǎn)。芯片內(nèi)置箝位二極管,可釋放感性負(fù)載(電機(jī))的反向沖擊電流,防止損壞微控制器。由于本設(shè)計(jì)不必區(qū)分正轉(zhuǎn)與反轉(zhuǎn),L9110的兩路控制信號一路接低電平,一路接STM32的PE6 引腳,通過改變此腳輸出PWM 波的占空比控制風(fēng)扇風(fēng)速。此模塊的供電電壓為5V。
軟件系統(tǒng)設(shè)計(jì)使用uVision5 IDE 集成開發(fā)環(huán)境,代碼編寫使用C 語言,程序搭建采用庫函數(shù)版本。主函數(shù)流程圖如圖3 所示,包括系統(tǒng)和各硬件模塊的初始化、LCD 顯示、按鍵掃描、電機(jī)轉(zhuǎn)速控制等函數(shù)功能。
圖3 主程序流程圖
時(shí)間和日期的顯示通過讀取STM32的內(nèi)部實(shí)時(shí)時(shí)鐘來完成,RTC 模塊和時(shí)鐘的配置是在后備寄存器,在保證后備供電不斷電的情況下,不受復(fù)位影響,數(shù)據(jù)不丟失。本設(shè)計(jì)配置時(shí)間為24 小時(shí)制,選擇32.768Khz的外部時(shí)鐘源LSE 作為RTC 時(shí)鐘源,RTC 要求提供1Hz的時(shí)鐘,程序中需配置RTC的可編程預(yù)分配器來實(shí)現(xiàn),包括對一個(gè)7 位異步分頻器和一個(gè)15 位同步預(yù)分頻器的配置,RTC 時(shí)鐘的計(jì)算由公式(1)求得:
式中Fck_spre 為RTC 時(shí)鐘頻率;PREDIV_A 為RTC的異步分頻器;PREDIV_S 為RTC的異步分頻器。由式(1)可知對兩個(gè)分頻器的配置并不唯一,考慮到最大程度降低功耗,本設(shè)計(jì)選擇配置異步預(yù)分頻器為最大值,即PREDIV_A=0X7F,則PREDIV_S=0XFF。時(shí)間和日期數(shù)據(jù)以BCD 碼的形式存儲在寄存器中,為得到正確數(shù)據(jù)需進(jìn)行BCD 碼到十進(jìn)制的轉(zhuǎn)換。
溫控調(diào)速的具體實(shí)現(xiàn)流程框圖如圖4 所示,使用循環(huán)結(jié)構(gòu),對DS18B20 讀取的溫度不斷進(jìn)行判斷選擇輸出占空比不同的PWM 波,其中閾值1的優(yōu)先級高于閾值2的優(yōu)先級高于閾值3的優(yōu)先級,在數(shù)值上滿足:閾值1>閾值2>閾值3。
圖4 溫控調(diào)速流程圖
PWM(Pulse Width Modulation),即脈沖寬度調(diào)制,利用數(shù)字輸出對模擬電路進(jìn)行控制。STM32F4 具有12 個(gè)16 位定時(shí)器和2 個(gè)32 位定時(shí)器,其中除了TIM6 和TIM7,其他均可產(chǎn)生PWM[7-9]。本設(shè)計(jì)配置PE6 腳復(fù)用為定時(shí)器功能,使用TIM9 產(chǎn)生調(diào)速信號。PWM的頻率由自動(dòng)重裝載寄存器TIM9_ARR 和預(yù)分頻器寄存器TIM9_PSC的數(shù)值確定,邊沿對齊模式下,PWM的具體頻率計(jì)算由式(2)求得:
式中,TIM_CLK 為定時(shí)器時(shí)鐘,PSC 為定時(shí)器的預(yù)分頻系數(shù),ARR 為自動(dòng)重裝載值。計(jì)數(shù)器時(shí)鐘源選擇為內(nèi)部時(shí)鐘,TIM9的時(shí)鐘來自APB2,內(nèi)部時(shí)鐘為APB2 倍頻所得,為168MHz,PSC 設(shè)置為167,ARR 設(shè)置為499,由公式(2)可計(jì)算得PWM 波的頻率為2KHz。本設(shè)計(jì)使用TIM9的通道2 產(chǎn)生PWM 信號,PWM 模式設(shè)置為模式一,計(jì)數(shù)模式選擇向上計(jì)數(shù),有效輸出極性設(shè)為高,其占空比由比較/捕獲寄存器TIM9_CCR2的值確定,當(dāng)計(jì)數(shù)器寄存器TIM9_CNT 中的值小于TIM9_CCR2 中的值時(shí),IO 輸出高電平。PWM 原理的示意圖如圖5:
經(jīng)過具體的實(shí)物驗(yàn)證,基于STM32的多功能溫控風(fēng)扇最終可實(shí)現(xiàn)以下功能:
(1)在LCD 上實(shí)時(shí)顯示溫度、風(fēng)扇轉(zhuǎn)速高低、時(shí)間、日期等信息;
(2)按鍵選擇風(fēng)扇的四種工作模式:
風(fēng)扇工作模式一:按鍵key0 控制風(fēng)扇低速轉(zhuǎn)動(dòng);
風(fēng)扇工作模式二:按鍵key1 控制風(fēng)扇高速轉(zhuǎn)動(dòng);
風(fēng)扇工作模式三:按鍵key2 使風(fēng)扇工作在溫控狀態(tài):當(dāng)溫度超過設(shè)定閾值1 時(shí),風(fēng)扇自動(dòng)以高速轉(zhuǎn)動(dòng),當(dāng)溫度超過設(shè)定閾值2 時(shí),風(fēng)扇自動(dòng)以低速運(yùn)動(dòng),當(dāng)溫度低于設(shè)置閾值3時(shí),風(fēng)扇自動(dòng)停止轉(zhuǎn)動(dòng);
風(fēng)扇工作模式四:按鍵key3 控制風(fēng)扇停止轉(zhuǎn)動(dòng)。
本系統(tǒng)使用器件成本較低,操作簡單,可根據(jù)環(huán)境溫度改變風(fēng)速,有效節(jié)約電能,同時(shí)加入溫度和時(shí)間顯示功能,改善用戶體驗(yàn)。根據(jù)本設(shè)計(jì)的技術(shù),可進(jìn)一步完善風(fēng)扇的功能,如添加更多風(fēng)速設(shè)置、在時(shí)鐘顯示的基礎(chǔ)上添加定時(shí)和鬧鐘功能等,從生活需求和社會經(jīng)濟(jì)看,具有一定的發(fā)展優(yōu)勢。