4. RS485 收发器选型:常用芯片对比与失效保护设计
RS485 收发器,说白了就是决定你通信稳不稳的关键。我这些年调试过的 RS485 节点少说也有上千个,选错芯片的后果——要么丢包,要么烧片子。今天咱们就把 MAX485、SP3485、SN65HVD3082 这三款主流芯片掰开揉碎了讲,再聊聊失效保护偏置和隔离设计。
4.1 三款常用芯片对比
先看一张对比表,心里有个底:
| 参数 | MAX485 | SP3485 | SN65HVD3082 |
|---|---|---|---|
| 工作电压 | 5V | 3.3V / 5V | 3.3V / 5V |
| 数据速率 | 2.5 Mbps | 10 Mbps | 20 Mbps |
| 节点数 | 32 | 32 | 256 |
| 失效保护 | 无 | 无 | 有(全失效保护) |
| 共模范围 | -7V ~ +12V | -7V ~ +12V | -7V ~ +12V |
| 静态电流 | 300 μA | 500 μA | 200 μA |
| 封装 | DIP-8 / SO-8 | SO-8 | SO-8 |
MAX485 是老前辈了,5V 供电,2.5 Mbps 速率,32 个节点。我最早做 RS485 项目用的就是它,便宜、皮实。但有个坑——它没有失效保护。什么意思?就是总线空闲时,接收器输出可能是随机电平。我曾经因为这个原因,在一条 200 米长的总线上抓了三天波形,最后发现是 MAX485 在总线浮空时输出乱跳。
SP3485 是 MAX485 的 3.3V 版本,速率能到 10 Mbps。如果你用 3.3V 单片机,选它很合适。不过它同样没有失效保护,该加的偏置电阻一个都不能少。
SN65HVD3082 是我现在最常用的。它支持 256 个节点,速率 20 Mbps,最关键的是内置了全失效保护。总线开路、短路、空闲时,接收器输出确定的高电平。我最近一个 128 节点的楼宇自控项目,全部用的它,省掉了外部偏置电阻,故障率明显下降。
4.2 失效保护偏置设计
为什么需要失效保护?你想想看,RS485 是差分信号,靠 A、B 两线的电压差判断逻辑。总线空闲时,所有发送器都处于高阻态,A、B 线之间没有驱动。如果没有偏置,接收器输入端浮空,输出就可能乱跳。
失效保护偏置的原理很简单:在总线上加一组电阻,让 A 线比 B 线高 200 mV 以上。这样空闲时接收器输出稳定的高电平。
偏置电阻的计算方法:
假设总线终端电阻 Rt = 120Ω(两端各一个)
偏置电阻 R1 接 VCC 到 A,R2 接 B 到 GND
要求:V_A - V_B ≥ 200 mV
V_A = VCC × R2 / (R1 + R2 + Rt)
V_B = 0V
取 VCC = 5V,R1 = R2 = 1kΩ
V_A = 5 × 1000 / (1000 + 1000 + 120) ≈ 2.36V
V_A - V_B = 2.36V ≥ 200 mV ✓
但要注意功耗:
I = 5 / (1000 + 1000 + 120) ≈ 2.36 mA
P = 5 × 2.36 ≈ 11.8 mW
实际项目中,我习惯在主机端加偏置,从机端不加。这样整个总线只有一组偏置,简单可靠。如果总线特别长(超过 500 米),可以在两端都加,但要注意计算总偏置电流。
4.3 隔离型 RS485 设计
工业现场,地电位差是 RS485 通信的头号杀手。两个设备之间地电位差可能高达几十伏甚至上百伏。不隔离的话,轻则通信异常,重则烧毁芯片。
隔离型 RS485 设计,核心是三个部分:
- 电源隔离: 用 DC-DC 隔离模块,比如 B0505S,把系统电源和总线电源隔开。
- 信号隔离: 用数字隔离器,比如 ISO7221 或 ADuM1201,隔离 TX、RX 信号。
- 收发器: 隔离侧用标准的 RS485 收发器,比如前面提到的 SN65HVD3082。
我画一个典型的隔离 RS485 节点结构:
隔离设计的关键点:
- 隔离电压: 根据现场环境选,一般 2500Vrms 够用,恶劣环境选 5000Vrms。
- 数据速率: 数字隔离器有速率限制,ISO7221 能到 150 Mbps,够用。别用光耦,速率上不去。
- 电源隔离: DC-DC 模块的输出要加滤波电容,我习惯用 10μF + 0.1μF 组合。
- PCB 布局: 隔离两侧要保持足够爬电距离,至少 8mm。我见过有人把隔离两侧的地线铺在一起,那隔离就白做了。
4.4 选型决策流程
最后,我总结一个选型决策流程,帮你快速锁定芯片:
- 确定供电电压: 3.3V 还是 5V?3.3V 选 SP3485 或 SN65HVD3082,5V 选 MAX485 或 SN65HVD3082。
- 确定节点数: 超过 32 个节点,必须用 SN65HVD3082(256 节点)。
- 确定速率: 超过 2.5 Mbps,MAX485 出局。超过 10 Mbps,SP3485 出局。
- 是否需要失效保护: 总线可能浮空?选 SN65HVD3082,省掉外部偏置电阻。
- 是否需要隔离: 现场地电位差大?加数字隔离器和 DC-DC。
嗯,这套流程我用了好几年,没出过大问题。你按这个来,至少能避开 80% 的坑。