I am trying to use piezoelectric sensors to detect when an object strikes one of 9 plastic panels. I have 3 ADS1115 ADCs (they are the QIFEI ones that actually are ADS1015), so 12 channels at 12-bits over i2c. Using a Pi-4 1GB. Each piezo disc is attached to a little protection circuit with a 1 MOhm resistor and a diode. I'm supplying a 5V reference from the Pi to the ADC and the protection circuit, though I don't understand why the protection circuit needs it.
Piezo & Diode: https://www.amazon.com/gp/product/B086S3F4J1/ref=ppx_yo_dt_b_search_asin_title?ie=UTF8&psc=1
When I test the ADCs with nothing attached, each channel reads a random voltage (no pull down resistor attached), but if I connect a voltage to any channel, every channel changes. i.e. attach 1.5V battery to to CH1 and it goes to ~1.5V but Ch2-4 go to 0.590V. On some of the ADCs, measuring a battery using CH1 causes CH2 to also read that value.
- Are these ADCs broken?
- How can I detect a transient signal from the piezo? The sampling rate is listed as over 3000 Hz, but I can't find any way to set it via the adafruit_ads1x15 library. I really just want to detect if an impact happens, and don't particularly care about capturing the waveform.
From my tests, there is a big difference between the signal you see when the panel is struck and the signal for when a neighboring panel is struck (with or without the diodes). I taped the piezos directly to the panels and then struck the panels and sampled the output with a scope so I know what the output should be.