首页 » 智能 » 老宇哥带你玩转 ESP32:05 ADC用起来这也太简单了吧_电压_通道

老宇哥带你玩转 ESP32:05 ADC用起来这也太简单了吧_电压_通道

南宫静远 2024-12-23 15:51:02 0

扫一扫用手机浏览

文章目录 [+]

本日我们来玩儿ADC。

概述

ESP32 芯片有2 个 12位的SAR(逐次逼近)ADC,最多可以读取18个不同的仿照通道输入,由5个专用转换掌握器管理,2个支持高性能多通道扫描,2个支持Deep-sleep低功耗模式下运行,还有一个专门用于功率检测和峰值监测。

老宇哥带你玩转 ESP32:05 ADC用起来这也太简单了吧_电压_通道 智能

紧张特性如下:

采取 2 个 SAR ADC,可支持同时采样与转换采取 5 个专用 ADC 掌握器,可支持不同运用处景(比如,高性能、低功耗,或功率检测和峰值检测)支持 18 个仿照输入管脚1个内部电压 vdd33 通道、 2 个 pa_pkdet 通道(部分掌握器支持)可配置 12 位、 11 位、 10 位、 9 位多种分辨率支持 DMA(1 个掌握器支持)支持多通道扫描模式(2 个掌握器支持)支持 Deep-sleep 模式运行(1 个掌握器支持)支持 ULP 协处理器掌握(2 个掌握器支持)硬件

ADC1支持8个通道(GPIO32-GPIO39),ADC2支持10个通道(GPIO0、GPIO2、GPIO4、GPIO12-GPIO15、GPIO25-GPIO27),这里有两点须要把稳:

ADC2的一些引脚比如GPIO0、GPIO2、GPIO15为芯片的Strapping 管脚,利用的时候要特殊把稳ADC2只能在WiFi功能未启动的情形下利用

ADC仿照输入引脚可承受最高3.3V的电压,如果须要测试更高的电压,须要通过分压之类的办法进行降压之后再进行采集。

ESP32 ADC 对噪声敏感,从而导致 ADC 读数涌现较大差异。
为了只管即便减少噪声,可以在利用中的 ADC 输入端连接一个 0.1uF 的电容,多重采样也可用于进一步减轻噪声的影响。

软件

关于ADC的一些观点,比如时钟,分辨率,采样周期,衰减,量程等大家自行理解,下面我们讲一下根本的利用:

仿照电压读取

ADC利用不须要初始化引脚了,直策应用下面的函数读取引脚电压,利用默认的参数进行配置,这个参数配置能知足绝大部分的需求了。
这里还有一点把稳的是这里是壅塞的,直到采集结束。

analogRead(32);

分辨率设置

如上文中说的,ESP32的ADC是12位的,我们读取的范围默认是0-4095,如果想改也是可以的,通过下面你函数变动,一样平常用默认就好了。

/ Sets the conversion resolution Default is 12bit (0 - 4095) Range is 9 - 12 /void analogSetWidth(uint8_t bits);

ADC时钟

ADC根据选择的分辨率在多个时钟周期内进行转换,时钟速率越快,转换过程就越快,通过变动时钟分频系数来掌握频率,分频越大速率越慢,默认便是1,最快的速率。

/ Set the divider for the ADC clock. Default is 1 Range is 1 - 255 /void analogSetClockDiv(uint8_t clockDiv);

ADC参考电压

ADC的参考电压Vref,在不同的ESP型号可能是不一样的,我们这里ESP32参考电压为1.1V,一样平常用内部的就可以,哀求高的须要校准一下,当然,也可以设置外置的引脚当做参考电压。

/ Set pin to use for ADC calibration if the esp is not already calibrated (25, 26 or 27) /void analogSetVRefPin(uint8_t pin);

ADC衰减倍数

对应不同的电压检测范围,我们可以设置引脚的衰减倍数,默认便是11db,实际检测范围为0-3.3V,下面两个函数,一个设置所有通道的,一个设置特定通道的。

/ Set the attenuation for all channels Default is 11db /void analogSetAttenuation(adc_attenuation_t attenuation); / Set the attenuation for a particular pin Default is 11db /void analogSetPinAttenuation(uint8_t pin, adc_attenuation_t attenuation);/0dB --- 1.1V2.5dB --- 1.5V6dB --- 2.2V11dB --- 3.9V(实际最大采集到3.3V电压) /static uint8_t __analogAttenuation = 3;//11dbtypedef enum { ADC_0db, ADC_2_5db, ADC_6db, ADC_11db} adc_attenuation_t;

通过以上先容一些可能用到的函数,大家理解一下即可,大部分场合都用默认的就行啦。

完全程序

#define ANALOG_PIN 32int analog_value = 0;void setup(){ Serial.begin(115200); Serial.println("ADC Demo!"); } void loop(){ analog_value = analogRead(ANALOG_PIN); Serial.print("ADC value on Pin("); Serial.print(ANALOG_PIN); Serial.print(") is "); Serial.print(analog_value); Serial.println("!"); delay(1000);}

我们直接在loop中读取ADC的值,然后把结果通过串口打印出来,ADC都利用的默认参数,没有进行配置。

打印结果

利用均匀数字滤波器降噪

实际采集中,我们一样平常利用多次采集取均匀值的办法,这样出来的结果可以避免一些缺点的噪声影响准确性,方法有多种,详细便是采集多次求均匀值,或者去掉最大最小求均匀值,大家可以试一下。

对付精度较高的场合,我们可以校准ADC,这样出来的结果就非常准确,后面我们再展开实际细说。

感谢大家,关于ESP32的学习,希望大家Enjoy!

欢迎点分享、收藏、点赞。

标签:

相关文章

解码简历语言,关键词布局的艺术

在当今竞争激烈的职场环境中,一份优秀的简历是求职者通往理想工作的敲门砖。而简历的撰写,尤其是关键词的布局,更是其中的关键所在。本文...

智能 2024-12-25 阅读0 评论0

自学语言编程,开启编程之旅的黄金钥匙

在信息时代,编程已成为一项至关重要的技能。随着人工智能、大数据等领域的飞速发展,掌握编程语言已成为提升个人竞争力的重要途径。而自学...

智能 2024-12-25 阅读0 评论0

菱形图在C语言编程中的应用与价值

菱形图,作为一种常见的几何图形,在我国古代数学中有着悠久的历史。在现代社会,随着计算机技术的不断发展,菱形图在C语言编程中的应用越...

智能 2024-12-25 阅读0 评论0

自动伞,科技与生活的完美融合

随着科技的不断发展,我们的生活越来越便捷。自动伞作为一种新兴的科技产品,将科技与生活完美融合,为人们的生活带来了诸多便利。本文将从...

智能 2024-12-25 阅读0 评论0