深入浅出:RS485偏置电阻设计

RS485 为什么需要上下拉电阻

RS485 是半双工差分总线 ,A、B 两根线在无节点发送时处于高阻态(浮空),这就会带来几个关键问题,必须靠上下拉解决:

1. 防止总线浮空,避免误码

  • 无数据发送时,收发器输出高阻
  • A、B 线浮空,容易受干扰、噪声影响
  • 干扰会让差分电压在阈值附近抖动,导致芯片误判为起始位,产生乱码

上下拉电阻把总线强制拉到固定的逻辑空闲电平

  • A 线接上拉电阻到 VCC
  • B 线接下拉电阻到 GND这样空闲时:VA>VB⇒差分电压为正⇒逻辑1(空闲状态)

2. 保证总线空闲时是稳定的 "逻辑 1"

RS485 协议规定:

  • 空闲状态必须是逻辑 1
  • 没有上下拉时,空闲状态不确定
  • 有了上下拉,才能正确识别起始位(逻辑 0)

3. 提高总线抗干扰能力

上下拉电阻相当于给总线提供直流偏置,降低高阻态对电磁干扰的敏感度,提升长线传输稳定性。

4. 配合终端电阻一起工作

实际应用中通常是:

  • 终端电阻 120Ω:匹配阻抗,消除反射
  • 上下拉电阻(常用 1kΩ~10kΩ):偏置空闲电平

两者功能不同,缺一不可

如何选择合适的上下拉电阻

上下拉电阻选太大容易飘,选太小功耗炸、带载能力不够。

一、选型核心原则

RS485 上下拉(偏置电阻)的目标只有两个:

  1. 空闲时保证 VA​>VB​,稳定为逻辑 1
  2. 不影响总线带载能力、不增加过多功耗

二、阻值怎么选?

1. 推荐常用值(工程通用)

  • 上拉 Rup​:10kΩ
  • 下拉 Rdown​:10kΩ

这是最稳妥、兼容性最好的取值,绝大多数场合直接用就行。

2. 阻值范围

  • 建议:4.7kΩ ~ 22kΩ
  • 不推荐:
    • <4.7kΩ:功耗太大,拉低总线电平,影响节点数
    • 22kΩ:偏置太弱,抗干扰差,容易误码

三、必须考虑:终端电阻 120Ω 的影响

RS485 总线两端通常有120Ω 终端电阻,它会和上下拉并联。

等效并联电阻大概为:Req​≈117Ω非常接近 120Ω,不会破坏阻抗匹配,这就是 10kΩ 合理的原因。

四、怎么简单判断合不合适?

满足下面这条就 OK:发送器10kΩ 上下拉在 3.3V/5V 系统里电流只有零点几毫安,完全安全。

五、如何计算差分电压

有120Ω匹配电阻时

根据偏置电阻计算空闲差分电压,核心是分析 上拉电阻、下拉电阻和终端电阻 构成的分压网络。下面以最常见的单点偏置(主控端)和双终端电阻为例,给出计算方法和公式。

1. 电路模型

· 电源 VCC(通常 5V 或 3.3V)

· 上拉电阻 Ru :A 线接 VCC

· 下拉电阻 Rd:B 线接 GND

· 终端电阻:总线两端各一个 R_t (通常 120Ω),在计算空闲状态时,两个终端电阻通过总线并联,等效为 Rteq = R_t / 2

· A 与 B 之间通过 Rteq连接

2. 等效电路化简

将电路转化为两个节点(A 和 B),它们之间跨接 Rteq}

A 节点通过 Ru接 VCC,B 节点通过 Rd 接 GND。

设 A 点电压 V_A ,B 点电压 V_B 。

根据节点电流法(或分压关系),可以得到:

V_A = VCC *(Rteq + Rd)/(Ru+ Rteq+ Rd)

V_B = VCC *Rd/(Ru+ Rteq+ Rd)

3. 差分电压

VOD = V_A - V_B = VCC*Rteq/(Ru+ Rteq+ Rpd)

5. 多点偏置的简化处理

若总线上多个节点都加了偏置电阻,则将所有 Ru并联为一个等效上拉电阻 Rueq,所有 Rd并联为等效下拉电阻 Rdeq},代入上述公式即可。

6. 注意事项

· 如果只有一端有终端电阻(非标准用法),则 Rteq=R_t 。

· 空闲差分电压应至少 200mV(标准要求),实际工程中常设计在 0.5V~2V 之间。

· 偏置电阻过小会增加驱动器负载,可能导致通信异常,需综合考虑节点数和总线长度。

无120Ω匹配电阻时

当总线上没有120Ω终端电阻时,A和B线之间没有直接的电阻通路,空闲差分电压的计算会有所不同。此时,总线仅通过偏置电阻上拉至 V_{CC} 和下拉至 GND,同时接收器输入阻抗(通常 ≥12kΩ)可视为高阻,基本不影响直流偏置。

若实际电路因接收器输入阻抗或其他负载导致电压略低于 VCC,可使用万用表直接测量 A、B 线对地电压后相减得到精确值。

当两个节点的上拉电压分别为5v和3.3v时

当总线上存在不同电源电压(如 5V 和 3.3V)的上拉时,空闲差分电压需通过叠加原理或节点电压法计算。下面以常见情况(两个节点均有上拉/下拉,无终端电阻)为例,给出计算方法。

1. 电路模型

假设:

· 节点1:A线经 Ru1上拉至 5V,B线经 Rd1下拉至 GND。

· 节点2:A线经 Ru2上拉至 3.3V,B线经 Rd2下拉至 GND。

· 无终端电阻(A、B之间无直流通路)。

此时,A线的等效电路为两个电压源(5V和3.3V)通过各自上拉电阻并联;B线为两个下拉电阻并联接地。由于A、B之间无直接电阻连接,A点电压仅由上拉网络决定,B点电压仅由下拉网络决定。

2. 计算A点电压

将两个上拉支路等效为戴维南电路:

VAeq=(5/Ru1 + 3.3/Ru2)/【1/Ru1+ 1/Ru2】

由于A点空载(无终端电阻),实际 V_A = VAeq。

示例:取 Ru1=Ru2=1k,则

V_A =4.15V

3. 计算B点电压

B点只有下拉电阻到地,因此:

RBeq = 1/【1/Rd1 + 1/Rd2】

B点电压 V_B = 0V(因为下拉直接接地,无其他电源)。实际中,若下拉电阻不是直接接地而是通过其他电路,则需单独计算,但典型RS-485偏置中下拉直接接地,所以 V_B=0V。

4. 差分电压

VOD= V_A - V_B = V_A

按上例,VOD= 4.15V,远大于200mV要求。

5. 若有终端电阻

若总线上接有 Rt(通常120Ω),则A和B之间通过 Rt 连接(或者两端各一个,等效为 Rt/2),此时必须联立方程计算。

设等效上拉网络(戴维南)为 VAeq、RAeq,等效下拉网络为 VBeq=0、RBeq},终端电阻为 Rteq。则:

V_A = VAeq*(RBeq+Rteq)/{RAeq+RBeq+Rteq}

V_B = VAeq*(RBeq)/{RAeq+RBeq+Rteq}

差分电压 VOD=V_A-V_B = VAeq* Rteq

/{Rteq+RAeq+RBeq}。

6. 注意事项

· 电流倒灌:当不同电源通过上拉电阻并联时,电压较高的电源会向电压较低的电源灌电流,但只要电阻足够大(通常1kΩ以上),电流很小,不会损坏器件。

· 实际测量:理论计算后,建议用示波器或万用表实测A、B线对地电压,以验证实际焊接和接触情况。

· 标准要求:空闲时差分电压应≥200mV。混合电源时通常都能满足,但若偏置电阻过大(如10kΩ),终端电阻又存在,可能使差分电压过低。

相关推荐
普中科技5 天前
【普中STM32F1xx开发攻略--标准库版】-- 第 38 章 RS485 通信实验
stm32·单片机·嵌入式硬件·开发板·通信·rs485·普中科技
蓝天居士1 个月前
RS485在Linux内核(驱动)及全志T113平台上的实现(7)
串口·rs485·设备驱动
蓝天居士1 个月前
RS485在Linux内核(驱动)及全志T113平台上的实现(4)
串口·rs485·设备驱动
蓝天居士1 个月前
RS485在Linux内核(驱动)及全志T113平台上的实现(5)
串口·rs485·设备驱动
同志啊为人民服务!2 个月前
RS485通信,无法进入中断处理程序,问题分析过程
单片机·编译器·rs485·中断处理程序
ccut 第一混2 个月前
C# 基于 RS485 与设备通讯(以照度计为例子)
c#·rs485
一个平凡而乐于分享的小比特4 个月前
TTL、RS232、RS485串口通信协议详解与对比
串口通信·ttl·rs232·rs485
黑客思维者4 个月前
工业级 RS485 故障排查宝典:硬件 + 协议 + 环境干扰的系统化解决思路
modbus·rs485
brave and determined4 个月前
接口通讯学习(day04):RS-232与RS-485:通信接口全解析
网络·uart·通讯·emc·rs232·rs485·嵌入式设计