0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

Arduino基础:读取电压

王娟 来源:songxiansheng 作者:songxiansheng 2023-02-20 09:47 次阅读

这篇文章来源于DevicePlus.com英语网站的翻译稿。

本文最初发布在deviceplus.jp网站上,而后被翻译成英语。

前言

使用数字输入,可以将5V读取为“HIGH”,将0V读取为“LOW”。可以通过状态来判断开关是否已导通。但是,实际上电压不只是5V和0V,而是各种各样。例如,一节AA电池的电压为1.5V,日本家用插座的电压为100V。

Arduino支持模拟输入,以能够读取这些不同的电压。利用模拟输入功能,能够读取逐渐变化的电子元器件的状态。例如,使用“电位器”可以调节亮度或音量,也可以从温度传感器获取当前温度。

poYBAGPy0DuAQiKrAADB2zypL0g194.png

本文是本系列文章的最后一篇,将介绍使用“电位器”进行模拟输入的方法。

将模拟值转换为数字值

实际的电压不是像1V或5V这样的精确值,而是像5.01342…V这样的无理数,其小数点后的数字是无限不循环的。这样的值是无法通过计算机直接处理的。因此,在电子电路中,会使用一种称为“AD转换器”的机制将模拟值转换为数字值,以便它们可以由计算机处理。Arduino作为标配搭载了AD转换器,可以读取模拟电压值并将其转换为数字值。

AD转换器会将对象电压等分。对于Arduino Uno而言,可以读取0-5V范围内的电压,并会将这些0-5V的电压值分成1023等份。AD转换器会将读取到的模拟电压值转换为最接近等分值的值。例如,如果电压为3V,则“614”是最接近的值。这个值将发送给Arduino使用。

poYBAGPy0D-AELIKAACZ_6aP_4c479.png

读取到的多达1023个的整数值将会用于程序处理。但是,输入值不是电压值。如果想知道电压值,可以进行如下计算:

pYYBAGPy0EGAS9KxAABOsuvcX-g306.png

例如,如果来自AD转换器的值为“614”,则除以1023再乘以5即可得到约3V。

Arduino的模拟输入

要使用Arduino Uno的数字输入功能时,有从A0到A5的6个引脚可用。通过将电子元器件连接到这些引脚上,即可读取施加了多少电压。但是,引脚A4和A5也用于称为“I2C”的数字通信。请注意,在连接传感器或显示器等使用I2C数字通信的电子元器件时,这些引脚不能用于模拟输入。

pYYBAGPy0EaAWskZAAKjZdVqvmA287.png

可以调节电压的电位器

“电位器”是一个可以用来调节音量或照明亮度的电子部件。在电位器内部配有电阻元件,并有在电阻元件上移动的引脚。通过移动引脚可以改变电阻。

电位器通常会配有三个引脚。左右两侧的引脚安装在电阻器的两端。中间的引脚可以在电阻元件上移动。如果将中间引脚向右移动,则左侧和中间引脚之间的电阻会增加。反之,如果将中间引脚向左移动,则左侧和中间引脚之间的电阻会减小。

poYBAGPy0EqAPsCpAABbDqPVh2I558.png

在上图中,电阻元件是线性的,但在旋转式的电位器中,内部电阻元件是圆形的。尽管形状不同,但它们的工作原理基本相同。

Arduino的模拟输入使用电压的变化进行输入。但是,由于电位器的电阻会发生变化,因此无法通过将其直接连接到Arduino来读取电位器的变化情况。因此,需要将电阻的变化转换为电压的变化。将电源和GND分别连接到电阻的左右引脚。这样,中间引脚的电压将根据引脚的位置发生变化。例如,假设将GND连接到左侧引脚,将电源(5V)连接到右侧引脚,当中间引脚向右移动,电压会升高,向左移动时,电压会降低。此外,由于左端为0V,右端为5V,因此可以使电压值在0V到5V的范围内变化。

只要将这个中间引脚与Arduino的模拟输入引脚相连接,就可以通过操作电位器来更改输入。

pYYBAGPy0EyACrLuAABloftax7E840.png

通过电位器实现模拟输入

现在,我们尝试使用电位器进行模拟输入。需要准备好以下电子部件:
电位器

电位器会记录可调范围内的电阻值。作为Arduino输入使用时,最好使用10kΩ的电位器。另外,如果电位器的旋转轴配有旋钮会更容易操作。

鳄鱼夹线

用于连接电位器,使用时用鳄鱼夹夹住电位器的引脚。点击链接可以看到我们使用的是2条红线和2条黑线配套销售的产品

所需部件准备好以后,按如下方式连接。由于电位器无法插入面包板,因此需要使用鳄鱼夹线将其直接连接到Arduino。此时需要注意的是,要确保鳄鱼夹的金属部分不要接触相邻的夹子部分。

poYBAGPy0FOAZBYfAACp72xFQWA848.png

编写以下程序:

要确认模拟输入引脚的连接状态时,请在第11行的“analogRead()”中指定对象引脚。这样,即可使用0到1023的值输入引脚电压值。如果想知道电压,请按第13行所示进行计算并将计算值转换为电压值。

将程序发送给Arduino并显示串行监视器。
您可以看到,经AD转换器转换为数字的值显示在“Value:”之后,经计算并转换为电压的值显示在“Volt:”之后,当转动电位器时,值也随之变化。

pYYBAGPy0FeAalFFAAFMLNkfMrw560.png

总结

在本系列连载文章中,我们介绍了Arduino基础的用法。欢迎您根据这些内容来尝试制作各种电子作品或者让一些电子部件动起来。非常感谢您连续关注这个长达半年的连载系列,谢谢!

审核编辑:汤梓红

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 电位器
    +关注

    关注

    14

    文章

    963

    浏览量

    66047
  • 电压
    +关注

    关注

    45

    文章

    5088

    浏览量

    114428
  • Arduino
    +关注

    关注

    184

    文章

    6428

    浏览量

    184857
收藏 人收藏

    评论

    相关推荐

    使用Arduino计算直流电压的方式

    通过对Arduino和分压器电路的简单了解,我们可以将Arduino转换为数字电压表,并可以使用Arduino和16x2 LCD显示器测量输入电压
    的头像 发表于 12-29 10:47 2670次阅读
    使用<b class='flag-5'>Arduino</b>计算直流<b class='flag-5'>电压</b>的方式

    matlab串口读取arduino数据

    我想用matlab读arduino uno 串口的数据,是arduino uno上的电压值,arduino uno 的波特率是115200,ardu
    发表于 12-04 06:57

    arduino读取电压模拟值

    `arduinoanalogRead()函数是将0-5v电压转换成0-1023之间的整数,如果我让这个函数读一个正弦波,电压有负值有正值,那负值电压读不读啊`
    发表于 10-26 23:40

    使用Arduino读取MPU6050数据的程序免费下载

    本文档的主要内容详细介绍的是使用Arduino读取MPU6050数据的程序免费下载。
    发表于 07-24 17:17 27次下载
    使用<b class='flag-5'>Arduino</b><b class='flag-5'>读取</b>MPU6050数据的程序免费下载

    如何操作ADC去读取电压

    本文简单介绍如何操作ADC去读取电压,并且实现开发板上3个ADC按键检测的功能。
    的头像 发表于 03-02 17:51 9042次阅读
    如何操作ADC去<b class='flag-5'>读取</b><b class='flag-5'>电压</b>

    Arduino读取MPU9250传感器

    电子发烧友网站提供《用Arduino读取MPU9250传感器.zip》资料免费下载
    发表于 10-19 09:15 2次下载
    用<b class='flag-5'>Arduino</b><b class='flag-5'>读取</b>MPU9250传感器

    读取负张力的Arduino示波器的想法

    电子发烧友网站提供《读取负张力的Arduino示波器的想法.zip》资料免费下载
    发表于 10-31 15:10 0次下载
    <b class='flag-5'>读取</b>负张力的<b class='flag-5'>Arduino</b>示波器的想法

    Arduino读取DHT22(或DHT11)

    电子发烧友网站提供《用Arduino读取DHT22(或DHT11).zip》资料免费下载
    发表于 11-16 11:02 1次下载
    用<b class='flag-5'>Arduino</b><b class='flag-5'>读取</b>DHT22(或DHT11)

    Arduino电压表开源分享

    电子发烧友网站提供《Arduino电压表开源分享.zip》资料免费下载
    发表于 11-17 09:45 7次下载
    <b class='flag-5'>Arduino</b><b class='flag-5'>电压</b>表开源分享

    Arduino充当玻璃容器中的控制器和传感器读取

    电子发烧友网站提供《让Arduino充当玻璃容器中的控制器和传感器读取器.zip》资料免费下载
    发表于 11-22 14:27 0次下载
    让<b class='flag-5'>Arduino</b>充当玻璃容器中的控制器和传感器<b class='flag-5'>读取</b>器

    Arduino库来读取DHT11湿度和温度传感器数据

    电子发烧友网站提供《用Arduino库来读取DHT11湿度和温度传感器数据.zip》资料免费下载
    发表于 11-22 10:45 0次下载
    用<b class='flag-5'>Arduino</b>库来<b class='flag-5'>读取</b>DHT11湿度和温度传感器数据

    Arduino HDC2010读取数据和舒适区警报

    电子发烧友网站提供《Arduino HDC2010读取数据和舒适区警报.zip》资料免费下载
    发表于 12-09 09:35 0次下载
    <b class='flag-5'>Arduino</b> HDC2010<b class='flag-5'>读取</b>数据和舒适区警报

    如何通过Arduino读取电表

    电子发烧友网站提供《如何通过Arduino读取电表.zip》资料免费下载
    发表于 06-16 15:18 1次下载
    如何通过<b class='flag-5'>Arduino</b><b class='flag-5'>读取</b>电表

    Arduino之如何逐行读取SD卡文本文件

    电子发烧友网站提供《Arduino之如何逐行读取SD卡文本文件.zip》资料免费下载
    发表于 07-12 10:17 1次下载
    <b class='flag-5'>Arduino</b>之如何逐行<b class='flag-5'>读取</b>SD卡文本文件

    如何将光敏电阻连接到Arduino板并读取电压

    在本快速入门指南中,您将学习如何将光敏电阻连接到Arduino板并读取电压。您将首先使用串行监视器来了解光传感器的行为方式,然后构建一个电路,在天黑时自动打开灯。
    的头像 发表于 02-11 10:45 1039次阅读
    如何将光敏电阻连接到<b class='flag-5'>Arduino</b>板并<b class='flag-5'>读取</b><b class='flag-5'>电压</b>