TDS Measure
TDS Measure
h>
#include "freertos/FreeRTOS.h"
#include "freertos/task.h"
#include "driver/adc.h"
#include "esp_adc_cal.h"
void app_main(void) {
adc1_config_width(ADC_WIDTH_BIT_12);
adc1_config_channel_atten(TDS_ADC_CHANNEL, ADC_ATTEN_DB_11); // Max ~3.6V
esp_adc_cal_characteristics_t adc_chars;
esp_adc_cal_characterize(ADC_UNIT_1, ADC_ATTEN_DB_11, ADC_WIDTH_BIT_12,
TDS_VREF, &adc_chars);
while (1) {
uint32_t adc_reading = 0;
for (int i = 0; i < TDS_SAMPLE_CNT; i++) {
adc_reading += adc1_get_raw(TDS_ADC_CHANNEL);
}
adc_reading /= TDS_SAMPLE_CNT;
// ADC -> mV
uint32_t voltage_mv = esp_adc_cal_raw_to_voltage(adc_reading, &adc_chars);
float voltage_v = voltage_mv / 1000.0f;
float tds_ppm = calculate_tds(voltage_v);
vTaskDelay(pdMS_TO_TICKS(500));
}
}