suebillt 发表于 2015-1-27 17:31:52

485通信总是出现乱码,求助

电路如下图所示,主要功能是测试从某个一直发送485信息的机器上接收信号正不正常,一开始用买的帝特的485转USB线模拟测试调了很久,发现是不能接120Ω的终端电阻,把电阻去掉之后拿到机器上面踩数据,
一开始还好好的,然后就会出现乱码,帝特的转接器接收到的数据正常,电路图如下,AB的上下拉电阻一开始用的3.3K,实测一点反应都没有,后来换成360R的,发现乱码后换成1.2K 680R 的都不能解决问题,芯片从MAX3485换成SP3485还是不行。
RO接上啦电阻后上面都收不到了,。片子是从嘉立创买的,感觉不是芯片的问题,因为一开始用的是淘宝上买的TI的SN65HVD72,也是不能接终端电阻,上下拉3.3K也是不行的

LM1876 发表于 2015-1-27 17:40:28

我不会告诉你,你那485的A,B端电阻接错了。6脚是A应该接5V上拉,7脚接对地下拉电阻。。。。。

kxjie2006 发表于 2015-1-27 17:48:35

6(A)上拉;7(B)下拉。

Xujuango 发表于 2015-1-27 17:55:43

A上拉,B下拉

而且,你这上拉下拉电阻 阻值太小。受不了这么大的电流。

jiespring 发表于 2015-1-28 08:34:43

马克,最近也在用TI的485片子

dancruiser 发表于 2015-1-28 08:55:14

我有一次也跟楼主一样,接错了上拉下拉电阻(但阻值比楼主的要大些)。
但是485也可以正常工作(实验室里,现场没试过)

suebillt 发表于 2015-1-28 11:31:21

dancruiser 发表于 2015-1-28 08:55
我有一次也跟楼主一样,接错了上拉下拉电阻(但阻值比楼主的要大些)。
但是485也可以正常工作(实验室里, ...

很奇怪,换了A上啦B下拉后就不能工作了

suebillt 发表于 2015-1-28 11:31:42

LM1876 发表于 2015-1-27 17:40
我不会告诉你,你那485的A,B端电阻接错了。6脚是A应该接5V上拉,7脚接对地下拉电阻。。。。。 ...

很奇怪,换了A上啦B下拉后就不能工作了,昨天折腾了一晚上

suebillt 发表于 2015-1-28 11:32:11

Xujuango 发表于 2015-1-27 17:55
A上拉,B下拉

而且,你这上拉下拉电阻 阻值太小。受不了这么大的电流。

很奇怪,换了A上啦B下拉后就不能工作了,而且换了阻值后680R乱码更多

suebillt 发表于 2015-1-28 11:36:14

dancruiser 发表于 2015-1-28 08:55
我有一次也跟楼主一样,接错了上拉下拉电阻(但阻值比楼主的要大些)。
但是485也可以正常工作(实验室里, ...

我很不能理解,淘宝上那些AB都没接上下拉电阻的485模块还都一直在卖,我的485把我搞成这样子,不知道是不是嘉立创的问题,等今天淘宝的片子到吧

anta09 发表于 2015-1-28 11:44:26

你把上下拉去电 终端电阻去掉试试程序先发一个字节看看是不是对的 不要一下子发堆数据 还有就是要防止冲突

yy8047 发表于 2015-1-28 11:48:14

上下拉电阻是不是小了点啊

suebillt 发表于 2015-1-28 11:51:58

yy8047 发表于 2015-1-28 11:48
上下拉电阻是不是小了点啊

换成大的,就一点反应都没有了

suebillt 发表于 2015-1-28 11:52:38

anta09 发表于 2015-1-28 11:44
你把上下拉去电 终端电阻去掉试试程序先发一个字节看看是不是对的 不要一下子发堆数据 还有就是要防止冲 ...

倒是没有全去掉过,这就去看看

yy8047 发表于 2015-1-28 11:53:49

你的总线上都挂了些什么东西啊

suebillt 发表于 2015-1-28 11:58:01

yy8047 发表于 2015-1-28 11:53
你的总线上都挂了些什么东西啊

现在又一台机器,我只要从那边接收就行了,只是一对一

gaolf_2012 发表于 2015-1-28 12:15:22

有收发控制端可以不使用上下拉。

Michael_Wen 发表于 2015-1-28 13:49:01

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与单片机的电源,使用光耦进行信号隔离。

Michael_Wen 发表于 2015-1-28 13:50:10

以上是本人实际应用的RS485隔离电路,稳定可靠

Divingbear 发表于 2015-1-28 13:58:31

直接拉AB线的波形来看就知道了,看看是不是正负波形没有相交?有没有干扰?

suebillt 发表于 2015-1-28 14:00:56

Michael_Wen 发表于 2015-1-28 13:50
以上是本人实际应用的RS485隔离电路,稳定可靠

非常感谢您的回答

Michael_Wen 发表于 2015-1-28 14:02:35

楼主如何知道数据乱码了?在电脑上看到的数据吗?

suebillt 发表于 2015-1-28 14:09:35

Michael_Wen 发表于 2015-1-28 14:02
楼主如何知道数据乱码了?在电脑上看到的数据吗?

MCU把接收到的数据打印出来,我也在485输出的TTL电平接了串口转USB打印出来,两个做对比

suebillt 发表于 2015-1-28 14:10:39

Divingbear 发表于 2015-1-28 13:58
直接拉AB线的波形来看就知道了,看看是不是正负波形没有相交?有没有干扰?
...

AB线上我直接连了一个485转USB来做对比用的

miniqq80 发表于 2015-1-28 14:16:53

485遇到问题会很头疼,因为电路简单基本上没有什么多的东西可以进行排错

jyrpxj 发表于 2015-1-28 14:16:54

买个TTL转485的模块,照搬电路吧。 另,加隔离试试。

suebillt 发表于 2015-1-28 14:31:18

gaolf_2012 发表于 2015-1-28 12:15
有收发控制端可以不使用上下拉。

刚刚试了下,是不行的,之前别人画的原理图都是把6.7脚换了位置然后直接上下接到地和VCC,我没看清楚,但是我这反而可以用,换过来竟然不信,费解

suebillt 发表于 2015-1-28 14:31:46

miniqq80 发表于 2015-1-28 14:16
485遇到问题会很头疼,因为电路简单基本上没有什么多的东西可以进行排错

有一种预感,会不会是芯片的问题

suebillt 发表于 2015-1-28 14:32:15

jyrpxj 发表于 2015-1-28 14:16
买个TTL转485的模块,照搬电路吧。 另,加隔离试试。

正在做,发现人家就比我多了隔离

miniqq80 发表于 2015-1-28 14:35:22

suebillt 发表于 2015-1-28 14:31
有一种预感,会不会是芯片的问题

看过规格书没有,供电电压对不对?不是每个芯片都是3.3V和5V通用的

suebillt 发表于 2015-1-28 14:36:05

miniqq80 发表于 2015-1-28 14:35
看过规格书没有,供电电压对不对?不是每个芯片都是3.3V和5V通用的

我用的3485,max的和sp的都是,3.3供电

god-father 发表于 2015-1-28 14:53:15

去掉上拉,下拉,保留120R

Divingbear 发表于 2015-1-28 15:04:08

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:17:08

本帖最后由 Michael_Wen 于 2015-1-28 15:32 编辑

485总线可以接多个节点,你在总线上接一个USB转485,你的MCU也用串口输出数据接一个USB转TTL,对比两个虚拟串口的数据是否一致。如果数据有问题,你可以尝试将485芯片的RE/DE直接接低电平,RO直接接USB转TTL的RXD。如果数据一致,那么证明485芯片没问题,问题出在你的单片机程序。如果仍然有问题,那么应该是485芯片的问题。

Michael_Wen 发表于 2015-1-28 15:18:47

注意:要用USB转TTL的模块,不要用USB转串口的模块。网上销售的USB转串口一般是RS232的电平

suebillt 发表于 2015-1-28 15:29:23

Michael_Wen 发表于 2015-1-28 15:18
注意:要用USB转TTL的模块,不要用USB转串口的模块。网上销售的USB转串口一般是RS232的电平 ...

我用过这个方法,测量过485的RO,除了按照错了的电路图接并且电阻是1K之下,别的情况RO都是高电平

Michael_Wen 发表于 2015-1-28 15:29:53

不好意思,刚才说错了,总线上应该接USB转485的模块。

Michael_Wen 发表于 2015-1-28 15:37:20

你可以自己搭建一个测试环境,不要接目标设备。用一个USB转485做发送方,你的板子做接收方,直接在电脑上调试数据。如果让然收不到数据,你在吧485芯片的RE和DE接低电平试试。还有就是如果是高电平应该收不到数据,而不是你说的乱码

sbk100 发表于 2015-1-28 15:47:49

mark 学习了

suebillt 发表于 2015-1-28 15:53:08

Michael_Wen 发表于 2015-1-28 15:37
你可以自己搭建一个测试环境,不要接目标设备。用一个USB转485做发送方,你的板子做接收方,直接在电脑上调 ...

乱码是指我按照我所画的错误电路图接,上下拉电阻是1K之内。。。接收到数据的情况下

Zenmvol 发表于 2015-4-2 10:07:29

Michael_Wen 发表于 2015-1-28 13:49
RS485通信常见问题:
1 关于总线端上下拉电阻:对于没有开路保护的485芯片,A端上拉,B端下拉是必要的。避 ...

为什么我的RO端常态是低电平呢???

cjt5132 发表于 2015-5-20 15:13:59

485注意事项18楼MARK

daska110a 发表于 2015-7-11 19:52:47

mark!学习

fm0826 发表于 2015-8-9 20:08:42

MARK 33楼 RS485分析

taiyangshendi2 发表于 2015-8-9 21:54:58

我自己打板子的时候那3个电阻都画了,但是一般都是不焊的 也没出现过问题

andy_huang 发表于 2015-9-2 08:13:13

学习了!谢谢各位

zchong 发表于 2015-9-2 08:41:59

做开发最好有个示波器,这种情况下看一下485的波形应该很容易找到问题

Doci 发表于 2015-9-2 08:55:21

485通信 mark

cwei 发表于 2015-9-2 09:06:36

去掉120电阻可能会对,之前我读电表数据遇到过,手机没有看到图

让小猪飞 发表于 2015-9-2 10:08:16

看了一下,楼主一直没结题,不知道问题最后是怎么解决的

wkman 发表于 2015-9-2 11:44:18

{:lol:} 18楼{:victory:} 学习了!

mydows 发表于 2015-9-2 16:11:28

奇怪的问题。一对一通信不用120欧,上下拉也没必要。让芯片一直处于发送状态,看看485上的数是否正常。

suebillt 发表于 2016-2-29 18:26:22

Michael_Wen 发表于 2015-1-28 13:49
RS485通信常见问题:
1 关于总线端上下拉电阻:对于没有开路保护的485芯片,A端上拉,B端下拉是必要的。避 ...

你好,我现在遇到一个问题,就是接收别的机器上面的485信息过来进行分析,别的机器有的485有地有的没有地,485的线外层有屏蔽层,
那么这个屏蔽层和485的地该怎么处理

LeiR 发表于 2016-3-15 16:17:39

A、B的上、下拉电阻接反了。另外,电阻值取大点,如10K

Mickey25 发表于 2016-3-15 16:26:59

zchong 发表于 2015-9-2 08:41
做开发最好有个示波器,这种情况下看一下485的波形应该很容易找到问题

说的有道理,通常遇到这类问题,示波器会帮上大忙

7802848 发表于 2016-3-17 08:49:08

不用上拉下拉 肯定能正常工作

一杯茶2009 发表于 2016-4-22 14:15:52

更改下发送和读取间的延时看看

jackiezeng 发表于 2016-5-12 15:08:11

suebillt 发表于 2016-2-29 18:26
你好,我现在遇到一个问题,就是接收别的机器上面的485信息过来进行分析,别的机器有的485有地有的没有地 ...

33 楼和 18 楼 都讲得很清楚了,, 18楼也讲了地的处理,,你仔细看呀, 不同的系统可能地不相同,这不会影响通讯,但是如果电位相差太大会损坏485芯片的,所以18楼加得有TVS来限制这个情况,你仔细研究研究。。不要盲目的乱尝试。

suebillt 发表于 2016-9-13 16:36:18

Michael_Wen 发表于 2015-1-28 13:49
RS485通信常见问题:
1 关于总线端上下拉电阻:对于没有开路保护的485芯片,A端上拉,B端下拉是必要的。避 ...

回过来看这个帖子,好像电源和地没有隔离?

acmilannast 发表于 2016-10-8 16:21:06

360换成4.7k
页: [1]
查看完整版本: 485通信总是出现乱码,求助