姜楚華, 樓應侯, 方慶朕, 朱永國, 王詩婷
(1.寧波大學科學技術學院,浙江 寧波 315300;2.寧波先鋒電器制造有限公司,浙江 寧波 315300)
隨著智能家電的日益普及,各種多樣化的智能電風扇也層出不窮。李盛林[1]設計了一種可遠程控制、智能調速的電風扇控制系統,以直流供電,以單片機AT89C52為控制器,可根據用戶設置的系統溫度和檢測到的環境溫度的差值自動調節風扇的轉速,該系統還能通過手機等智能移動設備終端的藍牙通信實現溫度、定時等系統參數的設置。王鵬亮等[2]以Arduino開發板為核心,設計研發了一款智能化電風扇,實現智能開機、待機、擺頭等功能,增強了電風扇的人機交互功能。陳炳飛[3]以單片機為風扇控制器的主控芯片,設計溫度采集模塊和顯示模塊來對周圍環境實時采集并顯示;設計串口通信模塊來實現手機與單片機的通信;設計轉速控制模塊來實現對風扇的智能化控制;用戶可通過手機APP對風扇實現轉速控制、定時關閉和溫度控制等功能。經過測試,該系統性能穩定,實現了對風扇的無線智能化控制。
國內的一些風扇控制系統大部分是用于實驗室驗證,且部分市場上的風扇功能還不夠完善[4-8]。根據這一技術現狀,本文對一種具有雙層扇葉的風扇進行了控制系統設計,完善了系統功能并優化了程序方案。
智能電風扇以賽元SC92F7422 SOP-20單片機為核心,集成溫濕度傳感、人體感應、蜂鳴器警報、擋位控制、搖頭輸出、紅外信號輸入檢測為一體的控制系統。智能電風扇設計的系統框圖如圖1所示。

圖1 系統設計框圖
首次上電,蜂鳴器“嘀”長鳴叫一聲(300 ms),進入待機。待機狀態下,點擊電源鍵則進入開機狀態;開機狀態時點擊則關機,并記憶參數。點擊調節“-”鍵,每按1次減少1擋,設定值會在相應模式所有擋位間循環。長按超過1 s則以每秒3擋的速率進行調節。擋位調節范圍為1~28。點擊調節“+”鍵,每按1次增加1擋,設定值會在相應模式所有擋位間循環。長按超過1 s則以每秒3擋的速率進行調節,擋位調節范圍為1~28。調節風類模式(風類在普通風、自然風、智能風、ECO之間循環)。
智能電風扇主要包含溫濕度的數據采集、人體感知輸入、紅外接收的輸入、獨立按鍵的輸入、風扇驅動接口的輸出、數碼管顯示及單片機主控制等電路模塊,總設計電路如圖2所示。

圖2 總設計電路如圖
控制電路以賽元SC92F7422 SOP-20單片機為核心,分別外接溫濕度傳感器、蜂鳴器、數碼管顯示電路、按鍵電路等。電路圖如圖3所示,定義引腳如表1所示。

表1 單片機引腳定義

圖3 控制電路圖
通過IO1與IO2產生1 kHz左右的模擬交流脈沖。下面為對應端口的具體波形。圖5中t1~t2時間段(設此時Rs+RH/R1<39 kΩ),IO1為高電平,IO2為低電平,從t1經過Tsmp后對AD1端口的電壓進行采樣,在整個周期時間內(t1~t3)只對濕敏電阻采樣一次。

圖5 AD1端口的具體波形
Rs為串聯電阻,電阻值為1 kΩ(高濕段平緩),R1為并聯電阻,電阻值為1 MΩ(使低濕段變化平緩),R2為采樣分壓電阻,電阻值為39 kΩ,R4、C1組成濾波電路,采樣平緩,電阻值為22 Ω,電容為22 pF。

圖4 濕敏電阻使用電路
濕敏電阻相對不同環境濕度(20% ~95% RH)的阻抗跨度很大(1 kΩ~1 MΩ),而不同型號的單片機IO口內阻存在差異,進而導致測量偏差;為了測量值更加接近于真實交流阻抗,將IO1與IO2設為強推挽輸出模式,以減小IO端口的輸出內阻。

表2 采樣時序
智能電風扇控制系統的軟件設計主要包括溫濕度的模擬量數據采集、硬件驅動、數碼管顯示等部分。軟件程序采用主程序調用子程序的方法,先進行子程序的修改測試,再進行綜合聯調。控制程序的流程如圖7所示,先對看門狗及系統進行初始化設置,再讀取ADC的值及溫度值,然后再掃描各輸入模塊,并作出數據顯示及風扇模式的輸出。

圖6 IO1 端口、IO2 端口的具體波形

圖7 系統流程圖
主函數main.c主要包括系統初始化函數調用和各模塊函數的調用,主程序4 ms調用一次全部的功能函數,這樣可以保證所有功能及時、有效地完成。主函數main函數采用時間片輪轉的調度策略,即主程序輪流調度各功能程序,并判斷其標志位,當滿足要求時執行該功能程序,這樣大大提高了程序的實時性。
主要包括特殊功能寄存器初始化、I/O端口初始化、系統寄存器初始化、定時器初始化設置、PWM寄存器初始化、UART寄存器初始化、AD寄存器初始化、系統寄存器參數初始化等操作。由Init_Sys和INIT_Gpio、INIT_Tim、INIT_Adc、PWMinit、Uart_Init、INIT_Set等7個程序組成。

表4 源程序各子集說明表

表5 系統初始化函數

表7 顯示數據處理
DISP_Img[DISP_CNT]為顯示狀態數據緩存寄存器。顯示數據處理程序DSIP_Func將要顯示的信息通過運算存入顯示寄存器DISP_Img[DISP_CNT]中,將當前需要顯示的數據存入此數組寄存器中,發送I2C命令將要顯示的內容發送給顯示驅動IC,再由數碼管和LED發光二極管顯示出來。這樣大大節省了硬件成本,簡化了電路。
BUZ_Tone 蜂鳴器驅動時間控制程序,每4 ms進入一次。程序首先判斷有無蜂鳴器開啟標志寄存器BUZ_Cnt,若有,同時BUZ_ToneCnt增加一次,以控制蜂鳴器的開啟時間。當Buzzer_buf中的值不小于所設置的時間時,關閉關閉蜂鳴器標志位b_out_buz,停止鳴叫;當BUZ_Cnt位為0,沒有蜂鳴器啟動時,蜂鳴器IO口關閉。
當熱釋電人體感應模塊感應到人體后,模塊輸出高電平,經過三極管反向后,變為低電平,控制芯片通過識別該電平狀態以判斷是否有人。
軟件在電腦上完成仿真后,將代碼燒錄在MCU中。硬件在通過8 kV靜電干擾、1 kV雷擊浪涌和4 kV EFT測試后,沒有死機、跑飛,輸入、輸出無誤動作。
本文利用賽元SC92F7422單片機為控制核心,利用溫濕度傳感器采集環境的溫度和濕度,利人體感應傳感器檢測人體,數碼管顯示智能電風扇的運行參數,按鍵和紅外遙控器可以調整電風扇的功能,加強了人機交互。風扇可根據用戶模式及當前溫濕度情況做出智能判斷。本文對智能電風扇進行了硬件電路設計和軟件程序設計,通過運行測試,系統穩定可靠,滿足要求。

圖8 顯示運行流程圖