红外遥控技术自20世纪80年代普及以来,已成为家电控制领域最成熟的无线解决方案之一。其核心优势在于利用不可见的红外光谱(波长通常在850-950nm)进行数据传输,既避免了可见光干扰,又实现了低成本、低功耗的可靠通信。
在典型的红外遥控系统中,三个关键要素决定了通信质量:
当前主流的红外协议主要分为两大编码流派:
这两种协议在消费电子领域占据主导地位,根据市场调研数据,约78%的电视和65%的影音设备支持至少其中一种协议。理解它们的实现原理,对于开发兼容性强的遥控设备至关重要。
Philips RC5协议采用14位固定长度的数据包结构,每个数据包包含:
plaintext复制| S1 | S2 | T | A4 | A3 | A2 | A1 | A0 | D5 | D4 | D3 | D2 | D1 | D0 |
|----|----|---|----|----|----|----|----|----|----|----|----|----|----|
| 1 | 1 | 0 | 1 | 0 | 1 | 0 | 0 | 1 | 1 | 0 | 1 | 0 | 1 |
实际传输中,当按键持续按下时,数据包会以114ms为周期重复发送,直到按键释放时发送带翻转位变化的终止包。这种设计既保证了长按操作的可靠性,又便于接收端识别单次按压。
RC5协议最显著的特点是采用曼彻斯特编码(Manchester Encoding),其编码规则为:
每个位周期固定为1.778ms(64个时钟周期@36kHz),其中:
具体到硬件实现,需要精确控制36kHz载波的占空比。实测表明,采用1/4占空比(6.94μs高电平+20.86μs低电平)能在功耗和信号强度间取得最佳平衡。值得注意的是,由于PIC10F206的指令周期为1μs(4MHz时钟),实际实现时常用7μs和21μs的近似值,产生35.7kHz的实际载波频率(误差-0.83%),仍在接收器的允许容差范围内。
在PIC10F206这类资源有限的微控制器上,需要精心设计LED驱动电路。典型方案采用NPN晶体管(如2N3904)作为开关元件,电路参数计算如下:
LED电流计算:
基极电阻选择:
关键提示:实际布线时应使LED与接收器保持直线对准,夹角超过±30°将显著降低信号强度。建议在原型阶段用手机摄像头检测LED工作状态(可见紫光表示正常发射)。
Sony SIRC协议采用脉宽编码方案,其12位版本的数据结构包含:
逻辑电平定义:
与RC5不同,SIRC的载波频率为40kHz(周期25μs),每个位周期内:
在PIC10F206上实现SIRC协议时,需要特别注意时序精度控制。以下是关键代码段的实现原理:
assembly复制; 发送"1"位
SendOne:
movlw d'48' ; 1.2ms高电平周期(48*25μs)
movwf pulse_cnt
pulse_high:
bsf IR_LED ; 开启LED
nop ; 精确延时7μs高电平
nop
nop
bcf IR_LED ; 关闭LED
movlw d'17' ; 18μs低电平(25-7)
call Delayμs
decfsz pulse_cnt, f
goto pulse_high
; 接着600μs低电平
movlw d'600'
call Delayμs
return
实际调试中发现三个常见问题及解决方案:
在实际产品中,经常需要支持多种协议。通过巧妙设计软件架构,可以在同一硬件平台上实现协议自动切换:
c复制struct KeyMapping {
uint8_t protocol; // 0=RC5, 1=SIRC
uint8_t address;
uint8_t command;
};
const struct KeyMapping keyMap[] = {
{0, 0x14, 0x35}, // 按键1: RC5协议
{1, 0x01, 0x15} // 按键2: SIRC协议
};
assembly复制SendIR:
btfsc CURRENT_PROTOCOL, 0
goto SendSIRC
goto SendRC5
对于电池供电设备,功耗优化尤为关键。实测数据显示:
具体优化措施包括:
推荐以下工具组合进行红外系统调试:
| 故障现象 | 可能原因 | 解决方案 |
|---|---|---|
| 接收距离短 | LED驱动不足 | 检查晶体管饱和状态,增大电流至80-100mA |
| 间歇性失灵 | 载波频率偏移 | 用示波器校准36kHz/40kHz频率 |
| 按键粘连 | 去抖处理不足 | 增加10-20ms的按键去抖延时 |
| 协议不识别 | 编码极性错误 | 确认起始位和LSB/MSB顺序 |
| 高功耗 | 晶体管未完全关闭 | 添加下拉电阻(10kΩ)确保关断 |
在最终产品验证阶段,建议进行以下测试:
通过PIC10F206实现红外协议的核心在于精准的时序控制。虽然这款MCU只有6个引脚和384字节程序空间,但通过本文介绍的优化技巧,完全可以实现商业级红外遥控功能。对于需要更复杂功能的项目,可考虑升级到PIC12F675(更多IO、ADC)或PIC16F684(增强型PWM)。实际开发中遇到的时序问题,往往通过调整指令周期和优化循环结构就能解决。