xinchangkk 发表于 2009-12-30 13:39:32

对RS485的研究!

首先 筛选了网站里的几个原理图后:选中如下这种制作

http://cache.amobbs.com/bbs_upload782111/files_24/ourdev_520620.jpg
(原文件名:方案1.jpg)

仅采用右边部分,用的是avr M16, 直接接485的 2、3脚到I/O口。

如图:
http://cache.amobbs.com/bbs_upload782111/files_24/ourdev_520621.jpg
(原文件名:20091230(008).jpg)


实验结果:

与变频器通讯发送 ok    但接收不到反馈(用中断 或查询标志位方式都试过----在线仿真亦无接收完中断发生)


------------------------------------------


其后在淘宝买了一个 RS232转485 接口来研究:
http://cache.amobbs.com/bbs_upload782111/files_24/ourdev_520627.jpg
(原文件名:T2RNXeXfi92tNXXXXX_!!103867069.jpg)

发送和接收都 ok,    不枉费花了20元钱!!


对其拆解如下

http://cache.amobbs.com/bbs_upload782111/files_24/ourdev_520628.jpg
(原文件名:20091230(003).jpg)

http://cache.amobbs.com/bbs_upload782111/files_24/ourdev_520629.jpg
(原文件名:20091230(004).jpg)



485接口芯片是SP485EE

另一贴片是:   H7660 SCBA F836AAF      不知是什么作用? 难道是232芯片?


-----------------------------------------------------------------

用手机拍的照片可能不太清楚, 谁若是想看的清楚点,我回家拿相机再拍一下好了!

买的的转接口 原理图不知道谁有, 可否提供一下 (直接看PCB不懂!)

xinchangkk 发表于 2009-12-30 13:41:46

另外还在论坛看到
http://cache.ourdev.cn/bbs_upload800938/files_11/ourdev_483382.jpg

已经有上拉和下拉电阻了 中间再加一个有什么作用?

Appcat 发表于 2009-12-30 14:03:34

H7660 SCBA F836AAF就是一个电荷泵,用来通过串口取电,然后产生需要的工作电压。

czhaii 发表于 2009-12-30 14:06:56

研究的不错

fwluck 发表于 2009-12-30 15:48:44

第一个图完全没有问题。
收不到请查Q1部分。
另120欧端阻不要接。

zhang_mike2000 发表于 2009-12-30 19:19:21

【2楼】 Appcat 苹果猫
H7660 SCBA F836AAF就是一个电荷泵
我怎么找不到这个芯片的资料呀,请问这个是那个品牌的?

master5888 发表于 2009-12-30 20:38:39

ICL7660,其他品牌也多

xinchangkk 发表于 2009-12-31 14:30:30

接收还是不行!

-------------------

pc --> 买来的232转485 --->图1 的485芯片 ---> 单片机M16 .   这样是ok的,数据接收也正常!

pc --> 买来的232转485 ---> 变频器                              发送和接收都正常

单片机M16--->图1 的485芯片 ---> 变频器                     还是正常,变频器能够工作(启动、换频率等)



唯一不正常的就是:

变频器反馈信号--->图1 的485芯片---> 单片机M16         单片机收不到!

而且单步仿真到变频器启动后仿真就不能进行了!(应该是干扰),
换成只改频率不启动:仿真能够顺利进行但还是收不到反馈!

以上现象能判别是电路问题还是程序问题?

wawayu 发表于 2009-12-31 14:45:54

中间加的120欧姆电阻是匹配电阻

wawayu 发表于 2009-12-31 14:51:52

不能接收?看看是否已经将MAX485第2、3脚都置低?

xinchangkk 发表于 2009-12-31 15:12:39

这一点: 从pc --> 买来的232转485 --->图1 的485芯片 ---> 单片机M16

这个就可以看出来 接收pc信号是正常的!!

wawayu 发表于 2009-12-31 17:00:02

把完整的原理图和源代码传上来...

xinchangkk 发表于 2009-12-31 17:56:26

上:

接线 就是 楼顶图一

控制位在 PC7
http://cache.amobbs.com/bbs_upload782111/files_24/ourdev_521114.jpg
(原文件名:485串口1.jpg)



------------------------
程序:
//包含所需头文件

#include <iom16v.h>
#include <macros.h>
#include <eeprom.h>

/*------宏定义------*/
#define uchar        unsigned char
#define uint        unsigned int

uint omron = {0x01,0x10,0x21,0x01,0x00,0x02,0x04,0x00,0x01,0x12,0xc0,0xfb,0x02};
uint aelta = {0x01,0x06,0x20,0x01,0x00,0x1E,0xC2,0x53};// 写入001E即30Hz
uint receive_data;

void printf(uint *s);
void print(uint temp);
uint pp=0;

#pragma interrupt_handler uart0_rx_isr:12
void uart0_rx_isr(void)
{
EEPROMwrite(pp,UDR);
pp++;                  
if (pp>8) pp=0;
}
//端口初始化
void port_init(void)
{
PORTA = 0x00;
DDRA= 0x00;
PORTB = 0x00;
DDRB= 0x00;
PORTC = 0x80;
DDRC= 0x80;
PORTD = 0x01;
DDRD= 0x02;
}

//串口通信初始化
void usart_init(void)
{
UCSRB = 0x00;//禁止中断
UCSRA = 0x00;
UCSRC = BIT(URSEL) | 0x26;   //偶校验停止位1位   8位数据位
UBRRL = 0x33;
UBRRH = 0x00;         //9600 波特率
UCSRB = 0x98;   //发送、接收允许
}

void init_devices(void)
{
CLI(); //禁止所有中断
MCUCR= 0x00;
//MCUCSR = 0x80;//禁止JTAG
GICR   = 0x00;
TIMSK = 0x00;
port_init();
usart_init();
SEI();//开全局中断
}


void print(uint temp)
{ while(!(UCSRA&(1<<UDRE)));
UDR=temp;}
void printf(uint *s)
{uint i;
i=sizeof(omron)/2;
while(i){print(*s++); i--;}
}

//主函数
void main(void)
{uint i=0,j;
init_devices();
//在这继续添加你的代码

while(1)
{   
PORTC|=0x80;
for(j=0;j<5000;j++);       
printf(omron);//发

   // 收
PORTC&=0x7F;
    for(j=0;j<50000;j++);       
    for(j=0;j<50000;j++);       
    for(j=0;j<50000;j++);       
    for(j=0;j<50000;j++);       

}
}

==================================================
电脑过来 都能正常接收!

就是 变频器反馈过来的 收不到!不会产生中断!

-------------------------------
待会我加几个电阻电容试试, 再不行就加光耦!

我 认为是干扰的 问题

whuctx 发表于 2009-12-31 18:16:45

楼主完全可以把电路图抄下来自己做!

dhyana 发表于 2009-12-31 20:22:37

485是单工的,如果反馈信息来的太快,就冲突了,当然没有回馈。

AVR_DIY 发表于 2009-12-31 21:51:03

mark

Jmjmjm 发表于 2010-1-1 08:46:00

改下,发送一次后,接收时间长点试试,比如1s

xinchangkk 发表于 2010-1-1 16:29:17

变频器设置 收到信号后2ms 即作反馈, 我等待了200ms!

astudent 发表于 2010-1-1 18:37:31

关注

xinchangkk 发表于 2010-1-1 23:58:12

仔细看了 买来的那个转接器,485芯片的接线 和图一是一样的, 只不过 A、B 端 用的上拉和下拉电阻是3.3K

而且也没有 中间120欧的负载电阻!

xinchangkk 发表于 2010-1-3 20:56:51

终于通讯成功!

总结问题所在

1、 干扰! 变频器对线路板或仿真器的干扰, 变频器只要一带负载 即不能仿真

2、 设置设置信号反馈时间的问题, 变频器设的间隔时间 和单片机 开始接收并等待的时间要调配好!

--------------------

目前现状

仿真: 读写变频器参数 ok ,反馈信号接收ok(不带负载的情况)

带负载时, 检验反馈码后输出led灯, 指示通讯成功!   也正常了!!

-------------

不枉费苦战了2个夜晚。

weixintec 发表于 2010-1-4 00:39:42

学习

maomaolang007 发表于 2010-1-4 09:34:14

485 的 AB两线之间最后一级要加一个120欧的匹配电阻,不然会有过冲

li20030505 发表于 2010-1-5 10:50:07

学习

liudeen 发表于 2010-1-5 13:01:29

学习

zaftfreedom 发表于 2010-1-5 21:21:16

不错很详细,正想学习呢

yinhe 发表于 2010-2-7 21:41:14

ji

youpeng 发表于 2010-2-8 05:02:23

顶一下,佩服lz的研究井绳,和变频器是RTU协议吧

jerrychenglei 发表于 2010-2-8 09:20:44

mark~

windy__xp 发表于 2010-2-8 09:53:04

回LZ,你的电路中,使用了Q1这个三级管么?这是不合理的用法,当IO高阻时,收发控制为高电平,RS485处于发射状态,干扰总线,正常的是直接与IO连接,再加下拉电阻。不过这个电路虽然有缺陷,看是可以用的,仔细检测程序收发控制时间上的问题,这里出问题的可能性极大。

    不知道LZ对RS485的具体要求,如果要求不高,可以考虑自动切换收发而不需要IO控制收发电平,参考电路如下。

http://cache.amobbs.com/bbs_upload782111/files_26/ourdev_533023.JPG
(原文件名:RS485.JPG)

windy__xp 发表于 2010-2-8 09:55:05

慢了一步,恭喜LZ解决问题。

chenloveyj 发表于 2010-2-8 09:59:43

回复【29楼】windy__xp龙笑
    回LZ,你的电路中,使用了Q1这个三级管么?这是不合理的用法,当IO高阻时,收发控制为高电平,RS485处于发射状态,干扰总线,正常的是直接与IO连接,再加下拉电阻。不过这个电路虽然有缺陷,看是可以用的,仔细检测程序收发控制时间上的问题,这里出问题的可能性极大。
    不知道LZ对RS485的具体要求,如果要求不高,可以考虑自动切换收发而不需要IO控制收发电平,参考电路如下。

-----------------------------------------------------------------------

这个改造一下不需要外部电源就更好了。。。

windy__xp 发表于 2010-2-8 10:15:25

把光耦去掉,不做隔离不就行了,简单改改就可以用了的,主要是参考RS485芯片的收发控制。

quzegang 发表于 2010-3-2 17:02:18

mark

AVR_DIY 发表于 2010-3-3 10:54:55

回复【29楼】windy__xp 龙笑
    回LZ,你的电路中,使用了Q1这个三级管么?这是不合理的用法,当IO高阻时,收发控制为高电平,RS485处于发射状态,干扰总线,正常的是直接与IO连接,再加下拉电阻。不过这个电路虽然有缺陷,看是可以用的,仔细检测程序收发控制时间上的问题,这里出问题的可能性极大。
    不知道LZ对RS485的具体要求,如果要求不高,可以考虑自动切换收发而不需要IO控制收发电平,参考电路如下。


-----------------------------------------------------------------------
485芯片的4教是不是接错了?怎么接地了?不是TXD吗?

snglnc 发表于 2010-3-30 14:06:51

mark

windy__xp 发表于 2010-3-30 18:16:53

回复【34楼】AVR_DIY 苹果的另一半
回复【29楼】windy__xp 龙笑
    回LZ,你的电路中,使用了Q1这个三级管么?这是不合理的用法,当IO高阻时,收发控制为高电平,RS485处于发射状态,干扰总线,正常的是直接与IO连接,再加下拉电阻。不过这个电路虽然有缺陷,看是可以用的,仔细检测程序收发控制时间上的问题,这里出问题的可能性极大。
    不知道LZ对RS485的具体要求,如果要求不高,可以考虑自动切换收发而不需要IO控制收发电平,参考电路如下。
-----------------------------------------------------------------------
485芯片的4教是不是接错了?怎么接地了?不是TXD吗?

-----------------------------------------------------------------------

   肯定没错,这正是自动所发控制的关键所在。

lvyi913 发表于 2010-3-30 18:57:11

windy__xp 龙笑:请问这个电路您在项目中用的吗?

第二个问题,波特率可以做到多少?有没有上限?

谢谢!看到这个电路,有一种眼前一亮的感觉,呵呵!很感动!

windy__xp 发表于 2010-3-30 20:56:37

是实际项目中的电路,我们要求速度不高,最高速度没有测试,如果把TXD光偶加速部分改一下,到38400没问题吧。

xinjie1023 发表于 2010-5-17 22:32:18

29楼的电路有点取巧了,建议接收发送切换通过IO。29楼电路其他没问题。

bjj9217 发表于 2010-5-21 10:11:23

mark

dugutianma 发表于 2010-5-22 16:49:51

mark

adszmc 发表于 2010-7-20 20:33:47

有人研究过RS485AB线接错如何识别(总线上有很多设别,其中一台接错了,如何知道通讯不上是AB线接错了)?

shouzhou 发表于 2010-8-4 09:31:52

mark 备用!

shouzhou 发表于 2010-8-23 09:29:25

mark

sam99999 发表于 2010-12-7 12:41:12

不错不错啊,最近正要用到485通信。

hunter0395 发表于 2010-12-7 13:17:29

标记一下

steven_sd 发表于 2010-12-7 13:19:12

关注

xxch520 发表于 2010-12-7 13:43:29

记号一个,龙笑的图不错。

xjmlfm1 发表于 2010-12-8 16:06:57

记号一个,龙笑的图不错。

ringan865 发表于 2010-12-8 16:50:55

mark

tangwei039 发表于 2010-12-8 17:05:04

mark ,LZ 上点变频资料。

stevencao 发表于 2010-12-8 21:32:30

mark

wjhltk 发表于 2010-12-22 10:29:48

mark

czhongli 发表于 2010-12-22 12:36:31

记下

KevinLee 发表于 2010-12-22 13:01:14

mark

goink 发表于 2010-12-22 14:34:50

mark

jielove2003 发表于 2010-12-22 14:45:50

mark

dszx 发表于 2010-12-22 15:34:47

标记!

XQGG 发表于 2010-12-22 16:34:09

标记

xingyunliushui 发表于 2010-12-25 10:23:23

mark

vcrm 发表于 2010-12-25 11:48:53

mark

fshunj 发表于 2010-12-25 11:50:17

biaoji

harng 发表于 2010-12-29 08:51:05

mark!

maizchen1 发表于 2011-1-3 10:18:08

龙笑的图不错,是不是去掉光耦抗干扰差点

zlj2008 发表于 2011-1-3 10:52:51

mark!

picfxx 发表于 2011-5-16 15:54:54

大哥 有HXSP-485A的原理图吗?能不能给小弟传一份!picfxx@163.com

GZLJZ 发表于 2011-5-16 16:06:15

mark!

bynce 发表于 2011-5-16 16:13:10

回复【42楼】adszmc
有人研究过rs485ab线接错如何识别(总线上有很多设别,其中一台接错了,如何知道通讯不上是ab线接错了)?
-----------------------------------------------------------------------

这个也很简单。但是需要钱。
1.需要一个通信继电器 很贵 。

每次通信的时候发送独立的数字判断。 如果反向就控制继电器改变。 A B接线

sunnyhook 发表于 2011-5-16 20:55:24

http://cache.amobbs.com/bbs_upload782111/files_39/ourdev_640213NQ3UPG.JPG
(原文件名:00.JPG)
这个实验过,要求不高的场合可以用用,波特率250kbps没有问题。

zhaoyanrock 发表于 2011-5-25 20:41:22

mark

zhuyu2011 发表于 2011-5-28 09:24:09

回复【楼主位】xinchangkk 拥有
-----------------------------------------------------------------------

楼主,可以给我发一个pc --> 买来的232转485 --->图1 的485芯片 ---> 单片机M16的通信程序吗?我也正调试这个呢,谢谢

zjth1 发表于 2011-5-28 11:58:49

M20110501

flyingcys 发表于 2011-5-29 21:07:59

mark

guoermvp 发表于 2011-7-21 15:19:54

严重mark

Rapido 发表于 2011-7-21 15:26:32

mark

sunicecream 发表于 2011-7-21 19:50:15

MARK

dahuangabc 发表于 2011-7-21 20:05:10

回复【楼主位】xinchangkk 拥有
-----------------------------------------------------------------------

板子焊得比较乱,直接用232不就行啦

vermon 发表于 2011-7-21 20:25:42

回复【69楼】sunnyhook

(原文件名:00.jpg)
引用图片
这个实验过,要求不高的场合可以用用,波特率250kbps没有问题。
-----------------------------------------------------------------------

发送的时候485的发送端一直和地连接的   工作?

gusigusi 发表于 2011-8-9 20:29:11

豁然开朗

wshy2010 发表于 2011-8-10 10:05:03

厉害,学习了

zif520 发表于 2011-8-10 19:42:42

485mark

cuikai12345 发表于 2011-8-10 20:09:14

mark

langtuodianzi 发表于 2011-8-11 11:49:16

http://cache.amobbs.com/bbs_upload782111/files_44/ourdev_666468MS6SOE.jpg
(原文件名:RS485-BF091M.jpg)
依据相应的标准设计合理的保护电路、选用品质优良的适用元件,是保证通信设备安全的牢固基石。

ysu533 发表于 2011-9-2 11:13:43

mark485

liu672992381 发表于 2012-2-25 13:43:08

留个脚印

luguobing 发表于 2012-2-25 15:27:41

mark

f919036 发表于 2012-5-1 12:44:53

感謝分享 但如何收藏

dadongleilei 发表于 2012-5-1 13:09:27

看到大家的图 学习到了很多 485通讯不经过光耦,5V电平转为3.3V,我是通过一个NPN三极管实现的,但是115200波特率的时候有点问题,38400时通讯正常,电平转换这块大家怎么实现呢

pjx19880727 发表于 2012-6-18 14:28:29

windy__xp 发表于 2010-2-8 09:53 static/image/common/back.gif
回LZ,你的电路中,使用了Q1这个三级管么?这是不合理的用法,当IO高阻时,收发控制为高电平,RS485处于发 ...

请教,对于TXDO而言,如果我要发送“0”出去,那么TXDO的状态如何?TXDO为高电平,是发送状态,能把“1”发送出去!TXDO为低电平,485片子是接收状态,由于外围有上下拉,其实还是发送出“1”啊!

YIBAOJIA 发表于 2012-11-1 12:53:35

mark!!!!!

司马朝阳007 发表于 2012-11-3 15:39:19

{:smile:}{:smile:}{:smile:}{:smile:}{:smile:}{:smile:}{:smile:}{:smile:}{:smile:}

wsh 发表于 2012-12-25 15:39:10

make                                                

Allenwang2011 发表于 2012-12-27 11:07:12

mark一下~~~

jz701209李 发表于 2013-4-10 16:18:45

学习一下....

creativedream 发表于 2013-5-25 13:58:03

RS485的讨论研究
页: [1]
查看完整版本: 对RS485的研究!