本案例RS485调试时当低波特率时,通讯还算良好,基本没有发现什么错误(由于时间有限,未做超过两小时的通讯测试),当达到115200bps时,有较大的通讯故障概率,有些板件甚至无法正常通讯。
案例详细描述:隔离电源隔离电源IB0505LS-1W,隔离光耦HCPL-M453-500E,RS485驱动芯片SP483EE。光耦输入端限流电阻470欧姆,输出端上拉电阻1.8K。终端匹配电阻100R-0805。
分析通讯故障可能有以下原因:1、供电不足导致器件工作不正常;2、前端EMI电路不合理,RS485芯片收不到信号;3、光耦隔离信号异常,信号缓冲电路74HC14有问题;4、处理器端的问题(RS485由FPGA解码);5、其他疑难杂症,难倒哥一百遍都解不开的。
分析开始:
1、电压5V±5%以内,供电正常。
2、上位机USB转RS485像板子发送数据,示波器观察SP483EEP的RO端,有数据出来;发送00H和、FFH很容易判断,数据正常无错误,EMI电路应该能用。
3、光耦隔离信号,信号有畸变导致错误?用示波器观察处理器端的RXD信号,跟SP483的RO端信号基本一致。
至此,貌似硬件没有问题呢,难道软件问题?事实上,有相当一部分板子是OK的,有些通讯异常的板子,换了光耦就行了,甚至换过新光耦了以后再把有问题的光耦装回去,通讯也正常了,这个就奇怪了。由此,判断软件的问题不大可能,问题应该还是光耦的地方,因为前后只动过光耦。
再次检查光耦信号,还别说,光耦输出低电平大约1V,高电平大约3.2V。基本3个光耦都是如此的输出。问题应该就是在1V的输出电平了。查看光耦的手册,光耦标称频率1MHz,CTR为20%至50%,噢NO,太XX小了吧,这传输比。
计算下:输入电流 If = (5V-1.5V)/ 470R = 7.445mA,当CTR为20%时,输出电流可以达到7.445mA * 20% = 1.489mA ,在5V的光耦供电下,输出电阻压降为 1.489mA * 1.8K = 2.68V,即输出低电平有可能为Vol = 5V - 2.68V = 2.32V。
明显如果光耦的CTR处于极小值时,光耦的输入根本达不到CMOS逻辑的低电平阀值!
如此电路参数必然有通讯故障隐患。由以上计算,光耦输出1V,推算CTR约为30%,而光耦的CTR典型值为24%。看来光耦没有问题,是光耦的用法有问题。
更换为输出电阻3.3K,理论上应该可以了,但是数据还是有出错,当然出错是偶尔才出来一次。不过在实验室都有通讯出错的出现,是小生不能容忍的。
时间有限,原电路参数不变,更换10M的光耦HCPL-M600,跑一段时间,居然无错误。贵了两三块钱,忍了吧,安全第一。
接下来是产线的苦逼活了,换光耦,OMG,延续了苦逼攻城师的悲催。
至此,问题暂告一段落,但是此处RS485还是有疑问。光耦直接推动SP485也有隐患,SP485EEP的逻辑高位2.0V,逻辑低为0.8V,但是光耦输出有可能达到0.5V(光耦的VOLmax参数),噪声容限只有0.3V了,实话说真的太低了,非常容易受干扰,这个在应用中的反映也是一致的。光耦加DCDC的成本20+,太高了。
完美解决时,再跟大家分享了,谢谢各位朋友。