arduino adc
本教程将讨论使用模拟引脚读取模拟信号并将其转换为 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
,后跟 a0
、a1
等数字。要从 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 浏览次数:315 分类:c
-
可以通过使用复位按钮,softwarereset 库和 adafruit sleepydog 库来复位 arduino。
发布时间:2024/03/13 浏览次数:181 分类:c
-
可以使用简单的方法 toint()函数和 serial.parseint()函数将 char 转换为 int。
发布时间:2024/03/13 浏览次数:151 分类:c
-
可以使用 arduino 中的循环制作计数器。