极客工坊

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 46193|回复: 12

试用MAX485组半双工RS485网

[复制链接]
发表于 2011-10-7 13:20:52 | 显示全部楼层 |阅读模式

需Max485两个 DIP-8的  我买的0.5元一个

Arduino2、面包板2个、面包板线若干、120欧电阻2个

接线原理图


RO接Arduino的pin0(RX)  RE和DE一起接pin2(其实直接接5V和GND亦可,接5V为发送状态,接pin2的话相对灵活一点)  DI接pin1(TX)   

VCC接Arduino的5V   GND接GND      A接A B接B     原理图里应该能看到AB之间接根120欧电阻(应该是阻抗)





测试用程序 (匆忙中写的 你应该比我写的更好)

  1. //   Master
  2. //-------------------------------
  3. int EN = 2;
  4. byte h1 = 'red';
  5. byte h2 = 'white';
  6. void setup()
  7. {
  8.   pinMode(EN, OUTPUT);
  9.   Serial.begin(19200);
  10. }

  11. void loop()
  12. {
  13. // send data
  14.   digitalWrite(EN, HIGH);//使能发送
  15.   Serial.print(h1,BYTE);
  16.     delay(6000);
  17.   Serial.print(h2,BYTE);
  18.   delay(6000);
  19. }

  20. //----------------------

  21. //   Slaves
  22. //----------------------
  23. int ledPin = 13;
  24. int EN = 2;
  25. void setup()
  26. {
  27.   pinMode(ledPin, OUTPUT);
  28.   pinMode(EN, OUTPUT);
  29.   Serial.begin(19200);
  30. }

  31. void loop()
  32. {
  33.   // receive data
  34. digitalWrite(EN, LOW);//使能接收
  35.   if (Serial.available() > 0) {
  36.     byte val=Serial.read();
  37.     byte val1='red';
  38.     byte val2='white';
  39.     if (val == val1) {
  40.       digitalWrite(ledPin, HIGH);
  41.       delay(500);
  42.       digitalWrite(ledPin, LOW);
  43.       delay(500);
  44.       digitalWrite(ledPin, HIGH);
  45.       delay(500);
  46.       digitalWrite(ledPin, LOW);
  47.       delay(500);
  48.       digitalWrite(ledPin, HIGH);
  49.       delay(500);
  50.       digitalWrite(ledPin, LOW);
  51.       delay(500);
  52.     }
  53.     else if(val == val2){
  54.       digitalWrite(ledPin, HIGH);
  55.       delay(5000);
  56.       digitalWrite(ledPin, LOW);
  57.     }

  58.   }
  59. }
复制代码


当接收到red指令时13号灯闪3下   接到white时亮5秒!(之前用红白色的led试的,发现没有自带的13号灯方便)

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

评分

参与人数 1 +3 收起 理由
弘毅 + 3 赞一个!

查看全部评分

回复

使用道具 举报

发表于 2011-10-7 14:52:32 | 显示全部楼层
485组网理论可以传1200m,建议楼主整理一下两个机子之间的连线,好像最少要两条信号线,一条地的。毕竟连线几百米的话,很大成本在电线
回复 支持 反对

使用道具 举报

 楼主| 发表于 2011-10-7 16:29:40 | 显示全部楼层
哦 不过已经都被我拆了 {:soso_e100:} ~~~线怎么连 我已经说明了 即使没有图也应该能插好!~
回复 支持 反对

使用道具 举报

发表于 2011-10-7 22:20:11 | 显示全部楼层
学习了,正准备开始485改造计划
回复 支持 反对

使用道具 举报

发表于 2011-10-8 00:07:41 | 显示全部楼层
感觉不太详细,能不能把板子的情况介绍介绍,怎么有一个是大U口一个小U口是吗?
回复 支持 反对

使用道具 举报

 楼主| 发表于 2011-10-8 11:43:08 | 显示全部楼层
piaozhiling 发表于 2011-10-8 00:07
感觉不太详细,能不能把板子的情况介绍介绍,怎么有一个是大U口一个小U口是吗?

板子不重要~~大U小U都是arduino啊~~  每个板子都只用到pin0 pin1 pin2 5V GND
回复 支持 反对

使用道具 举报

发表于 2011-10-11 10:02:12 | 显示全部楼层
Ansifa 发表于 2011-10-7 14:52
485组网理论可以传1200m,建议楼主整理一下两个机子之间的连线,好像最少要两条信号线,一条地的。毕竟连线 ...

两条线,485是差分的,一般叫做 A + ,B- ;没有地.
回复 支持 反对

使用道具 举报

发表于 2012-4-7 09:02:27 | 显示全部楼层
我也想用485組网。如上是一对一的组网,如果我想用485组一个少于32台从机的网,怎么组呢?主从机A-A,B-B,从机之间也是A-A,B-B,如何区别不同的从机,是设置地址吗?怎么设呢?请教!
回复 支持 反对

使用道具 举报

发表于 2012-5-23 22:53:40 | 显示全部楼层

我看你是用右边这个接线方法,但左边这个图又是怎么回事呢,求解答。
回复 支持 反对

使用道具 举报

发表于 2014-3-4 01:12:28 | 显示全部楼层
楼主你这个是Ardunio与另一个Arduino串口通讯吗?
回复 支持 反对

使用道具 举报

发表于 2014-7-16 17:03:33 | 显示全部楼层
请问楼主。如果是用max485模块去给变频器发命令控制马达。该怎样写程序啊。。
我不懂modbus。还请指教。。
回复 支持 反对

使用道具 举报

发表于 2015-5-7 01:29:18 | 显示全部楼层
本帖最后由 prairiewolf 于 2015-5-9 11:09 编辑

楼主:我根据您的描述画了接线图,不知道正确与否(mega2560和arduino nano3.0)。
回复 支持 反对

使用道具 举报

发表于 2016-7-13 09:25:11 | 显示全部楼层
485的双机通讯,希望你能看到远距离传输是什么结果?另外程序中有个delay(6000),这个延时是不是太大了?
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则 需要先绑定手机号

Archiver|联系我们|极客工坊

GMT+8, 2024-5-3 13:29 , Processed in 0.043178 second(s), 30 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2021, Tencent Cloud.

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