精品国产人成在线_亚洲高清无码在线观看_国产在线视频国产永久2021_国产AV综合第一页一个的一区免费影院黑人_最近中文字幕MV高清在线视频

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

ESP32學習筆記:ADC

CHANBAEK ? 來源:跳動的字節 ? 作者:曉宇 ? 2023-07-13 17:11 ? 次閱讀

今天我們來玩兒ADC

概述

ESP32 芯片有2 個 12位的SAR(逐次逼近)ADC,最多可以讀取18個不同的模擬通道輸入,由5個專用轉換控制器管理,2個支持高性能多通道掃描,2個支持Deep-sleep低功耗模式下運行,還有一個專門用于功率檢測和峰值監測。

圖片

主要特性如下:

  • 采用 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.1V
2.5dB --- 1.5V
6dB --- 2.2V
11dB --- 3.9V(實際最大采集到3.3V電壓)
* */
static uint8_t __analogAttenuation = 3;//11db
typedef enum {
    ADC_0db,
    ADC_2_5db,
    ADC_6db,    
    ADC_11db
} adc_attenuation_t;

通過以上介紹一些可能用到的函數,大家了解一下即可,大部分場合都用默認的就行啦。

完整程序

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

我們直接在loop中讀取ADC的值,然后把結果通過串口打印出來,ADC都使用的默認參數,沒有進行配置。

打印結果

圖片

使用平均數字濾波器降噪

實際采集中,我們一般使用多次采集取平均值的辦法,這樣出來的結果可以避免一些錯誤的噪聲影響準確性,方法有多種,具體就是采集多次求平均值,或者去掉最大最小求平均值,大家可以試一下。

對于精度較高的場合,我們可以校準ADC,這樣出來的結果就非常準確,后面我們再展開實際細說。

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 控制器
    +關注

    關注

    112

    文章

    16206

    瀏覽量

    177436
  • 濾波器
    +關注

    關注

    160

    文章

    7731

    瀏覽量

    177703
  • adc
    adc
    +關注

    關注

    98

    文章

    6438

    瀏覽量

    544118
  • GPIO
    +關注

    關注

    16

    文章

    1196

    瀏覽量

    51920
  • ESP32
    +關注

    關注

    18

    文章

    958

    瀏覽量

    17100
收藏 人收藏

    評論

    相關推薦

    ESP32單片機學習筆記

    ESP32 單片機學習筆記 - 03 - MCPWM脈沖輸出/PCNT脈沖計數前言,繼續上一篇的內容。因為上一篇剛好實驗了iic和spi,形成一對。接下來講pwm另起一篇。一、電機PWM輸出
    發表于 08-23 08:47

    ESP32ESP-IDF學習筆記

    ESP32ESP-IDF 學習筆記(六)【I2C數據總線(I2C)】文章目錄ESP32ESP
    發表于 02-22 07:30

    ESP32 開發筆記(四)LVGL控件學習 Window 窗口控件 X

    ESP32 開發筆記(四)LVGL控件學習 Window 窗口控件 X
    發表于 11-14 09:06 ?6次下載
    <b class='flag-5'>ESP32</b> 開發<b class='flag-5'>筆記</b>(四)LVGL控件<b class='flag-5'>學習</b> Window 窗口控件 X

    [ESP32]學習筆記02

    [ESP32學習筆記02]使用ViusalStudio2017開發ESP32、按鍵輸入檢測前言一、安裝Visual Studio 2017二、配置開發環境1.安裝ViusalGDB2.
    發表于 12-03 17:36 ?23次下載
    [<b class='flag-5'>ESP32</b>]<b class='flag-5'>學習</b><b class='flag-5'>筆記</b>02

    [ESP32]學習筆記04

    Analog-to-Digital Converter(模數轉換器)的使用今天我們學習ESP32提供的ADC外設的使用,ESP32的每個ADC
    發表于 12-22 19:02 ?9次下載
    [<b class='flag-5'>ESP32</b>]<b class='flag-5'>學習</b><b class='flag-5'>筆記</b>04

    ESP32ESP-IDF 教學(八)—— 模數轉換器(ADC

    ESP32ESP-IDF 學習筆記(七)——模數轉換器(ADC)文章目錄ESP32
    發表于 12-22 19:08 ?38次下載
    <b class='flag-5'>ESP32</b> 之 <b class='flag-5'>ESP</b>-IDF 教學(八)—— 模數轉換器(<b class='flag-5'>ADC</b>)

    SPI主線協議——ESP32學習筆記

    目錄SPI主線協議——ESP32學習筆記零、前言一、什么是SPI?二、通信過程?三、極性和相位四、總結SPI主線協議——ESP32學習
    發表于 12-22 19:23 ?18次下載
    SPI主線協議——<b class='flag-5'>ESP32</b><b class='flag-5'>學習</b><b class='flag-5'>筆記</b>

    ESP32 單片機學習筆記 - 08 - WebSocket客戶端

    前言,終于要到網絡模型的最后一層,第四層,應用層,http、websocket的實踐了。文章目錄ESP32 單片機學習筆記 - 08 - WebSocket客戶端一、應用層協議 科普概念二、編程指南
    發表于 12-29 18:56 ?12次下載
    <b class='flag-5'>ESP32</b> 單片機<b class='flag-5'>學習</b><b class='flag-5'>筆記</b> - 08 - WebSocket客戶端

    ESP32 單片機學習筆記 - 04 - ADC和定時器

    ESP32 單片機學習筆記 - 04 - ADC和定時器一、模擬數字轉換器 ADC編程指南:Analog to Digital Conver
    發表于 01-17 13:18 ?11次下載
    <b class='flag-5'>ESP32</b> 單片機<b class='flag-5'>學習</b><b class='flag-5'>筆記</b> - 04 - <b class='flag-5'>ADC</b>和定時器

    ESP32芯片模組機器學習算法運行的應用

    強大的機器學習算法。 ESP32集天線開關、射頻巴倫、功率放大器、低噪聲放大器、濾波器以及電源管理模塊于一體,占用較小的PCB空間,即可最大化滿足實際應用多樣的功能需求。 使用EdgeImpulse在ESP32上運行機器
    發表于 03-15 17:23 ?1237次閱讀

    ESP32上的深度強化學習

    電子發燒友網站提供《ESP32上的深度強化學習.zip》資料免費下載
    發表于 12-27 10:31 ?0次下載
    <b class='flag-5'>ESP32</b>上的深度強化<b class='flag-5'>學習</b>

    ESP32學習筆記:存儲分布和啟動過程

    今天我們來說說ESP32 for Arduino存儲分布以及啟動過程。
    的頭像 發表于 07-14 15:10 ?2732次閱讀
    <b class='flag-5'>ESP32</b><b class='flag-5'>學習</b><b class='flag-5'>筆記</b>:存儲分布和啟動過程

    ESP32學習筆記:NVS分區永久保存數據

    今天我們來說說ESP32 for Arduino NVS分區永久保存數據。
    的頭像 發表于 07-15 16:14 ?1w次閱讀
    <b class='flag-5'>ESP32</b><b class='flag-5'>學習</b><b class='flag-5'>筆記</b>:NVS分區永久保存數據

    ESP32學習筆記:雙核

    今天我們來說說ESP32 for Arduino 的雙核。
    的頭像 發表于 07-15 16:16 ?4773次閱讀
    <b class='flag-5'>ESP32</b><b class='flag-5'>學習</b><b class='flag-5'>筆記</b>:雙核

    ESP32學習筆記:WiFi

    今天我們來說說ESP32 的WiFi。
    的頭像 發表于 07-15 16:20 ?3740次閱讀
    <b class='flag-5'>ESP32</b><b class='flag-5'>學習</b><b class='flag-5'>筆記</b>:WiFi