zoukankan      html  css  js  c++  java
  • 485通信

    485通信电路详解
    我用的原理图:

     
    理解:
    1、不发送数据时,TXD为高电平,TLP113第5脚为高电平,Q2导通,RE、DE为低电平,485此时为接收模式。
    2、发送数据时,若发送1,TXD为高电平,TLP113第5脚为高电平,Q2导通,RE、DE为低电平,485此时为接收模式,485芯片的AB引脚进入高阻状态,因为RD8把A拉高,RD9把B拉低,所以,AB传输的是1。
    3、发送数据时,若发送0,TXD为低电平,TLP113第5脚为低电平,Q2截止,RE、DE为高电平,485此时为发送模式,485芯片会把DI上的电平反应到AB引脚上输出,所以AB传输的是0。

    检修时,不接面板,TXD为虚高,TLP113为高电平,RE、DE为低电平,此时串口一直发送数据,RO电压有跳动,RXD电压有跳动。

    今天在查看485通信的资。起初一直很迷茫的,直到后面看了下面这篇文章,顿时醒悟。 该文章来自于 http://www.rationmcu.com/elecjc/2397.html

     
    上边是顽童哥一直在用的485通信自动收发电路,不但要把电路送给你,还要把电路原理给你讲明白了。实测波特率9600不会有问题,但是,波特率115200的话,曾经出现过问题。

    我们先看看普通的收发电路。

    普通的485电路,除了“用RXD连接485芯片的RO引脚、用TXD连接485芯片的DI引脚”,还会用一个单片机的普通IO引脚连接到RE、DE引脚上。
    在这里插入图片描述
    485自动收发电路1

    当单片机要发送数据的时候,控制CTRL为高电平,数据通过TXD发送出去。
    当单片机要接收数据的时候,控制CTRL为低电平,数据通过RXD接收回来。

    然而,自动收发电路,就是不用单片机引脚CTRL,当数据进来的时候,数据会自动通过RXD到单片机,当需要发送数据时,自动通过TXD发送出去。也就是只需要连接单片机的RXD和TXD引脚就可以,无需用单片机引脚连接485芯片的DE RE引脚。


    所以今天我来给大家解释一下其中的工作原理,详细到每个元器件。

    电阻R1的作用:

    RXD连接电阻R1到485芯片的RO,这里R1的作用是限流,保护引脚。R1的大小,可以选择330欧、470欧、560欧、1K。
    电阻R2、R3和三极管Q1:
    电阻R2、电阻R3和NPN三极管Q1组成一个典型的三极管开关电路。R3是限流电阻,最好选择4.7K,也可以选择10K。R2是上拉电阻,可以选择4.7K,也可以选择10K。
    NPN三极管,高电平导通,这个大家都知道。当TXD高电平,三极管导通,RE DE引脚接地,进入接收模式。当TXD低电平,三极管截止,RE DE引脚接高电平,进入发送模式。

    电容C1:

    C1是电源旁路电容,作用是给485芯片提供一个干净的电源,使它稳定的工作。
    你在设计电路板的时候,如果芯片没有特殊要求,需要把每个芯片旁边放上一个0.1微法电容。在PCB布线的时候,电容到电源引脚的距离最好在2mm以内。

    电阻R4和R5:

    R4是下拉电阻,接到B上。R5是上拉电阻,接到A上。为什么要这样做,下面会讲,现在还不是时候,请继续往下看。

    双向稳压二极管D1、D2、D3:
    这里使用的双向稳压二极管型号是SMAJ6.5CA。他们的作用是把A、B引脚对地的电压以及A和B引脚之间的电压,牵制到6.5V以内,保护485芯片。
    从SP3485芯片手册得到,AB的耐压值是正负15V以内。


    你们最大的疑问就是:DI引脚本来是接TXD的,但是电路中直接接地了,那岂不是发送的数据会一直都是0?

    发送数据过程:
    发送数据,用的是单片机的TXD引脚,也就是说,在TXD引脚上表现数据。
    例如要发送数据0x55,写成二进制就是0x01010101,TXD引脚上就会依次的用高低电平体现1和0。
    当TXD发送0时,三极管不导通,DE接高电平,进入发送模式,485芯片会把DI上的电平反应到AB引脚上输出,因为DI已经接地,所以AB引脚会传输0。你看看,当TXD发送0时,AB引脚发送0。
    当TXD发送1时,三极管导通,RE接低电平,进入接收模式,485芯片的AB引脚进入高阻状态,因为R5把A拉高,R4把B拉低,所以,AB传输的是1。你看看,当TXD发送1时,AB引脚发送1。
    总结,TXD发1,AB就发1;TXD发0,AB就发0。

    接收数据过程:
    接收数据,用的是单片机引脚RXD,也就是说,在RXD引脚上表现数据。
    在接收数据的过程中,TXD引脚是一直保持高电平的,当TXD是高电平时,RE是低电平,正好调理成了接收状态,然后485芯片的RO引脚(也就是接RXD的引脚)就会反应AB传输过来的数据。


    作者:zhangshuai
    本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须在文章页面给出原文连接,否则保留追究法律责任的权利。
  • 相关阅读:
    爬虫(五):生产者消费者方法
    三. Anagram detection problem for string(字符串中回文词汇检测问题)
    二. Object-Oriented Programming in Python: Defining Classes
    一.Introduction
    爬虫(四):正则表达式(提取str中网址)
    centos7源代码编译安装heartbeat
    linux yum配置
    java常见证书类型和密钥库类型
    常用的加密算法
    iptables学习理解
  • 原文地址:https://www.cnblogs.com/zhangshaui/p/15554459.html
Copyright © 2011-2022 走看看