MicroPython unstable ADC readings +/- 5% between reads
-
Using Arduino, readings were stable, but with Micropython & UIFlow, the ADC is unaccurate with variations up to +/- 5% between each adc0.read()
Also, when M5Stack is alone, not a single pin connected, I see occasional jumps to raw 150 or more (max 4095) instead of expected steady 0.
Did you experience similar behaviour ?
How can we fix this ?Context
M5Stack Core1 + uiflow
Reading voltage drop by a water pressure sensor with 4-20mA through a 147 Ohms resistance. Power is 24V switching power supply, I added a 4700µF capacitor on the PSU. Reading every 1s.Code slice (uiflow)
adc0 = machine.ADC(35) # Maximum attenuation for 0.17 to 3.10V Range adc0.atten(machine.ADC.ATTN_11DB) while True: adc_raw = adc0.read() label_adcraw.setText(str(adc_raw)) # Just for info # Converts the raw value to the range of the sensor (0-300cm water column pressure) # Values adjusted after some testing. height = int((((adc_raw - 530) / (3600 - 530)) * 300)) label_height.setText(str(height)) wait_ms(1000)
Probably irrelevant details
- TL-136 Liquid Level Sensor Detector Liquid Level Transmitter 24VDC 4-20mA Signal Output
- Using independant PSU for the sensor and the M5Stack Core1
- Using pin 35 for ADC