Hi all,
I have an ADS1115 (4-channel ADC) talking to esphome over I2C. The ADC’s VCC is 5v and the i2c communication is level-shifted to run at 5v as well. That all seems to work fine. The config looks as follows:
i2c:
sda: 21
scl: 22
scan: true
id: bus_a
frequency: 400kHz
ads1115:
- address: 0x48
sensor:
- platform: ads1115
multiplexer: 'A0_GND'
gain: 6.144
name: "${friendly_name} Pressure 1"
unit_of_measurement: "PSI"
device_class: "pressure"
accuracy_decimals: 1
filters:
- calibrate_linear:
method: least_squares
datapoints:
# V PSI
- 0.458438 -> 0
- 0.812250 -> 13
- 1.787438 -> 50
- 4.5 -> 150 # assumed
- clamp:
min_value: -1
max_value: 151
etc
This ADC is trying to read the voltage on 3 pressure sensors (this). These are your run-of-the-mill 5v sensors which depending on the pressure and their model return something between 0.5 and 4.5v.
This seemed to work for a little bit with returned values coming back reasonable on 2/3 of them. However after a few days the measurements have gone all over the place generally in their limits:
For reference, I have fairly constant 50psi here in my analog meters in the same locations which all look like the following:
When using a voltmeter I can see that the sensors are getting 5v (same rail as the VCC to the ADC, didn’t do my best to separate them and this guarantees no weird differences) return the right voltages. The signal levels are where I expect them as well, so I’m assuming that the ADC is gone. However I’m struggling to understand how I might have done this.
Simple check with a scope gets me no triggers that are heavily over 5v over a bunch of minutes, could run that for much longer if there is a reason to believe that the 5v rail might be it, but there’s nothing else of significance on it.
Any pointers as how you can destroy an ADS1115 this way would be highly appreciated