ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

【雕爷学编程】Arduino动手做(75)---TTL转RS-485模块

2021-02-04 12:32:18  阅读:236  来源: 互联网

标签:动手做 MAX485 RS485 引脚 RS DE Arduino RE 模块


37款传感器与执行器的提法,在网络上广泛流传,其实Arduino能够兼容的传感器模块肯定是不止这37种的。鉴于本人手头积累了一些传感器和执行器模块,依照实践出真知(一定要动手做)的理念,以学习和交流为目的,这里准备逐一动手尝试系列实验,不管成功(程序走通)与否,都会记录下来---小小的进步或是搞不掂的问题,希望能够抛砖引玉。

【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)
实验七十五:TTL转RS-485模块 MAX485 RS485模块

MAX485
是一个8个引脚的芯片,它是一个标准的RS485收发器,只能进行半双工的通讯,内含一个输出驱动器和一个信号接收器。MAX485具有低功耗设计,静态电流仅为300uA。MAX485具有三态输出特性,在使用MAX485时,总线最多可以同时连接32个MAX485芯片。通讯波特率可以达到2.5M 。

MAX485的引脚定义
RO(引脚1):接收信号的输出引脚。可以把来自A和B引脚的总线信号,输出给单片机。是COMS电平,可以直接连接到单片机。
RE(引脚2):接收信号的控制引脚。当这个引脚低电平时,RO引脚有效,MAX485通过RO把来自总线的信号输出到单片机;当这个引脚高电平时,RO引脚处于高阻状态。
DE(引脚3):输出信号的控制引脚。当这个引脚低电平时,输出驱动器无效;当这个引脚高电平时,输出驱动器有效,来自DI引脚的输出信号通过A和B引脚被加载到总线上。是COMS电平,可以直接连接到单片机。
DI(引脚4):输出驱动器的输入引脚。是COMS电平,可以直接连接到单片机。当DE是高电平时,这个引脚的信号通过A和B脚被加载给总线。
GND(引脚5):电源地线。
A(引脚6):连接到RS485总线的A端。
B(引脚7):连接到RS485总线的B端。
Vcc(引脚8):电源线引脚。电源4.25V≤Vcc≤5.75V。

MAX485采用单一电源+5 V工作,额定电流为300 μA,采用半双工通讯方式。它完成将TTL电平转换为RS-485电平的功能。MAX485芯片的结构和引脚都非常简单,内部含有一个驱动器和接收器。RO和DI端分别为接收器的输出和驱动器的输入端,与单片机连接时只需分别与单片机的RXD和TXD相连即可;/RE和DE端分别为接收和发送的使能端,当/RE为逻辑0时,器件处于接收状态;当DE为逻辑1时,器件处于发送状态,因为MAX485工作在半双工状态,所以只需用单片机的一个管脚控制这两个引脚即可;A端和B端分别为接收和发送的差分信号端,当A引脚的电平高于B时,代表发送的数据为1;当A的电平低于B端时,代表发送的数据为0。在与单片机连接时接线非常简单。只需要一个信号控制MAX485的接收和发送即可。同时将A和B端之间加匹配电阻,一般可选100Ω的电阻。






MAX485的几个应用电路



TTL转RS-485模块 MAX485 RS485模块

模块特点
1、板载MAX485芯片,是一款用于RS-485通信的低功耗、限摆率收发器
2、板载接5.08(mm)间距2P接线柱,方便RS-485通信接线
3、芯片全部引脚已经引出,可以通过单片机控制操作
4、工作电压:5V
5、板子尺寸:46(mm)x12(mm)

模块电原理图

相比TTL的通讯方式,RS485具有传输距离远,抗干扰能力强,能够串联大量RS485设备的特点。最重要的是,能兼容大量RS485协议的工业级设备。如果用户需要在多个设备之前保持长距离稳定通信,RS485是一个非常好的选择。

● 工作电压:5V
● 板载MAX485芯片
● RS485通信功耗低
● 5.08mm间距2P端子
● 方便的RS-485通讯接线
● 板尺寸:44 x 14mm
● 它允许长距离1200米的串行通信

MAX-485 TTL至RS-485转换器模块的引脚

引脚名称 引脚说明
VCC 5V
A 非反相接收器输入,非反相驱动器输出
B 反相接收器输入,反相驱动器输出
GND GND(0V)
R0 接收器输出(RX引脚)
RE 接收器输出(低电平有效)
DE 驱动器输出(高电平使能)
DI 驱动器输入(TX引脚)

RS485由RS232和RS422发展而来,弥补了抗干扰能力差、通信距离短、速率低的缺点,增加了多点、双向通信能力,即允许多个发送器连接在同一条主线上,同时增加了发送器的驱动能力和冲突保护特性,扩展了总线共模范围。
RS485可以采用二线和四线两种方式,二线制可以实现真正的多点双向通信.其主要特点如下:
(1)RS485的接口信号电平比RS231-C低,不易损坏接口电路的芯片,且该电平与TTL电平兼容,方便于TTL电路相连接。
(2)RS485的数据最高传输速率为10Mbps.其平衡双绞线的长度与传输速率呈反比,在100Kbps速率下,才可能使用规定的最长电缆长度,只有在很短的距离下才能获得最高传输速率。
(3)RS485接口采用平衡驱动器和差分接收器的组合,抗共模干扰能力强,即抗噪声干扰性好,因而通信距离远,最大传输距离大约为1200m,实际可达3000m。
(4)RS485接口在总线上允许连接多达128个收发器,既具有多站能力.同时需要两个终端电阻,其阻值要求等于传输电缆的特性阻抗.在短距离300m内传输时可不连接终端电阻。

/*
【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)
实验七十六:TTL转RS-485模块 MAX485 RS485模块
将Arduino上的数字引脚10、11设置为软串口RX和TX与MAX485模块上的RO和DI连接
MAX485模块上的RE和DE连接在一起用一个引脚2控制MAX485收发状态切换
*/

include <SoftwareSerial.h>

SoftwareSerial Master(10, 11);
char val;
int DE_RE=2;
void setup() {
Serial.begin(38400);
Serial.println("Master is ready!");
Master.begin(38400);
pinMode(DE_RE,OUTPUT);
digitalWrite(DE_RE,LOW);
}
void loop() {
while (Serial.available()) {
digitalWrite(DE_RE,HIGH);
val = Serial.read();
Master.write(val);
}
digitalWrite(DE_RE,LOW);
while(Master.available()) {
val = Master.read();
Serial.write(val);
}
}

实验串口返回情况

/*
【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)
实验七十六:TTL转RS-485模块 MAX485 RS485模块
程序之二,主机代码
*/

include <SoftwareSerial.h>

SoftwareSerial Master(10, 11);
char val[5]={'0','0','N','N','N'}; //定义一个数组,用来将从机地址和信息匹配
char address; //定义从机地址
int DE_RE=2;
void setup() {
Serial.begin(9600); //初始化
Serial.println("Master is ready!");
Master.begin(38400);
pinMode(DE_RE,OUTPUT);
digitalWrite(DE_RE,LOW);
}
void loop()
{
for(int i = 49 ; i < 51 ; i++) //用来对每个从机进行一次大轮询
{
//发送车位序号i===================================//
digitalWrite(DE_RE,HIGH); //将主机设为发送状态
address = i; //给从机发地址,此时是字符式,49对应1的字符串
Master.write(address); //传唤对应号码的从机
digitalWrite(DE_RE,LOW); //然后立马换成接收状态
delay(500); //等一下从机反应,之前没有delay,
//maste.available还没反应过来,就过去了,加个
//delay刚刚好
//或许等从机加了超声波,还得调delay的时间

//接收车位信息到数组val里=========================//
while(Master.available()) //等从机把数据发过来
{
val[i-49] = Master.read(); //读车位信息到数组val
}
delay(1000); //小循环
} //整个for循环结束
for(int a = 0 ; a < 5 ; a++) //然后把整个字符串打印出来进行观察
{
Serial.print(a+1);
Serial.println(val[a]);
}
delay(2000); //最后一整个过程结束后,多等两秒钟
}

实验二串口返回情况

实验场景图

标签:动手做,MAX485,RS485,引脚,RS,DE,Arduino,RE,模块
来源: https://www.cnblogs.com/eagler8/p/14371960.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有