Arduino秉承让数字技术轻松地运用到现实应用中这一理念,推出 Arduino 硬件平台,以实现将大多数模拟功能植入Atmel多功能 ATmega 8 位MCU系列。 在 Arduino 平台上使用的所有 ATmega 变体均有一个片载多通道模数(ADC)。 该 A 具有 10 位分辨率,能以 0 到 1023 的整数方式实现高达每秒 15,000 次的采样速率。 大多数 AVR 支持 6 个模拟输入通道,而一些变体则可支持 8 和 16 个输入。 尽管模拟引脚的主要功能是读取模拟输入,但也可配置成数字式通用输入/输出 (GPIO) 引脚。 可根据需要为模拟引脚配备可选择上拉器,且采用与 MCU 数字引脚相同的上拉配置方法。
虽然一些 MCU 采用了数模转换器(DAC),但在现有的这一代 Arduino 板上的 MCU 系列均能通过快速转换其数字 I/O 引脚来产生脉宽调制 (PWM) 信号,以提供模拟输出。 每个 PWM 输出的 490 Hz(大约)方波的占空比经过编程后,能提供一个大小为 0 至 5 V、周期为 256 毫秒、增量为 2 毫秒的等效 RMS 电压(图 1)。 Arduino 的输出功能尽管在某种程度上受到一定限制,但可执行如驱动 LED 或控制等许多任务。
图 1:利用脉宽调制 (PWM) 技术, Arduino 的数字 GPIO 引脚可用作模拟输出(感谢 Arduino.cc 提供数据)。
通过板边缘的母头引脚,大多数 Arduino 板能轻松连接 MCU 的模拟(和数字)I/O 信号。 模拟通道数及其物理引脚分配会随正在使用的特定 MCU 以及板的外形发生变化,但许多变体还是遵循常见的“官方”设计所采用的引脚布局惯例,如 Uno(图 2)、Mega 和 Nano。
图 2: 板(第 3 版)的模拟输入 (A0-A5) 和模拟 PWM 输出(数字式:3、5、6、9、10 和 11)) 可通过板边缘的标准针座引脚进行物理连接(感谢 Arduino.cc 提供数据)。
因为 Arduino IDE 支持的编程语言中含有一组原生模拟 I/O 命令,因此采用模拟 I/O 功能开发代码也易于进行。 通过这些指令可读取模拟输入、生成模拟 (PWM) 输出以及配置 A/D 转换器的基准电压。
读取模拟输入
我们能轻而易举地将 Arduino 的模拟输入与实际应用连接,但需要为 AVR 的 A/D 转换器选择合适的基准电压源。 此时,可以用默认 (DEFAULT)、内部 (INTERNAL) 或者外部 (EXRNAL) 基准电压来确定输入电压上限。 默认模式下,MCU 采用板载电源稳压器的输出作为基准电压。 根据所使用的特定 Arduino 板,基准电压可以是 5 V 或者 3.3 V。