当前位置: 首页 >应用方案 >技术应用 >

RS485总线为什么要加下拉电阻及其阻值计算公式详解

RS485总线是一种常用的差分信号传输方式,RS485总线具有抗干扰能力强、传输距离远、节点数多等优点,广泛应用于通信、工业自动化等领域。但是,在实际应用中,我们可能会遇到一个问题,就是RS485总线是否需要在AB两条线上加上下拉电阻,以及加多大的电阻合适。前文介绍了RS485总线信号常见故障排查, 本文将对RS485总线为什么要加上下拉电阻及下拉电阻阻值的计算选型这个问题进行分析和解释。

1RS485总线是如何工作的

RS485总线是如何工作的

首先,我们需要了解RS485总线的工作原理和信号特性。根据RS-RS485标准,RS485总线是通过两条线(AB)来传输差分信号的,根据两条线之间的电压差来判断的当前数据位是0还是1

RS485传输时的的数据有三种状态:

1.AB之间的电压差 VAB=UA-UB 大于+200mV时,RS485收发器输出的逻辑为1

2.AB之间的电压差 VAB=UA-UB 小于-200mV时,RS485收发器输出逻辑为0

3.AB之间的电压差 VAB=UA-UB -200mV+200mV之间时,RS485收发器可能输出高电平也可能输出低电平,是一个不确定的状态。

2、如何避免出现不确定状态

在正常情况下,我们希望接收器收到的数据只能是01,对于不确定的状态是不能出现在RS485总线上的。那么,什么情况下会出现不确定的状态呢?主要有以下几种情况:

1.RS485总线处于空闲状态时,也就是说,所有的RS485收发器都处于接收状态,没有任何一个收发器在驱动总线时。此时,由于没有任何信号源在总线上产生差分电压,AB两条线上的电压基本相等,也就是说,差分电压基本为0

2.RS485总线处于开路状态时,也就是说,某个RS485收发器与总线断开连接时。此时,由于断开连接的收发器不再对总线产生影响,其余收发器之间的差分电压也基本为0

3.RS485驱动器输出不足以使AB产生绝对值大于200mV压差时,也就是说此时RS485总线信号状态已经不能反映驱动器状态,接收器也无法识别正确信号。

RS485总线出现不确定的状态时,会导致通信错误或失效。例如,如果某个RS485收发器在不确定状态下认为收到数据0信号,向串口输出低电平,那么对于UART通信来说,这就相当于一个起始位(Start Bit),会引起误判或误码;如果某个RS485收发器在不确定状态下输出高低电平交替变化,那么对于UART通信来说,就会干扰正常数据,导致UART接收器收到异常数据

为了防止RS485总线出现不确定的状态,我们根据这两种异常分析,导致这两种异常的原因都是当收发器处于接收状态时,AB线上无法保持正常电压差导致的。要保持空闲或断线的状态下也能有正确的压差,我们需要在AB两条线上加上下拉电阻(通常A接上拉电阻,B接下拉电阻),以保证总线在空闲或开路状态下有一个固定的差分电压。如下图所示:

2RS485总线状态

那么,在选择下拉电阻的大小时,我们需要考虑哪些因素呢?主要有以下几个方面:

1.下拉电阻应该足够小,以保证空闲或开路状态下的差分电压大于+200mV或小于-200mV(根据具体情况选择),从而避免不确定状态。

2.下拉电阻应该足够大,以减少功耗和热量,同时不影响RS485收发器的驱动能力和输出电压。

3.下拉电阻应该与RS485收发器的输入阻抗、终端电阻、总线长度、节点数等因素相匹配,以保证总线的阻抗匹配和信号完整性。

首先,我们针对收发器处于断线的状态时,此时收发器AB电压由RU、RT、RD和RIN共同决定,既:

3RS485总线下拉电阻计算公式

通常我们将RURD使用相同的值,则公式可简化为:

4RS485总线下拉电阻简化公式

此时,我们设芯片内部差分输入电阻RIN=15KΩVCC=3.3V且RT=120R,可以算出此时0Ω≤R239Ω,当然只要R≤232.5KΩ都能满足断线情况下AB线处于数据1状态。

针对于空闲状态,考虑到大部分节点设备都会在在AB线上添加RU和和RD电阻,且会在终端上增加 RT  电阻。如下图所示:

5RS485总线下拉电阻空闲状态

我们根据前面的推导过程可知,不同的只是因为增加节点而增加的输入电阻和上下拉电阻,所以我们根据上述电路可以推导出如下的公式:

6RS485总线空闲状态电阻计算公式

在这个公式中,m为带上下拉电阻的节点数量,n为节点数量。总线A端和B端的差值我们定义为最小的200mA,这样我们就可以将这个公式简化为:

7RS485总线空闲状态电阻简化计算公式

有了这个公式就可以根据实际的节点数量来确定上下拉电阻的值。

然而根据这个公式计算出来的结果仅仅只是一个理想值,在实际使用中上下拉电阻一般都是在节点内部确定了的。不同的节点设备,其内部的上下拉电阻可能不同,我们需要考量节点的数量来考量这个电阻的值。要确定上下拉电阻的值还需要考虑驱动芯片的带载能力。不能将上下拉电阻设置的很小。

总之,RS485总线要在AB线上加上下拉电阻,主要是为了保证总线在空闲或开路状态下有一个固定的差分电压,从而避免不确定状态导致的通信错误或失效。在选择下拉电阻的大小时,需要综合考虑功耗、驱动能力、阻抗匹配等因素,以保证通信的稳定性和可靠性。

今天的分享就到这里啦,EBYTE每一天都致力于更好的助力物联化、智能化、自动化的发展,提升资源利用率,更多产品更多资料,感兴趣的小伙伴可以登录我们的亿佰特官网和企业公众号(微信号:cdebyte)进行了解,也可以直接拨打400电话咨询技术专员!

https://www.wjx.cn/jq/84863372.aspx