I am designing my own samd21 board and would like some help on what i can do to for it to be sensitive to 1mv , right at the edge of 12bit. Im already planning onn using some ultra low noise LDOs like the LP5907 to power the atsamd21, what are the other steps i can use to help it more achieve that percision.
Oversampling maybe!?
Samd21 is not enough description to know what you are talking about, it is used on many boards in many forms. I assume 1mv is not a Unix command but mV is millivolts. 1 mV is in the noise floor and in error range of the A/D, you will need to provides code to calibrate the ADC on SAMD boards. I suggest you add an amplifier stage in front of the A/D to get some range. What is the reason for the low noise LDOs? I would suggest you use a voltage reference circuit inplace of the micro VCC voltage to keep noise out and your readings stable. I suggest you post a schematic of what your are planning on doing not a frizzy thing and include links to technical information on each of the hardware devices. You need to define what are the other steps i can use to help it achieve more precision.
A ultra-low noise LDO to power a noisy processor, that might have no influence on the result.
A Arduino Uno with a ADS1115 16-bit external ADC might have better results than your design.
ADS1115 module: https://www.adafruit.com/product/1085
The Samd21 can be set to a resolution of about 0.25mV per A/D value, with 1volt Aref.
But that might not work for the (unspecified) sensor you have.
Is the sensor ratiometric, or does it output a voltage independent of it's own supply.
Weblink please.
Leo..
That is what im attempting actually i want to remove the need for an external adc
Indeed that is a nice idea but i am trying to read a current sense amplifier with 50x amplification, my previous solution was to use an external adc ads1115, but i would like to eliminate that adc completely.
The resistor is a 0.006ohm sense resistor and would like to get a reading of 0.01A icrements, at 0.01A the amplifier will spit out 3mV increments which i then need to read. My maximum current is also 10A, i will need to read 3mV - 3V.
I think i will need to use the internal gain and use software to switch gains when necessary.
which pin is the aref for the samd21? i am using the ATSAM21E15B variant. is the avdd the one ?
Manufacturer page of the ATSAMD21E15: https://www.microchip.com/wwwproducts/en/ATSAMD21E15 with datasheet.
I think that PA03 and PA04 can be used as a VREFA and VREFB.
The VDDANA pin powers the analog section of the processor. If you want the best noise-free analog value, then you have to make that power quiet.
According to the datasheet: "VDDANA: Powers I/O lines and the ADC, AC, DAC, PTC, OSCULP32K, OSC32K, XOSC32K. Voltage is 1.62V to 3.63V".
Could you check what you type. I can not find "avdd" in the datasheet and the "ATSAM21E15B" has a typing error as well.
Seems you're looking at the wrong INA chip.
The INA226 (one bi-directional channel, built-in 16-bit A/D, including voltage/power),
or the INA 3221 (three channels) are more commonly used for current sensing.
They both come on breakout boards.
Leo..
What do you mean by wrong?
It has a analog output.
When the conversion to a digital signal would be inside the INA chip, then you wouldn't have to go through the trouble of reading that signal with a analog input.
Like i said - oversampling. No needed additional hardware, just several line in program.
@flashko, did you write that "oversampling" sketch ? It is not simple, it has no advantage over taking the average, it throws away bits, it does not take into account the half-a-bit.
Using the average of many samples can make use of the noise to get more resolution between the conversion steps. It does not increase the overall accuracy or linearity or other specifications of the ADC.
We all use the average of a a number of samples when appropriate.
[ADDED] I visited that website without adblocker, and the site has an extremely amount of ads. An example with the Wire library is wrong. I can not give comment at the bottom of a page. Let's ignore that website.
There are many INA current sense chips.
You seem to be looking at an outdated one.
The later generations have high-resolution A/D converters included.
The only INA chips that don't have the A/D included are the high-voltage ones, like the INA169/196.
Leo..
From ATSAMD21G18 datasheet:
– One 12-bit, 350ksps Analog-to-Digital Converter (ADC) with up to 20 channels
• Differential and single-ended input
• 1/2x to 16x programmable gain stage
• Automatic offset and gain error compensation
• Oversampling and decimation in hardware to support 13-, 14-, 15- or 16-bit resolution
Yes, that is very good. Instead of taking the average of samples in software, the processor can do that in hardware. I would also call that "oversampling" instead of "averaging".
It is that website that I don't like (www.best-microcontroller-projects.com/arduino-adc-oversampling.html
).
Another source of noise is the processor and I/O. You should avoid switching loads on the I/Os and possibly send the processor to sleep during the conversions.
As you already found the power regulator can introduce a lot of noise into your system. Check the datasheet of the regulator for PCB design recommendations.
The PCB design is also important. Isolate the analog side as much as possible from the digital side. Make sure the ground signal from your sensor has a direct path back to the ADC and other digital ground path do not need to follow the analog ground path back to the power source. e.g., the power source should not be on the analog side/corner of your PCB. Otherwise, the digital ground current needs to flow through your analog ground creating noise.
This topic was automatically closed 120 days after the last reply. New replies are no longer allowed.