4、Arduino_esp32 ADC使用

这篇具有很好参考价值的文章主要介绍了4、Arduino_esp32 ADC使用。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

3、基于Arduino框架esp32的GPIO使用介绍:基于Arduino框架esp32的GPIO使用介绍

注:本文章内容是基于arduino框架进行esp32的开发。
开发环境搭建可以参考上一篇文章:2、搭建ESP32开发环境

1、ADC简介

ADC(模数转换器)是非常常见的外围设备之一,用于将模拟电压信号转换为数字形式。在监控大多数产生模拟输出电压的传感器(例如温度、压力、水压等)中使用非常广泛。
在实际使用中被采集的电压可能超出片内ADC的电压采集范围,此时需要设计相应的分压电路分压后才进行采集计算得到实际电压。
不同芯片有不同数量的ADC,每个ADC也可能具有不同数量的可用通道和引脚。请参阅每个板的数据手册。

2、Arduino框架下ESP32的ADC相关函数

Arduino框架ADC通用API:1~6
ESP32芯片专用的ADC API:7~9

(1)analogReadResolution设置所有ADC分辨率

**功能:**用于设置模拟读取返回值的分辨率。所有芯片的默认值为12位(范围从0到4096),但ESP32S3除外,ESP32S3的默认值是13位(范围为0到8192)。当设置不同的分辨率时,读取的值将被移动以匹配给定的分辨率。范围为1-16。如果未使用此函数,将使用默认值。对于ESP32,分辨率介于9到12之间,这将改变ADC硬件分辨率。否则将移动值。
函数原型:

void analogReadResolution(uint8_t bits);
/*
参数说明:
bits:ADC模拟读取分辨率。
*/

(2)analogSetClockDiv设置ADC时钟分频

**功能:**用于设置ADC时钟的分频器。
函数原型:

void analogSetClockDiv(uint8_t clockDiv);
/*
参数说明:
clockDiv:为ADC时钟设置分频器。范围为1-255,默认值为1。
*/

(3)analogSetAttenuation设置所有ADC通道衰减(设计电压采集范围)

**功能:**用于设置所有通道的衰减,实现修改ADC的电压测量范围。
函数原型:

void analogSetAttenuation(adc_attenuation_t attenuation);
/*
参数说明:
attenuation:设置的衰减。(ADC_ATTEN_DB_0、ADC_ATTEN_DB_2_5、ADC_ATTEN_DB_2_5、ADC_ATTEN_DB_2_5)
*/

宏定义

衰减宏 对于esp32的意义
ADC_ATTEN_DB_0 电压测量范围100 mV ~ 950 mV
ADC_ATTEN_DB_2_5 电压测量范围100 mV ~ 1250 mV
ADC_ATTEN_DB_6 电压测量范围150 mV ~ 1750 mV
ADC_ATTEN_DB_11 电压测量范围150 mV ~ 2450 mV

(4)analogSetPinAttenuation设置特定ADC通道衰减(设计电压采集范围)

**功能:**用于设置特定pin/ADC通道的衰减。
函数原型:

void analogSetPinAttenuation(uint8_t pin, adc_attenuation_t attenuation);
/*
参数说明:
pin: ADC通道对应的特定管脚。
attenuation:设置衰减。(ADC_ATTEN_DB_0、ADC_ATTEN_DB_2_5、ADC_ATTEN_DB_2_5、ADC_ATTEN_DB_2_5)
*/

宏定义

衰减宏 对于esp32的意义
ADC_ATTEN_DB_0 电压测量范围100 mV ~ 950 mV
ADC_ATTEN_DB_2_5 电压测量范围100 mV ~ 1250 mV
ADC_ATTEN_DB_6 电压测量范围150 mV ~ 1750 mV
ADC_ATTEN_DB_11 电压测量范围150 mV ~ 2450 mV

(5)analogRead读取ADC通道原始值

**功能:**用于获取给定pin/ADC通道的ADC原始值。
函数原型:

uint16_t analogRead(uint8_t pin);
/*
参数说明:
pin:ADC通道对应的管脚编号。
*/

(6)analogReadMillivolts读取ADC通道电压值

**功能:**用于获取给定pin/ADC通道的ADC值,f返回值单位为毫伏。
函数原型:

uint32_t analogReadMilliVolts(uint8_t pin);
/*
参数说明:
pin:ADC通道对应的管脚编号。
*/

(7)analogSetWidth设置所有ADC通道硬件分辨率

**功能:**用于设置硬件采样位和读取分辨率。默认值为12位(0-4095),范围为9-12。
函数原型:

void analogSetWidth(uint8_t bits);
/*
参数说明:
bits:ADC采样分辨率位宽。
*/

(8)analogSetVRefPin设置ADC校准引脚

**功能:**用于在esp32尚未校准时用于设置ADC校准的引脚(引脚25、26或27)。
函数原型:

void analogSetVRefPin(uint8_t pin);
/*
参数说明:
pin:用于设置ADC校准的VRefPin的引脚编号。
*/

(9)hallRead读取引脚36、39连接的HALL传感器ADC值

**功能:**用于获得连接到引脚36(SVP)和39(SVN)的HALL传感器的ADC值。
函数原型:文章来源地址https://www.toymoban.com/news/detail-626369.html

int hallRead();
/*
参数说明:
*/

3、ESP32 ADC使用例子(Arduino框架)

#include <Arduino.h>

#define PIN_ADC2_CH2 2   //定义引脚宏  

void setup() {

  Serial.begin(115200);      //初始化配置串口
  analogReadResolution(12);  //设置ADC的分辨率为12位(0-4096)
}

void loop() {
  //定义两个变量用于保存ADC采集的原始值和电压值(单位毫伏)
  int analogOriginalValue = 0;
  int analogVoltsValue = 0;

  analogOriginalValue = analogRead(PIN_ADC2_CH2);         //读取ADC原始值
  analogVoltsValue = analogReadMilliVolts(PIN_ADC2_CH2);  //读取ADC电压值(范围毫伏)
  
  // 上传A读取的ADC值:
  Serial.printf("ADC analog value = %d\n",analogOriginalValue);
  Serial.printf("ADC millivolts value = %d ms\n",analogVoltsValue);
  
  delay(100);  //延时
}
如有不对之处,欢迎大家指正!

到了这里,关于4、Arduino_esp32 ADC使用的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【ESP32最全学习笔记(基础篇)——7.ESP32 ADC – 使用 Arduino IDE 读取模拟值】

    关于本教程: 1.ESP32简介                                                                 2.ESP32 Arduino 集成开发环境 3.VS 代码和 PlatformIO 4.ESP32 引脚 5.ESP32 输入输出 6.ESP32 脉宽调制 7.ESP32 模拟输入 ☑ 8.ESP32 中断定时器 9 .ESP32 深度睡眠 ESP32 网络

    2023年04月15日
    浏览(50)
  • ESP32单片机使用DHT11温湿度传感器的实践与代码解析

    摘要:本文将介绍如何使用ESP32单片机与温湿度传感器进行连接和数据读取。通过实例代码的解析,帮助读者了解实现温湿度检测的原理和方法。 一、引言 ESP32是一款功能强大的微控制器,广泛应用于物联网、智能家居等领域。在许多应用场景中,温湿度传感器是不可或缺的

    2024年02月21日
    浏览(59)
  • ESP32单片机入门篇

    目录 一、ESP32单片机的基本概念 1.双核架构 2. Wi-Fi和蓝牙功能 3. 集成多种外设 4. 支持多种操作系统 二、开发环境 1. Arduino IDE 2. ESP-IDF 三、开发语言 四、注意事项 五、代码例程 (1)点亮LED灯 1. 电路图 2. 代码 3. 代码注释 4. 注意事项 (2)控制继电器 1. 电路图 2. 代码 3. 代码

    2024年02月08日
    浏览(55)
  • 单片机开发---ESP32-S3模块上手

    想起来之前做的半成品单片机游戏机,又想继续做一个,不过之前那个单片机驱动屏幕速率太低,已经无法改进了。所以这次斥巨资购买了一款顶配的ESP32S开发板,做个简单的游戏机,没问题。 完整介绍链接 这花花绿绿的介绍,看着让人甚是喜欢呢。 参考乐鑫官网的方式,

    2024年01月23日
    浏览(43)
  • 单片机项目分享 单片机(stm32)远程智能宠物喂养系统 - 物联网 esp8266

    🔥 这两年开始毕业设计和毕业答辩的要求和难度不断提升,传统的毕设题目缺少创新和亮点,往往达不到毕业答辩的要求,这两年不断有学弟学妹告诉学长自己做的项目系统达不到老师的要求。 为了大家能够顺利以及最少的精力通过毕设,学长分享优质毕业设计项目,今天

    2024年02月19日
    浏览(67)
  • 单片机开发---ESP32S3移植NES模拟器(二)

    《单片机开发—ESP32-S3模块上手》 《单片机开发—ESP32S3移植lvgl+触摸屏》 《单片机开发—ESP32S3移植NES模拟器(一)》 暖场视频,小时候称这个为—超级曲线射门!!!!!!!!!! ESP32上天使之翼游戏 看门狗 源码中有两处看门狗的喂狗操作,前期都被注释掉了。 因为开

    2023年04月09日
    浏览(146)
  • 单片机开发---ESP32S3移植NES模拟器(一)

    《单片机开发—ESP32-S3模块上手》 《单片机开发—ESP32S3移植lvgl+触摸屏》 依旧是参考韦东山老师的作品来移植的 《ESP32|爷青回!ESP32(单片机) NES模拟器_NES游戏机掌机教程(开源+详细讲解实现代码!)》 韦老师已经将代码开源,喜欢的朋友当然是可以去支持一波。 另外还有gi

    2023年04月16日
    浏览(45)
  • 【ESP32】arduino中的ESP32实时系统FreeRTOS使用教程(一)

    简单的本节略过,详细的可以看视频:单片机ESP32上的FREERTOS这个作者讲的挺好的,通俗易懂 FreeRTOS中的任务有运行态、就绪态、阻塞态、挂起态四种状态,在任何时候都只处于其中一种状态。任务状态之间的转换如下图所示: 每一个任务都会有一个任务优先级,其范围为

    2023年04月15日
    浏览(43)
  • 【ESP32之旅】ESP32C3 Arduino库使用方法

    目前官方已经支持了ESP32C3 的部分功能,可以在其官方wiki中看到: 官方提供了两个版本的安装连接,release和Dev。其中Release为稳定发布版本,Dev版本则支持更多的新特性。 Stable release link: Development release link: 安装方法也非常简单,打开Arduino IDE 然后在 文件 - 首选项 : 在附加

    2024年02月02日
    浏览(51)
  • STM32+esp8266实现单片机与服务器的WiFi通信

             源码已上传至gitee: stm32: 一些stm32模块使用经验记录 - Gitee.com https://gitee.com/lrf1125962926/stm32/tree/esp8266wifi%E9%80%9A%E4%BF%A1/         本实验采用STM32F1系列+esp8266 01s模块,采用HAL库开发。主控芯片哪个系列和型号都可以,只要有两个串口(UART或者USART,以下统称串口)

    2024年02月07日
    浏览(61)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包