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

 

 

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

 

普通的 485 电路,除了“用 RXD 连接 485 芯片的 RO 引脚、用 TXD 连接 485 芯片的 DI 引脚”,还会用一个单片机的普通 IO 引脚连接到 RE、DE 引脚上。

 

 

当单片机要发送数据的时候,控制 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。

 

R3 为什么最好选择 4.7K,我之前写过一篇文章,详细的提到过,主要是你需要了解三极管工作在放大区、截至区和饱和区的特点。上瑞生网,搜索“三极管”,有一篇文章的题目叫做《把三极管当开关用 基极限流电阻怎么选》。

 

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 以内。

 

 

有人很好奇,为什么会看这两个参数?因为 AB 这两个引脚就是 Drivers output 和 Receivers input。请看下图:

 


接线端子 P1:

 

 

是用来连接外面需要通信的 A 和 B 电线的。(这个好像不用说啊!)


现在,每个元器件就介绍完了,接下来说说为什么可以实现自动收发功能。

 

你们最大的疑问就是: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 传输过来的数据。

 

知道了这个电路的接收和发送数据的过程,那就已经完全了解了。你现在如果感觉到还是迷迷糊糊,自己做一个电路,实践一下,思路立马会变得清晰。