【雕爷学编程】Arduino动⼿做(75)---TTL转RS-485模块
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 = ad();
Master.write(val);
}
digitalWrite(DE_RE,LOW);
while(Master.available()) {
val = ad();
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++) //⽤来对每个从机进⾏⼀次⼤轮询
arduino字符串转数组{
//发送车位序号i===================================// digitalWrite(DE_RE,HIGH); //将主机设为发送状态
address = i; //给从机发地址,此时是字符式,49对应1的字符串Master.write(address); //传唤对应号码的从机
digitalWrite(DE_RE,LOW); //然后⽴马换成接收状态
delay(500); //等⼀下从机反应,之前没有delay,
,就过去了,加个
//delay刚刚好
//或许等从机加了超声波,还得调delay的时间
//接收车位信息到数组val⾥=========================// while(Master.available()) //等从机把数据发过来
{
val[i-49] = ad(); //读车位信息到数组val
}
delay(1000); //⼩循环
} //整个for循环结束
for(int a = 0 ; a < 5 ; a++) //然后把整个字符串打印出来进⾏观察{
Serial.print(a+1);
Serial.println(val[a]);
}
delay(2000); //最后⼀整个过程结束后,多等两秒钟
}
实验⼆串⼝返回情况
实验场景图

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。