国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

基于STM32的軟件載波紅外學(xué)習(xí)系統(tǒng)設(shè)計

2018-07-31 01:33張賽劉達(dá)姚國棟
電氣自動化 2018年2期
關(guān)鍵詞:數(shù)組低電平高電平

張賽, 劉達(dá), 姚國棟

(1.北京航空航天大學(xué) 機(jī)械工程及自動化學(xué)院, 北京 100191; 2. 中國科學(xué)院電工研究所, 北京 100080)

0 引 言

紅外遙控是家用電器通信控制中應(yīng)用最廣泛的方式,電視機(jī)、空調(diào)、風(fēng)扇等家用電器均采用紅外遙控形式進(jìn)行控制,具有結(jié)構(gòu)簡單、體積小、功耗小、功能強、成本低等特點,隨著家電數(shù)目日益增多,不同家電的遙控器編碼格式不同[1],常用的紅外編碼協(xié)議有NEC協(xié)議、Philips協(xié)議、ITT協(xié)議等[2],這些協(xié)議的不同阻礙了智能家居控制系統(tǒng)的研究與發(fā)展。

為解決此問題,促進(jìn)智能家居智能化的發(fā)展,本文設(shè)計一種基于低功耗STM32的紅外學(xué)習(xí)系統(tǒng),將不同家電不同編碼的紅外控制信號進(jìn)行學(xué)習(xí),存儲在控制系統(tǒng)Flash中,達(dá)到通過智能終端控制家電設(shè)備的目的。

1 紅外學(xué)習(xí)系統(tǒng)的原理

從控制器原理出發(fā),紅外學(xué)習(xí)方式有兩種:固定編碼式學(xué)習(xí)和波形復(fù)制學(xué)習(xí)[3]。固定編碼式學(xué)習(xí)主要是搜集各種已知類型的紅外信號,預(yù)先存儲在控制系統(tǒng)中。這種學(xué)習(xí)方式的缺點是對于未知紅外信息無效;波形復(fù)制學(xué)習(xí)可以完全不用考慮設(shè)備及其紅外碼信息,專注于波形的脈沖序列記錄與重現(xiàn),不受遙控編碼協(xié)議的限制[4],只需要記錄紅外信號高低電平的時間,存儲在Flash中。與固定式編碼學(xué)習(xí)相比,這種學(xué)習(xí)方式適用性更廣。本文即采用波形復(fù)制的思路進(jìn)行系統(tǒng)設(shè)計。

波形復(fù)制式學(xué)習(xí)方式控制系統(tǒng)的功能主要分為學(xué)習(xí)和發(fā)送兩部分。在學(xué)習(xí)過程中,控制系統(tǒng)接收來自設(shè)備遙控器發(fā)送過來的紅外信號。接收電路收到信號后經(jīng)過放大并解調(diào)出TTL電平信號,處理器對信號進(jìn)行處理并存儲在內(nèi)部Flash中。當(dāng)需要發(fā)射時,讀取相應(yīng)Flash存儲區(qū)的數(shù)據(jù),調(diào)制到38 kHz載波信號,通過放大電路驅(qū)動紅外發(fā)射二極管發(fā)射紅外信號。完成紅外信號的學(xué)習(xí)與發(fā)射,從而可以實現(xiàn)控制系統(tǒng)學(xué)習(xí)多種設(shè)備遙控器紅外信號。

2 紅外學(xué)習(xí)系統(tǒng)的硬件設(shè)計

紅外學(xué)習(xí)系統(tǒng)的系統(tǒng)結(jié)構(gòu)如圖1所示,主要由以下五部分組成:STM32F0最小系統(tǒng)、紅外接收電路、紅外發(fā)送電路、電源模塊以及蜂鳴器和LED指示。Flash是STM32內(nèi)置的高性能閃存,可提供10萬次以上的擦寫次數(shù)[5],在紅外學(xué)習(xí)系統(tǒng)中對紅外脈沖時間進(jìn)行存儲和讀取。此次設(shè)計采用的STM32F0內(nèi)置32 kB的容量,經(jīng)實驗測試不同遙控器紅外協(xié)議紅外信號的時間長度不同,其紅外信號高低電平時間數(shù)組長度小于300,因此設(shè)定臨時數(shù)組長度300,F(xiàn)lash半字寫入,理論計算可得最大存儲128個紅外信號。紅外接收電路:一體化接收頭將輸出信號進(jìn)行檢波、整形、放大、解調(diào),輸出信號直接為TTL高低電平。紅外發(fā)射電路:軟件調(diào)制38 kHz載波,經(jīng)三極管放大,驅(qū)動紅外發(fā)光二極管。

圖1 紅外學(xué)習(xí)系統(tǒng)結(jié)構(gòu)圖

3 紅外學(xué)習(xí)系統(tǒng)的軟件設(shè)計

系統(tǒng)采用定時器中斷與MCU輪詢方式運行。串口無輸入數(shù)據(jù)時,控制系統(tǒng)指示燈規(guī)律閃爍,等待指令。串口接收到相應(yīng)數(shù)據(jù)時,系統(tǒng)進(jìn)入學(xué)習(xí)模式或者發(fā)送模式。調(diào)用相應(yīng)的程序完成紅外學(xué)習(xí)或者紅外發(fā)送任務(wù),總體流程如圖2所示。

圖2 主程序流程圖

3.1 紅外信號編碼結(jié)構(gòu)分析

盡管不同設(shè)備不同協(xié)議的紅外信號不同,但其有相同的編碼類型。紅外信號編碼脈沖由起始碼、系統(tǒng)碼、系統(tǒng)反碼、功能碼、功能反碼組成[6],如圖3所示,波形高電平表示發(fā)射紅外載波,波形低電平表示不發(fā)射紅外載波信號,以發(fā)射紅外載波的不同占空比表示數(shù)據(jù)“0”和“1”,如圖4所示。以NEC TC9012紅外協(xié)議為例,位0為0.56 ms高電平,0.565 ms低電平,位1為0.56 ms高電平,1.69 ms低電平。

圖4 紅外數(shù)據(jù)位定義

圖3 紅外數(shù)據(jù)格式

通過分析大量不同類型的紅外遙控器波形,發(fā)現(xiàn)不同的遙控器紅外信號區(qū)別在于引導(dǎo)碼的高低電平時間不同,位0與位1的定義不同。這些編碼都是經(jīng)38 kHz載波調(diào)制發(fā)射,因此可以直接考慮紅外信號的高低電平寬度,不考慮其編碼形式。

3.2 編碼學(xué)習(xí)軟件分析

紅外發(fā)射脈沖與紅外接收頭輸出的脈沖高低電平相反。如圖5所示,在設(shè)計中采用定時器中斷捕獲接收信號的上升沿和下降沿,捕獲之后進(jìn)入中斷處理函數(shù),分別對高低電平時間進(jìn)行測量,將捕獲的結(jié)果暫存到臨時數(shù)組中,進(jìn)行壓縮處理后寫入Flash相應(yīng)存儲區(qū)。

圖5 紅外發(fā)射與接收脈沖信號

初始設(shè)置為定時器下降沿捕獲,當(dāng)系統(tǒng)進(jìn)入紅外輸入下降沿捕獲中斷后,獲取計數(shù)器數(shù)值temp[2i],再次進(jìn)入定時器上升沿捕獲中斷獲取計數(shù)器數(shù)值temp[2i+1],考慮到計數(shù)器可能溢出,因此其差值temp[m+1]-temp[m]或0xFFFF-temp[m]+temp[m+1]為高低電平的計數(shù)差值,利用定時器頻率求出高低電平時間,當(dāng)不再進(jìn)入中斷時,完成學(xué)習(xí)過程,其程序流程如圖6所示。

圖6 定時器中斷紅外學(xué)習(xí)過程

3.3 軟件載波紅外信號發(fā)射

通過系統(tǒng)定時器產(chǎn)生38 kHz占空比為1∶3的載波頻率,用存儲在Flash中的紅外高低電平時間控制定時器的開啟或關(guān)閉時長,實現(xiàn)調(diào)制過程。具體實現(xiàn)過程為:讀取相應(yīng)Flash存儲的數(shù)據(jù)到發(fā)射數(shù)組IR_OUT[],由圖5中接收的脈沖信號可以得知,發(fā)射數(shù)組的偶數(shù)位為紅外信號發(fā)射高電平時間,發(fā)射數(shù)組的奇數(shù)位為紅外發(fā)射信號低電平時間,若為高電平則開啟定時器,低電平則關(guān)閉定時器。這種方式不用考慮紅外編碼的方式,只考慮紅外高低電平寬度,進(jìn)行調(diào)制發(fā)射。調(diào)制的信號經(jīng)過三極管放大控制紅外發(fā)射二極管實現(xiàn)信號的發(fā)射,主要程序代碼如下[7]:

Flash_Read(ADDR_FLASH_PAGE_24,&IR_OUT[0],300); //讀取Falsh數(shù)據(jù)

if(IR_OUT[0]!=0)

{

for(int i=0;i<300;i++)

{

if(IR_OUT[i]!=0)

{

if(i%2==0)

{

TIM_Cmd(TIM2, ENABLE); //使能定時器

delay_us(IR_OUT[i]*10); //延時μs時間

}

else

{

TIM_Cmd(TIM2,DISABLE); //禁止定時器

delay_us(IR_OUT[i]*10);

}

}

}

}

這樣以軟件的形式實現(xiàn)載波,有效實現(xiàn)了紅外信號的發(fā)射,簡化了設(shè)計,降低了硬件復(fù)雜度。

3.4 通信協(xié)議

智能終端與紅外學(xué)習(xí)系統(tǒng)采用串口通信,串口配置為:波特率9 600 bps,數(shù)據(jù)位8位,一個停止位,無奇偶校驗位,定義接收命令格式如表1所示。

表1 通信命令格式

字頭為命令識別,固定字節(jié)。模式0x53為紅外發(fā)送模式,0x4C為紅外學(xué)習(xí)模式。位置為指定要存儲或者讀取的數(shù)據(jù)在Flash中的位置。例如串口發(fā)送指令41 4C 00 00 45,表示學(xué)習(xí)模式,將學(xué)習(xí)的紅外信號存儲在Flash定義存儲區(qū)的第0個位置。串口發(fā)送指令41 53 00 02 45,表示從Flash定義存儲區(qū)的第2個位置讀取數(shù)組數(shù)值,進(jìn)而完成調(diào)制發(fā)射。

4 試驗結(jié)果及分析

紅外學(xué)習(xí)系統(tǒng)功能是否有效取決于學(xué)習(xí)和還原2個過程的正確,即學(xué)習(xí)過程能夠正確學(xué)習(xí)紅外信號生成數(shù)組存儲在Flash中,發(fā)送過程能無誤差讀出Flash中的數(shù)組,通過控制定時器中斷軟件載波方式實現(xiàn)紅外信號發(fā)送。試驗以格蘭仕空調(diào)遙控器“開”按鍵作為測試,分別試驗紅外學(xué)習(xí)與紅外發(fā)射功能。

4.1 紅外學(xué)習(xí)試驗

串口發(fā)送指令41 4C 00 00 45,進(jìn)入紅外學(xué)習(xí)模式,按下按鍵,獲取的紅外信號高低電平脈沖計數(shù)器差值存儲在臨時數(shù)組中,如圖7所示。由于捕獲定時器分頻系數(shù)為480,定時器頻率為0.1 MHz,即捕獲精度為10 μs,臨時數(shù)組值乘以10即為時間μs。可以得出該紅外信號的起始碼為高電平3.61 ms,低電平1.59 ms。位0為550 μs低電平,500 μs高電平,位1為550 μs低電平,1 180 μs高電平。通過Flash寫入函數(shù)將臨時數(shù)組值以半字寫入Flash存儲區(qū)中,存儲結(jié)果如圖8所示,數(shù)組中的每個值占兩個地址。

圖7 臨時數(shù)組捕獲值

圖8 Flash 存儲結(jié)果

學(xué)習(xí)系統(tǒng)接收到完整的紅外波形,波形如圖9所示,放大波形圖,如圖10所示,脈沖信號較為清晰直觀,利用示波器光標(biāo)測量紅外接收端起始碼的低電平時間Δt為3.600 ms,與紅外捕獲臨時數(shù)組第一個數(shù)值相等,證明捕獲紅外高低電平時間正確,完成紅外信號學(xué)習(xí)試驗。

圖9 紅外接收波形

圖10 紅外接收波形放大圖

4.2 紅外發(fā)射試驗

圖11 紅外發(fā)射數(shù)組圖

將學(xué)習(xí)的遙控器“開”按鍵紅外信號讀取并進(jìn)行發(fā)射。串口發(fā)送指令41 53 00 00 45,讀取Flash定義存儲區(qū)第0個位置數(shù)組值,讀取的發(fā)射數(shù)組如圖11所示,與圖7中捕獲的臨時數(shù)組值完全相同,讀取完整無誤,再通過軟件載波的形式經(jīng)三極管放大電路控制紅外二極管發(fā)送紅外信號,試驗測試系統(tǒng)紅外發(fā)射距離達(dá)到8 m,用一體化紅外接收頭獲取紅外發(fā)射二極管發(fā)送的紅外信號,如圖12所示,對比紅外發(fā)射波形與紅外接收波形,可知兩種脈沖編碼完全一致,完成紅外信號發(fā)射試驗。

圖12 紅外發(fā)射波形

5 結(jié)束語

本文設(shè)計了基于STM32F0的紅外控制系統(tǒng),介紹了系統(tǒng)的整體框架,硬件組成及軟件流程,經(jīng)過反復(fù)測試,系統(tǒng)可以有效學(xué)習(xí)不同家電不同協(xié)議的紅外信號,對各種電器進(jìn)行控制,具有很好的通用性,為智能家居提供一種可行的解決方案。

猜你喜歡
數(shù)組低電平高電平
JAVA稀疏矩陣算法
一種基于FPGA的PWM防錯輸出控制電路
鐵道車輛高/低電平信號智能發(fā)生器設(shè)計
JAVA玩轉(zhuǎn)數(shù)學(xué)之二維數(shù)組排序
TS-03C全固態(tài)PDM中波發(fā)射機(jī)開關(guān)機(jī)控制電路原理及故障分析
2017款凱迪拉克2.8L/3.0L/3.2L/3.6L車型低電平參考電壓總線電路圖
Excel數(shù)組公式在林業(yè)多條件求和中的應(yīng)用
DM 50KW中波廣播發(fā)射機(jī)欠推動故障分析
PDM 1kW中波廣播發(fā)射機(jī)保護(hù)電路分析
15-MeV電子直線加速器的低電平系統(tǒng)