问小白 wenxiaobai
资讯
历史
科技
环境与自然
成长
游戏
财经
文学与艺术
美食
健康
家居
文化
情感
汽车
三农
军事
旅行
运动
教育
生活
星座命理

RS485转TTL模块的使用介绍

创作时间:
作者:
@小白创作中心

RS485转TTL模块的使用介绍

引用
CSDN
1.
https://m.blog.csdn.net/weixin_42880082/article/details/144963833

RS485转TTL模块是工业自动化和嵌入式开发中常见的信号转换模块,它能够实现TTL电平信号与RS485差分信号之间的转换,从而延长通信距离并增强抗干扰能力。本文将详细介绍RS485转TTL模块的使用方法,包括模块引脚功能、信号传输优势、硬件连接方式以及相关代码示例。

RS485转TTL模块的使用介绍

模块引脚功能

  • RO:接收器输出
  • RE:接收器输出使能(低电平有效)
  • DE:驱动器输出使能(高电平有效)
  • DI : 驱动器输入
  • GND: 连接地
  • A:驱动器输出/接收器输入(同相)
  • B:驱动器输出/接收器输入(反相)
  • VCC :芯片供电

该模块电路无法实现自动切换收发。只能配置为一个模块接收,另外一个模块配置为发送模式。

为什么要将TTL 转 RS-485信号进行传输?

将 TTL 转 RS-485 信号进行传输主要有以下原因:

传输距离方面

  • TTL 传输距离受限:TTL 电平信号在传输过程中衰减较快,抗干扰能力较弱,通常在 9600 波特率下,传输距离仅为 2 米左右,一般不超过 15 米。而 RS-485 采用差分传输方式,信号传输距离远,在适当的波特率下,最大传输距离标准值可达 1200 米左右,采用阻抗匹配、低衰减的专用电缆还可以达到 1800 米,超过 1200 米可加中继器继续延长传输距离。
  • 满足长距离通信需求:在工业自动化、远程监控等系统中,设备之间往往距离较远,如工厂中的不同车间、远程的气象监测站与监控中心等,使用 TTL 转 RS-485 模块将 TTL 信号转换为 RS-485 信号后进行传输,可以轻松实现长距离的数据通信,确保信息的有效传递。

抗干扰能力方面

  • TTL 抗干扰性差:TTL 电平信号是单端信号,由一条信号线和一条地线产生,信号线上的干扰信号容易跟随有效信号传送到接收端,使得有效信号受到干扰。在工业环境或其他复杂电磁环境中,如电机、变频器等设备产生的电磁干扰,容易影响 TTL 信号的传输质量,导致数据错误或丢失。
  • RS-485 抗干扰性强:RS-485 采用平衡驱动器和差分接收器的组合,差分传输方式使得共模干扰信号在接收端被有效抑制,只有差分信号才能被接收和处理,从而大大增强了抗干扰能力,能在有电子噪声的环境下进行稳定、可靠的通信,保证数据传输的准确性和完整性。

多设备连接方面

  • TTL 设备连接数量有限:一般的 TTL 接口在总线上通常只能连接一个收发器,连接多个设备时布线复杂且容易出现冲突和干扰等问题。而 RS-485 接口在总线上允许连接多达 128 个收发器,具有多站能力,用户可以利用单一的 RS-485 接口方便地建立起设备网络,实现多个设备之间的数据共享和协同工作。
  • 构建设备网络:在一些需要多个设备进行通信的系统中,如智能农业监控系统中的多个传感器、工业控制系统中的多个控制器和执行器等,将 TTL 设备转换为 RS-485 信号后,可以方便地将这些设备连接到同一总线上,简化系统的布线和结构,降低成本和维护难度。

兼容性方面

  • TTL 与其他设备不兼容:TTL 电平信号是一种内部逻辑电平标准,主要用于计算机处理器控制的设备内部的数据传输,其电气特性和通信协议与许多外部设备和通信标准不兼容,如一些工业标准的通信设备、远程监控设备等通常采用 RS-485 等标准通信接口。
  • RS-485 兼容性好:通过 TTL 转 RS-485 模块将 TTL 信号转换为 RS-485 信号,可以使原本只支持 TTL 电平的设备能够与广泛使用 RS-485 接口的其他设备、系统进行通信和连接,实现不同设备之间的互联互通,提高设备的通用性和可扩展性。

传输速率方面

  • TTL 传输速率受限:TTL 信号本身在传输速率上相对受限,尤其是在长距离传输时,为了保证信号的完整性和准确性,往往需要降低传输速率。而 RS-485 的数据最高传输速率可达 10Mbps,在一定的传输距离内可以实现较高的数据传输速率,满足对数据传输速度有较高要求的应用场景。
  • 满足高速数据传输:在一些需要快速数据采集和实时控制的系统中,如高速自动化生产线的监控系统、实时视频监控系统等,将 TTL 信号转换为 RS-485 信号后,可以利用 RS-485 较高的传输速率实现快速、稳定的数据传输,确保系统的实时性和高效性。

RS485转TTL模块与USB转串口模块通讯连接说明

采用标准的 rs485转ttl模块,通过电脑端的上位机实现收发测试。

  • 通讯实验所需硬件:RS485转TTL模块 X2、USB转串口模块(CH340N)X2
  • 上位机软件:串口调试助手。

发送数据端

  • RE和DE连接到一块,并连接到VCC。
  • R0连接USB转串口模块的RXD端.
  • DI连接USB转串口模块的TXD端.

接收数据端

  • RE和DE连接到一块,并连接到GND。
  • R0连接USB转串口模块的RXD端.
  • DI连接USB转串口模块的TXD端.

如需收发端切换,只需将两模块的RE和DE引脚电平同时做改变即可。

RS485转TTL模块之间连接

  • 模块之间,A连接对应模块的A端。
  • 模块之间,B连接对应模块的B端。
  • 供电VCC:有5V/3.3V(具体看芯片手册)

RS485转TTL模块,本质上还是串口通讯,只是通讯线路中,所使用的逻辑电平电压不同。通讯时,需要两个模块使用,解决通讯距离问题。

RS-485 标准的最大传输距离可达 1200 米,最大传输速率为 10Mbps。

其他相关参考电路

利用 USB 转串口连接电脑的 RS485 控制下载线路图(自动控制或 I/O 口控制)

在 RS485 通讯电路中,在 A 和 B 引脚之间的电阻作用

阻抗匹配

RS485 通常使用特性阻抗为 120Ω 左右的屏蔽双绞线进行信号传输。当信号传输到线路末端时,如果末端阻抗与传输线的特性阻抗不匹配,就会引起信号反射,导致波形失真和数据错误。在 A 和 B 引脚之间接入 120 欧姆电阻,可以使电路的输入输出阻抗与传输线的特性阻抗相匹配,吸收信号的能量,从而防止信号反射,确保信号的完整性和准确性。

减少信号干扰和误码

在高速数据通信中,信号反射会引发干扰,可能导致接收端无法正确判断信号的电平,进而产生误码。通过在 A 和 B 引脚之间增加 120 欧姆电阻,能有效减少信号的畸变和干扰,保证数据的准确性,降低误码率,使通信更加稳定可靠。

稳定总线上的信号电平

RS485 总线是一种多点通信的总线结构,如果没有终端电阻,总线上的信号可能因为过多的反射或负载影响而产生不稳定的电平状态。120 欧姆电阻作为一个稳定的负载,可以避免信号的不规则振荡,使总线上的信号电平保持稳定,从而提高通信质量。

抑制电磁干扰

RS485 通信常用于长距离传输,长电缆容易受到外界电磁干扰的影响。适当的终端电阻可以在一定程度上抑制外界干扰,使通信信号更加清晰稳定,减少电磁干扰对通信的影响。

注意不是所有的此电路中,都需要加这个电阻,需根据实际使用场景,按需添加。最好在电路设计中保留。一般情况下不需要增加终端电阻,只有在RS485通信距离超过300米的情况下。

标准RS485数据收发,51单片机驱动代码程序

标准RS485数据收发,RE和DE相连接用一个IO口控制.

/***************************************************************************
标题:	串口调试程序,查询法接收数据
效果:	通过MAX485模块发送和接收数量
******************************************************************************/
//头文件:
#include "reg51.h"
unsigned char RDAT = 0;
unsigned char TDAT = 0;
sbit Key1 = P3^7;
sbit  RE_DE = P3^2;	//本例程采用方式二连接,即RE和DE相连接用一个IO口控制
void Delay(unsigned int k)
{
    while(k--);       
}
void Init(void)
{
    TMOD=0x20;   	//定时器1,工作方式2              
    TH1=0xfd;		//波特率为9600
    TL1=0xfd;
    PCON=0x00;              
    TR1=1;     		//启动波特率发生
    SCON=0x50;		//工作方式1,8位UART,波特率可变,允许接收             
    RI = 0;
    TI = 0;   
    RE_DE=0;		//关闭485模块发射使能,打开接收功能
} 
void Send(unsigned char ldata)
{
    RE_DE=1;		//打开485模块发射使能,关闭接收功能
    SBUF=ldata;		//写发送寄存器
    while(!TI);		//等待发送完成
    TI=0; 			//对标志位清零
    RE_DE=0;		//关闭485模块发射使能,打开接收功能
}
void KeyCount(void)
{
    if(Key1 == 0)
    {
        Delay(120);
        if(Key1 == 0)
        {
          	TDAT++;
            Send(TDAT);
        }
        while(Key1==0);
     }
}
//主函数,C语言的入口函数:	
void main(void)  
{
    Init();
    while(1)
    {
      	if(RI){				//查询是否有数据接收
            RDAT=SBUF;		//数据存于变量中
            RI=0;			//重新清0等待接收
            //P2=RDAT;
        }
        KeyCount();		//检测按键来发送数据
    }	
}
  
© 2023 北京元石科技有限公司 ◎ 京公网安备 11010802042949号