I am using a Lolin D32 Pro (ESP32) together with the accelerometer ADXL356 and the external ADCs ADS1115 and ADS1015.
My current problem is that my ESP32 cannot get values fast enough from the ADS1015 which has a theoretical samplerate of about 3000 samples per second.
Background-Info: The ADXL356 is a tri-axis accelerometer and since the ADS1015 can only convert a single analog input at a time the maximum datarate for all three input channels drops to about a 1000 samples per second.
I only manage to get a measured datarate of about 426 samples per second for all three axes which is less then half the theoretical value of about 1000 samples per second. I am using this library ADS1115-Lite.
The reason for that is probably due to my relatively slow i2c communication speed of less then 1 MhZ on my ESP32 (800 000 kHz to be precise). I tried setting the speed of my Wire-Object higher but that did not work; the speed stays at a maximum of 800 kHz.
I have other accelerometers which manage to go much faster (measured limit was around 6800 samples per second) but these use SPI for communication with an in-built multi-channel ADC.
My Question is therefore if someone knows either:
a) is it possible to surpass a i2c connection speed of 800kHz on the ESP32-Wrover
b) does someone know of a wifi-cabable chip that reaches an i2c-speed of at least 1,6 MHz (So far as I am aware the RP2040 also does not meet this criteria)
c) Is there maybe a (relatively cheap and/ or small ADC) which has at least a resolution of 12 Bit and achieves at least 1000 samples per second for three analog input channels e.g. same functionality as the ADS1015 but with a SPI interface
Thank you very much for helping me with my issue and I am looking forward to hearing your suggestions
thanks for your suggestion. You are right, looking at the analog device homepage they do have a very large selection of adc's. The problem however here is that most evaluation boards are almost the size of a full-blown motherboard and cost over 100$ and thus of no interest to me since the ADC should be somewhat affordable and fit in small enclosures.
It is funny because the chip/ ADC itself can be bought in most cases for around 8$...
So far I have found no adc on the analog devices website which fits my criteria (min. 3 input channels, sps > 3000, spi, internal vref, resolution >= 12 bit) and also has an evaluation board in form of a small break-out board e.g. around the size of adafruit's ADS1015 [Link].
Yup, they are low-volume specialized products with high development costs, and often over-engineered! I've seen some that are more affordable, basically a breakout board that can be used standalone (hurray!) or plugging into their proprietry eval board architecture (for the corporate market). The DRV8871 board is like this: https://www.ti.com/tool/BOOST-DRV8711 - alas its a motor controller, not a fast ADC!
Talking of SPI ADCs I've used the ADCS7477 when I wanted a tiny fast single channel ADC - its SPI compatible upto 1MSPS
thanks for your suggestion. Do happen to have the link of a breakout board featuring the ADCS7477 I having a hard time finding one. I am having a hard time finding one :/. If not could you perhaps explain how one would create a do-it-yourself break-out board, preferably doable using a soldering iron .
Another look on the Analog Devices website and I wonder if an LTC1290 would suit? It's 8ch, 12-bit, SPI, 50K samples/sec (I think...), and it's available in a soldering iron friendly DIL package! Digikey says that they are around $14ea. They don't have an internal reference but there are plenty of external reference chips about.
MCP3204 is significantly cheaper than that, 4 channel, DIP or SOIC.
MCP3208 is eight-channel version
LT (Linear Tech) parts are usually fairly exotic and expensive, they go for niche uses I think, the LT1290 is fairly complex and versatile and supports bipolar analog inputs. Don't think you need that... The place to search for parts is on the website of a major supplier like digikey/mouser etc as they have nearly all the parts and with current prices/availability too!
One more question; how do I go about delivering a stable reference voltage? I want to measure voltages from 0 to 1V. The ADS1x15 has an onboard voltage reference but how do I work with ADC's which require an external reference?
Thanks again
Using a voltage reference chip and a suitable opamp to drive the ADC ref pin - datasheets for ADCs usually give an example circuit for this if its critical (it will be for very high precision ADCs).
Hello, do not be tired, have a good time.
I also need to speed up my sampling but I do not need more accurate tools. Only code or command and maybe a function that changes the clock. I do not know if
setClockDivider ()
Is it effective or not?
I have to reach a speed of 1M (1 MHz)
Thanks very much.