mirror of https://github.com/arendst/Tasmota.git
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:
parent
16307bc4b8
commit
b63a061aeb
|
@ -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;
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue