A la hora de escoger un modelo de Arduino, lo primero que debemos verificar son las especificaciones técnicas del mismo. Con especificaciones técnicas me refiero a aquellas características de hardware que poseen los diferentes modelos de Arduino.
En la página oficial de Arduino podemos encontrar información sobre todos y cada uno de los modelos que han sido lanzados al mercado. La siguiente imagen muestra las especificaciones técnicas del Arduino UNO.
Este artículo tratará de explicar cada una de las especificaciones técnicas que se muestran en la imagen y la importancia de las mismas dentro de los proyectos que vayamos a desarrollar.
Especificaciones técnicas generales de Arduino
Microcontrolador (microcontroller)
El Arduino es un sistema embebido, es decir, una combinación de componentes integrados en una sola placa que le dan funcionalidad a un circuito electrónico. Los sistemas embebidos como el Arduino están construidos en base a un microcontrolador, el cual almacena y ejecuta un algoritmo de programación.
En el caso del Arudino UNO, el microcontrolador es desmontable y reemplazable en caso de que sufra algún daño por corto circuito o por sobre voltaje. El resto de los modelos de Arduino utiliza microcontroladores con tecnología SMD/SMT, lo cual dificulta mucho el reemplazo en caso de daño.
La siguiente tabla muestra los microcontroladores según modelo de Arduino.
Microcontrolador |
Modelos de Arduino |
ATmega 328P |
Arduino Uno, Arduino Pro, Arduino Pro Mini, Arduino LilyPad, Arduino LilyPad SImpleSnap, Arduino BT, Arduino Ethernet, Arduino Fio, Arduino Mini, Arduino Nano |
ATmega32U4 |
Arduino LilyPad USB, Arduino Micro, Arduino Esplora, Arduino Leonardo, Arduino Yún |
ATmega168V |
Arduino LiLyPad, Arduino Pro, Arduino Nano |
Intel Curie |
Arduino 101 |
ATtiny85 |
Arduino Gemma |
SAMD21 Cortex –MO+ |
Arduino MKR1000 |
ATSAMD21G18 |
Arduino Zero |
ATSAM3X8E |
Arduino Due |
ATmega2560 |
Arduino Mega, Arduino Mega ADK |
AR9331 Linux (microprocesador) |
Arduno Yún |
En esta tabla vemos al Arduino Yún aparecer dos veces. Esto se debe a que este dispositivo en específico está basado en un microcontrolador y un microprocesador, lo cual le brinda funcionalidades especiales.
Hay algunos modelos de Arduino que aparecen listados en dos renglones (como el LilyPad). Esto se debe a que existen dos versiones de estos modelos, cada uno con un microcontrolador distinto.
Cada microcontrolador posee características especiales que permiten a los modelos de Arduino cumplir tareas específicas. Por ejemplo, los Arduinos con ATmega32u4 pueden ser utilizado como teclado, ya que son reconocido por la computadora como un dispositivo USB. Los Arduinos con ATmega328P se conectan a la computadora por USB pero son reconocidos como dispositivos COM (puerto serie).
Para conocer las características de cada uno de los microcontroladores necesitaríamos dedicar un post a cada uno de ellos, lo cual está en mi to-do-list. Por lo pronto, sólo necesitamos saber que dependiendo del microcontrolador en el que esté basado nuestro modelo de Arduino contaremos con más o menos recursos de memoria y capacidad de procesamiento, lo cual será crítico o no para aplicaciones según su grado de complejidad.
Voltaje operativo (operating voltaje)
El voltaje operativo es sumamente importante en cualquier aplicación. Los Arduinos que conocemos operan entre 3.3 V y 5 V. Algunos modelos trabajan exclusivamente en 3.3 V.
¿Qué significa esto? Que no podremos aplicar más de 3.3 voltios a un pin digital o analógico en un momento dado. Si rompemos esta regla terminaremos destruyendo nuestro Arduino. No veremos chispas, luces, humo o fuegos artificiales. Simplemente no seguirá funcionando, no responderá, no podrás subir nuevos códigos. En el peor de los casos, se apagará y no encenderá más.
La siguiente lista presenta los modelos de Arduino que trabajan en 3.3 voltios.
- Arduino 101
- Arduino Gemma
- Arduino LilyPad USB
- Arduino MKR1000
- Arduino Pro (ATmega168)
- Arduino Pro Mini
- Arduino Zero
- Arduino Due
- Arduino Fio
Algo que llama la atención d esta lista es que aparecen muchos de los modelos nuevos de Arduino (101, Gemma, MKR1000, Zero). Es probable que Arduino esté orientando sus diseños e hacia la utilización de 3.3 voltios. Esto tiene mucho que ver con los microcontroladores nuevos que se están utilizando, los cuales se alimentan en 3.3 volts y no permiten voltajes mayores a este límite. Al final, es el micro el que establece el voltaje operativo.
Esta es una de las principales características que se debe tomar en cuenta cuando sea que se vaya a utilizar un Arduino. El asunto de los voltajes es sumamente delicado y si no se toman las precauciones, podríamos tener serias complicaciones en el desarrollo de cualquier proyecto.
Es preferible trabajar en 5 voltios debido a que muchos sensores, módulos y shields vienen diseñados para 5 voltios. Algunos poseen un rango operativo que va desde los 3.3 volts hasta los 5 volts, pero no es una regla general. Trabajar en 3.3 voltios supone una precaución más a la hora de construir algo, lo cual es algo que siempre debemos tratar de evitar.
Voltaje de entrada recomendado (input voltage)
El voltaje de entrada difiere del voltaje operativo. Un Arduino Uno puede trabajar en 5 voltios pero lo podemos alimentar en 12. Esto se debe a que la mayoría de los modelos de Arduino posee un regulador interno de voltaje. El Arduino Uno, por ejemplo, posee un transistor LM7805 para mantener un voltaje fijo de 5 voltios con los cuales alimenta al microcontrolador.
Se recomienda que el voltaje de entrada sea superior a 7 voltios debido a que si se alimenta el Arduino con 5 voltios, es posible que el propio regulador de voltaje (también de 5 voltios) cause una caída en el voltaje que alimenta el microcontrolador. El regulador de voltaje como tal intentará regular un voltaje que no necesita ser regulado.
Es preferible que se alimente el Arduino con 9 o 12 voltios. No se recomienda utilizar el Arduino como una fuente de poder. El 7805 podrá entregar unos 500 mA de corriente, los cuales serán utilizados por el microcontrolador y las salidas digitales.
Voltaje de entrada límite (input voltage)
Estos son los límites de voltaje de alimentación para el Arduino. Con lo expuesto en el punto anterior, no se recomienda que el voltaje sea menor a 6 voltios debido al regulador de voltaje. El límite superior representa el mayor voltaje que el LM7805 podrá regular sin dañarse. No se recomienda utilizar voltajes de alimentación en los límites establecidos.
Pines de entrada/salida digital (digital I/O pins)
Los pines de entrada y salida son aquellos que podemos utilizar para enviar o recibir señales digitales. Sobre este tema ya he escrito un post llamado Entradas y Salidas Analógicas y Digitales.
La mayoría de los modelos de Arduino posee 14 pines de entrada/salida digital, de los cuales solo 12 son utilizables en la práctica. Esto se debe a que los pines 0 y 1 están asociados al puerto serie. Si se conecta una carga a estos pines perderemos la capacidad de comunicarnos con la computadora y no podremos reprogramar el Arduino mientras la carga siga conectada.
Los pines analógicos pueden ser utilizados como pines digitales, tomando en cuenta que el pin A0 sería el D14, el A1 sería el D15, y así sucesivamente.
El Arduino Mega es el modelo que más se destaca por sus pines de entrada/salida digital, con 54. El Arduino Micro, el Leonardo y el Yún poseen 20 pines, el Lilypad tiene 9, el MKR1000 8, el Gemma 3 y el resto de los modelos cuenta con 14. También es posible aumentar la capacidad de entradas y salidas digitales del Arduino utilizando los registros de desplazamiento.
Pines PWM (PWM digital I/O pins)
En Panama Hitek ya hemos escrito sobre PWM. La modulación por ancho de pulsos (Pulse Width Modulation) permite el control de la potencia entregada a una carga a través de una señal pulsante.
Arduino permite utilizar señales PWM en ciertos pines digitales, a través de la función analogWrite. Las señales de PWM no son señales analógicas, ya que la amplitud del voltaje no varía. El voltaje promedio es el que se ve reducido conforme se modifica el ancho de los pulsos. Los pines PWM son identificables a través del símbolo ~ que se encuentra al lado de ciertos pines del Arduino.
El número de pines PWM varía de un modelo a otro. La siguiente tabla condensa los modelos de Arduino, con sus respectivo número de pines PWM.
Modelos de Arduino | Número de pines PWM |
Mega 2560, Mega ADK | 15 |
Due | 12 |
Zero | 10 |
Micro, Yún, Leonardo | 7 |
LilyPad, Pro, Pro Mini, Uno, BT, Fio, Mini, Nano | 6 |
101, LilyPad SimpleSnap, LilyPad USB, MKR1000, Ethernet | 4 |
Gemma | 2 |
Esplora | 0 |
Existen ciertos métodos para lograr emular una señal PWM. Con esto podríamos contar con uno que otro pin extra en caso de necesitarlo.
Pines de entrada analógicos (analog input pins)
Los pines analógicos están asociados a un circuito ADC (Analog to Digital Converter). Sobre este tema ya hemos publicado el psot titulado «Lecturas Analógicas en Arduino«. Estos pines nos permiten básicamente leer señales de voltaje, siempre y cuando estas se encuentren entre 0 y 5 voltios con respecto a la tierra (GND) del Arduino (es posible cambiar el voltaje de referencia). Esto implica que las señales que se muestrean con estos pines sean casi exclusivamente en DC. También es posible muestrear señales AC, aunque esto conlleva precauciones y circuitos electrónicos especiales.
Nuevamente, la cantidad de pines analógicos disponibles varía en función del modelo de Arduino. Veamos la siguiente tabla:
Modelo de Arduino | Pines Analógicos |
Mega 2560, Mega ADK | 16 |
Micro, Due, Leonardo, Yún | 12 |
Fio, Mini, Nano | 8 |
MKR1000 | 7 |
101, LilyPad, Pro, Pro Mini, Uno, Zero, BT, Ethernet | 6 |
Lilypad SimpleSnap, LilyPad USB, | 4 |
Gemma | 1 |
Algunos de estos pines pueden ser configurados como pines de entrada/salida digital. También hay casos especiales como el Arduino Leonardo, donde los pines digitales 4, 6, 8, 9, 10 y 12 pueden ser configurados como pines analógicos (A6-A11). Esto también aplica para el Arduino Yún.
Pines de salida analógicos (analog output)
Esta es una característica muy rara dentro de la gama de modelos Arduino. De hecho solamente un modelo de Arduino posee esta carcaterística: el MKR1000.
Las salidas analógicas consisten en un DAC (Digital to Analog Converter), el cual transforma una señal digital en un específico. Podríamos, por ejemplo, pedirle al Arduino que nos entregue 1, 2 o 3 voltios en el pin de salida analógica. Podríamos generar señales senoidales o diente de sierra a partir de esta característica. Esto, sin embargo, es exclusivo del MKR1000.
En mi experiencia persona, nunca he visto tal cosa. Sólo sé que existe, pero no he tenido la oportunidad de probarlo. Aún así, creo que vale la pena mencionarlo.
Corriente DC por cada pin I/O (DC current per I/O pin)
Esta es la cantidad de corriente máxima que puede entregar el Arduino a través de un pin digital en un momento dado. También es la mayor cantidad de corriente de entrada que puede soportar el Arduino sin sufrir daño permanente.
El Arduino, como controlador digital, no está diseñado para entregar corriente, sino para entregar señales de control. Las señales de control son, normalmente, voltajes pequeños entre 0 y 5 voltios. Con esto podemos activar transistores BJT, MOSFETS, TRIACs, etc.
Es por esto que no se recomienda conectar al Arduino motores, relevadores o cargas que demanden corriente departe del microcontrolador. La corriente DC máxima (aproximadmente 20 mA) es una referencia para el diseño de circuitos que serán acoplados y controlados por el Arduino.
Corriente DC en el pin de 3.3 voltios (DC current for 3.3 pin)
Los pines de 3.3 voltios permiten entregar un poco más de corriente. Esto se debe a que la relación de I*V es constante, de tal forma que si se reduce el voltaje en un pin es posible entregar un poco más de corriente.
Memoria Flash (flash memory)
La memoria flash es aquella en la cual se almacena el código de programación del Arduino. Entre mayor sea la capacidad de memoria de un Arduino, más código podremos grabar en ella.
Cuando nos acercamos al límite de memoria del Arduino éste puede empezar a presentar fallos en su funcionamiento, específicamente cuando se supera el 95% de la capacidad total de la memoria. La siguiente tabla presenta la capacidad de memoria flash según los modelos de Arduino.
Modelo de Arduino | Capacidad de Memoria Flash (KB) |
Due | 512 |
Mega 2560, MKR1000, Zero, Mega ADK | 256 |
101 | 196 |
LilyPad SimpleSpap, LilyPad USB, Micro, Pro, Pro Mini, Uno, BT, Esplora, Ethernet, Fio, Leonardo, Mini, Nano, Yún | 32 |
LilyPad, Pro, Nano | 16 |
Gemma | 8 |
Si sabemos programar adecuadamente, es difícil que se supere el límite de memoria de un Arduino. Cuando se trata de proyectos complejos, entonces quizás sea necesaria la integración de dos Arduinos en un mismo diseño, para dividir la carga entre ambos núcleos.
Memoria SRAM
La memoria SRAM es similar a la memoria RAM de las computadoras. Se trata de una memoria de acceso aleatorio, dinámico, utilizada en tiempo de ejecución para todos los procesos internos del microcontrolador. Entre más memoria SRAM, más capacidad de almacenamiento de valores en variables declaradas en el código de programación.
El uso de las librerías y la capacidad de manejar datos depende directamente de la SRAM. Por ejemplo, una vez estaba trabajando con el Arduino Yún y bases de datos SQLite. Para insertar información a la base de datos es necesario crear un query. Este query es una cadena de caracteres que contiene los datos y las instrucciones para su almacenamiento. Sucede que en algún momento, la longitud del query se veía limitada debido a la incapacidad de la memoria SRAM de contener todos los datos en una sola variable. Fue necesario guardar la información en múltiples subqueries, en vez de una sola cadena con todos los datos incluidos.
A continuación se presenta la capacidad de memoria SRAM en función del modelo de Arduino.
Modelo de Arduino | Capacidad de memoria SRAM (KB) |
Due | 96 |
MKR1000, Zero | 32 |
101 | 24 |
Mega 2560, Mega ADK | 8 |
LilyPad USB, Esplora, Leonardo, Yún | 2.5 |
LilyPad SimpleSnap, Pro, Uno, BT, Ethernet, Fio, Mini, Nano | 2 |
LilyPad, Pro, Pro Mini, Nano | 1 |
Gemma | 0.5 |
Hace unos meses estuve considerando la posibilidad de aumentar la capacidad de memoria SRAM de Arduino a través de circuitos integrados. Este es un tema en el cual debo seguir investigando.
Velocidad de reloj (clock speed)
Todos los dispositivos basados en microcontroladores/microprocesadores necesitan un oscilador que les permita llevar a cabo las tareas en tiempo de ejecución. Este oscilador es el responsable del conteo del tiempo. Entre más alta sea la frecuencia de oscilación, contaremos con un procesamiento más rápido de la información.
Los Arduinos normalmente trabajan en 16 MHz, aunque esto no es una regla. Veamos las velocidades de reloj en base a los modelos de Arduino.
Modelo de Arduino | Velocidad de Reloj |
Due | 84 MHz |
MKR1000, Zero | 48 MHz |
101 | 32 MHz |
Mega 2560, Micro, Pro, Pro Mini, Uno, BT, Esplora, Ethernet, Leonardo, Mega ADK, Mini, Nano, Yún | 16 MHz |
Gemma, LilyPad, LilyPad SampleSnap, LilyPad USB, Pro, Pro Mini, Fio | 8 MHz |
En el caso del Arduino Yún, éste también posee un microprocesador que trabaja a 400 MHz, el cual he decidido no colocar junto a los microcontroladores.
Al final, las especificaciones técnicas del modelo de Arduino que vayamos a utilizar tendrán un impacto directo sobre el proyecto en el que estemos trabajando. Esto también dependerá de la capacidad de quien desarrolla el proyecto. Es posible maximizar el poder de un simple Arduino Uno para que cumpla las funciones de un Arduino Mega, aplicando la electrónica y los conocimientos adecuados.
Para este artículo hemos utilizado como referencia la página Arduino – Compare, en la cual se muestran las características de hardware de los modelos de Arduino. Espero que este artículo sea de su agrado. Cualquier duda o sugerencia, por favor dejarla en la sección de comentarios. Saludos.