Update xsns_02_analog.ino for calibrated values on ESP32 (#19732)

ESP32  ADC has variables errors, but calibrations values are put in eFuses at factory test.
analogReadMilliVolts() from api correct the ADC reading with tata values.
Since now the value are mV and not ADC numbers, the fast solution is to revert it back to ADC numbers:
divide by Vcc  => ANALOG_V33*1000  and multiply by ANALOG_RANGE
Other way is to modify all sensor cases to account for the different unit.
This commit is contained in:
Eduardo Spremolla 2023-10-15 06:57:13 -03:00 committed by GitHub
parent 16307bc4b8
commit b63a061aeb
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 7 additions and 0 deletions

View File

@ -335,10 +335,17 @@ uint16_t AdcRead(uint32_t pin, uint32_t factor) {
uint32_t samples = 1 << factor;
uint32_t analog = 0;
for (uint32_t i = 0; i < samples; i++) {
#ifdef ESP32
analog += analogReadMilliVolts(pin); // get the value corrected by calibrated values from the eFuses
#else
analog += analogRead(pin);
#endif
delay(1);
}
analog >>= factor;
#ifdef ESP32
analog = analog/(ANALOG_V33*1000) * ANALOG_RANGE; // go back from mV to ADC
#endif
return analog;
}