I'm pretty much new around and I've thought of automating a certain process in a laboratory. Did the math, the calculations and it comes out that I need a 14 bit ADC, however the Arduino board I had in mind only comes with 10 bit. How can that be addressed to? Anyone had this difficulty and managed solving it?
Please answer, as I'm in a bit of rush. Thanks for your indulgence.
I'm pretty much new around and I've thought of automating a certain process in a laboratory. Did the math, the calculations and it comes out that I need a 14 bit ADC, however the Arduino board I had in mind only comes with 10 bit. How can that be addressed to? Anyone had this difficulty and managed solving it?
10 bits can measure down to 0.01%. Getting less than 0.01% noise/distortion in your input signal will probably be a far bigger problem than lack of bits in your A/D converter.
Noise/distortion won't be a problem as I'm using a linear displacement transducer from Miyamoto. It's error is 0.03%, displacement is 10mm(give or take 5%). I'm trying to measure up to at least a 0.001 error in the displacement, and 10bits won't do, as 2^10 = 1024. Dividing 10mm in 1024 gives out an error of 0.0097. I want it a bit firmer. Wanted 14 bits because that would place the error at 0.0001 and would give me a lot of breathing space, as I need to automate the process via a variable solenoid valve.
I think I'll got with the Adafruit, as it has a library and the code doesn't need to be very complex. Now, just another newbie question, as I haven't worked with Arduino until now : if I interface it with a tablet Arm7 core, how would it see it? Is it auto and can I stream the data directly via USB or do I need a catch/drop routine written in Java? Any hand of help is very appreciated, and I'll post the project code here, for everyone to check out and learn from.
Yes it will, it is always a problem with analogue circuits, it is not just a matter of having a good transducer. You will pick up noise through EMI, and power supply unless you take measures to combat and reduce it.
if I interface it with a tablet Arm7 core, how would it see it? I
What operating system?
Is it auto and can I stream the data directly via USB
Only if your tablet can take in what looks like a serial com port.
Some of the external ADC modules (such as that adafruit one) if used in their differential input mode offer very good rejection of common mode noise sources. The arduino analog inputs are 'single ended' and will always suffer more from external noise sources then differential inputs will.
daemon_deluxe:
Noise/distortion won't be a problem as I'm using a linear displacement transducer from Miyamoto. It's error is 0.03%, displacement is 10mm(give or take 5%). I'm trying to measure up to at least a 0.001 error in the displacement, and 10bits won't do, as 2^10 = 1024. Dividing 10mm in 1024 gives out an error of 0.0097. I want it a bit firmer. Wanted 14 bits because that would place the error at 0.0001 and would give me a lot of breathing space, as I need to automate the process via a variable solenoid valve.
You should definitely use an external ADC with a differential mode, otherwise ground noise will almost certainly ruin the resolution.
robtillaart:
you can do oversampling with the 10 bits ADC of the arduino, takes some time but it works.
every factor 4 more samples gives you 1 bit extra
True, but that only works if you either add a dither to the signal being measured, or the signal is already noisy and you are interested in the average value.
I'm absolutely positive that the signal is noisy. I'll try my best and filter out what I can, so thanks for the advices. Mind if I come back now and again and start asking stupid question?
daemon_deluxe:
I'm absolutely positive that the signal is noisy. I'll try my best and filter out what I can, so thanks for the advices. Mind if I come back now and again and start asking stupid question?
If the signal changes slowly (eg. physical position) then just put a small ceramic capacitor as close to the ADC input as possible (between ground and ADC input).