ADC de Arduino
Este tutorial discutirá el uso de pines analógicos para leer una señal analógica y convertirla en digital en Arduino.
ADC de Arduino
El ADC, también conocido como convertidor de analógico a digital, convierte una señal analógica en una señal digital. Las señales analógicas son continuas, lo que significa que tienen un número infinito de valores dentro de ellas. No podemos leer todos los valores, por lo que leemos valores en intervalos de tiempo específicos de la señal continua, haciendo que la señal sea digital.
El proceso de tomar muestras de la señal analógica se denomina muestreo. El proceso de convertir una señal analógica a digital se muestra en el siguiente diagrama.
La primera señal en el diagrama anterior es una señal continua con valores infinitos y la segunda señal es una señal digital con un valor finito. El convertidor de analógico a digital toma valores a intervalos regulares de la señal analógica para convertirla en una señal digital.
La conversión de analógico a digital se realiza porque una computadora no puede procesar una señal analógica; solo puede procesar señales digitales en 0s y 1s. Después de procesar la señal digital, también podemos volver a convertir la señal a analógica usando DAC o un convertidor de digital a analógico.
Por ejemplo, unir los puntos de la segunda señal en el diagrama anterior será casi idéntico a la primera señal. La cantidad de muestras que tomamos en el ADC se denomina tasa de muestreo o tasa de bits del ADC.
Algunas placas Arduino tienen convertidores de analógico a digital de 10 bits y otras tienen convertidores de analógico a digital de 12 bits. La tasa de bits también se denomina resolución y define la cantidad de muestras que el ADC tomará de la señal analógica.
Un convertidor analógico a digital de 10 bits tomará 1024 muestras de la señal analógica. Por ejemplo, suponga que la señal de entrada consiste en niveles de voltaje entre 0 y 5 voltios.
En ese caso, los niveles de voltaje se asignarán al rango de números enteros de 0 a 1024, lo que significa que el convertidor de analógico a digital tomará una muestra cada 5/1024 o 4,9 milivoltios.
La velocidad del convertidor de analógico a digital depende de la frecuencia de funcionamiento de la placa Arduino en las placas Arduino basadas en ATmega
; el convertidor de analógico a digital tardará 100 microsegundos en convertir una señal analógica en una señal digital, lo que significa que la frecuencia de muestreo o la frecuencia de lectura es de 10 kHz o 10 000 veces por segundo.
Otras placas como las placas de la familia Arduino Zero, Due y MKR tienen convertidores de analógico a digital de 12 bits, lo que significa que la señal analógica de entrada de 0 a 3,3 voltios se asignará a un rango de números enteros de 0 a 4095.
De forma predeterminada, los convertidores de analógico a digital de 12 bits se establecerán en 10 bits, pero podemos cambiar la tasa de bits o la resolución del convertidor de analógico a digital utilizando la función analogReadResolution()
, pasando el número de bits dentro del función para establecer la resolución.
Consulte este enlace para obtener más detalles sobre la función analogReadResolution()
.
Los pines analógicos en cada placa Arduino están etiquetados con A
seguido de un número como A0
, A1
, etc. Para leer una señal de un pin analógico de Arduino, podemos usar la función analogRead()
.
La sintaxis básica de la función analogRead()
se encuentra a continuación.
output = analogRead(pin)
La sintaxis anterior devolverá la señal analógica del pin analógico como una señal digital. Si el pin analógico no está conectado a ninguna señal, la función aún devolverá algunos valores flotantes.
Diferentes placas Arduino tienen diferentes velocidades para el convertidor de analógico a digital, que se pueden cambiar, pero también cambiará la resolución del convertidor de analógico a digital. Por lo tanto, debemos usar la configuración predeterminada para el convertidor de analógico a digital para una conversión precisa de analógico a digital.
Discutimos anteriormente que algunas placas Arduino tienen un voltaje de referencia de 0 a 5 voltios para las señales analógicas de entrada, y algunas tienen de 0 a 3,3 voltios. Estos son los valores por defecto, y podemos cambiarlos usando la función analogReference()
.
Podemos pasar diferentes opciones dependiendo de los diferentes tipos de placas Arduino.
Por ejemplo, en el caso de Arduino Uno y Mega, tenemos opciones como:
DEFAULT
: establezca el voltaje de referencia en el rango de números enteros de 0 a 5 voltios.INTERNO
- establezca el voltaje de referencia en el rango de números enteros de 0 a 1,1 voltios.INTERNAL1V1
: establezca el voltaje de referencia en el rango de números enteros de 0 a 1,1 voltios.INTERNAL2V2.56
- establezca el voltaje de referencia en el rango de números enteros de 0 a 2,56 voltios.
Antes de configurar el voltaje de referencia, tenga en cuenta que no podemos configurar un valor de voltaje por debajo de 0 voltios y más de 5 voltios; el valor del voltaje de referencia debe ser de 0 a 5 voltios.
Supongamos que conectamos una resistencia al pin analógico. En ese caso, los voltajes de entrada se reducirán porque ya hay una resistencia de valor 32K
presente dentro del pin analógico, y en este caso, ambas resistencias harán un divisor de voltaje, y el voltaje de entrada se reducirá dependiendo del valor de la resistencia.
Consulte este enlace para obtener una lista completa de opciones que podemos usar dentro de la función analogReference()
. Consulte este enlace para obtener más detalles sobre la función analogRead()
.