485通信总是出现乱码,求助
电路如下图所示,主要功能是测试从某个一直发送485信息的机器上接收信号正不正常,一开始用买的帝特的485转USB线模拟测试调了很久,发现是不能接120Ω的终端电阻,把电阻去掉之后拿到机器上面踩数据,一开始还好好的,然后就会出现乱码,帝特的转接器接收到的数据正常,电路图如下,AB的上下拉电阻一开始用的3.3K,实测一点反应都没有,后来换成360R的,发现乱码后换成1.2K 680R 的都不能解决问题,芯片从MAX3485换成SP3485还是不行。
RO接上啦电阻后上面都收不到了,。片子是从嘉立创买的,感觉不是芯片的问题,因为一开始用的是淘宝上买的TI的SN65HVD72,也是不能接终端电阻,上下拉3.3K也是不行的
我不会告诉你,你那485的A,B端电阻接错了。6脚是A应该接5V上拉,7脚接对地下拉电阻。。。。。 6(A)上拉;7(B)下拉。 A上拉,B下拉
而且,你这上拉下拉电阻 阻值太小。受不了这么大的电流。 马克,最近也在用TI的485片子 我有一次也跟楼主一样,接错了上拉下拉电阻(但阻值比楼主的要大些)。
但是485也可以正常工作(实验室里,现场没试过) dancruiser 发表于 2015-1-28 08:55
我有一次也跟楼主一样,接错了上拉下拉电阻(但阻值比楼主的要大些)。
但是485也可以正常工作(实验室里, ...
很奇怪,换了A上啦B下拉后就不能工作了 LM1876 发表于 2015-1-27 17:40
我不会告诉你,你那485的A,B端电阻接错了。6脚是A应该接5V上拉,7脚接对地下拉电阻。。。。。 ...
很奇怪,换了A上啦B下拉后就不能工作了,昨天折腾了一晚上 Xujuango 发表于 2015-1-27 17:55
A上拉,B下拉
而且,你这上拉下拉电阻 阻值太小。受不了这么大的电流。
很奇怪,换了A上啦B下拉后就不能工作了,而且换了阻值后680R乱码更多 dancruiser 发表于 2015-1-28 08:55
我有一次也跟楼主一样,接错了上拉下拉电阻(但阻值比楼主的要大些)。
但是485也可以正常工作(实验室里, ...
我很不能理解,淘宝上那些AB都没接上下拉电阻的485模块还都一直在卖,我的485把我搞成这样子,不知道是不是嘉立创的问题,等今天淘宝的片子到吧 你把上下拉去电 终端电阻去掉试试程序先发一个字节看看是不是对的 不要一下子发堆数据 还有就是要防止冲突 上下拉电阻是不是小了点啊
yy8047 发表于 2015-1-28 11:48
上下拉电阻是不是小了点啊
换成大的,就一点反应都没有了 anta09 发表于 2015-1-28 11:44
你把上下拉去电 终端电阻去掉试试程序先发一个字节看看是不是对的 不要一下子发堆数据 还有就是要防止冲 ...
倒是没有全去掉过,这就去看看 你的总线上都挂了些什么东西啊 yy8047 发表于 2015-1-28 11:53
你的总线上都挂了些什么东西啊
现在又一台机器,我只要从那边接收就行了,只是一对一 有收发控制端可以不使用上下拉。 RS485通信常见问题:
1 关于总线端上下拉电阻:对于没有开路保护的485芯片,A端上拉,B端下拉是必要的。避免因不确定电平造成的干扰
2 关于差分电压:485是差分信号,发送端负责驱动总线电平,因此AB间的压差肯定在485规范范围内。需要注意的是A、B线的电压是相对于发送端GND的电压,而总线上个节点的GND不是相等的电位,必定存在电位差。对于接收端而言,差分电压正确,而A、B端的电压(相对于接收端的GND)有可能超过485芯片的极限值。因此,建议增加PSM712或者SM712进行电压箝位,确保总线电压不会超过芯片极限值。特别提醒:不能使用普通的TVS进行电压箝位,因为485电压不是双向对等电压:低:-7V,高:+12V。
3 关于RO端上拉:485是半双工通信,在接受状态和发送状态转换期间RO端的输出电压不确定,建议RO端接上拉电阻,防止单片机误进入接受中断。
4 关于共地问题:有人喜欢通过共地解决上述第2点问题(电压问题),就是把接收端和发送端的GND连接起来,这样各个节点的参考地就相等了。但是会引发新的问题,因为各个节点GND之间存在电位差,直接连接起来会有很大的电流(称作地回流),如果要连接各个节点的GND,建议不要直接连接,在各节点串联一个100欧姆的电阻。
5 关于隔离问题:如果现场干扰很严重(如:工业应用),建议进行电源和信号隔离,使用DCDC隔离电源隔离485与单片机的电源,使用光耦进行信号隔离。
以上是本人实际应用的RS485隔离电路,稳定可靠 直接拉AB线的波形来看就知道了,看看是不是正负波形没有相交?有没有干扰?
Michael_Wen 发表于 2015-1-28 13:50
以上是本人实际应用的RS485隔离电路,稳定可靠
非常感谢您的回答 楼主如何知道数据乱码了?在电脑上看到的数据吗? Michael_Wen 发表于 2015-1-28 14:02
楼主如何知道数据乱码了?在电脑上看到的数据吗?
MCU把接收到的数据打印出来,我也在485输出的TTL电平接了串口转USB打印出来,两个做对比 Divingbear 发表于 2015-1-28 13:58
直接拉AB线的波形来看就知道了,看看是不是正负波形没有相交?有没有干扰?
...
AB线上我直接连了一个485转USB来做对比用的 485遇到问题会很头疼,因为电路简单基本上没有什么多的东西可以进行排错 买个TTL转485的模块,照搬电路吧。 另,加隔离试试。 gaolf_2012 发表于 2015-1-28 12:15
有收发控制端可以不使用上下拉。
刚刚试了下,是不行的,之前别人画的原理图都是把6.7脚换了位置然后直接上下接到地和VCC,我没看清楚,但是我这反而可以用,换过来竟然不信,费解 miniqq80 发表于 2015-1-28 14:16
485遇到问题会很头疼,因为电路简单基本上没有什么多的东西可以进行排错
有一种预感,会不会是芯片的问题 jyrpxj 发表于 2015-1-28 14:16
买个TTL转485的模块,照搬电路吧。 另,加隔离试试。
正在做,发现人家就比我多了隔离 suebillt 发表于 2015-1-28 14:31
有一种预感,会不会是芯片的问题
看过规格书没有,供电电压对不对?不是每个芯片都是3.3V和5V通用的 miniqq80 发表于 2015-1-28 14:35
看过规格书没有,供电电压对不对?不是每个芯片都是3.3V和5V通用的
我用的3485,max的和sp的都是,3.3供电 去掉上拉,下拉,保留120R suebillt 发表于 2015-1-28 14:10
AB线上我直接连了一个485转USB来做对比用的
你先把思路理清楚。
485的原理是AB线传输差分信号,当A电压高于B电压200mV,RO输出0,当B高于A200mV,RO输出1.
所以让你抓信号,是让你看看你的输入信号是否正确,A,B线上的三个电阻是用来做电压钳位的,防止输入信号抖动造成的误动作的。
所以在你短线连接输入信号的时候,可以不接。只是来看看电路的逻辑正确与否。
当你的输入信号的逻辑正确,而RO没有正确输入,则看RE,DE信号的电平时序是否正确。
如果RE,DE信号正确,RO还是没有正确输出,或者没有输入信号,而RO上有电平波动,则判断芯片有问题,或者有来自MCU侧的干扰信号。
debug,要抓root cause。
什么抄电路,换电阻,都是瞎猫抓死耗子,碰上了就碰上了,碰不上就Orz了。 本帖最后由 Michael_Wen 于 2015-1-28 15:32 编辑
485总线可以接多个节点,你在总线上接一个USB转485,你的MCU也用串口输出数据接一个USB转TTL,对比两个虚拟串口的数据是否一致。如果数据有问题,你可以尝试将485芯片的RE/DE直接接低电平,RO直接接USB转TTL的RXD。如果数据一致,那么证明485芯片没问题,问题出在你的单片机程序。如果仍然有问题,那么应该是485芯片的问题。 注意:要用USB转TTL的模块,不要用USB转串口的模块。网上销售的USB转串口一般是RS232的电平 Michael_Wen 发表于 2015-1-28 15:18
注意:要用USB转TTL的模块,不要用USB转串口的模块。网上销售的USB转串口一般是RS232的电平 ...
我用过这个方法,测量过485的RO,除了按照错了的电路图接并且电阻是1K之下,别的情况RO都是高电平 不好意思,刚才说错了,总线上应该接USB转485的模块。 你可以自己搭建一个测试环境,不要接目标设备。用一个USB转485做发送方,你的板子做接收方,直接在电脑上调试数据。如果让然收不到数据,你在吧485芯片的RE和DE接低电平试试。还有就是如果是高电平应该收不到数据,而不是你说的乱码 mark 学习了 Michael_Wen 发表于 2015-1-28 15:37
你可以自己搭建一个测试环境,不要接目标设备。用一个USB转485做发送方,你的板子做接收方,直接在电脑上调 ...
乱码是指我按照我所画的错误电路图接,上下拉电阻是1K之内。。。接收到数据的情况下 Michael_Wen 发表于 2015-1-28 13:49
RS485通信常见问题:
1 关于总线端上下拉电阻:对于没有开路保护的485芯片,A端上拉,B端下拉是必要的。避 ...
为什么我的RO端常态是低电平呢??? 485注意事项18楼MARK mark!学习 MARK 33楼 RS485分析 我自己打板子的时候那3个电阻都画了,但是一般都是不焊的 也没出现过问题 学习了!谢谢各位 做开发最好有个示波器,这种情况下看一下485的波形应该很容易找到问题 485通信 mark 去掉120电阻可能会对,之前我读电表数据遇到过,手机没有看到图 看了一下,楼主一直没结题,不知道问题最后是怎么解决的 {:lol:} 18楼{:victory:} 学习了!
奇怪的问题。一对一通信不用120欧,上下拉也没必要。让芯片一直处于发送状态,看看485上的数是否正常。 Michael_Wen 发表于 2015-1-28 13:49
RS485通信常见问题:
1 关于总线端上下拉电阻:对于没有开路保护的485芯片,A端上拉,B端下拉是必要的。避 ...
你好,我现在遇到一个问题,就是接收别的机器上面的485信息过来进行分析,别的机器有的485有地有的没有地,485的线外层有屏蔽层,
那么这个屏蔽层和485的地该怎么处理 A、B的上、下拉电阻接反了。另外,电阻值取大点,如10K zchong 发表于 2015-9-2 08:41
做开发最好有个示波器,这种情况下看一下485的波形应该很容易找到问题
说的有道理,通常遇到这类问题,示波器会帮上大忙 不用上拉下拉 肯定能正常工作 更改下发送和读取间的延时看看 suebillt 发表于 2016-2-29 18:26
你好,我现在遇到一个问题,就是接收别的机器上面的485信息过来进行分析,别的机器有的485有地有的没有地 ...
33 楼和 18 楼 都讲得很清楚了,, 18楼也讲了地的处理,,你仔细看呀, 不同的系统可能地不相同,这不会影响通讯,但是如果电位相差太大会损坏485芯片的,所以18楼加得有TVS来限制这个情况,你仔细研究研究。。不要盲目的乱尝试。 Michael_Wen 发表于 2015-1-28 13:49
RS485通信常见问题:
1 关于总线端上下拉电阻:对于没有开路保护的485芯片,A端上拉,B端下拉是必要的。避 ...
回过来看这个帖子,好像电源和地没有隔离? 360换成4.7k
页:
[1]