简单聊下常见的485电路以及实际应用中可能会遇到的问题

我喜欢四处溜达 2024-04-24 20:30:45

做电子这行的工科生对RS485电路应该不陌生.

RS485是一种半双工异步串行通讯协议,即发送数据时不能接收数据,同理接数据时也可不以发送数据,这种看似效率低下的通信方式却在工业产品中得到广泛的应用。

除了上面那个缺点外,RS485通信方式还是有很多优点的,比如可以挂总线、支持多节点(32个节点)、传输距离远(1200米)、传输数据稳定、硬件成本低等。

MAX485芯片介绍

RS485通讯电路在实际应用中需要用到一款编码芯片——MAX485,该芯片的主要功能是将MCU(单片机)输出的TTL电平转换成RS485通讯协议规定的格式以便数据传输。

芯片手册推荐的应用电路很简单,如下图所示。

MAX485芯片输出后,可用双绞线进行远距离传输,根据芯片手册中的说明,该传输距离最远可达到1219米左右(The RS-485/RS-422 standard covers line lengths up to4000 feet),实际应用中限制很多,能传输200米以上就算很远了。

同时还需要在通讯终端的两边A、B数据线之间加一个电阻(Rt),这个电阻的主要作用是:阻抗匹配、消除反射信号的影响,提高信号质量。

芯片手册推荐电路

RS485通讯电路实际应用

实际应用中,我们大多会根据芯片手册上的推荐电路做一些简单的改动,目的是提高信号稳定性,排除一些环境干扰。

常见的应用电路有两种:主动切换收发式电路、收发一体电路。

主动控制收发电路

根据芯片手册中管脚功能定义可知。

当芯片的2脚RE端为低电平时,芯片处于接收状态,一般该状态为芯片默认状态;当芯片3脚DE为高电平时,芯片处于发送状态。

因为是半双工异步串行通讯,所以Pin2和Pin3脚相当是互斥信号,实际应用中我们将这两个管脚连在一起,这样能保证控制收发信号不出错。

收发一体式电路

主动控制收发电路在设计前需将MAX485芯片的Pin2、Pin3连接到MCU(单片机)的一根I/O管脚上,在发送时将该管脚拉高,接收时将该管脚拉低。

自动收发一体式电路则可以省去该管脚,从电路中可知,Pin2、Pin3连一起后接了个上拉电阻,同时还接了一个PNP型三极管,该三极管主要是起一个开关作中,控制开关状态的引脚是MCU的TX引脚。

默认状态下,MCU的TX引脚输出高电平,这样MAX485芯片便一直处于接收状态。

当MCU能过TX引脚发送高电平时,MAX485芯片处于接收状态,A、B引脚输出高电平(上拉电阻的作用)。

当MCU能过TX引脚发送低电平时,MAX485芯片处于发送状态,因为MAX485芯的的Pin4(发送管脚)接地,A、B引脚自然输出低电平。

实际应用电路说明

与芯片手册推荐电路相比,实际应用电路一般会在MAX485芯片的Pin6脚添加上拉电阻,在MAX485芯片的Pin7脚添加下拉电阻,目的是为了稳定信号状态。

RS485数据传输主要有三种状态:

当A、B间的电压差(Uab = Ua - Ub)大于+200mv时,RS485输出1当A、B间的电压差(Uab = Ua - Ub)小于-200mv时,RS485输出0当A、B间的电压差(Uab = Ua - Ub)在+200mv ~ -200mv时,RS485输出就变得随心所欲,想输出1时输出1,想输出0时输出0,让人难以预测。

很明显1和2是理想状态,也是我们想要的状态,3是混乱状态不是我们想要的。

正常情况下,当RS485总线上有数据传输时会处于1或2状态,但RS485总线不可能时刻有数据传输,总有休息(空闲)的时候,哪怕这个时间很短。

一旦RS485牌空闲状态,这时候总线上的信号就容易发生错乱,错乱只要发生就很难终止,这时候总线上传输的全是乱码。

去过项目现场的同学都知道实际应用环境相比实验室环境有多恶劣,如果说实验室环境是温室,那实际应用现场就是暴风雨现场。

在这种环境下会存在各种信号干扰,俗话说改变不了环境就要适应环境,所以就必须加上上下拉电阻,这样能稳定空闲时的状态。

除了上下拉电阻之外,实际应用中还会在A、B之间加个TVS二极管,用来保护MAX485芯片不被瞬间浪涌给烧毁,稳妥点的做法还会加两个可恢复保险丝,一旦接错电或遭雷击也能恢复。

RS485实际应用中可能遇到的问题

RS485电路实际应用中遇到最多的问题就是收发切换的时间,根据芯片手册说明,收发切换过程中会有一个200ns ~ 3000ns的延时。

MAX485芯片手册给出的延时时间

实际应用中,出于成本的考虑我很少用美信公司的MAX485芯片(进口),大多数时候用的还是国产芯片。

有意思的是,国产芯片手册给出的这个延时时间比美信公司给出的时间还要短,可是实际应用中这个延时时间会比手册中给的多的多。

国产485芯片给出的收发切换延时时间

手册中给的70ns,实际应用中我从接收状态切换到发送状态时一般会加个50ms的延时,这样能保证传输数据的稳定性。

如果延时过短的话,数据的前几位容易乱码,好在公司产品对通讯速率要求不高,一般读取频率都在2HZ以下,如果遇到一秒要读三四条数据的最好默认自动发送,就是程序不接收命令,直接主动往外发数据,这样会稳定点。

还有一个常遇到的问题,多传感器挂总线后有的传感器没数据返回,但是单独采时又有响应。

这个问题碰到过很多次,一般短距离传输我们会直接去掉120欧电阻。

理论上RS485通讯只要在设备两端加个120欧电阻即可,没必要每个传感器都接,所以去掉也没太大影响。

如果去掉120欧电阻还不能解决问题,我们会选择将上下拉电阻一起去掉,大部分问题通过这两个办法都能解决。

如果问题比较顽固,上面两步都没办法解决,那就要加中继了。

0 阅读:36

我喜欢四处溜达

简介:感谢大家的关注