紅外線是在可見范圍內(nèi)遠(yuǎn)程控制設(shè)備最便宜的方法,具有抗干擾能力強(qiáng)、電路簡單、容易編碼/解碼、功耗小、成本低等特點(diǎn),我們生活中幾乎所有的音頻和視頻等家電設(shè)備都可以通過這種方式進(jìn)行控制,由于紅外遙控的廣泛使用,相應(yīng)的元器件也就相當(dāng)便宜和容易獲得,從而被廣大的電子產(chǎn)品的業(yè)余愛好者、創(chuàng)客用來控制自己的項(xiàng)目,在嵌入式系統(tǒng)的學(xué)習(xí)和實(shí)戰(zhàn)項(xiàng)目中也被廣泛采用。

紅外遙控器

紅外接收頭
1. 工作原理
紅外發(fā)光
紅外光實(shí)際上是具有特定顏色的普通光,波長在760~1500納米范圍,低于我們的可見光譜,所以肉眼看不到這種顏色,這也是為什么我們選用紅外光用于遠(yuǎn)程控制的原因之一,我們想使用它,但我們對看到它不感興趣;另一個(gè)原因是紅外發(fā)光二極管非常容易制造,非常便宜。雖然我們?nèi)祟惪床坏竭b控器發(fā)出的紅外光,但這并不意味著我們不能讓它變得可見。攝像機(jī)或數(shù)碼相機(jī)可以“看到”紅外光,正如你在這張圖片中看到的。
如今,即使是最便宜的手機(jī)也內(nèi)置了攝像頭。只要把遙控器對準(zhǔn)這樣的相機(jī),按下任意一個(gè)按鈕,你就會(huì)看到LED閃爍。不幸的是,我們周圍有太多的紅外線光源 - 太陽是所有光源中最亮的,還有很多其它的光源,比如:燈泡、蠟燭、中央供暖系統(tǒng)等等,甚至我們的身體都會(huì)輻射紅外光。事實(shí)上,任何散發(fā)熱量的東西,就會(huì)散發(fā)紅外光。因此,我們必須采取一些預(yù)防措施,以確保這些紅外信息沒有錯(cuò)誤地傳遞到接收方 - 比如對我們要傳輸?shù)男畔⑦M(jìn)行“調(diào)制”。
調(diào)制
在載波頻率上調(diào)制信號是使我們的信號在噪聲中脫穎而出的一種方式,通過調(diào)制,我們使紅外光源以特定的頻率閃爍,紅外接收器也調(diào)到那個(gè)頻率,它就可以忽略其它頻率的干擾信息。就如同你可以通過眨眼的方式來吸引接收者的注意力,即使在明亮的白天,我們?nèi)祟愐矔?huì)注意到建筑工地閃爍的黃色燈光。
在上圖中,你可以看到一個(gè)調(diào)制信號驅(qū)動(dòng)左邊發(fā)射器的紅外LED,接收器將檢測到的信號輸出。
在串行通信中,我們通常說“標(biāo)記”和“空閑”。“空閑”是默認(rèn)信號,在發(fā)射機(jī)的情況下是關(guān)閉狀態(tài)。在“空閑”狀態(tài)下不會(huì)發(fā)光。在信號的“標(biāo)記”狀態(tài)下,紅外光脈沖以特定的頻率開啟和關(guān)閉。在30kHz和60kHz之間的載波頻率通常用于消費(fèi)電子產(chǎn)品,最常見的是38kHz, 采用占空比為1/3的方波。
在接收端,“空閑”通常由接收端高電平的輸出來表示。然后,“標(biāo)記”會(huì)自動(dòng)由一個(gè)低電平表示。
要注意,“標(biāo)記”和“空閑”不是我們想要傳輸?shù)?和0。“標(biāo)記”和“空閑”以及“1”和“0”之間的真正關(guān)系取決于所使用的協(xié)議。更多的信息可以在描述協(xié)議的頁面中找到。
紅外發(fā)射
紅外發(fā)射器一般是一個(gè)用電池供電的手持設(shè)備,它應(yīng)該消耗盡可能少的功率,并且紅外信號也應(yīng)該盡可能強(qiáng),以達(dá)到一個(gè)可接受的控制距離。最好它也應(yīng)該是防震的。用作紅外發(fā)射器的專用芯片有很多,這些芯片都支持其中的某些協(xié)議,隨著微控制器技術(shù)的發(fā)展、成本和功耗都大大降低,越來越多的紅外發(fā)射器使用微控制器來實(shí)現(xiàn),用起來更靈活,當(dāng)不按按鈕時(shí),它們處于極低功耗睡眠模式,幾乎沒有任何電流被消耗;處理器只有在按下一個(gè)按鍵時(shí)才會(huì)醒來發(fā)送適當(dāng)?shù)募t外命令。
這種手持設(shè)備很少使用石英晶體,因?yàn)榫w非常脆弱,一旦遙控器掉在地上就很容易折斷,所以多數(shù)都使用陶瓷諧振器(中心頻率為455KHz,通過12分頻以后得到接近38KHz的載波信號),它們可以承受更大的物理沖擊,即便頻率沒有那么精準(zhǔn)也不會(huì)影響紅外通信的效果。
流經(jīng)LED(或LED陣列)的電流可以從100mA到超過1A! 如果希望遙控的距離盡可能遠(yuǎn),LED的電流也必須盡可能高,這就需要我們在LED參數(shù)、電池壽命和最大控制距離之間進(jìn)行權(quán)衡。LED電流能達(dá)到這么高是因?yàn)轵?qū)動(dòng)LED的脈沖非常短,不過,LED內(nèi)部的平均功耗不應(yīng)該超過它們的最大值,且要確保不超過LED的最大峰值電流。將載波信號的脈沖/暫停比降低到1/3甚至1/4是很常見的。這降低了功率需求,或者可以增加通過LED的電流,而不會(huì)使其過熱,從而獲得更長的控制距離。所有這些參數(shù)都可以在LED的數(shù)據(jù)表中找到。

可以選用一個(gè)簡單的晶體管電路來驅(qū)動(dòng)LED,應(yīng)選擇具有適當(dāng)HFE和開關(guān)速度的晶體管。電阻的值可以用歐姆定律簡單地計(jì)算出來,一個(gè)紅外LED的標(biāo)稱電壓降約為1.1V。
上面的驅(qū)動(dòng)電路有一個(gè)缺點(diǎn) - 隨著電池電壓的下降,通過LED的電流也會(huì)減少,這將導(dǎo)致能夠達(dá)到的控制距離變短。
射極跟隨電路可以避免這種情況。兩個(gè)串聯(lián)的二極管將晶體管基極端的脈沖限制在1.2V,減去晶體管的基極-發(fā)射極電壓壓差0.6V,當(dāng)紅外發(fā)射機(jī)工作時(shí),發(fā)射極的電壓幅度恒定為0.6V。這個(gè)恒定的幅度通過一個(gè)恒定的電阻導(dǎo)致一個(gè)恒定大小的電流脈沖,與電池的電壓變化無關(guān), 只需要運(yùn)用歐姆定律就可以簡單地得出LED的電流。
紅外接收
市場上有許多不同的接收電路,選擇跟你當(dāng)前的載波頻率匹配的電路。
在上圖中,你可以看到這樣一個(gè)紅外接收器的典型框圖。接收到的紅外信號由圖左側(cè)的紅外接收二極管進(jìn)行光電變換得到電信號,這個(gè)電信號被放大和限幅,限幅器可以看作是AGC(自動(dòng)增益控制)電路,無論距離遙控器有多遠(yuǎn),都可以以獲得恒定的脈沖水平輸出。電路中的電容起到隔離直流的作用,只有交流電信號被發(fā)送到帶通濾波器,帶通濾波器的中心頻率設(shè)定為遙控器發(fā)射信號的載波頻率。消費(fèi)類電子產(chǎn)品中常見的載波頻率范圍從30kHz到60kHz。
經(jīng)過帶通濾波器處理后的信號送到下一級的探測器、積分器和比較器,這三個(gè)模塊的目的是將載波頻率檢測出來,如果有這個(gè)載波頻率,比較器的輸出將被拉低。

在實(shí)際的產(chǎn)品中,所有這些功能模塊都集成到一個(gè)單一的電子元件中。市場上有許多不同的制造商生產(chǎn)這些元件,而且大多數(shù)設(shè)備都有幾個(gè)版本,每個(gè)版本都被調(diào)到一個(gè)特定的載波頻率。
請注意放大器的增益被設(shè)置為很高,系統(tǒng)很容易振蕩。一定要在接收器的電源管腳放置一個(gè)至少22μF的大電容進(jìn)行去耦,一些器件的數(shù)據(jù)手冊建議使用330歐姆的電阻與電源串聯(lián),以進(jìn)一步將電源與電路的其它部分解耦。
市場上有幾家紅外接收器制造商 - 西門子、Vishay和Telefunken是歐洲的主要供應(yīng)商,西門子有其SFH506-xx系列,其中xx表示載頻為30、33、36、38、40或56kHz;Telefunken有其TFMS5xx0和TK18xx系列,其中xx表示載波頻率。現(xiàn)在常用的是Vishay的TSOP12xx、TSOP48xx和TSOP62xx產(chǎn)品系列。
在亞洲夏普、廈門華聯(lián)和日本電氣是三家有名的紅外接收器生產(chǎn)企業(yè)。夏普的設(shè)備有非常神秘的ID名稱,如:GP1UD26xK, GP1UD27xK和GP1UD28xK,其中x與載波頻率相關(guān)。華聯(lián)有HRMxx00系列,如HRM3700和HRM3800。日本電氣公司(Japanese Electric)有一系列設(shè)備,在元器件的ID中不包括載頻。PIC-12042LM調(diào)諧到36.7kHz, PIC12043LM調(diào)諧到37.9kHz。
2. 電路連接
在硬禾學(xué)堂開發(fā)的基于RP2040的嵌入式系統(tǒng)學(xué)習(xí)平臺上,使用了Vishay公司的940nm波長的高速紅外發(fā)射管 VSMB10940以及臺灣億光(Ever bright)公司的一體化貼邊紅外接收頭IRM-H638T,電路的連接如下圖:

基于RP2040的嵌入式系統(tǒng)學(xué)習(xí)平臺上的紅外收/發(fā)電路

IRM-H638T的調(diào)制/解調(diào)波形圖
另外在Github上有小哥 - Harish Kumar使用RP2040的PIO實(shí)現(xiàn)了紅外接收解碼,并支持HID,從而實(shí)現(xiàn)了一個(gè)IR鍵盤的功能,可以通過PIO解碼任何NEC協(xié)議的紅外發(fā)射脈沖信號,并支持USB鍵盤功能(HID).
還有一個(gè)項(xiàng)目用樹莓派Pico實(shí)現(xiàn)了遙控信號接收和發(fā)射的功能,并有詳細(xì)的過程描述。
3. MicroPython編程
Peter Hinch提供了基于ESP32、ESP8266以及樹莓派Pico的MicroPython設(shè)備驅(qū)動(dòng)程序:
https://github.com/peterhinch/micropython_ir
其中:
- 紅外發(fā)射文檔:https://github.com/peterhinch/micropython_ir/blob/master/TRANSMITTER.md
- 紅外接收部分:https://github.com/peterhinch/micropython_ir/blob/master/RECEIVER.md
4. Verilog編程
紅外遙控信號編碼

使用Lattice的ICE40 FPGA實(shí)現(xiàn)紅外收發(fā)的功能框圖
- Lattice使用ICE40 FPGA做紅外接收和發(fā)射的參考設(shè)計(jì)資源頁面:https://www.latticesemi.com/products/designsoftwareandip/intellectualproperty/referencedesigns/referencedesigns02/ir
- Lattice使用ICE40 Ultra自學(xué)習(xí)紅外遙控參考指南:https://www.latticesemi.com/view_document?document_id=50709
