器→工具, 电子电路

认识Arduino Uno 3 开发板

钱魏Way · · 6 次浏览
!文章内容如有错误或排版问题,请提交反馈,非常感谢!

Arduino Uno R3 是 Arduino 系列中最经典、也是最受欢迎的开发板之一,非常适合初学者入门。它功能强大,使用方便,社区支持也极为广泛。

Arduino Uno R3 开发板的组成

微控制器 (Microcontroller)

Arduino Uno R3 的大脑是 ATmega328P 微控制器

  • 它是一个 8 位 AVR 微控制器,由 Atmel(现在是 Microchip 的一部分)生产。
  • 所有的程序代码都存储在它的内部,并通过它来执行,控制开发板上的各种功能。
  • 你可以把它想象成一个微型计算机,负责处理信息、执行指令和控制外部设备。

数字引脚 (Digital Pins)

Arduino Uno R3 共有 14 个数字引脚,编号从 D0 到 D13。

  • 功能: 这些引脚可以配置为数字输入数字输出
    • 数字输出: 可以用来控制 LED 的亮灭、继电器的开关、蜂鸣器发声等。输出时,它们只能输出两种状态:HIGH (高电平,约 5V) 或 LOW (低电平,0V)。
    • 数字输入: 可以用来读取按钮的状态、开关的开闭、数字传感器的信号等。输入时,它们也只能识别两种状态:HIGH (约 5V) 或 LOW (0V)。
  • PWM 引脚: 在这 14 个数字引脚中,有 6 个引脚(D3, D5, D6, D9, D10, D11)带有波浪线(~)标记,表示它们支持 PWM (Pulse Width Modulation,脉冲宽度调制) 功能。
    • PWM 可以模拟输出模拟电压,例如控制 LED 的亮度、直流电机的转速、舵机的角度等。

模拟引脚 (Analog Pins)

Arduino Uno R3 共有 6 个模拟引脚,编号从 A0 到 A5。

  • 功能: 这些引脚主要用于模拟输入。它们可以读取连续变化的电压信号,例如来自电位器、光敏电阻、温度传感器等模拟传感器的输出。
  • 分辨率: Arduino Uno 的模拟输入具有 10 位分辨率,这意味着它可以将 0V 到 5V 的模拟电压值转换为 0 到 1023 的数字值。
  • 注意: 尽管主要用于模拟输入,这些模拟引脚在编程时也可以像数字引脚一样作为数字输入或输出使用。

电源接口 (Power Interface)

Arduino Uno R3 提供了多种供电方式:

  • USB 接口 (USB Port):
    • 供电和通信: 这是最常用和最方便的供电方式。通过 USB 线连接电脑时,不仅可以为 Arduino 供电,还可以进行程序上传和串口通信(与电脑进行数据交互)。
    • 电压: USB 供电通常是 5V。
  • DC 电源插孔 (DC Power Jack):
    • 独立供电: 当你不连接电脑时,可以通过这个插孔连接外部电源适配器为 Arduino 供电。
    • 电压范围: 推荐输入电压为 7V 到 12V DC。如果输入电压低于 7V,5V 引脚可能会不稳定;如果高于 12V,稳压器可能会过热。
  • VIN 引脚 (Voltage Input):
    • 外部电源输入: 这是一个可以直接连接外部未稳压直流电源的引脚。供电电压范围与 DC 电源插孔相同(7V – 12V DC)。
  • 5V 引脚 (5V Pin):
    • 输出/输入: 这是一个经过板载稳压器稳压后的 5V 输出引脚,可以为外部元件(如传感器、小型模块)供电。同时,也可以作为 5V 外部电源的输入(不推荐直接用此引脚供电给 Arduino,因为会绕过板载稳压器,有损坏板子的风险)。
  • 3V 引脚 (3.3V Pin):
    • 输出: 提供一个3V 的稳压电源输出,通常用于为一些需要 3.3V 供电的传感器或模块供电。
  • GND 引脚 (Ground Pin):
    • 接地: 开发板上有多个 GND 引脚,它们都是连接到电路的公共参考点(地线)。在搭建电路时,所有元件的负极通常都连接到 GND。
  • RESET 引脚:
    • 复位功能: 当这个引脚被拉低时,Arduino 将重新启动程序。通常用于连接外部复位按钮。

USB 接口 (USB Port)

  • 类型: Arduino Uno R3 通常使用 USB-B 型接口(打印机常用的那种接口)。
  • 作用:
    • 供电: 为 Arduino Uno R3 提供电源。
    • 程序上传: 将你编写的代码上传到 ATmega328P 微控制器中。
    • 串口通信: 允许 Arduino 与电脑进行双向数据传输,这对于调试和数据监控非常有用(通过 Arduino IDE 的串口监视器)。

ICSP 接口 (In-Circuit Serial Programming)

开发板上通常有两个 ICSP 接口:一个用于 ATmega328P(主微控制器),另一个用于 ATmega16U2(USB-to-Serial 芯片)。

  • 功能: ICSP 接口用于通过 ISP (In-System Programming) 方式对微控制器进行烧录或更新固件。对于普通用户来说,很少会用到这个接口,除非需要烧录引导加载程序(Bootloader)或进行更底层的编程。

复位按钮 (Reset Button)

  • 在开发板的一角,通常有一个小按钮。
  • 功能: 按下此按钮会重新启动当前运行在 Arduino 上的程序。这在程序出现问题或你想重新运行程序时非常有用。

LED 指示灯 (LED Indicators)

Arduino Uno R3 板载了几个重要的 LED 指示灯:

  • PWR (Power) LED: 绿色,当 Arduino 成功供电时会常亮。
  • L (Built-in LED) LED: 通常连接到数字引脚 D13,你可以通过编程控制它的亮灭,是经典的“Hello World”项目。
  • RX (Receive) LED: 当 Arduino 通过 USB 接收数据时会闪烁。
  • TX (Transmit) LED: 当 Arduino 通过 USB 发送数据时会闪烁。

稳压器 (Voltage Regulator)

  • 这是一个集成电路,负责将外部输入的较高电压(例如 7V-12V)转换为 Arduino 所需的稳定的 5V 或3V。

晶振 (Crystal Oscillator)

  • 开发板上通常有两个晶振,一个 16 MHz 的晶振用于主微控制器 ATmega328P,另一个 16 MHz 的晶振用于 USB 接口芯片 ATmega16U2。
  • 功能: 晶振为微控制器提供精确的时钟信号,确保微控制器能够稳定、准确地执行指令。

Arduino Uno R3 的特殊设计

PWM 引脚为什么不是连续的?

Arduino Uno R3 上的 **PWM 引脚(D3, D5, D6, D9, D10, D11)**之所以不是连续排列的,这主要与 ATmega328P 微控制器内部定时器的硬件设计有关。

  • 定时器是 PWM 的核心: PWM 功能的实现依赖于微控制器内部的硬件定时器 (Timers)。这些定时器是专门的硬件模块,能够以非常精确的频率计数,并根据设定的值来控制引脚的输出电平(高电平或低电平的持续时间),从而产生 PWM 波形。
  • 不同定时器控制不同引脚组: ATmega328P 微控制器内部有几个独立的定时器(Timer0、Timer1、Timer2),每个定时器通常会控制一组特定的引脚进行 PWM 输出。
    • Timer0 (8位): 控制 D5 和 D6 引脚的 PWM 输出。这个定时器也用于 delay() 和 millis() 函数的计时。
    • Timer1 (16位): 控制 D9 和 D10 引脚的 PWM 输出。这个定时器经常被 Servo 库使用来控制舵机。
    • Timer2 (8位): 控制 D3 和 D11 引脚的 PWM 输出。这个定时器也用于 tone() 函数发声。
  • 资源分配和复用: 芯片设计时,出于资源优化和功能复用的考虑,这些定时器的输出引脚被分散到不同的 I/O 口上。这样做可以:
    • 避免冲突: 如果所有 PWM 引脚都集中在一起,可能会导致内部布线复杂,或者在某些应用中,如果某个定时器被其他功能(如 delay()、Servo 库)占用,就会影响到所有相关联的 PWM 引脚。分散设计可以减少这种影响。
    • 通用性: 将不同功能的引脚(数字、模拟、PWM、通信)分布开,使得用户在连接各种外设时有更大的灵活性,更容易避免物理上的引脚拥挤和电气干扰。
  • 易于识别: 虽然不连续,但 Arduino 开发板上通常会在 PWM 引脚旁边用波浪线 ~ 符号进行标记,方便用户识别和使用。

简而言之,PWM 引脚不连续是微控制器内部硬件架构的直接体现,是工程师在设计芯片时为了优化性能、避免冲突和提升通用性而做出的选择。

为什么设计时要用 USB-B 型口?

Arduino Uno R3 使用 USB-B 型接口(通常在打印机上看到的那种方头接口),而不是更小巧的 Mini-USB 或 Micro-USB,主要有以下几个原因:

  • 坚固耐用性: USB-B 型接口相比 Mini-USB 和 Micro-USB 接口,物理上更为坚固和耐用
    • Arduino Uno R3 作为一款面向教育和初学者的开发板,经常会被反复插拔,甚至可能被不太熟练的用户粗暴对待。USB-B 接口的插拔寿命更长,不易损坏,这对于降低产品返修率和提升用户体验非常重要。
    • Mini-USB 和 Micro-USB 接口更小,内部连接点也更脆弱,更容易在频繁插拔或不当使用中损坏。
  • 设计时期的考量: Arduino Uno R3 发布于 2010 年左右。在那个时期,USB-B 接口非常普及,是许多外设(如打印机、扫描仪)的标准接口。而 Mini-USB 和 Micro-USB 虽然已经出现,但并未像今天这样成为主流,特别是 USB-C 在那时更是闻所未闻。
    • 选择当时市场上普及度高的接口,可以确保用户更容易找到兼容的连接线,降低用户的入门门槛。
  • 避免混淆: USB-A 型接口通常作为主机端(比如电脑上的 USB 口),而 USB-B 型接口通常作为设备端(比如打印机或 Arduino)。这种接口类型的设计有助于区分数据流向和设备角色,减少用户连接时的困惑。
  • 成本因素: 在当时,USB-B 接口的成本可能也具有一定的优势。

虽然现在 USB-C 接口因其正反可插和更快的传输速度等优势而日益普及,但 Arduino Uno R3 的设计理念是稳定、易用和耐用,因此在它最初的设计中,选择 USB-B 接口是一个非常合理的决定。许多 Arduino 的克隆板和一些更新型号的 Arduino 板已经转向使用 Micro-USB 或 USB-C 接口,以适应新的技术趋势。

Arduino Uno R3 引脚详解

Arduino Uno开发板的引脚分配图包含14个数字引脚、6个模拟输入、电源插孔、USB连接和ICSP插头。引脚的复用功能提供了更多的不同选项,例如驱动电机、LED、读取传感器等。

Arduino Uno引脚分配图

Arduino Uno引脚分配 – 电源

Arduino Uno开发板可以使用三种方式供电:

  • 直流电源插孔 -可以使用电源插孔为Arduino开发板供电。电源插孔通常连接到一个适配器。开发板的供电范围可以是5-20V,但制造商建议将其保持在7-12V之间。高于12V时,稳压芯片可能会过热,低于7V可能会供电不足。

VIN引脚 – 该引脚用于使用外部电源为Arduino Uno开发板供电。电压应控制在上述提到的范围内。

  • USB电缆 – 连接到计算机时,提供500mA/5V电压。

在电源插孔的正极与VIN引脚之间链接有一个极性保护的二极管,额定电流为1安培。

您使用的电源决定了可用于电路的功率。例如,使用USB为电路供电时,电流最大限制在500mA。考虑到该电源也用于为MCU、外围设备、板载稳压器和与其连接的组件供电。当通过电源插座或VIN为电路供电时,可用的最大电流取决于Arduino开发板上的5V和3.3V稳压器。

  • 5v和3v3

根据制造商的数据手册,它们提供稳压的5V和3.3v,向外部组件供电。

  • GND

在Arduino Uno引脚分配图中,可以看到有5个GND引脚,它们都是互连的。GND引脚用于闭合电路回路,并在整个电路中提供一个公共逻辑参考电平。务必确保所有的GND(Arduino、外设和组件)相互连接并且有共同点。

  • RESET – 复位Arduino开发板。
  • IOREF– 该引脚是输入/输出参考。它提供了微控制器工作的参考电压。

Arduino Uno引脚分配 – 模拟输入

Arduino Uno有6个模拟引脚,它们作为ADC(模数转换器)使用。

这些引脚用作模拟输入,但也可用作数字输入或数字输出。

模数转换

ADC表示模拟到数字转换器。 ADC是用于将模拟信号转换为数字信号的电子电路。模拟信号的这种数字表示允许处理器(其是数字设备)测量模拟信号并在其操作中使用它。

Arduino引脚A0-A5能够读取模拟电压。在Arduino上,ADC具有10位分辨率,这意味着它可以通过1,024个数字电平表示模拟电压。 ADC将电压转换成微处理器可以理解的位。

一个常见的ADC例子是IP语音(VoIP)。每部智能手机都有一个麦克风,可将声波(语音)转换为模拟电压。这通过设备的ADC,转换成数字数据,通过互联网传输到接收端。

Arduino Uno引脚分配 – 数字引脚

Arduino Uno的引脚0-13用作数字输入/输出引脚。其中,引脚13连接到板载的LED指示灯;引脚3、5、6、9、10、11具有PWM功能。

需要注意的是:

  • 每个引脚可提供/接收最高40 mA的电流。但推荐的电流是20毫安。
  • 所有引脚提供的绝对最大电流为200mA。

数字电平意味着什么?

数字是一种表示1位电压的方式:0或1。Arduino上的数字引脚是根据用户需求设计为输入或输出的引脚。数字引脚可以打开或关闭。开启时,它们处于5V的高电平状态,当关闭时,它们处于0V的低电平状态。

在Arduino上,当数字引脚配置为输出时,它们设置为0或5V。

当数字引脚配置为输入时,电压由外部设备提供。该电压可以在0-5V之间变化,并转换成数字表示(0或1)。为了确定这一点,有2个阈值:

  • 低于0.8v – 视为0。
  • 高于2.0v – 视为1。

将组件连接到数字引脚时,确保逻辑电平匹配。如果电压在阈值之间,则返回值将不确定。

什么是PWM?

通常,脉宽调制(PWM)是一种调制技术,用于将消息编码为脉冲信号。 PWM由两个关键部分组成:频率和占空比。 PWM频率决定了完成单个周期(周期)所需的时间以及信号从高到低的波动速度。占空比决定信号在总时间段内保持高电平的时间。占空比以百分比表示。

在Arduino中,支持PWM的引脚产生约500Hz的恒定频率,而占空比根据用户设置的参数而变化。见下图:

PWM信号用于直流电机的速度控制,调光LED等。

通信协议

串行(TTL) – 数字引脚0和1是Arduino Uno的串行引脚。它们由板载USB模块使用。

串行通信用于在Arduino板和其他串行设备(如计算机,显示器,传感器等)之间交换数据。每块Arduino板至少有一个串口。串行通信发生在数字引脚0(RX)和1(TX)以及USB上。 Arduino也支持通过数字引脚与Software Serial Library进行串行通信。这允许用户连接多个支持串行的设备,并保留主串行端口可用于USB。

软件串行和硬件串行 – 大多数微控制器都具有用于与其他串行设备进行通信的硬件。软件串行端口使用引脚更改中断系统进行通信。有一个用于软件串行通信的内置库。处理器使用软件串行来模拟额外的串行端口。软件串行唯一的缺点是它需要更多的处理,并且不能支持与硬件串行相同的高速。

SPI – SS / SCK / MISO / MOSI引脚是SPI通信的专用引脚。它们可以在Arduino Uno的数字引脚10-13和ICSP插头上找到。

串行外设接口(Serial Peripheral Interface,SPI)是一种串行数据协议,由微控制器用来与总线中的一个或多个外部设备进行通信,如连接。 SPI也可以用来连接2个微控制器。在SPI总线上,总是有一个设备表示为主设备,其余所有设备都表示为从设备。在大多数情况下,微控制器是主设备。 SS(从选择)引脚确定主器件当前正在与哪个器件通信。

启用SPI的器件始终具有以下引脚:

  • MISO(主从输出) – 用于向主设备发送数据的线路
  • MOSI(主机输出从机输入) – 发送数据到外围设备的主机线
  • SCK(串行时钟) – 由主设备生成的用于同步数据传输的时钟信号。

I2C – SCL / SDA引脚是I2C通信的专用引脚。在Arduino Uno上,它们可以在模拟引脚A4和A5上找到。

I2C通信协议通常称为“I2C总线”。 I2C协议旨在实现单个电路板上组件之间的通信。使用I2C时,有2条通信线,称为SCL和SDA。

  • SCL是用于同步数据传输的时钟线。
  • SDA是用于传输数据的通讯线。

I2C总线上的每个器件都有一个唯一的地址,最多可以在同一条总线上连接255个器件。

其他引脚

Aref – 模拟输入的参考电压。

中断 – INT0和INT1。 Arduino Uno有两个外部中断引脚。

外部中断 – 外部中断是外部干扰出现时发生的系统中断。干扰可能来自用户或网络中的其他硬件设备。 Arduino中这些中断的常见用途是读取编码器产生的方波或外部事件唤醒处理器的频率。

Arduino有两种形式的中断:

  • 外部输入
  • 引脚状态变化

ATmega168/328上有两个外部中断引脚,称为INT0和INT1。 INT0和INT1分别映射到引脚2和3相反,引脚变化中断可以在任何引脚上激活。

Arduino Uno引脚定义 – ICSP插头

ICSP表示在线串行编程。该名称源自在系统编程(ISP)。 Arduino相关的制造商,如Atmel,开发了自己的在线串行编程插头。这些引脚使用户能够编程Arduino开发板上的固件。 Arduino开发板上有6个ICSP引脚,可通过编程电缆连接到编程器设备。

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注