基于單片機(jī)的紅外發(fā)射器遙控彩燈_第1頁
基于單片機(jī)的紅外發(fā)射器遙控彩燈_第2頁
基于單片機(jī)的紅外發(fā)射器遙控彩燈_第3頁
基于單片機(jī)的紅外發(fā)射器遙控彩燈_第4頁
基于單片機(jī)的紅外發(fā)射器遙控彩燈_第5頁
已閱讀5頁,還剩5頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

1、哈爾濱理工大學(xué)學(xué) 年 設(shè) 計 i 姓 名: 谷允捷 班 級: 通信13-1 學(xué) 號: 1305030105 評閱教師: 成 績: 說 明: 2016年 1月 8日內(nèi) 容: 學(xué)習(xí)使用arduino系統(tǒng),使用atmega328p組成的arduino系統(tǒng)實(shí)現(xiàn)三色led燈的變色,繼電器通斷,蜂鳴器鳴響,溫度采集,光強(qiáng)采集等動作,對實(shí)習(xí)成績欲獲優(yōu)秀者,使系統(tǒng)實(shí)現(xiàn)紅外遙控編碼,驅(qū)動紅外二極管,控制任意色led燈的變色開關(guān)等動作。成績標(biāo)準(zhǔn): 1.優(yōu)秀:(1)報告完整清晰。 (2)能夠良好的完成對紅外任意色led燈的變 色開關(guān)等多種動作。 (3)答辯考核回答基本正確。 2.良好:(1)報告基本完整。 (2)能

2、夠基本完成對紅外任意色led燈的控制。 (3)答辯考核回答部分正確。 3.中、及格:(1)報告基本完整。 (2)能夠基本將arduino系統(tǒng)中三個以上 功能配合運(yùn)行。 (3)答辯考核回答部分正確。 4.不及格:(1)多次無假條缺勤。 (2)無報告,不參加考核。 (3)報告及實(shí)驗(yàn)演示效果嚴(yán)重雷同。 (4)實(shí)驗(yàn)無現(xiàn)象。(5) 答辯考核不合格。 設(shè)計要求1.設(shè)計目的運(yùn)用arduino微云電子開發(fā)板進(jìn)行紅外遙控,代替彩燈遙控器按鍵功能,能夠?qū)崿F(xiàn)遙控器上彩燈的切換以及燈的亮滅。2.設(shè)計背景本次學(xué)年設(shè)計是基于arduino的紅外模塊的應(yīng)用之一,紅外遙控是一種無線、非接觸控制技術(shù),具有抗干擾能力強(qiáng),信息傳輸

3、可靠,功耗低,成本低,易實(shí)現(xiàn)等顯著優(yōu)點(diǎn),被諸多電子設(shè)備特別是家用電器廣泛采用,并越來越多的應(yīng)用到計算機(jī)系統(tǒng)中。發(fā)射機(jī)一般由指令鍵(或操作桿)、指令編碼系統(tǒng)、調(diào)制電路、驅(qū)動電路、發(fā)射電路等幾部分組成。當(dāng)按下指令鍵或推動操作桿時,指令編碼電路產(chǎn)生所需的指令編碼信號,指令編碼信號對載波進(jìn)行調(diào)制,再由驅(qū)動電路進(jìn)行功率放大后由發(fā)射電路向外發(fā)射經(jīng)調(diào)制定的指令編碼信號。3. 設(shè)計內(nèi)容 對arduino進(jìn)行較為全面的了解,先進(jìn)行簡單模塊的開發(fā)利用,了解開發(fā)板的基本硬件架構(gòu),以及開發(fā)板的各個硬件元件之間的主從或者通信的關(guān)系。從而通過對開發(fā)板的較高級應(yīng)用打下堅實(shí)的基礎(chǔ)。全面了解紅外接收,紅外發(fā)射模塊,并使用單片機(jī)

4、代替遙控器,對彩燈進(jìn)行遙控。將課堂上學(xué)到的理論知識與實(shí)際應(yīng)用結(jié)合起來,對電子電路、 電子元器件、印制電路板等方面的知識進(jìn)一步加深認(rèn)識,同時在軟件編程、排錯調(diào)試、 相關(guān)儀器設(shè)備的使用技能等方面得到較全面的鍛煉和提高。在使用時應(yīng)該注意以下幾點(diǎn),對于 arduino 部分的應(yīng)用, 如果需要下載程序或者進(jìn)行串口監(jiān)控的時候, 需 要將 2*20 端子排的 rxu-txa、 txu-rxa 使用跳線帽連接起來,即使用 arduino 的 ide 進(jìn)行下載程序之前, 需要將 rxu-txa、 txu-rxa 四個排針端子使用跳線帽 短路連接起來, 然后使用手機(jī)線連接開發(fā)板和電腦, 同時電腦需要安裝 ch34

5、0g 的驅(qū)動, 即常見的 arduino 串口驅(qū)動。4.設(shè)計器材 pc、keil 軟件、st-link 驅(qū)動程序、單片機(jī)學(xué)習(xí)板、遙控?zé)簦b控?zé)暨b控器、數(shù)字示 波器、st-link 仿真器、電源線、杜邦線若干 遙控?zé)襞c遙控器配合使用,能夠?qū)崿F(xiàn)燈亮、燈滅、亮度增強(qiáng)、亮度減弱、r(紅光) 、g(綠光) 、b(藍(lán)光) 、w(白光) 、flash(閃爍) 、smooth(漸變) ,以及各種顏色 光的功能。三關(guān)鍵程序及其注釋#define add 0x00 /宏定義,用戶碼是不變的,所以可以在宏定義中將他定義為addint ir_led = 2; /接arduino 2號引腳 ,2號引腳是學(xué)習(xí)板連接紅外發(fā)

6、射貼片的引腳void setup() 初始化設(shè)置,本函數(shù)只執(zhí)行一次 pinmode(ir_led, output);將2號引腳寫成輸出形式 void loop() uint8_t dat,temp=0xc8; 定義八位存儲變量,dat與temp均為八位2進(jìn)制變量,注意可在前面加上0x表示 16進(jìn)制書寫形式 send38khz square (280,1);/發(fā)送9ms的起始碼 ,本起始碼是38khz載波,持續(xù)時間是9ms,通過示波器 調(diào)整,9ms需要連續(xù)280次發(fā)送。 send38khz square (140,0);/發(fā)送4.5ms的結(jié)果碼,持續(xù)時間是4.5ms,通過示波器 調(diào)整,4.5ms

7、需要連續(xù)140次發(fā)送。 sendcode(add);/用戶識別碼這里調(diào)用了 ir_sendcode(uint8_t x)函數(shù) dat=add; sendcode(dat);/用戶識別碼反碼,該碼是對用戶碼的取反 sendcode(temp);/操作碼 dat=temp; sendcode(dat);/操作碼反碼 send38khz square (21,1);/發(fā)送結(jié)束碼 持續(xù)時間為560ms的載波信號 delay(200); void send38khzsquare(int x,int y) /產(chǎn)生38khz紅外脈沖 for(int i=0;ix;i+)/通過示波器調(diào)整發(fā)現(xiàn)該函數(shù)運(yùn)行15次循

8、環(huán)時間為386us,也就是1次為25.7ms這樣,也就實(shí)現(xiàn)了38khz碼的發(fā)送。 if(y=1) digitalwrite(ir_led,1); delaymicroseconds(9); digitalwrite(ir_led,0); delaymicroseconds(9); /當(dāng)輸出為1時,根據(jù)nec協(xié)議要發(fā)送載波,38khz,經(jīng)過示波器連續(xù)調(diào)整發(fā)現(xiàn)調(diào)整延時時間為9時為實(shí)現(xiàn)26us最佳時間。同樣,該值可以取10,11,甚至12,但大于11時表見極其不靈敏。 else digitalwrite(ir_led,0); delaymicroseconds(20); 當(dāng)輸出為0時,根據(jù)nec協(xié)議

9、要發(fā)送載波,38khz,經(jīng)過示波器連續(xù)調(diào)整發(fā)現(xiàn)調(diào)整延時時間為20時為實(shí)現(xiàn)26us最佳時間。同樣,該值可以取21,22.但大于23后變現(xiàn)極其不靈敏。 void sendcode(uint8_t x) /發(fā)送8位字符函數(shù),通過此函數(shù)發(fā)送用戶碼,操作碼及其反碼。 for(int i=0;i8;i+)/ 8次循環(huán)逐位比較 if(x&0x80)=0x00)判斷每位數(shù)字是否為0 ,當(dāng)是0時進(jìn)行以下操作 send38khz square (23,1);/560ms載波 send38khz square (21,0);/560ms低電平 這兩句表示發(fā)送0碼, else send38khz square (23

10、,1);/560ms載波 send38khz square (64,0);/1680ms低電平 這兩句表示發(fā)送1碼。 x=x,高8位用戶識別碼(9ms-18ms), 8 位操作碼(9ms18ms)和這 8 位操作碼反碼( 9ms18ms),共 32 位的“0”、“1” 遙控碼組成,因此, 只要了解遙控器編碼標(biāo)準(zhǔn), 就可接收、 解調(diào)紅外信號, 然后編寫程序由單片機(jī)解碼。編碼采用脈時調(diào)制方式(ptm)。遙控碼的“0”和“1”二進(jìn)制“0”:用脈寬為0.56ms,間隔為0.56ms,周期為 1.12ms 的組合表示; 二進(jìn)制的“1”:以脈寬為 0.56、間隔 1.68ms、周期為 2.24ms 的組合

11、表示。接收器輸出的信號與發(fā)射器的信號正好反向。 上述“0” 和“1” 組成的 32 位二進(jìn)制碼經(jīng) 38khz 的載頻進(jìn)行二次調(diào)制以提高發(fā)射效率,達(dá)到降低電源功耗的目的。然后再通過紅外發(fā)射二極管產(chǎn)生紅外線向空間發(fā)射。 (二)38khz方波生成方式1.計算周期38khz方波是通過延時函數(shù)構(gòu)造出來的,而并不是由單片機(jī)的定時器分頻出來的,這點(diǎn)需要注意,在一般arduino板上,紅外led貼片會被鑲嵌在第三腳上,但是在我們的學(xué)習(xí)板上,它鑲在2號腳,而2號腳是不帶pwm輸出引腳,也就是說我們?nèi)绶ㄍㄟ^設(shè)定定時器的方法來進(jìn)行在2號腳輸出方波。只能通過延時函數(shù)來構(gòu)造。通過計算38khz方波周期是26us,則高低

12、電平時間各位13us,則在延時函數(shù)中,我們把2號引腳置高一段時間,再置低一段時間,且都是微秒級別則會構(gòu)成方波,但需要注意的是,不是簡簡單單的將引腳置高延時13微秒,再講引腳置低延時13微秒。任何計算機(jī)在運(yùn)行過程中都會有一定誤差,單片機(jī)在低電平到高電平跳變需要一定時間,執(zhí)行每一條語句也需要一定時間,比如,學(xué)習(xí)板上12mhz晶振,則每條語句執(zhí)行所需要的時間是1us, 這就說明在設(shè)定延時函數(shù)時要進(jìn)行微調(diào)。在此,我們選擇delaymicroseconds(9)或10,11,均可作為能使燈接收到信號邏輯“1”的最佳跳變延時時間。同樣,邏輯“0”電平不需要跳變,我們可以選擇delaymicrosecond

13、s(20),21,22,作為能使燈接收到信號的最佳延時時間。2連接方式通過循環(huán)函數(shù)可以將一個個高低電平連接起來,這樣就構(gòu)成了連續(xù)不斷的38khz方波,560的高電平大約由21個高電平構(gòu)成,所以循環(huán)次數(shù)可以寫入21,22,或23,再發(fā)送22次低電平這構(gòu)成了邏輯“0”,同樣,先發(fā)送21個高電平再發(fā)送64個低電平可構(gòu)成邏輯“0”。3字符發(fā)送方式 字符可以通過二進(jìn)制的方式輸入,但是在此我們?yōu)榱吮苊鈺鴮戝e誤,我們可以通過把字符寫成0x16進(jìn)制形式,而且根據(jù)所給資料,我們可知用戶碼是00000000而用戶反碼是11111111,所以在開始進(jìn)行宏定義是,add=0x00,所以在改變發(fā)射帶碼時,我們只需要改變

14、用戶碼就可以了五具體使用到的芯片: (1)ch340通信硬件電路低端的單片機(jī)是不支持 usb 的, 只有串口, 所以 ch340 芯片的作用就是連接了單片機(jī)和上位機(jī), 以完成通信。usb 接口上的 dm 和 dp 是通信的兩個 接 口。uart-usb-dp 連 接 到 usb 總 線 的 d+ 數(shù) 據(jù) 線, uart-usb-dm 連接到 usb 總線的 d-數(shù)據(jù)線,它們是 ch340 芯片(usb 轉(zhuǎn)串口芯片) 的輸入。 (2)電源供電電路asm1117usb串口提供5v電源,asm1117 是用于交換式電源 5v 至 3.3v 的線性穩(wěn)壓器。通過此電路可以將 5v 的電源電壓轉(zhuǎn)換成 3.

15、3v。在本電路中使用3.3v的電壓對stm8 vdd引腳供電,并且在以后使用的各種芯片上也都是有3.3v電壓供電的(3)反相器電路uln2003auln2003a是一個7路反向器電路,即當(dāng)輸入端為高電平時uln2003a輸出端為低電平,當(dāng)輸入端為低電平時uln2003a輸出端為高電平。在本電路中,我們用到的芯片被焊接在u7處,通過protel99觀察pcb板結(jié)構(gòu),我們可以了解到,紅外燈電路是通過芯片引腳連接到5腳上。也就通過該芯片的12腳輸出到紅外發(fā)射燈處。(4)arduino atmga328芯片本次設(shè)計使用的芯片為atmga328,3.3v供電, 主頻12mhz,主要用來提供ptm調(diào)制方波

16、,或者使用延時函數(shù)提供方波。本次試驗(yàn)把2腳作為輸出引腳,也就是方波信號由2引腳輸出。其它電路請參照電路原理圖六實(shí)習(xí)心得1這次課程設(shè)計中,我首次接觸到arduino單片機(jī),并能通過芯片功能圖準(zhǔn)確地判斷哪個引腳可以執(zhí)行那個功能, 有些引腳的輸出功能是不相同的, 比如說3,11,9,5等可以帶有定時器輸出功能,然而其他引腳多數(shù)不具備這個功能,所以當(dāng)需要用到這些功能時,一定要注意把這些引腳連接到應(yīng)該的位置上。2學(xué)會了如何通過pcb電氣連接看各個引腳的位置,比如說,紅外引腳連接在了2號腳上,并且通過反相器輸出。閃燈引腳是13號,可以根據(jù)pcb圖看出他的位置具體在哪里。3.學(xué)會了區(qū)分?jǐn)?shù)字引腳和模擬引腳,有

17、些引腳的功能可以通過digitalwrite來書寫,而有些卻可以通過analongwrite來書寫,前者只能把引腳置高置低,而后者卻可以把它按照模擬引腳去寫,使電壓呈現(xiàn)連續(xù)變化,用于做呼吸燈等實(shí)驗(yàn)。4.學(xué)會一種通信協(xié)議nec協(xié)議,它是建立在38khz方波為載波的情況下傳輸代碼的方式,采用調(diào)制方式為ptm調(diào)制而非pwm調(diào)制,且發(fā)送過程一定要遵守起始碼,用戶碼,用戶反碼,操作碼,操作反碼,結(jié)束碼的方式進(jìn)行書寫,以38khz的方式輸出是為了提高發(fā)射功率5.學(xué)會了如何使用protel軟件對電路圖進(jìn)行處理6.認(rèn)識到了理論與實(shí)際誤差之間的關(guān)系,理論上延時13ms,然而在實(shí)際中必須要考慮機(jī)器周期,考慮電平上

18、升時間,同時要考慮芯片溫度偏移因數(shù)導(dǎo)致時間誤差,而且使用時間越長,誤差越大,越容易出現(xiàn)時間上的縮進(jìn)或增長。7學(xué)會了紅外解碼。雖然在本次設(shè)計中沒有涉及到解碼程序部分,但是在燈內(nèi)儲存了一個紅外接收管,和一個專門用來處理接受信息用的芯片,它將收到的信息嗎譯碼即可得到相應(yīng)的燈光顏色。 附錄按鍵上的所有密碼:a0 10100000 1,1變亮20 00100000 1,2變暗60 01100000 1,3offe0 11100000 1,4 on90 10010000 2,1變紅50 01010000 2,3藍(lán)色10 00010000 2,2 綠d0 11010000 2,4白色b0 10110000 3,1

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論