2533 字
13 分钟
Arduino 硬件设计入门 1 原理图解析

前言#

首先讲一下,虽然我是计科专业的,但由于专业的排课问题,我并不算是硬件设计出生的,所以这个系列中可能会有很多不成熟的见解,也请多多见谅。😔

我进行硬件设计最主要的原因就是:我的工作到了我不得不去学习硬件设计的地步。

原先我也是一个只会一点 Python 人工智能和写写 Arduino 控控东西的人,但由于工作逐渐的复杂化,使用 Arduino 的单片机加各种模块的方法已经无法支撑我的后续工作了,杜邦线已经把我绕晕了。

之后我才逐渐开始接触硬件设计,到现在不知不觉也过去一年了,从一开始画的三极管流水灯(已失败,点不亮)到后面逐渐复杂的各种单片机。

这一年我踩过非常多的坑了,刚开始的半年,我甚至因为一个复位时机问题,寸步未进!

现在想想就崩溃,而我出这个系列的原因是我最近在准备系统性地重学一次硬件设计,想记录一下学习前后区别。

这是该系列的第一篇,主要内容是解析一下 Arduino 官方的原理图,如果有 EDA 软件可以尝试绘制,我这里推荐新手尝试国产的 立创EDA ,虽然功能上不及 Altium Designer 或 Proteus ,但对于新手而言足够了,并且安装相当方便。

这里提到的关于 Arduino 的资源都能从 arduino.cc 官网获取。

原理图#

原理图,顾名思义就是表示电路板上各器件之间连接原理的图表1

下面这张就是 Arduino 官方给的 Arduino Nano 硬件设计的原理图:

硬件封装#

首先将视线放在左上角,那里有一个实际硬件的器件图,这一块很特殊,因为很少有人是这么标识的,你可以将 Arduino Nano 的各个引脚顺序和这个对比,可以发现一模一样。

我推测这部分的器件图其实是排针(因为有J1、J2的标识),只是顺便拿来当一个实际硬件的标识图,因为起类似作用的器件图在 Uno 或 Mega 的设计中都没有,所以我就单独先讲明。

最小系统#

这里开始才是重头戏,我个人对于如何设计一个单片机的起点就是如何设计一个最小单片机,因为硬件设计里其他很多东西都是虚的,可有可无。

核心芯片#

我个人的思考是,单片机的硬件设计在考虑指标参数之后,会选择一款芯片作为核心,而我们首先需要做的就是想办法先让这个芯片在最小规模的电路下运作。这里就非常依赖与厂商所提供的设计方案、原理图等资料了。

以 Arduino Nano 为例子,看上图,这里官方给出的核心芯片就是 Atmega328P-MUR(IC3),你在 Arduino Nano 上看到的 RX、TX、D13等常用的引脚都是在这个上的,这个芯片也是整个单片机的核心,其他的内容都是围绕该芯片进行设计的。

这里我提一嘴,国内的 Arduino Nano 大都采用的是 TQFP-32 封装的 Atmega328P-AU ,而不是 VQFH-32 封装的 Atmega328P-MUR,主要原因就是 TQFP 封装的芯片引脚是从芯片主体伸了一截出来,而 VQFP 封装的芯片引脚几乎是芯片主体平行的,这种芯片使用焊枪比较难焊,一般是使用风枪。但由于不管是 AU 还是 MUR 至少在引脚定义方面是完全一致的,所以请原谅我下面都会使用 Atmega328P-AU 替代 MUR

下图左边是 TQFP 封装的 AU,右边是 VQFN 封装的 MUR:

VQFN 封装的 MUR 一般都是提供给对重量、体积有要求的人,没有特殊需求其实无所谓。

晶振电路#

这里的晶振电路一般是说外部晶振电路,因为部分的芯片是自带内部晶振的,例如 Atmega328P-PU 就是内部自带 8MHz 的晶振电路,但也可以使用 16MHz 的外部晶振。

晶振电路会为核心芯片提供时钟信号,除开芯片限制之外,理论上晶振的频率越高,芯片的计算性能就越高。

如果你无法理解时钟信号对于芯片的作用可以看如下例子:一个芯片使用 1 Hz 的晶振就表示芯片每次计算需要消耗1秒, 10Hz 则只需要0.1秒,频率越高,单次计算耗时越少。

这里我绘制了一个关于晶振电路的例子,也可以参考上图编号为1的部分:

晶振电路一般是包含了2个电容和1个晶振,部分电路会加一个1M欧的阻抗匹配电阻(R1)。

Arduino 官方的图只用了1个元器件是因为它采用的是一种将电容和晶振组合的元器件。

复位电路#

如果使用过单片机,应该知道一般的单片机应该有一个能够让单片机重置复位的复位按钮,复位电路就是该按钮的功能实现。

如下是一个典型的 低电平复位电路

正常情况下,我们需要让 RESET 引脚处于高电平才能让芯片正常运行。

当我们按下按钮, RESET 那一端能被视作为短路,从而形成低电位,芯片就会复位重置。

当我们松开按钮, RESET 又会回到高电位,芯片就会重新正常工作。

注意:网上搜索复位电路时一定要注意是高电平还是低电平复位!

参考电压#

AREF. Reference voltage for the analog inputs. Used with analogReference().

在 Atmega328P-AU 这款芯片中的 AREF 引脚就是该芯片的基准电压外部输入引脚。

一般来说芯片都是会在内部给你一个参考电压(就是你的供电电压),如果没有必要都是接一个电容后接地即可。

芯片供电#

芯片供电这部分其实可以非常随意,这里先看我下面的几个例子:

上图中, VCC 和 AVCC 分别是供电和模拟供电接电池正极, GND 则是接电池的负极,在 Atmega328P-AU 这款芯片中就有着3对供电引脚,反正一般就按 VCC 连正极, GND 连负极就行,电压符合大于 1.8V 小于 5.5V 即可,具体看该芯片的开发手册。

比较随意的部分就是旁边的滤波电容了,这部分就是增加芯片稳定延长寿命的部分了,想省事的可以不加。

如果需要加的话这里门道就很多了,有什么高频、低频,反正麻烦的很,有些还要算电路。

我个人的经验是 厂商给多少我就加多少,没有就加两个 100nF 的贴片电容糊弄过去。

测试电路#

其实到这里,这个芯片的基本电路已经搭建完成,已经能够正常工作了,剩下的无非是提高芯片的稳定性或者完成其他的功能,下面就是一个简单的点灯操作:

一个 led 灯 加上一个电阻,当 D13 引脚输出高电平时, led 灯就会被点亮。

关于点灯有下面两个需要注意的点:

  1. 注意 led 灯原理图的摆放方向,反了就点不亮了;
  2. led 灯的电阻并不是随意放的,需要考虑 led 灯的压降、电流灯。

到这里,关于 Atmega328P-AU 这块芯片的最小系统就已经搭建完成,如下图:

在包含工作必须电路的同时,有一个测试电路用于测试芯片运行状态。

稳压电路#

用过 Arduino Nano 单片机的应该知道它上面有3种供电方法,分别是 USB,+5V引脚和 VIN 引脚。在这些方式当中只有 VIN 是支持宽电压输入(7~12V),那有想过为什么吗?下面就开始这部分的解析。

下图就是官方给的稳压电路:

稳压器#

这里的稳压器,可以视作是最小系统的核心芯片,稳压器是一个稳压电路的核心,整个稳压电路的大多数参数(例如最大输入电压、最大负载电流等)都能直接从这个部件上体现出来。

Arduino Nano 官方采用的是 LM1117IMPX-5.0 ,该线性稳压器参数如下:

参数详细
最大输入电压15V
输出电压5V
压差1.2V@800mA
输出电流800mA

在一般的使用情况下,以上4个参数就是这个线性稳压器比较重要的参数, Arduino Nano 推荐输入电压是 712V 的原因是它的线性稳压器的最大输入电压是 15V ,并且在 800mA 负载下的压降为 1.2V ,如果需要维持 5V 输出,就需要 6.2V 以上的输入,即 VIN 引脚的推荐输入电压实际上是 6.215V,同时为了冗余它还留了一部分。

需要一提的是,该稳压器国内用的比较少,国内一般都用的是 AMS1117-5.0 ,至于原因有价格、历史等因素的存在,但两者的引脚性能都是一致的,直接替换都没问题。

2022.1.1 到我写这部分为止,立创商城两者的单价相差了 17 倍。😅

下面我画的一个 AMS1117-5.0 的稳压电路:

除了我在输入端那边加了两个滤波电容之外,和官方没啥区别,也没啥花头可玩的。

注意:如果你像我一样在输入端增加了电容,一定要注意电容的耐压值!会炸的!

USB转串口#

转换芯片#

USB接口#

等待更新 2022.1.1#

Footnotes#

  1. 百度百科:原理图

Arduino 硬件设计入门 1 原理图解析
https://fuwari.vercel.app/posts/嵌入式/arduino/arduino-硬件设计入门-1-原理图解析/
作者
Asuwee
发布于
2022-01-14
许可协议
CC BY-NC-SA 4.0