6 #ifndef ESP32_ADC_CHANNEL_HPP__
7 #define ESP32_ADC_CHANNEL_HPP__
11 #include "driver/gpio.h"
12 #include "driver/timer.h"
13 #include "driver/adc.h"
14 #include "esp_adc_cal.h"
15 #include "soc/sens_reg.h"
16 #include "soc/sens_struct.h"
18 #include "adc_filter_interpolation.hpp"
35 adc1_channel_t channel_num;
36 adc_atten_t attenuation;
37 esp_adc_cal_characteristics_t calibration_data;
49 adc_atten_t attenuation,
50 uint32_t averaged_samples = 64,
51 adc_bits_width_t bits_width = ADC_WIDTH_BIT_12,
52 uint32_t default_vref = 1100u);
82 void debug_print_characterisation_val_type(esp_adc_cal_value_t val_type);
83 void test_register_direct();
86 uint32_t division_shift;
89 inline static auto _bits_width = adc_bits_width_t{ADC_WIDTH_MAX};
104 template<
size_t filter_length>
118 adc_atten_t attenuation,
119 uint32_t averaged_samples = 64,
120 adc_bits_width_t bits_width = ADC_WIDTH_BIT_12,
121 uint32_t default_vref = 1100u)
123 bits_width, default_vref}
146 if (trigger_new_acquisition) {
163 return esp_adc_cal_raw_to_voltage(
get_raw_filtered(trigger_new_acquisition),
Application, network and hardware settings, constants and preset configuration.
ESP32 ADC 1 channel access with configurable moving average filter. Moving average filtering/smoothin...
Definition: esp32_adc_channel.hpp:106
uint16_t get_raw_filtered(bool trigger_new_acquisition=true)
Get raw ADC channel conversion value, through moving average filter.
Definition: esp32_adc_channel.hpp:145
uint16_t get_voltage_filtered(bool trigger_new_acquisition=true)
Get channel input voltage, filtered by internal moving average.
Definition: esp32_adc_channel.hpp:162
ESP32ADCChannelFiltered(adc1_channel_t channel_num, adc_atten_t attenuation, uint32_t averaged_samples=64, adc_bits_width_t bits_width=ADC_WIDTH_BIT_12, uint32_t default_vref=1100u)
Initialize an ESP32 ADC channel.
Definition: esp32_adc_channel.hpp:117
void trigger_acquisition()
Explicitly trigger a new ADC analog input channel acquisition.
Definition: esp32_adc_channel.hpp:132
ESP32 ADC 1 channel access with configurable averaging.
Definition: esp32_adc_channel.hpp:33
int32_t calculate_raw_from_voltage(uint32_t v_in_mv)
Calculate backwards the raw ADC reading for given input voltage, based on calibration constants from ...
Definition: esp32_adc_channel.cpp:80
void debug_print_check_efuse()
Definition: esp32_adc_channel.cpp:90
uint16_t get_raw_averaged()
Get raw ADC channel conversion value. Repeats sampling a number of times, see "averaged_samples" cons...
Definition: esp32_adc_channel.cpp:54
uint16_t get_voltage_averaged()
Get channel input voltage in millivolts. Repeats sampling a number of times, see "averaged_samples" c...
Definition: esp32_adc_channel.cpp:72
ESP32ADCChannel(adc1_channel_t channel_num, adc_atten_t attenuation, uint32_t averaged_samples=64, adc_bits_width_t bits_width=ADC_WIDTH_BIT_12, uint32_t default_vref=1100u)
Initialize an ESP32 ADC channel.
Definition: esp32_adc_channel.cpp:14
void input_data(uint16_t value_in)
Read in a new datum and update the filter.
Definition: adc_filter_interpolation.hpp:55
uint16_t get_result()
Get filter output value.
Definition: adc_filter_interpolation.hpp:66
void initialize(uint16_t init_value)
Initializes the moving average filter with a start value.
Definition: adc_filter_interpolation.hpp:46