help using the right hardware, please help!

Hi everyone, I am new to using micro-controllers and would really appreciate some advice on what hardware to get for a project.

Essentially what I am trying to do is measuring voltage changes rapidly (ideally at rates of ~10kHz) with fairly good resolution (16 bit would be great, but I could probably go lower) for at least minute at a time (then it could dump to an sd card and start again or something).

with this rapid data acquisition rate my impression is that the hardware in an uno would not be able do the job. This also needs to be done away from a computer/mains power source, so I would probably use a 9V battery or something. Also, minimising the size is desirable.

In summary, the desired features: high resoultion, rapid data aquisition for at least 1 min at a time, small portable power source, small size

I am really new to all this so if anyone thinks this possible is feasible and if so what hardware options are available please let me know :slight_smile:

Arduino ADC: about 9.6 kHz, 10 bit. Arduino RAM: 2 kB.

You ask for ~10 kHz (match), 16 bit (no match), recording 1 minute before writing out (about 1.2 MB of data - no match).

If you're happy with 10-bit resolution you could use the Arduino's built-in ADC to do the sampling, and have the Arduino write it straight to the SD card (which can handle 2-10 MB/s writing speed depending on type - match). No local caching of data.

Oh, and ditch that 9V battery. It's possibly the worst way of powering an Arduino. Get a standard USB power bank.

wvmarle:
Arduino ADC: about 9.6 kHz, 10 bit. Arduino RAM: 2 kB.

You ask for ~10 kHz (match), 16 bit (no match), recording 1 minute before writing out (about 1.2 MB of data - no match).

If you're happy with 10-bit resolution you could use the Arduino's built-in ADC to do the sampling, and have the Arduino write it straight to the SD card (which can handle 2-10 MB/s writing speed depending on type - match). No local caching of data.

Oh, and ditch that 9V battery. It's possibly the worst way of powering an Arduino. Get a standard USB power bank.

Thank you so much for the reply, thanks for letting me know about the power bank idea. It sounds from what your saying that writing directly to a card is easily doable at a rate of 10kHz. the only problem with this solution is that the resolution will be 10 bit, which might be a slight issue.

Is the 10bit and 9.6kHz for any of all of the arduino models (or any microcontroller that runs on arduino software) or are the 11 bit+ versions? I was having a look at the different models yesterday and the Arduino Due has a clock speed of 84MHz and 96kB of SRAM, but I guess the ADC is still limited to 10bit though(?)

I've been looking at ADCs that I believe you can add to the arduino to increase both the resolution and the logging rate, with something like this:

https://uk.farnell.com/analog-devices/ad7606bstz/ic-das-w-adc-16bit-64lqfp/dp/1864685?scope=partnumberlookahead&ost=AD7606BSTZ&searchref=searchlookahead&exaMfpn=true&ddkey=https%3Aen-GB%2FElement14_United_Kingdom%2Fw%2Fsearch

Would adding something like this work?

If it does, does it making programming the arduino more difficult?

And finally, is it possible to use something like this on an arduino to measure several different channels at once (i.e so I could measure 4 voltage signals at once).

Again thanks so much for taking time out of your day to help me with my project, you are potentially saving me hours of trawling through the internet or wasting money on equipment that doesn't work

It looks like a tough project. Just suggesting check into Sigma Delta converters. Here are some links: Sigma-Delta ADC Tutorial | Design Center | Analog Devices https://www.maximintegrated.com/en/design/technical-documents/tutorials/1/1870.html The information will help you understand what is happening and give you some incite for the design. For memory you might consider using FRAM. Have you considered FRAM (Feroresemot Random Access Memory) It's similar to Static random-access memory, only with a ferroelectric layer instead of a dielectric layer. This gives it stable handling (the bytes you write are non-volatile) with dynamic responsiveness (you can write them very fast!). Some of the advantages I see in FRAM are high speed reading and writing, non-volatile storage (it remembers its contents without needing power or battery backup), virtually unlimited read / write cycles - you can't wear it out unlike some other types of non-volatile memory. To get started try this link: Adafruit SPI Non-Volatile FRAM Breakout - 64Kbit / 8KByte : ID 1897 : $5.95 : Adafruit Industries, Unique & fun DIY electronics and kits There board has a write enable input so you can lock it down and read it on another machine without worry about trashing the date.
Good Luck & Have Fun!
Gil

There are Arduinos out there with higher resolution of the ADC (no personal experience working with these boards). Do study them to know their specific abilities and limitations.

The Arduino Due has 12-bit resolution.

Not an Arduino but programmed through the IDE: the Teensy offers 16-bit resolution (and a lot more memory).

Another candidate is the ESP32, it has a 12 bit ADC and plenty of on-board Flash (accessed as SPIFFS file system) to store your minute of data.