okhxyyo 发表于 2024-8-30 11:00

RS485自动收发电路硬件设计及其常见的几个关键要素

<section>
<p><span style="font-size:16px;">本文主要讨论如何设计RS485接口电路,以及简单介绍接口电路设计通常涉及到几个关键要素。</span></p>

<p>&nbsp;</p>
</section>

<section>
<section>
<section>
<section>
<section>
<section>
<p><span style="font-size:16px;"><strong>什么是RS485?</strong></span></p>
</section>
</section>
</section>
</section>

<section>
<section>
<section>
<section>
<p>&nbsp;</p>
</section>
</section>
</section>
</section>
</section>
</section>

<p><span style="font-size:16px;">RS485是半双工通信,<strong>半双工通信</strong>指的是通道在一个时刻只能处于接收或者是发送。RS485的特点是支持多节点传输、传输距离远、抗干扰能力强,RS485可以连接多个485设备,信号的速率可达到10Mbps。通过AB两线之间的压差来判断是逻辑电平1或者逻辑电平0,当AB间的电压差大于200mV时为高电平1,小于200mV时为逻辑电平0。一般会在首末两端接120&Omega;电阻,其作用是进行阻抗匹配,消除信号反射。</span></p>

<section>
<section>
<div style="text-align: center;"><span style="font-size:16px;"></span></div>
</section>
</section>

<p>&nbsp;</p>

<section>
<section>
<section>
<section>
<section>
<section>
<p><span style="font-size:16px;"><strong>RS485硬件电路设计</strong></span></p>
</section>
</section>
</section>
</section>

<section>
<section>
<section>
<section>
<p>&nbsp;</p>
</section>
</section>
</section>
</section>
</section>
</section>

<p><span style="font-size:16px;">RS485电路设计可以分为<strong>隔离型</strong>和<strong>非隔离型</strong>,下图是非隔离型电路,B端接到GND下拉,A端通过上拉电阻为高电平,是为了保证A和B之间的压差大于200mV。DE和RE引脚是发送和接收使能,RE为低时,为接收使能;DE为高时,是发送使能。应用中一般是两者连接在一起,通过IO口(RS485_EN)控制,因为芯片要么是处于接收,要么处于发送,因此在发送数据的前,给RS485_EN信号为高电平,接收数据就给低电平。</span></p>

<section>
<section>
<div style="text-align: center;"><span style="font-size:16px;"></span></div>
</section>
</section>

<p>&nbsp;</p>

<section>
<section>
<section>
<section>
<section>
<section>
<p><span style="font-size:16px;"><strong>RS485自动收发电路硬件设计</strong></span></p>
</section>
</section>
</section>
</section>

<section>
<section>
<section>
<section>
<p>&nbsp;</p>
</section>
</section>
</section>
</section>
</section>
</section>

<p><span style="font-size:16px;">自动收发电路相比较普通的485电路,区别在于多一个晶体管控制485的使能引脚。R9限流电阻一般是4.7K,R8上拉电阻一般也是4.7K,使能引脚在晶体管没有导通时被上拉。</span></p>

<section>
<section>
<div style="text-align: center;"><span style="font-size:16px;"></span></div>
</section>
</section>

<section>
<p><span style="font-size:16px;"><strong>接收数据时:</strong>接收数据引脚是芯片的第一引脚也就是网络标签RS485_RX,在接收数据过程中,RS485_TX引脚保持高电平,VGS为高电平,NPN三极管Q1就导通,RE和DE相连的引脚通过晶体管下拉到GND,此时接收使能,处于接收状态。</span></p>

<p>&nbsp;</p>

<p><span style="font-size:16px;"><strong>发送数据时:</strong>发送数据引脚是RS485_TX,应该RS485_TX发送1,晶体管导通,RE和DE的电平为低,RS485收发芯片没有打开,由于常态下485为高电平,此时数据就是高;当 RS485_TX发送0时,晶体管不导通,此时485收发芯片的发送使能为高,DI由于一直被下拉到GND,所以发出去的数据为0。这样就实现了485的自动收发。</span></p>

<p>&nbsp;</p>

<p><span style="font-size:16px;"><strong>发送具体解析:</strong></span></p>

<p><span style="font-size:16px;">RS485_TX 发送1,VGS高电平,NPN三极管导通,使能引脚是低电平,发送失效,接收使能,处于接收状态。由于SP3485芯片的AB引脚是高阻状态,R4把A拉高,R5把B拉低,所以AB传输的是1。即RS485_TX发送1时,AB引脚发送1。</span></p>
</section>

<p>&nbsp;</p>

<section>
<section>
<section>
<section>
<section>
<section>
<p><span style="font-size:16px;"><strong>RS485接口防雷电路设计</strong></span></p>
</section>
</section>
</section>
</section>

<section>
<section>
<section>
<section>
<p>&nbsp;</p>
</section>
</section>
</section>
</section>
</section>
</section>

<section>
<section>
<div style="text-align: center;"><span style="font-size:16px;"></span></div>
</section>
</section>

<section>
<p><span style="font-size:16px;">接口防护电路</span></p>

<p><span style="font-size:16px;">L1是共模电感,共模电感衰减共模噪声,增强抗干扰能力,一般选择120&Omega;/100MHz。C3电容的作用是为了隔开接口地和数字地,一般选择1000pF。为了达到EMC防护要求,差模信号2kV,共模信号6kV,在接口处会预留上气体放电管、热敏电阻、TVS管组成防护电路。</span></p>

<p>&nbsp;</p>
</section>

<section>
<section>
<section>
<section>
<section>
<section>
<p><span style="font-size:16px;"><strong>RS485接口电路PCB的GND设计</strong></span></p>
</section>
</section>
</section>
</section>

<section>
<section>
<section>
<section>
<p>&nbsp;</p>
</section>
</section>
</section>
</section>
</section>
</section>

<p><span style="font-size:16px;">虚线处的防护器件要尽量靠近接口,摆放紧凑整齐,先放防护器件再放滤波器件。</span></p>

<section>
<section>
<div style="text-align: center;"><span style="font-size:16px;"></span></div>
</section>
</section>

<section>
<p><span style="font-size:16px;">RS485接口电路设计通常涉及到几个关键要素,包括信号传输、电气隔离、噪声抑制、保护措施以及电源和控制逻辑设计等。</span></p>

<p>&nbsp;</p>
</section>

<section>
<section>
<section>
<section>
<section>
<section>
<p><span style="font-size:16px;"><strong>关键要素</strong></span></p>
</section>
</section>
</section>
</section>

<section>
<section>
<section>
<section>
<p>&nbsp;</p>
</section>
</section>
</section>
</section>
</section>
</section>

<section>
<p><span style="font-size:16px;"><strong>信号线选择与布线</strong></span></p>

<p><span style="font-size:16px;">&bull; 使用一对双绞线作为差分信号线(A和B),通常选用屏蔽双绞线电缆以减少电磁干扰。</span></p>

<p><span style="font-size:16px;">&bull; 保持A和B线长度尽可能相等,以减少信号延迟差异,保证信号的完整性。</span></p>

<p><span style="font-size:16px;"><strong>共模电感和滤波</strong></span></p>

<p><span style="font-size:16px;">&bull; 在信号线入口处加入共模电感L1,用于抑制共模干扰,推荐阻抗范围为120&Omega;/100MHz ~ 2200&Omega;/100MHz。</span></p>

<p><span style="font-size:16px;">&bull; 可能还需要并联去耦电容和TVS管等元件,进一步提高抗干扰能力。</span></p>

<p><span style="font-size:16px;"><strong>收发器芯片选择</strong></span></p>

<p><span style="font-size:16px;">&bull; 常见的收发器芯片有SP3485、MAX485等,它们将TTL/CMOS逻辑电平转换为RS485差分信号。</span></p>

<p><span style="font-size:16px;">&bull; 需要关注RE、DE以及RO等控制引脚的连接逻辑,通常RE和DE可以连接在一起通过单个控制信号控制发送/接收模式。</span></p>

<p><span style="font-size:16px;"><strong>偏置和终端电阻</strong></span></p>

<p><span style="font-size:16px;">&bull; A信号线可能需要上拉电阻(如10k&Omega;至4.7k&Omega;),以确保在空闲时的电压状态,B信号线可能需要下拉到GND。</span></p>

<p><span style="font-size:16px;">&bull; 在总线的两端或适当位置放置120&Omega;终端电阻,以减少信号反射和改善信号质量。</span></p>

<p><span style="font-size:16px;"><strong>防雷击和浪涌保护</strong></span></p>

<p><span style="font-size:16px;">&bull; 可以在信号线上添加TVS管和/或自恢复保险丝,用于过压和浪涌保护,提高电路的鲁棒性。</span></p>

<p><span style="font-size:16px;">&bull; 对于高风险环境,考虑加入6kV以上的防雷击保护电路设计。</span></p>

<p><span style="font-size:16px;"><strong>EMC设计</strong></span></p>

<p><span style="font-size:16px;">&bull; 保证良好的接地设计,特别是接口地的处理,有时单板地与外壳直接连接,通过1000pF电容耦合。</span></p>

<p><span style="font-size:16px;">&bull; 电路板布局时注意电源和信号线的分离,减少交叉干扰,增加滤波和退耦电容。</span></p>

<p><span style="font-size:16px;"><strong>控制逻辑</strong></span></p>

<p><span style="font-size:16px;">&bull; 根据应用需求,设计控制逻辑电路或使用MCU控制发送使能信号,实现自动或手动切换。</span></p>

<p><span style="font-size:16px;">&bull; 对于自动收发电路设计,可能需要更复杂的逻辑来自动管理发送和接收状态,以适应不同通信场景。</span></p>

<p>&nbsp;</p>

<p><span style="font-size:16px;">RS485接口设计不仅关注电气特性,还需要综合考虑EMC、可靠性、安全性等因素,确保在复杂工业环境中的稳定通信。</span></p>

<p>&nbsp;</p>

<p><strong>-- End&nbsp;--</strong></p>

<section data-color="rgb(255, 129, 36)">
<section>声明:本号对所有原创、转载文章的陈述与观点均保持中立,推送文章仅供读者学习和交流。文章、图片等版权归原作者,如有侵权,请联系删除。</section>
</section>
</section>

langtuodianzi 发表于 2024-8-30 11:06

<p>资料翔实!</p>

damiaa 发表于 2024-8-30 11:22

<p>内容详细!如果不想加复杂的浪涌保护电路,至少也得加一个类似sm712那样得器件.</p>

<p> &nbsp;</p>

Maker_kun 发表于 2024-8-30 11:57

<p>干货满满</p>

jobszheng5 发表于 2024-8-30 14:20

<p>三极管影响速率,115200bps的速率下会丢包。</p>

<p>所以,好多设计也直接上反向器来实现。</p>

dukedz 发表于 2024-8-31 00:38

<p>可以做到真正意义上 RS485 自动收发的,看得看 CDBUS 方案:</p>

<p>https://bbs.eeworld.com.cn/thread-1267965-1-1.html</p>
页: [1]
查看完整版本: RS485自动收发电路硬件设计及其常见的几个关键要素