USD

Funciones analógicas de Arduino: Cómo usarlas en su próximo diseño

Por Lee H. Goldberg

Colaboración de Electronic Products


Si usted es un profesional del diseño integrado o un hacker novato, usted podrá apreciar cómo los canales de entrada y salida analógica de la plataforma de hardware de Arduino hacen que sea fácil para que sus proyectos alcancen y lleguen al "mundo real". Los módulos compactos proporcionan un fácil acceso a las entradas multicanales de los MCU, que pueden ser utilizadas para controlar voltajes y leer una gran variedad de sensores analógicos o forma de onda de muestra.

Si bien el convertidor de digital a analógico de los MCU tiene una resolución  y velocidades de conversión relativamente modestas, también está muy bien preparado para numerosas aplicaciones, que van desde la iluminación o control de motor hasta impulsar la polarización de ganancia de un amplificador. Este artículo presentará los recursos de hardware y software que forman la base de las funciones analógicas de Arduino y le mostrará cómo utilizar estas herramientas en su próximo diseño.

Si no está familiarizado con Arduino, puede obtener toda la información correspondiente en TechZone en el artículo "La Plataforma Arduino de Fuente Abierta Libera la Creatividad".

Creada para tecnología analógica

En consonancia con su filosofía de simplificar la aplicación de la tecnología digital a las aplicaciones del mundo real, la plataforma de hardware Arduino fue diseñada para aprovechar la mayoría de las funcionalidades analógicas integradas en la versátil familia de MCU de Atmel de 8 bits ATmega. Todas las variantes del ATmega utilizadas en las plataformas Arduino están equipadas con un convertidor analógico-digital (ADC) de canal múltiple sobre chip. El ADC tiene una resolución de 10 bits, capaz de producir hasta 15,000 muestras/seg. en forma de números enteros entre 0 y 1023. La mayoría de los Microcontroladores AVR admiten 6 canales de entrada analógica aunque algunas variantes admiten 8 y 16 entradas. Aunque la función primordial de las clavijas analógicas es leer las entradas analógicas, las clavijas analógicas también se pueden configurar como clavijas de propósito general digital de entrada/salida (GPIO). Si es necesario, las clavijas analógicas poseen resistencias de polarización seleccionables, que pueden ser configuradas de la misma forma que las resistencias de polarización en las clavijas digitales de los MCU. 

A pesar de que algunos MCU AVR están equipados con convertidores de digital a analógico (DAC), los miembros de la familia en la actual generación de placas Arduino producen sus salidas analógicas a través de una rápida conmutación de sus clavijas de E/S digitales para producir señales de modulación por ancho de pulso (PWM). El ciclo de trabajo de cada onda cuadrada de salida PWM de 490 Hz (aprox.) puede ser programado para proveer un voltaje RMS equivalente entre 0 y 5 V en incrementos de 256, 2 mseg (Fig.1). A pesar de ser un tanto limitadas en sus capacidades, las salidas de Arduino pueden utilizarse para muchas tareas como impulsar ledes o controlar motores. 

Clavijas digitales GPIO de Arduino

Figura 1: Las clavijas digitales GPIO de Arduino pueden servir como salidas analógicas mediante el uso de técnicas de modulación de ancho de pulso (PWM) (cortesía de Arduino.cc). 

La mayoría las placas Arduino proporcionan un acceso sencillo a las  señales analógicas (y digitales) de E/S del MCU mediante conectores hembra en el extremo de la placa. El número de canales analógicos y sus asignaciones físicas de clavijas varían de acuerdo con el MCU particular que se utilice y del factor de forma de la placa, pero muchas variantes siguen las convenciones de clavijas de salida utilizadas por los populares diseños "oficiales", tales como el Uno (Fig.2), el Mega, y el Nano

Placa Arduino Uno (rev3)

Figura 2: Las entradas analógicas (A0-A5) de la placa Arduino Uno (rev3) y las salidas PWM analógicas (Digital 3, 5, 6, 9, 10 y 11) son físicamente accesibles a través de pasadores de cabezal en el extremo de la placa (cortesía de Arduino.cc). 

El desarrollo de código con funciones analógicas de E/S también resulta sencillo, ya que el lenguaje de programación compatible con el Arduino IDE incluye un conjunto de comandos nativos analógicos de E/S. Estas instrucciones permiten la lectura de entradas analógicas, la generación de salidas analógicas (PWM) y la configuración del voltaje de referencia del convertidor A/D.

Lectura de entradas analógicas

Conectar las entradas analógicas de Arduino a una aplicación del mundo real es bastante sencillo, pero requiere un poco de atención a la selección de la fuente de referencia de voltaje adecuado para el convertidor A/D de AVR. Se puede usar un voltaje de referencia de VALOR PREDETERMINADO, INTERNO O EXTERNO para determinar el límite superior de su rango de voltaje de entrada. En el modo PREDETERMINADO, el MCU utiliza la salida del regulador de la fuente de alimentación de placa como referencia. Dependiendo de la placa Arduino que se utiliza, la misma es de 5 V o 3.3 V.

El modo INTERNO utiliza la fuente de referencia AVR de precisión en chip. La fuente de voltaje varía entre dispositivos específicos, pero normalmente es 1.1 V (para el ATmega168 o el ATmega328) o 2.56 V (en las series ATmega8 y Mega). El modo EXTERNO le permite conectar una referencia de voltaje externa a la clavija AREF a través de una resistencia de 5K. La clavija AREF tiene una resistencia de protección interna de 32K que actúa como divisor de voltaje con la resistencia externa de 5K. Esto significa que, por ejemplo, si se aplican 2.5 V a través de la resistencia, se producirán 2.5* 32 / (32 + 5) = aproximadamente 2.2 V en la clavija AREF. 

Leer voltajes analógicos utilizando el lenguaje de programación Arduino implica seleccionar la fuente de referencia utilizando analogReference(type) y, a continuación, invocar una lectura analogRead(pin) donde (pin) indica el número de clavija cabezal que desea realizar la muestra. Una vez seleccionado, el tipo de Referencia permanece constante hasta que se programe lo contrario. Aunque los Microcontroladores AVR admiten tasas de conversión de hasta 15k muestras/seg, el entorno de hardware/software Arduino normalmente la limita en aproximadamente10k muestras/seg. 

Crear salidas analógicas PWM 

Generar un voltaje analógico en una de los clavijas PWM de Arduino requiere la configuración de la clavija deseada como salida mediante el comando pinMode(pin, mode) y, a continuación, invocar un analogWrite(pin, value), donde (pin) indica la clavija de cabezal que desea marcar como salida y (value) es la fracción del voltaje de referencia que se va a generar (en incrementos de 1/255). Una vez configurada, la clavija genera una onda cuadrada constante de 490 Hz con el ciclo de trabajo especificado hasta la siguiente llamada a analogWrite() (o un llamado a digitalRead()digitalWrite() para la misma clavija emitida). 

Las clavijas de E/S pueden admitir corrientes de impulsión de hasta 40 mA, por lo que pueden impulsar matrices de LED de tamaño moderado de manera directa. Para iluminación de mayor potencia o motores de CC, la salida analógica puede utilizarse para impulsar un transistor de potencia o circuito de puente. Para aplicaciones más exigentes, la salida puede ser filtrada mediante una simple red R/C y utilizada como control de voltaje para un amplificador o fuente de corriente. 

Más recomendaciones analógicas 

Algunos MCU AVR (incluido el MEGA8 y el MEGA168) tienen un comparador interno que puede comparar un voltaje de entrada contra otra entrada externa, un voltaje generado por una de las salidas PWM, o el voltaje de referencia interna del dispositivo de referencia. La salida del comparador puede ser monitoreada o utilizada para provocar una interrupción. A pesar de que implica más software, una configuración de interrupción permite al procesador detectar una condición de voltaje excesivo o escaso sin tener que repetidamente realizar un muestreo de un canal analógico. Esto puede ser muy útil para muchos entornos, desde detectores de movimiento regulables a umbral y sensores de choque para monitoreo biomédico. 

Para las placas Arduino cuyos microcontroladores no tienen un comparador interno, es relativamente fácil agregar un dispositivo externo, tales como, por ejemplo, un LM741, un LM339N, o un TLC3704 en el área "kluge" proporcionada en algunas placas Arduino. Si la plataforma carece de un espacio para circuitos suministrados por el usuario, se puede añadir usando una rentable tarjeta prototipo de blindaje (Fig.3) 

Tarjetas prototipo de blindaje

Figura 3: Las tarjetas prototipo de blindaje hacen que sea fácil agregar su propia E/S analógica (o digital) a casi cualquier placa Arduino estándar (cortesía de Digi-Key). 

Resumen 

Los bajos costos y la versatilidad de Arduino han logrado convocar a un buen número de leales seguidores entre los desarrolladores de hardware comercial. La plataforma de hardware Arduino fue diseñada para explotar las funcionalidades analógicas integradas en la familia de MCU de 8 bits ATmega. Todas las variantes de estos microcontroladores están equipadas con un convertidor analógico-digital (ADC) multicanal en chip. Este artículo está pensado como una introducción a los recursos de hardware y software que forman la base de las funciones analógicas de Arduino y como un punto de partida para los ingenieros que deseen utilizar estas funciones en los próximos diseños. Para ello hemos analizado las entradas analógicas de lectura, la creación de salidas analógicas PWM, y la adición de E/S analógicas externas. Encontrará más información sobre productos relacionados con Arduino utilizando los vínculos proporcionados en las páginas del sitio web de Digi-Key.

Descargo de responsabilidad: Las opiniones, creencias y puntos de vista expresados por los autores o participantes del foro de este sitio web no reflejan necesariamente las opiniones, las creencias y los puntos de vista de Digi-Key Electronics o de las políticas oficiales de Digi-Key Electronics.

Acerca de este autor

Lee H. Goldberg

Acerca de este editor

Electronic Products

La revista Electronic Products y ElectronicProducts.com ofrece ingenieros y gerentes de ingeniería responsables de diseñar equipos y sistemas electrónicos.