昨天群里有群友问,这个转化器A的上拉电阻和B的下拉电阻都选10KΩ会不会太大了?如果端接120欧姆的终端电阻分压后会不会出问题?(RS485的高电平判断标准为大于+200mV,低电平判断标准为小于-200mV
image.png
然后我做了以下测试,分享给各位同好:
  • 不接120Ω终端匹配电阻,测试波形图如下,A-B的波形:
    image.png
这个波形看起来是很正常
当发送为低电平时,A0B1,此时A-B=-5V
当发送为高电平时,A1B0,此时A-B=5V
均符合高低电平判断标准。
  • 接入120欧姆终端电阻后,测试波形图如下,A-B的波形:
    image.png
这个波形就看起来不那么正常了(不过接收端可以正常接收!!
发送为低电平时,A0B1,此时A-B=-5V(正常)
当发送为高电平时,由于存在收发自动切换电路,此时切换为接收状态,A和B均输出为高阻Z态。此时分压后A-B电压等于
5/(10k+10k+120)*120≈29mV
但是上图可以看到,也并不是完全没有发出来高电平,而是在低电平切换为高电平时会有一个小的高电平尖峰,然后又回落到mV级别。那么分析这个尖峰的产生原因为:
image.png
假设Tx由低电平转为高电平,那么反相器前面的电容是要充电的,在充电充到反相器输入端判为高电平的过程中,芯片都是在发送状态,所以会发出来一小段高电平 ,那个尖峰就是电容充电导致反相器没有立即输出低电平切换到接收状态(A,B高阻)导致的。
image.png
然后我把电容拆掉了,果然这个高电平尖峰就不存在了,大致如下,除了-5V就是0V了基本,没有截图(图是前面的图加黑笔涂出来的)。不过此时接收端仍然可以正常接收(因为有的芯片判定范围做了优化,A-B只要大于-50mV就可以识别为高电平,具体以规格书为准)
image.png
那么这个电容到底是有什么用呢?
答案是增强驱动能力!因为这个自动收发算是两线制的RS485,即不需要单独的管脚做方向控制,而是利用了DI和反相器做方向控制
image.png
这种设计相比不带电容,而是直接用反相器控制的好很多,因为如果直接接反相器(有的用三极管),那么这个电路在DI等于1时,A和B都为高阻态,那么这个电路的驱动能力就完全由上下拉电阻的大小去决定,在线缆长的时候(下图为300米测试)就无法输出驱动的高电平,大致如下图:
image.png
而有这个电容的存在,就可以在DI由低电平到高电平跳变的时候(串口的起始位为低电平),给电容充电到反相器的输入阈值判断为高电平之前,让RS485芯片处于发送状态。从而可以让芯片的管脚输出A高电平,B低电平(而不是靠上下拉电阻,这很重要)。
然后电容充电到反相器的高电平判断阈值后,反相器才输出低电平使能接收,然后A和B均为高阻,然后这时的A和B的电平就完全靠上下拉电阻去决定了(由于之前芯片已经输出了A高B低,所以此时就算这个上下拉电阻驱动能力弱也没关系)
然后我在b站也看到了用三极管加电容的版本,如下图:
image.png
然后我对RC的大小又稍作了研究,总体而言,这个RC是不宜太大,也不宜太小的。如果RC太小,可能电容很快就充电到了反相器的高电平判断阈值(将485芯片切换为了接收状态,输出全靠上下拉),芯片不能很好的发送A高B低如果RC太大,可能会导致就算发送已经发完了但是RS485芯片还处于发送状态,不利于接收。
例如我把这个板子的电容C改为4.7uf,那么RC变大了,以至于发送完之后芯片还能持续20ms的发送状态,而如果在发送完之后还为发送状态的情况下,从机已经开始回复信息了,那么RS485芯片就接收不到,所以要综合考虑。
image.png
最后附赠整个隔离RS485的原理图:
image.png