楊秀秀,晏菁
(安徽師范大學,安徽蕪湖,241000)
1880 年,第一臺電風扇誕生。為適應更加人性化的要求,以及科技發(fā)展的支持,電風扇已經(jīng)進行了多次改進,目前市場上最常見的一種風扇可通過按鍵或遙控器手動進行不同風速的選擇,此種風扇在使用者處于睡眠狀態(tài)時,不能根據(jù)溫度的變化及時進行調速,不能使用戶處于最舒適的狀態(tài);且當溫度下降時,轉速依舊處于固定設置值,造成電能資源的浪費。為解決這一問題,本系統(tǒng)設計了一種可根據(jù)環(huán)境溫度及時改變風扇轉速的溫控調速程序,同時為風扇添加顯示模塊,實時顯示環(huán)境溫度、日期、時間、轉速高低等信息,方便用戶使用[1]-[2]。
基于STM32的多功能溫控風扇,其系統(tǒng)結構框圖如圖1所示。其主要由微控制器、溫度檢測模塊、人機交互模塊、執(zhí)行模塊和電源構成;整個系統(tǒng)采用5V 電源進行供電。微控制器從溫度檢測模塊讀取溫度,用戶可通過人機交互模塊對執(zhí)行模塊的狀態(tài)進行了解和控制。

圖1 硬件系統(tǒng)結構圖
本系統(tǒng)使用以Cortex-M4 為內核的STM32F407ZGT6 芯片作為微控制器,該芯片具有1MB的FLASH 容量、112 個通用IO 口、1 個可變靜態(tài)存儲控制器FSMC(Flexible Static Memory Controller)接口、1 個實時時鐘(RTC)等眾多資源。其中FSMC 接口為STM32 系列采用的新型的存儲器擴展技術,能夠滿足不同類型的靜態(tài)存儲擴展[3]。STM32的RTC 可自動進行月份天數(shù)和夏令時的補償,為時間的顯示提供了極大的方便[4]。根據(jù)本設計需要實現(xiàn)的功能,核心板電路包括供電接口、復位電路、后備電池接口、IO 擴展接口、JTAG/SWD 接口等外圍電路。供電接口為整個核心板提供電源;復位電路包括上電復位和按鍵復位;后備電池使用CR1220 紐扣電池,在核心板斷電時為實時時鐘提供電源;IO 擴展接口方便使用杜邦線接入外部設備;JTAG/SWD 接口支持仿真器接入進行調試和程序下載到開發(fā)板。
溫度檢測使用DS18B20 數(shù)字化溫度傳感器,具有“一線總線”接口,抗干擾能力強,其測量范圍從-55℃至+125℃,精度可達±0.5℃,工作電壓在3V 至5.5V 范圍內。本設計選擇直插型封裝,3 個引腳分別為GND、DQ 和VCC,硬件電路設計如圖2 所示,VCC 和GND 兩腳給器件提供電源回路,供電端接入0.1uf 電容進行濾波,DQ 為數(shù)據(jù)通信引腳,串聯(lián)一電阻到VCC,為DQ 管腳提供靜態(tài)偏置,再連接到單片機的PG9 引腳,使用PG9 對器件進行寫入或讀取操作[5]。

圖2 DS18B20 硬件電路
人工交互模塊主要由獨立按鍵和TFT_LCD 彩屏液晶屏構成。4 個獨立按鍵key0,key1,key2,key3 一端分別連接到單片機的PE4,PE3,PE2,PA0 上,一端接地,故而獨立按鍵屬于低電平有效。獨立按鍵未接上拉電阻,采用MCU 配置相應IO 口為上拉模式,簡化硬件電路設計。人機界面采用ST7735S 驅動的1.8 寸TFT_LCD 顯示屏,3.3V 供電;屏幕分辨率為128RGB*160,采用4 線SPI 接口。模塊共有8 個管腳,分別連接到STM32的FSMC 接口[6],各引腳說明如表1 所示。
本設計的執(zhí)行模塊為L9110 驅動的電機風扇模塊。由于STM32 引腳輸出的驅動電流不足以驅動電機轉動,為達到使用引腳輸出的PWM 波驅動電機轉動的目的,外加兩通道推挽式功率放大專用集成電路器件L9110,其每個通道能通過的持續(xù)電流可達800mA,峰值電流高達1.5A,兩路輸出可直接驅動電機正轉或反轉。芯片內置箝位二極管,可釋放感性負載(電機)的反向沖擊電流,防止損壞微控制器。由于本設計不必區(qū)分正轉與反轉,L9110的兩路控制信號一路接低電平,一路接STM32的PE6 引腳,通過改變此腳輸出PWM 波的占空比控制風扇風速。此模塊的供電電壓為5V。
軟件系統(tǒng)設計使用uVision5 IDE 集成開發(fā)環(huán)境,代碼編寫使用C 語言,程序搭建采用庫函數(shù)版本。主函數(shù)流程圖如圖3 所示,包括系統(tǒng)和各硬件模塊的初始化、LCD 顯示、按鍵掃描、電機轉速控制等函數(shù)功能。

圖3 主程序流程圖
時間和日期的顯示通過讀取STM32的內部實時時鐘來完成,RTC 模塊和時鐘的配置是在后備寄存器,在保證后備供電不斷電的情況下,不受復位影響,數(shù)據(jù)不丟失。本設計配置時間為24 小時制,選擇32.768Khz的外部時鐘源LSE 作為RTC 時鐘源,RTC 要求提供1Hz的時鐘,程序中需配置RTC的可編程預分配器來實現(xiàn),包括對一個7 位異步分頻器和一個15 位同步預分頻器的配置,RTC 時鐘的計算由公式(1)求得:

式中Fck_spre 為RTC 時鐘頻率;PREDIV_A 為RTC的異步分頻器;PREDIV_S 為RTC的異步分頻器。由式(1)可知對兩個分頻器的配置并不唯一,考慮到最大程度降低功耗,本設計選擇配置異步預分頻器為最大值,即PREDIV_A=0X7F,則PREDIV_S=0XFF。時間和日期數(shù)據(jù)以BCD 碼的形式存儲在寄存器中,為得到正確數(shù)據(jù)需進行BCD 碼到十進制的轉換。
溫控調速的具體實現(xiàn)流程框圖如圖4 所示,使用循環(huán)結構,對DS18B20 讀取的溫度不斷進行判斷選擇輸出占空比不同的PWM 波,其中閾值1的優(yōu)先級高于閾值2的優(yōu)先級高于閾值3的優(yōu)先級,在數(shù)值上滿足:閾值1>閾值2>閾值3。

圖4 溫控調速流程圖
PWM(Pulse Width Modulation),即脈沖寬度調制,利用數(shù)字輸出對模擬電路進行控制。STM32F4 具有12 個16 位定時器和2 個32 位定時器,其中除了TIM6 和TIM7,其他均可產生PWM[7-9]。本設計配置PE6 腳復用為定時器功能,使用TIM9 產生調速信號。PWM的頻率由自動重裝載寄存器TIM9_ARR 和預分頻器寄存器TIM9_PSC的數(shù)值確定,邊沿對齊模式下,PWM的具體頻率計算由式(2)求得:

式中,TIM_CLK 為定時器時鐘,PSC 為定時器的預分頻系數(shù),ARR 為自動重裝載值。計數(shù)器時鐘源選擇為內部時鐘,TIM9的時鐘來自APB2,內部時鐘為APB2 倍頻所得,為168MHz,PSC 設置為167,ARR 設置為499,由公式(2)可計算得PWM 波的頻率為2KHz。本設計使用TIM9的通道2 產生PWM 信號,PWM 模式設置為模式一,計數(shù)模式選擇向上計數(shù),有效輸出極性設為高,其占空比由比較/捕獲寄存器TIM9_CCR2的值確定,當計數(shù)器寄存器TIM9_CNT 中的值小于TIM9_CCR2 中的值時,IO 輸出高電平。PWM 原理的示意圖如圖5:
經(jīng)過具體的實物驗證,基于STM32的多功能溫控風扇最終可實現(xiàn)以下功能:
(1)在LCD 上實時顯示溫度、風扇轉速高低、時間、日期等信息;
(2)按鍵選擇風扇的四種工作模式:
風扇工作模式一:按鍵key0 控制風扇低速轉動;
風扇工作模式二:按鍵key1 控制風扇高速轉動;
風扇工作模式三:按鍵key2 使風扇工作在溫控狀態(tài):當溫度超過設定閾值1 時,風扇自動以高速轉動,當溫度超過設定閾值2 時,風扇自動以低速運動,當溫度低于設置閾值3時,風扇自動停止轉動;
風扇工作模式四:按鍵key3 控制風扇停止轉動。
本系統(tǒng)使用器件成本較低,操作簡單,可根據(jù)環(huán)境溫度改變風速,有效節(jié)約電能,同時加入溫度和時間顯示功能,改善用戶體驗。根據(jù)本設計的技術,可進一步完善風扇的功能,如添加更多風速設置、在時鐘顯示的基礎上添加定時和鬧鐘功能等,從生活需求和社會經(jīng)濟看,具有一定的發(fā)展優(yōu)勢。