迹忆客 专注技术分享

当前位置:主页 > 学无止境 > 编程语言 > C++ >

Arduino ADC

作者:迹忆客 最近更新:2024/03/13 浏览次数:

本教程将讨论使用模拟引脚读取模拟信号并将其转换为 Arduino 中的数字。


Arduino ADC

ADC,也称为模数转换器,将模拟信号转换为数字信号。模拟信号是连续的,这意味着它们内部有无限数量的值。我们无法读取所有值,因此我们从连续信号中读取特定时间间隔的值,使信号数字化。

从模拟信号中取样的过程称为采样。将模拟信号转换为数字信号的过程如下图所示。

上图中的第一个信号是一个无限值的连续信号,第二个信号是一个有限值的数字信号。模数转换器定期从模拟信号中取值以使其成为数字信号。

进行模数转换是因为计算机无法处理模拟信号;它只能处理 0s 和 1s 的数字信号。处理完数字信号后,我们还可以使用 DAC 或数模转换器将信号转换回模拟信号。

例如,连接上图中第二个信号中的点将变得与第一个信号几乎相同。我们在 ADC 中采集的样本数称为 ADC 的采样率或比特率。

一些 Arduino 板具有 10 位模数转换器,有些具有 12 位模数转换器。比特率也称为分辨率,它定义了 ADC 将从模拟信号中获取的样本数。

一个 10 位模数转换器将从模拟信号中获取 1024 个样本。例如,假设输入信号由 0 到 5 伏之间的电压电平组成。

在这种情况下,电压电平将映射到 0 到 1024 的整数范围,这意味着模数转换器将在每 5/1024 或 4.9 毫伏之后进行一次采样。

模数转换器的速度取决于基于 ATmega 的 Arduino 板中 Arduino 板的工作频率;模数转换器将需要 100 微秒将模拟信号转换为数字信号,这意味着采样率或读取率为 10 kHz 或每秒 10,000 次。

Arduino Zero、Due 和 MKR 系列板等其他板具有 12 位模数转换器,这意味着 0 到 3.3 伏的输入模拟信号将映射到 0 到 4095 的整数范围。

默认情况下,12 位模数转换器将设置为 10 位,但我们可以使用 analogReadResolution() 函数更改模数转换器的比特率或分辨率,将位数传递给功能设置分辨率。

查看此链接以获取有关 analogReadResolution() 函数的更多详细信息。

每个 Arduino 板上的模拟引脚都标有 A,后跟 A0A1 等数字。要从 Arduino 的模拟引脚读取信号,我们可以使用 analogRead() 函数。

analogRead() 函数的基本语法如下。

output = analogRead(pin)

上述语法将从模拟引脚返回模拟信号作为数字信号。如果模拟引脚未连接任何信号,该函数仍将返回一些浮点值。

不同的 Arduino 板对模数转换器有不同的速度,可以改变,但它也会改变模数转换器的分辨率。因此,我们应该使用模数转换器的默认设置来进行准确的模数转换。

我们在上面讨论过,一些 Arduino 板对输入模拟信号有 0 到 5 伏的参考电压,而一些有 0 到 3.3 伏的参考电压。这些是默认值,我们可以使用 analogReference() 函数更改它们。

我们可以根据不同类型的 Arduino 板传递不同的选项。

例如,对于 Arduino Uno 和 Mega,我们有如下选项:

在设置参考电压之前,请注意,我们不能设置低于 0 伏和高于 5 伏的电压值;参考电压值应为 0 至 5 伏。

假设我们将一个电阻连接到模拟引脚。在这种情况下,输入电压将降低,因为模拟引脚内部已经存在一个 32K 值的电阻,在这种情况下,两个电阻将构成分压器,输入电压将根据电阻器的值。

检查此链接以获取我们可以在 analogReference() 函数中使用的选项的完整列表。查看此链接以获取有关 analogRead() 函数的更多详细信息。

转载请发邮件至 1244347461@qq.com 进行申请,经作者同意之后,转载请以链接形式注明出处

本文地址:

相关文章

Arduino 中停止循环

发布时间:2024/03/13 浏览次数:166 分类:C++

可以使用 exit(0),无限循环和 Sleep_n0m1 库在 Arduino 中停止循环。

Arduino 复位

发布时间:2024/03/13 浏览次数:165 分类:C++

可以通过使用复位按钮,Softwarereset 库和 Adafruit SleepyDog 库来复位 Arduino。

Arduino 的字符转换为整型

发布时间:2024/03/13 浏览次数:116 分类:C++

可以使用简单的方法 toInt()函数和 Serial.parseInt()函数将 char 转换为 int。

Arduino 串口打印多个变量

发布时间:2024/03/13 浏览次数:166 分类:C++

可以使用 Serial.print()和 Serial.println()函数在串口监视器上显示变量值。

Arduino if 语句

发布时间:2024/03/13 浏览次数:82 分类:C++

可以使用 if 语句检查 Arduino 中的不同条件。

Arduino ICSP

发布时间:2024/03/13 浏览次数:184 分类:C++

ICSP 引脚用于两个 Arduino 之间的通信以及对 Arduino 引导加载程序进行编程。

使用 C++ 编程 Arduino

发布时间:2024/03/13 浏览次数:100 分类:C++

本教程将讨论使用 Arduino IDE 在 C++ 中对 Arduino 进行编程。

Arduino 中的子程序

发布时间:2024/03/13 浏览次数:69 分类:C++

可以通过在 Arduino 中声明函数来处理子程序。

扫一扫阅读全部技术教程

社交账号
  • https://www.github.com/onmpw
  • qq:1244347461

最新推荐

教程更新

热门标签

扫码一下
查看教程更方便