差别
这里会显示出您选择的修订版和当前版本之间的差别。
两侧同时换到之前的修订记录 前一修订版 后一修订版 | 前一修订版 | ||
ir_remote [2022/02/07 14:14] gongyusu |
ir_remote [2022/02/07 16:46] (当前版本) gongyusu [4. Verilog编程] |
||
---|---|---|---|
行 1: | 行 1: | ||
## 红外遥控原理及实现 | ## 红外遥控原理及实现 | ||
- | 红外线是在可见范围内远程控制设备最便宜的方法,我们生活中几乎所有的音频和视频设备都可以通过这种方式进行控制,由于红外遥控的广泛使用,相应的元器件也就相当便宜和容易获得,从而被广大的电子产品的业余爱好者、创客用来控制自己的项目,在嵌入式系统的学习和实战项目中也被广泛采用。 | + | 红外线是在可见范围内远程控制设备最便宜的方法,具有抗干扰能力强、电路简单、容易编码/解码、功耗小、成本低等特点,我们生活中几乎所有的音频和视频等家电设备都可以通过这种方式进行控制,由于红外遥控的广泛使用,相应的元器件也就相当便宜和容易获得,从而被广大的电子产品的业余爱好者、创客用来控制自己的项目,在嵌入式系统的学习和实战项目中也被广泛采用。 |
+ | {{ :389-04.jpg |}}<WRAP centeralign> 红外遥控器 </WRAP> | ||
+ | {{ :157-00.jpg |}}<WRAP centeralign> 红外接收头 </WRAP> | ||
### 1. 工作原理 | ### 1. 工作原理 | ||
行 31: | 行 34: | ||
{{ :irdriver.png |}} | {{ :irdriver.png |}} | ||
- | 一个简单的晶体管电路可以用来驱动LED。为此,应选择具有适当HFE和开关速度的晶体管。 | + | 可以选用一个简单的晶体管电路来驱动LED,应选择具有适当HFE和开关速度的晶体管。电阻的值可以用欧姆定律简单地计算出来,一个红外LED的标称电压降约为1.1V。 |
- | 电阻器的值可以用欧姆定律简单地计算出来。记住,一个IR LED的标称电压降约为1.1V。 | + | 上面的驱动电路有一个缺点 - 随着电池电压的下降,通过LED的电流也会减少,这将导致能够达到的控制距离变短。 |
- | + | ||
- | 发射器跟随驱动上面描述的普通驱动有一个缺点。随着电池电压下降,通过LED的电流也会减少。这将导致更短的控制距离,可以覆盖。 | + | |
{{ :iremitter.png |}} | {{ :iremitter.png |}} | ||
- | 射极跟随电路可以避免这种情况。两个串联的二极管将晶体管的脉冲限制在1.2V的基础上。晶体管的基极-发射极电压由此减去0.6V,当红外发射机有源时,发射极的恒定振幅为0.6V。这个恒定的振幅通过一个恒定的电阻导致一个恒定大小的电流脉冲,无论电池电压。计算通过LED的电流又一次简单地运用了欧姆定律。 | + | 射极跟随电路可以避免这种情况。两个串联的二极管将晶体管基极端的脉冲限制在1.2V,减去晶体管的基极-发射极电压压差0.6V,当红外发射机工作时,发射极的电压幅度恒定为0.6V。这个恒定的幅度通过一个恒定的电阻导致一个恒定大小的电流脉冲,与电池的电压变化无关, 只需要运用欧姆定律就可以简单地得出LED的电流。 |
#### 红外接收 | #### 红外接收 | ||
- | 市场上有许多不同的接收电路。最重要的选择标准是所使用的载波频率和你所在地区的可用性。 | + | 市场上有许多不同的接收电路,选择跟你当前的载波频率匹配的电路。 |
{{ :irreceiver.png |}} | {{ :irreceiver.png |}} | ||
- | 在上图中,你可以看到这样一个红外接收器的典型框图。如果您不理解描述的这一部分,请不要惊慌,因为所有的东西都内置在一个单一的、易于使用的电子组件中。 | + | 在上图中,你可以看到这样一个红外接收器的典型框图。接收到的红外信号由图左侧的红外接收二极管进行光电变换得到电信号,这个电信号被放大和限幅,限幅器可以看作是AGC(自动增益控制)电路,无论距离遥控器有多远,都可以以获得恒定的脉冲水平输出。 |
+ | 电路中的电容起到隔离直流的作用,只有交流电信号被发送到带通滤波器,带通滤波器的中心频率设定为遥控器发射信号的载波频率。消费类电子产品中常见的载波频率范围从30kHz到60kHz。 | ||
- | 接收到的红外信号由图左侧的红外探测二极管接收。这个信号被前两个阶段放大和限制。该限幅器作为AGC电路,以获得恒定的脉冲水平,无论距离手机。 | + | 经过带通滤波器处理后的信号送到下一级的探测器、积分器和比较器,这三个模块的目的是将载波频率检测出来,如果有这个载波频率,比较器的输出将被拉低。 |
- | 正如你所看到的,只有交流信号被发送到带通滤波器。带通滤波器被调谐到手持设备的载波频率。消费类电子产品中常见的载波频率范围从30kHz到60kHz,所以选择正确的频率是很重要的。 | ||
- | |||
- | 下一阶段是探测器、积分器和比较器。这三个模块的目的是检测载波频率的存在。如果有这个载波频率,比较器的输出将被拉低。 | ||
{{ :sfh506.jpg |}} | {{ :sfh506.jpg |}} | ||
- | 正如我之前所说的,所有这些块都集成到一个单一的电子元件中。市场上有许多不同的制造商生产这些组件。而且大多数设备都有几个版本,每个版本都被调到一个特定的载波频率。 | ||
- | 请注意放大器的增益被设置为很高。因此,系统很容易开始振荡。放置一个至少22 μ F的大电容接近接收器的电源连接是强制性的,以解耦电源线。一些数据手册建议将330欧姆的电阻与电源串联,以进一步将电源与电路的其他部分解耦。 | ||
- | 市场上有几家IR接收器制造商。西门子、Vishay和Telefunken是欧洲的主要供应商。西门子有其SFH506-xx系列,其中xx表示载频为30、33、36、38、40或56kHz。Telefunken有其TFMS5xx0和TK18xx系列,其中xx再次表示设备调谐到的载波频率。看来这些部分现在已经过时了。它们被Vishay的TSOP12xx、TSOP48xx和TSOP62xx产品系列所取代。 | ||
- | 夏普、厦门华联、日本电气是亚洲三家红外接收机生产企业。夏普的设备有非常神秘的ID名称,如:GP1UD26xK, GP1UD27xK和GP1UD28xK,其中x与载波频率相关。华联有HRMxx00系列,如HRM3700和HRM3800。日本电气公司(Japanese Electric)有一系列设备,在部件ID中不包括载频。PIC-12042LM调谐到36.7kHz, PIC12043LM调谐到37.9kHz。 | + | 在实际的产品中,所有这些功能模块都集成到一个单一的电子元件中。市场上有许多不同的制造商生产这些元件,而且大多数设备都有几个版本,每个版本都被调到一个特定的载波频率。 |
- | 这总结了用于消费电子产品的红外遥控系统的操作原理。我知道还有其他实现IR控制的方法,但我将仅限于上述描述。这里没有涉及的问题之一是安全性。如果我想控制我的录像机或电视机,安全就不重要了。但当它打开车门或汽车时,它就变成了一个“关键”功能!也许我以后会讨论这个问题,但不是现在。 | + | 请注意放大器的增益被设置为很高,系统很容易振荡。一定要在接收器的电源管脚放置一个至少22μF的大电容进行去耦,一些器件的数据手册建议使用330欧姆的电阻与电源串联,以进一步将电源与电路的其它部分解耦。 |
- | 我也意识到我的小清单上的制造商还远远不够完整。这里几乎不可能列出所有的制造商。如果您有其他协议的细节,您可以给我发电子邮件,您认为应该添加到我的页面。 | + | 市场上有几家红外接收器制造商 - 西门子、Vishay和Telefunken是欧洲的主要供应商,西门子有其SFH506-xx系列,其中xx表示载频为30、33、36、38、40或56kHz;Telefunken有其TFMS5xx0和TK18xx系列,其中xx表示载波频率。现在常用的是Vishay的TSOP12xx、TSOP48xx和TSOP62xx产品系列。 |
- | 本章仅介绍了红外遥控操作的基本原理。它没有描述在发射器和接收器之间的通信所涉及的协议。许多协议由不同的制造商设计。您可以使用页面右上角的工具在本章的其他页面中找到一些制造商的协议。 | + | 在亚洲夏普、厦门华联和日本电气是三家有名的红外接收器生产企业。夏普的设备有非常神秘的ID名称,如:GP1UD26xK, GP1UD27xK和GP1UD28xK,其中x与载波频率相关。华联有HRMxx00系列,如HRM3700和HRM3800。日本电气公司(Japanese Electric)有一系列设备,在元器件的ID中不包括载频。PIC-12042LM调谐到36.7kHz, PIC12043LM调谐到37.9kHz。 |
+ | ### 2. 电路连接 | ||
+ | 在硬禾学堂开发的基于RP2040的嵌入式系统学习平台上,使用了Vishay公司的940nm波长的高速红外发射管 VSMB10940以及台湾亿光(Ever bright)公司的一体化贴边红外接收头IRM-H638T,电路的连接如下图: | ||
+ | {{ :gamekitir.jpg |}}<WRAP centeralign>基于RP2040的嵌入式系统学习平台上的红外收/发电路</WRAP> | ||
- | 红外遥控的概述: | + | {{ :irwaveform.jpg |}}<WRAP centeralign>IRM-H638T的调制/解调波形图</WRAP> |
- | 红外线的光谱位于红色光之外, 波长是0.76~1.5μm,比红光的波长还长。红外遥控是利用红外线进行传递信息的一种控制方式,红外遥控具有抗干扰,电路简单,容易编码和解码,功耗小,成本低的优点。红外遥控几乎适用所有家电的控制。 | + | 参考技术资料: |
+ | * [[https://www.vishay.com/docs/84170/vsmb10940.pdf|vsmb10940数据手册]] | ||
+ | * [[https://atta.szlcsc.com/upload/public/pdf/source/20161219/1482143954829.pdf|IRM-H638T数据手册]] | ||
- | 一、红外遥控系统结构 | + | 另外在Github上有小哥 - Harish Kumar使用RP2040的PIO实现了红外接收解码,并支持HID,从而实现了一个IR键盘的功能: |
- | 红外遥控系统的主要部分为调制、发射和接收,如图1 所示: | + | [[https://github.com/gharishkumar/pico-ir-keyboard|pico-ir-keyboard]], 可以通过PIO解码任何NEC协议的红外发射脉冲信号,并支持USB键盘功能(HID). |
+ | 还有一个项目用树莓派Pico实现了遥控信号接收和发射的功能:[[https://github.com/etfovac/rpi_ir|RPi & IR]],并有详细的过程描述。 | ||
- | 图1 红外遥控系统 | ||
- | 1.调制 | + | ### 3. MicroPython编程 |
+ | Peter Hinch提供了基于ESP32、ESP8266以及树莓派Pico的MicroPython设备驱动程序:[[https://github.com/peterhinch/micropython_ir|Device drivers for IR (infra red) remote controls]],其中 | ||
+ | * 红外发射文档:[[https://github.com/peterhinch/micropython_ir/blob/master/TRANSMITTER.md|IR Transmitter]] | ||
+ | * 红外接收部分:[[https://github.com/peterhinch/micropython_ir/blob/master/RECEIVER.md|IR Receiver]] | ||
- | 红外遥控是以调制的方式发射数据,就是把数据和一定频率的载波进行“与”操作,这样既可以提高发射效率又可以降低电源 | ||
- | 功耗。 | ||
- | 调制载波频率一般在30khz到60khz之间,大多数使用的是38kHz,占空比1/3的方波,如图2所示,这是由发射端所使用的 | + | ### 4. Verilog编程 |
- | 455kHz晶振决定的。在发射端要对晶振进行整数分频,分频系数一般取12,所以455kHz÷12≈37.9 kHz≈38kHz。 | + | {{ :infrar1.gif |}}<WRAP centeralign> 红外遥控信号编码 </WRAP> |
+ | {{ :infrar1.gif |}}<WRAP centeralign> 红外遥控信号解码逻辑构成 </WRAP> | ||
- | 图2 载波波形 | + | {{ :irtxandrxblockdiagram.png |}}<WRAP centeralign>使用Lattice的ICE40 FPGA实现红外收发的功能框图 </WRAP> |
- | 1.发射系统 | + | * [[https://www.latticesemi.com/products/designsoftwareandip/intellectualproperty/referencedesigns/referencedesigns02/ir|Lattice使用ICE40 FPGA做红外接收和发射的参考设计资源页面]] |
+ | * [[https://www.latticesemi.com/view_document?document_id=50709|iCE40 Ultra Self-Learning IR Remote User’s Guide]] | ||
- | 目前有很多种芯片可以实现红外发射,可以根据选择发出不同种类的编码。由于发射系统一般用电池供电,这就要求芯片 | + | {{ :fpgairstep.jpg |}} |
- | 的功耗要很低,芯片大多都设计成可以处于休眠状态,当有按键按下时才工作,这样可以降低功耗芯片所用的晶振应该有 | + | |
- | 足够的耐物理撞击能力,不能选用普通的石英晶体,一般是选用陶瓷共鸣器,陶瓷共鸣器准确性没有石英晶体高,但通常 | + | |
- | 一点误差可以忽略不计。 | + | |
- | + | ||
- | 红外线通过红外发光二极管(LED)发射出去,红外发光二极管(红外发射管)内部构造与普通的发光二极管基本相同,材料和普通发光二极管不同,在红外发射管两端施加一定电压时,它发出的是红外线而不是可见光。 | + | |
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | 图3a 简单驱动电路 图3b 射击输出驱动电路 | + | |
- | + | ||
- | 如图3a和图3b是LED的驱动电路,图3a是最简单电路, 选用元件时要注意三极管的开关速度要快,还要考虑到LED的正向 | + | |
- | 电流和反向漏电流,一般流过LED的最大正向电流为100mA,电流越大,其发射的波形强度越大。 | + | |
- | + | ||
- | 图3a电路有一点缺陷,当电池电压下降时,流过LED的电流会降低,发射波形强度降低,遥控距离就会变小。图3b所示的 | + | |
- | 射极输出电路可以解决这个问题,两个二极管把三级管基极电压钳位在1.2V左右,因此三级管发射极电压固定在0.6V左右, | + | |
- | 发射极电流IE基本不变,根据IE≈IC,所以流过LED的电流也基本不变,这样保证了当电池电压降低时还可以保证一定的遥 | + | |
- | 控距离。 | + | |
- | + | ||
- | 1.一体化红外接收头 | + | |
- | + | ||
- | 红外信号收发系统的典型电路如图1所示,红外接收电路通常被厂家集成在一个元件中,成为一体化红外接收头。 | + | |
- | 内部电路包括红外监测二极管,放大器,限副器,带通滤波器,积分电路,比较器等。红外监测二极管监测到红外信号, | + | |
- | 然后把信号送到放大器和限幅器,限幅器把脉冲幅度控制在一定的水平,而不论红外发射器和接收器的距离远近。交流 | + | |
- | 信号进入带通滤波器,带通滤波器可以通过30khz到60khz的负载波,通过解调电路和积分电路进入比较器,比较器输出 | + | |
- | 高低电平,还原出发射端的信号波形。注意输出的高低电平和发射端是反相的,这样的目的是为了提高接收的灵敏度。 | + | |
- | + | ||
- | + | ||
- | 红外接收头的种类很多,引脚定义也不相同,一般都有三个引脚,包括供电脚,接地和信号输出脚。根据发射端调制 | + | |
- | 载波的不同应选用相应解调频率的接收头。 | + | |
- | + | ||
- | 红外接收头内部放大器的增益很大,很容易引起干扰,因此在接收头的供电脚上须加上滤波电容,一般在22uf以上。 | + | |
- | 有的厂家建议在供电脚和电源之间接入330欧电阻,进一步降低电源干扰。 | + | |
- | + | ||
- | 红外发射器可从遥控器厂家定制,也可以自己用单片机的PWM产生,家庭遥控推荐使用红外发射管(L5IR4-45)的可产生37.91KHz的PWM, PWM占空比设置为1/3, 通过简单的定时中断开关PWM, 即可产生发射波形。 | + | |
- | + | ||
- | 光电一体化红外接收头的典型电路 | + | |
- | 因为一体化红外接收头已经将低噪音放大器,限幅器,带通滤波器,解调器,以及整形驱动电路等集成在一起.所以电路做起来也非常简单,下面介绍一下万州光电红外一体化接收头的典型电路供参考: | + | |
- | + | ||
- | + | ||
- | + | ||
- | ### 2. 电路连接 | + | |
- | + | ||
- | ### 3. MicroPython编程 | + | |
- | + | ||
- | ### 4. Verilog编程 | + |