藍牙智能小車教程:紅外遙控器使用

說起遙控器,大家可能最先想到的是電視和空調的遙控器,這些家電的遙控器一般是紅外線遙控的,在使用的時候需要對準控制的設備才有能比較靈敏地控制,使用起來不是特別方便。我們今天就來看一下紅外遙控器是怎麼實現控制的。

紅外遙控器和接收頭

紅外遙控器拆解圖

紅外遙控原理:

紅外遙控的發射電路是採用紅外發光二極管來發出經過調製的紅外光波;紅外接收電路由紅外接收二極管、三極管或硅光電池組成,它們將紅外發射器發射的紅外光轉換為相應的電信號,再送後置放大器。

發射機一般由指令鍵、指令編碼系統、調製電路、驅動電路、發射電路等幾部分組成。當按下指令鍵或推動操作杆時,指令編碼電路產生所需的指令編碼信號,指令編碼信號對載波進行調製,再由驅動電路進行功率放大後由發射電路向外發射經調製定的指令編碼信號。

接收電路一般由接收電路、放大電路、調製電路、指令譯碼電路、驅動電路、執行電路(機構)等幾部分組成。接收電路將發射器發出的已調製的編碼指令信號接收下來,並進行放大後送解調電路,解調電路將已調製的指令編碼信號解調出來,即還原為編碼信號。指令譯碼器將編碼指令信號進行譯碼,最後由驅動電路來驅動執行電路實現各種指令的操作控制。

紅外編碼原理

從紅外遙控的原理我們知道要把紅外遙控器利用起來,其主要在於將接收到的編碼指令信號進行譯碼,得到的譯碼再去匹配相應的執行動作。

當我們在遙控器上每按下一個鍵,遙控器上的紅外發射頭都會發出一個32位的編碼(32位編碼分成4組8位二進制編碼,以脈寬為0.565ms、間隔0.56ms、週期為1.125ms的組合表示二進制的“0”;以脈寬為0.565ms、間隔1.685ms、週期為2.25ms的組合表示二進制的“1”。前16位為用戶碼和用戶反碼,後16位為數據碼和數據反碼,用戶碼錶示遙控器類型,用於區別不同的遙控器。數據碼錶示按鍵編碼,不同的鍵對應不同的編碼。後16位為8位的操作碼和8位的操作反碼,用於核對數據是否接收準確。根據紅外編碼的格式,發送數據前需要先發送9ms的起始碼和4.5ms的結果碼。所以紅外遙控器發送紅外信號時,在低電平處發送38kHz紅外信號,高電平處則不發送紅外信號。

紅外遙控發送流程圖(來源電子工程世界)

需要檢測電平變化的時間我們想到單片機的外部中斷,設置外部中斷為低電平觸發,進入中斷後開始計時,通過比較高電平的脈寬來判斷到底是前導碼,還是“0”或“1”。設置P3.2口為下降沿觸發,然後中斷允許,進入主循環。一旦P3.2口有低電平的跳變即進入中斷程序。在中斷程序中,首先判斷是否上升沿。若是,則上升沿標誌置1,並記錄上升沿時刻;否則,說明是下降沿,再判斷上升沿標誌是否置1。若是,說明已有上升沿,記錄下降沿時刻,並計算脈寬(脈寬=下降沿時刻—上升沿時刻);否則,說明這是干擾信號,直接返回。下一步,判斷脈寬的大小。若是起始碼,則起始碼標誌置1,記數值n清0。否則,判斷起始碼標誌是否置1,若是,判斷是“0”還是“1”,並保存,n加1,判斷n是否大於或等於32,是則將起始碼標誌和記數值n清0,保存32位數據,返回;否則直接返回。

紅外接收流程圖(圖片來源電子工程世界)

程序設計完成,燒錄到小車試試。

能夠正常識別按鍵碼

小車整體佈局

今天的藍牙智能小車教程,紅外遙控器使用教程就分享到這裡,後續會持續更新,下一期我們一起學習通過紅外遙控器控制小車運行。想學的同學們趕緊關注我哦!

科技改變生活,關注搞搞單片機,瞭解更多單片機知識,一起玩轉單片機。