搜索
bottom↓
回复: 95

对RS485的研究!

[复制链接]

出0入0汤圆

发表于 2009-12-30 13:39:32 | 显示全部楼层 |阅读模式
首先 筛选了网站里的几个原理图后:选中如下这种制作


(原文件名:方案1.jpg)

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

如图:

(原文件名:20091230(008).jpg)


实验结果:

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


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


其后在淘宝买了一个 RS232转485 接口来研究:

(原文件名:T2RNXeXfi92tNXXXXX_!!103867069.jpg)

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


对其拆解如下


(原文件名:20091230(003).jpg)


(原文件名:20091230(004).jpg)



485接口芯片是  SP485EE

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


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

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

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

出0入0汤圆

 楼主| 发表于 2009-12-30 13:41:46 | 显示全部楼层
另外还在论坛看到  


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

出1070入962汤圆

发表于 2009-12-30 14:03:34 | 显示全部楼层
H7660 SCBA F836AAF就是一个电荷泵,用来通过串口取电,然后产生需要的工作电压。

出0入0汤圆

发表于 2009-12-30 14:06:56 | 显示全部楼层
研究的不错

出0入0汤圆

发表于 2009-12-30 15:48:44 | 显示全部楼层
第一个图完全没有问题。
收不到请查Q1部分。
另120欧端阻不要接。

出0入0汤圆

发表于 2009-12-30 19:19:21 | 显示全部楼层
【2楼】 Appcat 苹果猫
H7660 SCBA F836AAF就是一个电荷泵
我怎么找不到这个芯片的资料呀,请问这个是那个品牌的?

出0入0汤圆

发表于 2009-12-30 20:38:39 | 显示全部楼层
ICL7660,其他品牌也多

出0入0汤圆

 楼主| 发表于 2009-12-31 14:30:30 | 显示全部楼层
接收还是不行!

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

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

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

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



唯一不正常的就是:

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

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

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

出0入0汤圆

发表于 2009-12-31 14:45:54 | 显示全部楼层
中间加的120欧姆电阻是匹配电阻

出0入0汤圆

发表于 2009-12-31 14:51:52 | 显示全部楼层
不能接收?看看是否已经将MAX485第2、3脚都置低?

出0入0汤圆

 楼主| 发表于 2009-12-31 15:12:39 | 显示全部楼层
这一点: 从pc --> 买来的232转485 --->  图1 的485芯片 ---> 单片机M16

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

出0入0汤圆

发表于 2009-12-31 17:00:02 | 显示全部楼层
把完整的原理图和源代码传上来...

出0入0汤圆

 楼主| 发表于 2009-12-31 17:56:26 | 显示全部楼层
上:

接线 就是 楼顶图一

控制位在 PC7

(原文件名:485串口1.jpg)



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

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

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

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

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++);       

}
}

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

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

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

我 认为是干扰的 问题

出0入0汤圆

发表于 2009-12-31 18:16:45 | 显示全部楼层
楼主完全可以把电路图抄下来自己做!

出0入0汤圆

发表于 2009-12-31 20:22:37 | 显示全部楼层
485是单工的,如果反馈信息来的太快,就冲突了,当然没有回馈。

出0入0汤圆

发表于 2009-12-31 21:51:03 | 显示全部楼层
mark

出0入0汤圆

发表于 2010-1-1 08:46:00 | 显示全部楼层
改下,发送一次后,接收时间长点试试,比如1s

出0入0汤圆

 楼主| 发表于 2010-1-1 16:29:17 | 显示全部楼层
变频器设置 收到信号后2ms 即作反馈, 我等待了200ms!

出0入0汤圆

发表于 2010-1-1 18:37:31 | 显示全部楼层
关注

出0入0汤圆

 楼主| 发表于 2010-1-1 23:58:12 | 显示全部楼层
仔细看了 买来的那个转接器,  485芯片的接线 和图一是一样的, 只不过 A、B 端 用的上拉和下拉电阻是3.3K

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

出0入0汤圆

 楼主| 发表于 2010-1-3 20:56:51 | 显示全部楼层
终于通讯成功!

总结问题所在

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

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

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

目前现状

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

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

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

不枉费苦战了2个夜晚  。

出0入0汤圆

发表于 2010-1-4 00:39:42 | 显示全部楼层
学习

出0入0汤圆

发表于 2010-1-4 09:34:14 | 显示全部楼层
485 的 AB两线之间最后一级要加一个120欧的匹配电阻,不然会有过冲

出0入0汤圆

发表于 2010-1-5 10:50:07 | 显示全部楼层
学习

出0入0汤圆

发表于 2010-1-5 13:01:29 | 显示全部楼层
学习

出0入0汤圆

发表于 2010-1-5 21:21:16 | 显示全部楼层
不错很详细,正想学习呢

出0入0汤圆

发表于 2010-2-7 21:41:14 | 显示全部楼层
ji

出0入0汤圆

发表于 2010-2-8 05:02:23 | 显示全部楼层
顶一下,佩服lz的研究井绳,和变频器是RTU协议吧

出0入0汤圆

发表于 2010-2-8 09:20:44 | 显示全部楼层
mark~

出0入0汤圆

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

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


(原文件名:RS485.JPG)

出0入0汤圆

发表于 2010-2-8 09:55:05 | 显示全部楼层
慢了一步,恭喜LZ解决问题。

出0入0汤圆

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

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

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

出0入0汤圆

发表于 2010-2-8 10:15:25 | 显示全部楼层
把光耦去掉,不做隔离不就行了,简单改改就可以用了的,主要是参考RS485芯片的收发控制。

出0入0汤圆

发表于 2010-3-2 17:02:18 | 显示全部楼层
mark

出0入0汤圆

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


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

出0入0汤圆

发表于 2010-3-30 14:06:51 | 显示全部楼层
mark

出0入0汤圆

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

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

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

出0入0汤圆

发表于 2010-3-30 18:57:11 | 显示全部楼层
windy__xp 龙笑:请问这个电路您在项目中用的吗?

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

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

出0入0汤圆

发表于 2010-3-30 20:56:37 | 显示全部楼层
是实际项目中的电路,我们要求速度不高,最高速度没有测试,如果把TXD光偶加速部分改一下,到38400没问题吧。

出0入0汤圆

发表于 2010-5-17 22:32:18 | 显示全部楼层
29楼的电路有点取巧了,建议接收发送切换通过IO。29楼电路其他没问题。

出0入46汤圆

发表于 2010-5-21 10:11:23 | 显示全部楼层
mark

出0入0汤圆

发表于 2010-5-22 16:49:51 | 显示全部楼层
mark

出0入0汤圆

发表于 2010-7-20 20:33:47 | 显示全部楼层
有人研究过RS485AB线接错如何识别(总线上有很多设别,其中一台接错了,如何知道通讯不上是AB线接错了)?

出0入0汤圆

发表于 2010-8-4 09:31:52 | 显示全部楼层
mark 备用!

出0入0汤圆

发表于 2010-8-23 09:29:25 | 显示全部楼层
mark

出0入0汤圆

发表于 2010-12-7 12:41:12 | 显示全部楼层
不错不错啊,最近正要用到485通信。

出0入0汤圆

发表于 2010-12-7 13:17:29 | 显示全部楼层
标记一下

出0入0汤圆

发表于 2010-12-7 13:19:12 | 显示全部楼层
关注

出0入0汤圆

发表于 2010-12-7 13:43:29 | 显示全部楼层
记号一个,龙笑的图不错。

出0入0汤圆

发表于 2010-12-8 16:06:57 | 显示全部楼层
记号一个,龙笑的图不错。

出0入0汤圆

发表于 2010-12-8 16:50:55 | 显示全部楼层
mark

出0入0汤圆

发表于 2010-12-8 17:05:04 | 显示全部楼层
mark ,LZ 上点变频资料。

出0入0汤圆

发表于 2010-12-8 21:32:30 | 显示全部楼层
mark

出0入0汤圆

发表于 2010-12-22 10:29:48 | 显示全部楼层
mark

出0入0汤圆

发表于 2010-12-22 12:36:31 | 显示全部楼层
记下

出0入0汤圆

发表于 2010-12-22 13:01:14 | 显示全部楼层
mark

出0入0汤圆

发表于 2010-12-22 14:34:50 | 显示全部楼层
mark

出0入0汤圆

发表于 2010-12-22 14:45:50 | 显示全部楼层
mark

出0入0汤圆

发表于 2010-12-22 15:34:47 | 显示全部楼层
标记!

出0入0汤圆

发表于 2010-12-22 16:34:09 | 显示全部楼层
标记

出0入0汤圆

发表于 2010-12-25 10:23:23 | 显示全部楼层
mark

出0入0汤圆

发表于 2010-12-25 11:48:53 | 显示全部楼层
mark

出0入0汤圆

发表于 2010-12-25 11:50:17 | 显示全部楼层
biaoji

出0入0汤圆

发表于 2010-12-29 08:51:05 | 显示全部楼层
mark!

出0入0汤圆

发表于 2011-1-3 10:18:08 | 显示全部楼层
龙笑的图不错,是不是去掉光耦抗干扰差点

出0入0汤圆

发表于 2011-1-3 10:52:51 | 显示全部楼层
mark!

出0入0汤圆

发表于 2011-5-16 15:54:54 | 显示全部楼层
大哥 有HXSP-485A的原理图吗?能不能给小弟传一份!picfxx@163.com

出0入0汤圆

发表于 2011-5-16 16:06:15 | 显示全部楼层
mark!

出0入0汤圆

发表于 2011-5-16 16:13:10 | 显示全部楼层
回复【42楼】adszmc
有人研究过rs485ab线接错如何识别(总线上有很多设别,其中一台接错了,如何知道通讯不上是ab线接错了)?
-----------------------------------------------------------------------

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

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

出0入0汤圆

发表于 2011-5-16 20:55:24 | 显示全部楼层

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

出0入0汤圆

发表于 2011-5-25 20:41:22 | 显示全部楼层
mark

出0入0汤圆

发表于 2011-5-28 09:24:09 | 显示全部楼层
回复【楼主位】xinchangkk 拥有
-----------------------------------------------------------------------

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

出0入0汤圆

发表于 2011-5-28 11:58:49 | 显示全部楼层
M20110501

出0入0汤圆

发表于 2011-5-29 21:07:59 | 显示全部楼层
mark

出0入0汤圆

发表于 2011-7-21 15:19:54 | 显示全部楼层
严重mark

出0入0汤圆

发表于 2011-7-21 15:26:32 | 显示全部楼层
mark

出0入0汤圆

发表于 2011-7-21 19:50:15 | 显示全部楼层
MARK

出0入0汤圆

发表于 2011-7-21 20:05:10 | 显示全部楼层
回复【楼主位】xinchangkk 拥有
-----------------------------------------------------------------------

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

出0入4汤圆

发表于 2011-7-21 20:25:42 | 显示全部楼层
回复【69楼】sunnyhook

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

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

出0入0汤圆

发表于 2011-8-9 20:29:11 | 显示全部楼层
豁然开朗

出0入0汤圆

发表于 2011-8-10 10:05:03 | 显示全部楼层
厉害,学习了

出0入0汤圆

发表于 2011-8-10 19:42:42 | 显示全部楼层
485mark

出0入0汤圆

发表于 2011-8-10 20:09:14 | 显示全部楼层
mark

出0入0汤圆

发表于 2011-8-11 11:49:16 | 显示全部楼层

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

出0入0汤圆

发表于 2011-9-2 11:13:43 | 显示全部楼层
mark485

出0入0汤圆

发表于 2012-2-25 13:43:08 | 显示全部楼层
留个脚印

出0入0汤圆

发表于 2012-2-25 15:27:41 | 显示全部楼层
mark

出0入0汤圆

发表于 2012-5-1 12:44:53 | 显示全部楼层
感謝分享 但如何收藏

出0入0汤圆

发表于 2012-5-1 13:09:27 | 显示全部楼层
看到大家的图 学习到了很多 485通讯不经过光耦,5V电平转为3.3V,我是通过一个NPN三极管实现的,但是115200波特率的时候有点问题,38400时通讯正常,电平转换这块大家怎么实现呢

出0入0汤圆

发表于 2012-6-18 14:28:29 | 显示全部楼层
windy__xp 发表于 2010-2-8 09:53
回LZ,你的电路中,使用了Q1这个三级管么?这是不合理的用法,当IO高阻时,收发控制为高电平,RS485处于发 ...

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

出0入0汤圆

发表于 2012-11-1 12:53:35 | 显示全部楼层
mark!!!!!

出0入0汤圆

发表于 2012-11-3 15:39:19 | 显示全部楼层

出0入0汤圆

发表于 2012-12-25 15:39:10 | 显示全部楼层
make                                                

出0入0汤圆

发表于 2012-12-27 11:07:12 | 显示全部楼层
mark一下~~~

出0入0汤圆

发表于 2013-4-10 16:18:45 来自手机 | 显示全部楼层
学习一下....

出0入0汤圆

发表于 2013-5-25 13:58:03 | 显示全部楼层
RS485的讨论研究
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-5-6 05:07

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表