Duda ADC arduino 10 bits

#1
Buenas noches!
Actualmente estoy realizando un proyecto de un datalogger con un Arduino Mega y me asalta una duda: según he entendido, el ADC que lleva el Arduino Mega es de 16 canales y 10 bits no? Entonces, mi problema reside en que la resolución que me proporciona (0.00488 V/bit) es demasiado grande para alguna de las señales de entrada (la señal es 0-5V pero pueden estar variando muy poquito durante varios segundos, incluso minutos). Mi duda seria, existe alguna opción de aumentar la resolución del ADC propio o debería usar uno externo (por ejemplo usando uno de 16 bits)? Si fuese así, como seria el circuito para conectarlo al arduino?
 
#2
En el foro se han discutido formas de "expandir" la resolución de un ADC pero son relativamente complejas. Mi recomendación es que utilices un ADC externo de mayor resolución
 
#5
Preguntas:

1- ¿De qué modelo de atmega hablamos (no arduino, sino que quiero saber el modelo del uC que usa tu módulo)?.

2- ¿Por qué crees que la resolución de 10bits es baja según tu aplicación? ¿cual es la mínima variación que necesitas leer?
 
#6
Se pueden hacer varias cosas pero necesitamos mas datos.
El rango de la señal, si es pequeño se puede cambiar vref para tener mas resolución
Ten en cuenta que con 10 bits ya entra bastante ruido, si la señal es muy pequeña tendrás que hacer un circuito muy cuidado para no leer "un montón de porquería".
 
#7
Os adjunto dos gráficos de la señal a convertir. Son datos reales obtenidos con una DAQ comercial. La señal de entrada como máximo variará entre ±10V, aunque como veréis no siempre es así.
 

Adjuntos

#9
¿Y qué tasa de muestreo precisas? -> ¿Cuantas muestras por segundo?.

Si tu señal es de -10V a +10V entonces seguramente deberás incluir algún operacional para adaptar la señal al rango de tensión que maneja el conversor (0 a +5V, mejor dicho, 0 a Vref -> la referencia del conversor).

Si 10 bits de resolución es poco, entonces podrías intentar usar un ADC de 16 bits SAR (por aproximaciones sucesivas), o un conversor de 20 o más bits delta-sigma.
Con SAR el límite de 16 bits se debe al ruido, pero el delta-sigma por su forma de trabajo filtra mejor el ruido y puede lograr algunos bits más.

La velocidad de muestreo (lo que pregunté arriba) es importante porque los delta-sigma son lentos. Por lo menos los baratos, por ejemplo, hasta 1KSPS = 1000 muestras por segundo el precio no se dispara mucho. Los SAR son rápidos (cualquier SAR que ya viene incluído en el micro fácilmente da 100KSPS) pero tenés menos resolución porque son más ruidosos.

En tus gráficos se ve que la señal es muy lenta (el eje de tiempo representa centenas de segundo). Si tu señal varía tan lento entonces es posible usar un conversor de rampa (simple, doble, con auto-cero), donde tomar una muestra precisa tarda -por ejemplo- un segundo pero no precisás agregar hardware, y tenés mayor resolución a mayor tiempo para tomar una muestra. De todas formas, el error siempre lo va a determinar la referencia de tensión utilizada.
Acá hay un poco más de información:

Breve introducción a SAR, sigma-delta, simple rampa y doble rampa:
http://www.hardwaresecrets.com/printpage/How-Analog-to-Digital-Converter-ADC-Works/317

Guía de selección de Microchip, sirve para ver que clase de conversores se pueden comprar:
http://ww1.microchip.com/downloads/en/DeviceDoc/21841c.pdf

Nota de aplicación, para ver como implementar un conversor de rampa:
http://ww1.microchip.com/downloads/en/AppNotes/00611b.pdf

Suerte!!
 
#10
La sample rate seria de 4 lecturas por segundo. Las señales que os he puesto en el post anterior ya han "pasado" por un AO (para la conversion a continua) y posteriormente por un divisor de tension para tener la señal entre 0 y 5V. La tension de referencia es +5V.
He pensado de añadir un amplificador para añadirle ganancia a la señal, pero como podeis ver en las graficas anteriores, hay puntas que me saturarian el AO (y que serian demasiado elevadas para las input del arduino). Tengo de mirar tambien si variando la tension de referencia (a 3,3V, 3,2 mV/bit) me funciona bien la cosa.
En el caso de finalmente optar por un ADC externo, como deberia de conectarlo al arduino y sobretodo, como deberia de leer las entradas?
 

Temas similares

Arriba