ARTICLE DETAIL

资讯详情

深耕网站视觉设计与运营推广的一线实战洞察。

2013电赛F题红外光通信:模拟直传方案全解析

2013电赛F题红外光通信:模拟直传方案全解析 简介针对2013年全国大学生电子设计竞赛F题“红外光通信装置”的完整设计文档适合电子竞赛参赛者、红外通信系统学习及硬件设计人员参阅。资源包含1个docx文件共13页约899KB从系统方案论证、发射管与运放选型到信号产生、发送与接收电路设计再到PCB绘制和测试结果均有详细记录。已有254人浏览学习是备赛与回顾该赛题时颇有参考价值的样例资料。文档以LM386搭建音乐信号产生电路通过分压式共射电路放大微弱信号经LED红外发送管向接收端传递接收侧利用AD623、AD8608等运放构成放大链路实现约200倍增益最终驱动喇叭还原语音。同时覆盖温度信号获取与传输、显示模块、测试方案等完整内容可帮助读者系统掌握红外通信装置的构建方法也可直接用于竞赛报告撰写或实物调测参考。1. 从3.4kHz语音带宽看2013年电赛F题为什么放弃数字方案改走模拟红外直传红外遥控的NEC协议、38kHz载波大家都很熟那是传按键码。2013年全国大学生电子设计大赛F题的红外光通信装置要传的是连续语音一个300Hz3.4kHz的模拟信号传输距离要求2m内无明显失真还加了5V单电源、中继可拐90°这两个很具体的约束。很多人第一反应是ADC采样进单片机、异步串行发出去实测这条路走不通——红外LED和接收管的组合带宽有限68kHz的串行基频在1m开外上升沿就被拉成圆弧误码率根本压不住。备赛组最后选了模拟直接传输语音信号放大后直接调制红外LED的发光强度接收端光电转换再功率放大整条链路没有一颗MCU参与语音路径。下面按发射端建站、接收端解调、中继与温度通道、整机联调的顺序拆解这套方案最后附上可复现的测试记录和超声测距源码改造给正在做音频光通信或运放选型的工程师做个参照。2. 发射端建站红外LED线性区偏置、AD623跟随与AD8608驱动级设计发射端把±200mV的语音信号变成红外光的强度调制核心是让LED工作在线性区。红外LED的I-V曲线和普通二极管一样有死区电压正向压降通常1.1V1.4V电流与电压呈指数关系。如果不加直流偏置小信号的正半周被死区削掉负半周完全截止接收端解调出来全是谐波失真。所以第一件事是给LED一个静态工作点让语音信号叠加在这个直流电平上使工作点落在特性曲线斜率近似恒定的区段。2.1.1 偏置电压的实测确定方法备赛组最初用普通红外发射管顶端有聚光透镜接收端必须对得很正稍微偏一点信号就没了。把聚光头磨平后对准要求降低但传输距离从30cm掉到20cm。后来的做法是用大功率发射管配合一个可调电阻做偏置调整方法很直接给发送端输入1kHz、100mVpp的正弦波示波器同时看发射管两端电压和接收端输出反复调偏置电阻直到接收端波形正负半周对称、没有削顶这个点就是线性区中心。偏置电压实测在1.6V2.0V之间5V供电下要留出信号正向摆动的空间所以偏置点不能高于2V否则正向峰值会直接撞到电源轨上。参数普通红外管磨头大功率红外管偏置电压1.5V~1.8V1.6V~2.0V静态电流5~10mA20mA以上实测通信距离20cm3m波形无明显失真对准要求低中这个表格是实测标定记录不是仿真值。普通管磨头后距离反而下降是因为磨平破坏了原厂透镜的聚光结构光斑发散得更快大功率管本身辐射面积和驱动电流都更大才能支撑3m的传输距离。如果项目对距离要求不高、只做桌面级通信普通管加偏置的方案成本更低但一定要接受对准的麻烦。2.1.2 分压偏置网络偏置网络用两个电阻分压从5V电源分出约1.8V再串一个限流电阻到LED阳极。语音信号经过放大级后通过耦合电容叠加到偏置点上电容取值10μF保证300Hz下容抗约53Ω不会让低频分量损失过多。运放输出端的驱动电流是这个结构的瓶颈普通运放输出只有十几毫安大功率红外管需要更大的静态电流所以后面要用专门的驱动级来承担。2.2 AD623为什么只做电压跟随而不是放大AD623是仪表放大器单电源5V供电、轨到轨输出、带宽800kHz自带参考电压引脚看起来很适合做第一级放大。但它的输出驱动能力有限实测驱动电流只有几毫安级别直接推红外LED会把静态电流和动态摆幅都限制住。所以这一级只做电压跟随增益电阻RG开路G1把信号源的输出阻抗和后面的驱动级隔离开同时把单端信号整理成低阻输出。跟随器后面接AD8608。AD8608是CMOS轨到轨运放带宽比AD623更宽输出级能提供几十毫安的电流适合直接驱动LED。增益设在1020倍输入±200mV放大10倍后是±2V配合1.8V偏置信号摆动范围在-0.2V到3.8V之间正好落在5V单电源下LED可用的线性区间。如果增益设到20倍信号峰值4V偏置点要相应降到1.2V左右否则正向削波。这个取舍要根据实际LED导通电压来调。用AD8608做放大时增益由反馈电阻Rf和接地电阻Rg决定公式是G1Rf/Rg。要得到10倍增益Rf9.1kΩ、Rg1kΩ是常用组合要20倍Rf19kΩ、Rg1kΩ电阻选1%精度温漂影响可以忽略。Rf不建议超过20kΩ反馈电阻太大时运放输入偏置电流和噪声都会被放大实测超过20kΩ后噪声明显抬升。2.3 大功率发射管与串联发射的实测差异备赛组对比过几个方案单个普通管实测最好距离30cm但必须精心对准把聚光头磨平后对准裕量大了距离反而缩短到20cm两个普通管串联接收范围和距离都有改善但单个管的电流被分走一半总光功率并没有成倍增加。最后换大功率管单个管子传输3.4kHz正弦波实测到3m无明显失真接收端幅值还能到几百毫伏这直接满足了题目2m的要求。串联发射的正确做法是同向串联共用同一个限流电阻这样两只管子的电流一致光功率叠加。但要注意串联后总压降翻倍5V供电下偏置电压余量变小静态电流要重新计算。备赛组的做法是先把工作点定在2V串联后每只管压降约1.3V剩下0.7V给限流电阻电流约20mA这个参数下散热和光功率都平衡。焊接时两只管子朝向要一致PCB布局上尽量靠近避免引线电感在20kHz以上的高频分量上产生振铃。原理图和PCB用Altium Designer绘制布局时把功率地和小信号地分开发射管附近铺铜散热避免长时间工作后参数漂移。3. 接收端解调链路光电管前置放大、LM386增益配置与底噪抑制接收端收到的是被语音信号调制的红外光光电管把光强变化转成电流变化。光电接收管工作在光伏模式还是光导模式对信噪比影响很大。光伏模式没有外加反偏暗电流小、噪声低但响应速度慢光导模式加反偏结电容小、响应快但暗电流和散粒噪声都上来。语音带宽只有3.4kHz速度要求不高备赛组选的是光伏模式接收管直接接到运放输入端用反馈电阻把光电流转换成电压反馈电阻取100kΩ时灵敏度足够覆盖2m传输距离。3.1 接收管前置放大与增益分配前置放大用AD8608的另一路接成跨阻放大器TIA结构。光电流Ipd流过反馈电阻Rf输出电压Vout Ipd × Rf。2m距离下接收管光电流大约在微安量级100kΩ反馈电阻对应0.1V0.3V输出这个幅度对LM386来说偏小所以前置级还要再加一级电压放大增益510倍。跨阻放大器的带宽由反馈电阻和运放输入电容决定Rf100kΩ、输入电容10pF时-3dB带宽约160kHz远高于语音上限不会造成频响塌陷。跨阻放大器的反馈电容不能省并联一个10pF左右的电容可以抵消光电管结电容引起的相位裕度下降防止高频自激。自激的表现是示波器上看到一片毛刺即使遮住接收管也有正弦振荡这时检查反馈电容和电源去耦两个地方能定位问题。3.2 LM386增益配置与带宽取舍LM386是低压音频功放5V供电下静态电流只有4mA非常适合这套系统的电池供电场景。它的增益由1脚和8脚之间的阻抗决定两脚悬空时内部反馈网络把增益固定在20倍1、8脚之间接10μF电容时交流阻抗接近0增益升到200倍如果串一个电阻再加电容增益可以在20到200之间连续调整。1-8脚接法电压增益适用场景悬空20倍约26dB接收端信号较大100mV10μF电容直连200倍约46dB接收端信号弱50mV串1.2kΩ10μF50倍约34dB折中噪声和音量平衡串5.6kΩ10μF约40倍信号偏强时防削波增益不是越高越好。备赛组实测200倍增益下输入端1mV的噪声会被放大到200mV喇叭里全是嘶嘶声。判断标准是——接上信号源增益从最低慢慢往上调听到波形开始削波就退回一档。接收端前置放大输出约0.5V时LM386用20倍挡就够了输出2V峰峰值正好推到喇叭。LM386的输出端要串一个220μF电解电容到喇叭这个电容和喇叭阻抗形成高通取值决定低频截止频率。8Ω喇叭配220μF时截止约90Hz语音下限300Hz完全够。2脚和3脚之间的接地电阻用10kΩ把输入偏置固定在半电源防止输入悬空时拾取噪声。7脚bypass引脚接10μF电容到地可以抑制电源纹波这几个电容对底噪的改善非常直接。3.3 25mV底噪是怎么压下来的题目要求噪声电压越小越好备赛组最终做到接收端无信号时输出噪声25mV。这个数字不是靠换芯片换来的而是四个细节叠出来的第一LM386的电源引脚就近接100nF陶瓷电容和10μF电解电容电解电容选低ESR的第二输入信号线用屏蔽线屏蔽层单端接地第三光电接收管到前置运放的走线尽量短PCB上这段铜箔下面铺地不要和数字信号线交叉第四5V稳压输出到各级之间加磁珠把开关电源的纹波隔在音频链路之外。稳压电路用7805时注意压差输入7.5V适配器刚好够如果输入只有6V要换低压差LDO否则7805输出会掉出5V。这四步做完噪声从最初的80mV降到25mV喇叭里基本听不到交流声。4. 光路拐弯与温度遥测中继转发节点和20kHz调制混叠通道题目里最考验系统设计的是中继节点发射端和中继相距0.5m中继转90°后和接收端再相距0.5m加起来通信路径拐了一个直角。红外发射管和接收管都有指向性半功率角通常在±15°到±30°之间直接对着收发做不到拐弯必须在拐角处放一个中继器。备赛组的中继节点做得很简单一个光电接收管把光信号转回电信号经过一级放大后再驱动一个红外发射管朝新方向发出去。这个光电-电光转换过程会引入一次噪声所以中继的增益要比重发端更保守实测中继节点工作电流只有20mA。4.1 中继转发的增益设置与自激规避中继的接收部分和主接收端共用同一个前置放大结构但这里不用LM386用AD8608的剩余通道做23倍放大就够了。增益过大容易自激因为中继的发射管和接收管装在同一块小板上光路可能直接耦合形成一个光电正反馈环路。避免自激的办法是把接收管和发射管用挡板隔开或者在结构上加一段遮光套管确保只有外部光线能到达接收管。中继供电和主系统一样是5V电流预算很紧发射管静态电流控制在15mA左右比主发射端的20mA略低以留出中继板的能耗余量。调试中继时先遮住接收管确认没有振荡再逐步放开遮光物观察波形能快速定位是电气自激还是光路耦合。4.2 温度通道DS18B20读数与20kHz调制混合温度遥测是这套系统的加分项。DS18B20输出16位温度数据通信协议是单总线CPU发出复位脉冲、读取ROM、发转换命令后数据以时间片方式一位一位读出来。STC89C52读取后把温度值编码成10Hz的脉冲信号——温度越高脉冲宽度越宽或者用固定脉宽但改变脉冲个数这样一根信号线上就携带了温度信息。10Hz本身落在语音频段内直接混进去会被当成可听声所以必须先把这路信号和20kHz方波做与门调制等于把温度信息搬到20kHz的载波上再和语音信号线性叠加。下面是DS18B20读取温度的初始化与复位部分这也是单总线最容易出错的环节// STC89C52, 11.0592MHz晶振, 单总线接P1.2 sbit DQ P1^2; unsigned char ds18b20_reset(void) { unsigned char presence; DQ 0; // 主机拉低总线 delay_us(480); // 复位脉冲, 最少480us DQ 1; // 释放总线 delay_us(60); // 等从机应答, 15~60us后从机拉低 presence DQ; // 读到0表示从机在线 delay_us(420); // 应答脉冲持续时间 return presence; }这段代码的逻辑单总线空闲时是高电平主机先拉低480μs发出复位脉冲然后释放总线。从机在1560μs内把总线拉低60240μs作为应答。记下释放总线后第一次读DQ的时刻如果读到0说明DS18B20在线读到1说明总线没接好或器件损坏。实际调试中复位脉冲宽度不够会导致从机不响应把480μs延长到600μs后恢复正常代价是总线时序余量变小。延时函数的精度要用示波器校准不能用软件硬凑。温度转成16位数据后STC89C52每100ms读一次换算成温度值再把这16位数据映射为10Hz脉冲宽度。这里有个关键参数10Hz周期是100ms一个周期内高电平宽度随温度从1ms到99ms变化接收端用低通滤波后测脉宽就能还原温度。但脉冲的上升沿和下降沿都会产生谐波谐波频率可能落到语音频段所以调制到20kHz后还要加一级RC低通滤掉方波的锐边。温度显示方面51单片机没有硬件I2C用两个普通IO口软件模拟I2C驱动OLEDSCL拉高拉低的延时用空循环实现速率控制在100kHz以内。OLED的驱动芯片是SSD1306初始化时发0xAE关显示、0x8D开电荷泵、0xAF开显示这几条命令然后按页写入温度字符。温度数据10Hz更新一次屏幕每秒刷两帧足够刷太快反而占用主循环时间影响后面的超声波定时器响应。4.3 接收端语音与温度信号的分离接收端的光电转换输出同时包含语音300Hz3.4kHz和20kHz调制波。分离电路用两条并联支路一条低通截止频率4kHz提取语音信号送LM386一条带通中心频率20kHz把调制信号滤出来再经过二极管检波和低通还原出10Hz的脉宽信号送单片机解码。带通的Q值不能太高实测Q5时20kHz±2kHz带宽能覆盖调制方波的基频和少量边带再窄就会把方波的上升沿滤圆脉宽解码误差变大。这套混叠方案牺牲了一点发射功率给温度通道语音信号会被分走一部分幅度实测语音输出从2V降到1.6V左右仍在题目要求范围内。5. 整机联调三板斧偏置扫描、正弦波验证与超声测距源码改造联调顺序直接决定排查效率。第一步不接语音只给发射端一个固定直流偏置用万用表确认LED静态电流正常第二步输入100mVpp、1kHz正弦波示波器看接收端输出波形调整偏置直到正负半周对称第三步换成3.4kHz正弦波确认高频段没有衰减第四步接MP3音乐调到正常听感音量再用示波器FFT看有没有明显谐波最后才测中继和温度通道。每一步都要记录数据备赛组最终的数据如下测试项输入条件实测结果正弦波链路3.4kHz100mVpp2m内无明显失真单音输出800Hz接收端输出电压2V噪声无信号25mV中继转角发射→中继→接收90°2m内无明显失真中继电流工作态20mA5.1 超声波测距源码改造题目额外要求测距备赛组用HC-SR04加STC89C52。核心流程是单片机给Trig引脚发10μs以上高电平模块发射40kHz超声波并拉高Echo引脚Echo高电平持续时间就是声波往返时间距离 时间 × 340m/s ÷ 2。改造时的重点是定时器计数和时间单位的换算// 定时器T0工作在方式1, 16位计数, 11.0592MHz晶振 void StartModule(void) { TX 1; _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); // 约10us高电平触发 TX 0; } void Conut(void) { time TH0 * 256 TL0; // 回波高电平的计数值 S (time * 1.87) / 100; // 换算成cm TH0 0; TL0 0; if (S 700) { // 超过7m视为无效 DisplayOneChar(0, 1, ASCII[11]); // 显示 M DisplayOneChar(1, 1, ASCII[10]); // 显示 . DisplayOneChar(2, 1, ASCII[11]); } else { // 拆出百位、十位、个位分别显示 disbuff[0] S % 1000 / 100; disbuff[1] S % 1000 % 100 / 10; disbuff[2] S % 1000 % 10; } }这段代码的关键在系数1.87HC-SR04的Echo高电平时间对应声波往返20℃声速下每微秒对应约0.017cm的往返距离。但51单片机的定时器计数周期取决于晶振11.0592MHz晶振下每个计数约1.085μs0.017乘以1.085约等于0.0184即time乘以1.84再除以100。原文的1.87是在此基础上根据实测声速微调的标定值——环境温度、湿度都会影响声速最稳妥的做法是在1m处放一个障碍物实测回波计数值反推出当前环境下的系数。如果换成12MHz晶振这个系数要改回1.7左右直接套用1.87会有约10%的测距偏差。5.2 用示波器找最佳偏置点最后分享一个对这套系统最实用的调试技巧。最佳偏置点的判断不要看波形是否像正弦要看失真的对称性把接收端波形调出来分别量正半周峰值和负半周峰值两者差小于5%时发射端偏置就是准的。如果正半周先削顶说明偏置偏高信号峰值撞到电源轨如果负半周先出现平台说明偏置偏低LED进入了截止区。这个对称性判断法比直接看失真率更直观在现场调整可调电阻时效率很高基本两分钟内能锁到最佳工作点。用示波器的两个通道分别测发射端调制点和接收端解调点能同时观察到偏置偏移的方向性比单通道盲调快很多。本文还有配套的精品资源点击获取
返回列表