素材来源:网络
转自:8号线攻城狮
传统的485应用电路如下图所示,采用3线控制,UART_RXD、UART_TXD和收发控制端UART_CON。
2.硬件自收发切换 非隔离RS-485电路
虽然采用分立元件搭建的非隔离RS485自动收发电路解决了带收发控制脚非隔离RS485电路编程上操作复杂的问题,但受三极管切换速度、收发器内部接口阻抗等影响,分立元件搭建的自动收发切换电路降低了系统稳定运行的最大波特率。
3.收发切换隔离RS485电路
下面介绍一种485硬件收发切换电路实例。
485芯片采用MAX485芯片,电路使用NPN三极管开切换收发。控制原理是:MCU的UART的TX和RX引脚需要连上拉电阻(TX和RX在没有通信时均是高电平),防止刚上电TX和RX引脚电平不稳定引起收到扰乱数据。A上拉电阻B下拉电阻,终端并联120欧姆电阻,D10、D11、D12为三个防雷防浪涌的TVS管。
接收:默认没有数据时,UART_TX为高电平,三极管导通,MAX485芯片RE低电平使能,RO接收数据使能,此时从485AB口收到什么数据就会通过RO通道传到MCU,完成数据接收过程。
发送:当发送数据时,UART_TX会有一个下拉的电平,表示开始发送数据,此时三极管截止,DE为高电平发送使能。当发送数据‘0’时,由于DI口连接地,此时数据‘0’就会传输到AB口 A-B<0,传输‘0’,完成了低电平的传输。当发送‘1’时,此时三极管导通,按理说RO使能,此时由于还处在发送数据中,这种状态下MAX485处于高阻态,此时的状态通过A上拉B下拉电阻决定,此时A-B>0传输‘1’,完成高电平的传输。
PS: 此时有人肯定也会有疑惑,发送数据‘1’,三极管导通RE低电平有效应该是接收使能,为什么芯片会是高阻状态?
三种常用电路如下:
1、基本的RS485电路
图中钳位于6.8V的管V4,V5,V6,都是为了保护RS485总线的,避免受外界干扰,也可以选择集成的总线保护原件。另外图中的L1,L2,C1,C2为可选安装原件,用于提高电路的EMI性能.
2、带隔离的RS485电路
3、自动切换电路
上图中,TX,RX引脚均需要上拉电阻,这一点特别重要。
接收:默认没有数据时,TX为高电平,三极管导通,RE为低电平使能,RO收数据有效,MAX485为接收态。
发送:发送数据时,TX会先有一个下拉的电平(起始位-由高向低),表示开始发送数据,此时三极管截止,DE为高电平发送使能。当发送数据“0”时,由于DI接口相当于接地,此时数据“0”就会传输到AB扣,A-B<0,则传输“0”,完成低电平传输,当发送“1”时,此时三极管导通,按理说RO会使能,此时由于还处于发送数据中,这种状态下MAX485处于高阻太,此时的状态通过A上来,B下拉电阻决定,此时A-B>0传输“1”,完成高电平的传输。注意:这里面有个疑惑,发送数据“1”,三极管RE低电平有效,应该是接收使能,为什么芯片是高阻态呢?这是因为UART发送数据是有一定格式的,TX和RX数据均以“位”为最小单位进行传输,在发送数据之前,UART之间要约定好数据传输速率,即波特率,数据传输格式(数据位,校验,停止),平时数据线处于空闲状态(1状态),当发送数据时,TX由“1”变为“0”维持1位的时间,这样接收方检测到开始位后,再等待1.5位时间就开始一位一位的进行数据传输了,也就是说,已经确定好发送状态,电路发送“1”时RE虽然有效,但是由于它处于发送阶段,芯片也不会收,即芯片处于高阻状态。
问题经验总结:
问题:485总线在通讯中,当某一节点出现故障时,其他一些节点会被影响,出现通信故障。解决方法:在每个节点的AB线上串入一个22欧姆左右的电阻,同时协议的编制一定要考虑到故障侦测和报警。
问题:当485总线处于开路(485收发器与总线断开)或者空闲状态(485收发器全部处于接收状态,总线没有收发器进行驱动)时,485总线的差分电压基本为0,此时总线就处于一个不确定的状态。解决方法:在485总线上增加上下拉电阻(通常A接上拉电阻,B总线下拉电阻,一般为1K左右)。理论依据:根据RS-485标准,当485总线差分电压大于+200mV时,485收发器输出高电平;当485总线差分电压小于-200mV时,485收发器输出低电平;当485总线上的电压在-200mV~+200mV时,485收发器可能输出高电平也可能输出低电平,但一般总处于一种电平状态,若485收发器的输出低电平,这对于UART通信来说是一个起始位,此时通信会不正常。
推荐阅读:
关注微信公众号『strongerHuang』,后台回复“1024”查看更多内容,回复“加群”按规则加入技术交流群。
长按前往图中包含的公众号关注