Los hermanos mayores suelen sufrir el síndrome del príncipe destronado y algo parecido le ha tenido que suceder a la placa Arduino MEGA 2560. Sin duda alguna esta placa hace de hermano mayor de Arduino UNO.
Y no es porque solo sea más grande, que lo es, es más bien por sus prestaciones que hacen que el Arduino MEGA 2560 sea una de las opciones favoritas para muchos adeptos a la electrónica e incluso a la Impresión 3D.
Pero lo mismo te estás preguntando: ¿por qué necesito un Arduino MEGA 2560 si con un Arduino UNO tengo más que suficiente?
Pues la respuesta es simple: el Arduino MEGA 2560 es básicamente un Arduino UNO con esteroides. Lo supera en casi todos los aspectos relevantes en una placa de desarrollo:
- Pines digitales.
- Pines analógicos.
- Puertos de Comunicación.
- Memoria.
Y muchas más cosas que veremos a lo largo de este artículo.
Indice de contenidos
¿Qué es Arduino MEGA 2560?
Arduino MEGA 2560 es una placa de desarrollo basada en el microcontrolador ATmega2560 (de aquí su nombre). Esta placa pertenece a la extensa familia de placas Arduino, siendo junto al Arduino UNO de las más representativas.
Como es costumbre en esta familia de placas, el Arduino MEGA 2560 está compuesto, básicamente, por:
- Un microcontrolador (ATmega2560) con la configuración de “sistema mínimo” (El término “sistema mínimo” se refiere a que solo se utilizan los componentes indispensables para el microcontrolador).
- Una interfaz USB-Serie que permite re-programar dicho microcontrolador utilizando simplemente un ordenador, un cable USB y el software Arduino IDE.
- Y un conjunto de cabezales que permiten conectar los pines de entrada/salida, ya sea con los conocidos shields o con cualquier otro sistema externo.
A continuación verás los principales componentes que constituyen al Arduino MEGA 2560, así como la distribución de los pines.
Componentes principales
En la imagen se muestra un Arduino MEGA 2560 con sus principales componentes señalados. A continuación te hablaré un poco de cada uno de ellos para que comprendas como funcionan en conjunto. Te recomiendo revises el esquema de Arduino Mega 2560 R3 para una mejor comprensión.
Microcontrolador ATmega2560
Como ya te había comentado, el ATmega2560 es el cerebro del Arduino MEGA 2560. No solo en cuanto su posición en la placa, sino en cuanto a importancia. Si das un vistazo a la primera página del esquema de Arduino MEGA podrás notar que están conectados prácticamente todos los pines.
Si realizas una rápida inspección a la hoja de datos podrás ver que muchas de las cualidades generales del Arduino MEGA (que verás más tarde) dependen de este microcontrolador.
Sus características más importantes son:
- 256 kB de memoria FLASH(espacio disponible para almacenar el programa o sketch).
- 8 kB de memoria SRAM (es donde se crean las variables declaradas en el programa).
- 4 kB de memoria EEPROM (permite almacenar datos que se conserven aunque se reinicio o falle la alimentación).
- Frecuencia de CPU Máxima: 16MHz (esto lo explico más adelante).
- Voltaje de Operación máximo: 6.0V (aunque se recomienda no sobrepasar los 5V).
En pocas palabras y sin liarte: el ATmega2560 es el cerebro de la placa (ya que graba, almacena y ejecuta el código programado) y el resto de los componentes se encargan de garantizar su correcto funcionamiento, así como facilitarnos el trabajo.
Conector USB
Al igual que en el Arduino UNO, el Arduino MEGA 2560 cuenta con un conector USB tipo B que puede ser utilizado para dos funciones:
- Alimentar la placa utilizando los 5 voltios proporcionados por el ordenador.
- Para cargar un sketch al microcontrolador utilizando la interfaz USB-Serie.
Conector Jack
Se trata de un conector de centro positivo. Es utilizado para alimentar la placa cuando no esté conectada al ordenador o se utilice una alimentación superior a los 5 voltios.
La alimentación aplicada a este conector debe estar entre los 7 y 12 voltios. Esto se debe al regulador de voltaje empleado (en breve hablaremos de él).
Reguladores de Voltaje
Los reguladores de voltaje son los encargados de garantizar un voltaje adecuado al resto de los componentes de un sistema. Analizando el esquemático del Arduino MEGA se puede observar que posee dos reguladores de voltaje.
El regulador LD1117S50 es el principal y encargado de garantizar la alimentación del microcontrolador y los pines +5V presentes en los cabezales de la placa. Este toma un voltaje desde el conector jack o el pin VIN y ofrece a su salida 5V.
En la figura se observa que el conector jack se conecta al regulador mediante un diodo (esto es para proteger la placa si por error utilizas una fuente invertida). Los condensadores PC1, C2 y PC2 se encargan de estabilizar el voltaje a la entrada y salida del mismo.
Revisando la hoja de datos del regulador se puede comprobar que es capaz de ofrecer hasta 800 mA de corriente. Además, cuenta con protección ante cortocircuito y sobrecalentamiento, que lo hacen un componente robusto y virtualmente indañable.
Inspeccionando la gráfica de Voltaje de salida vs Temperatura presente en la hoja de datos se nota que su salida es altamente estable, presentando una leve variación en el voltaje para todo el rango de temperaturas admisibles.
Si quieres conocer más detalles sobre este regulador te recomiendo revises por ti mismo su hoja de datos.
El Arduino MEGA también cuenta con un LP2985-33DBVR. Este es un regulador de voltaje que ofrece un salida de 3.3 volts y está conectada al pin 3.3V.
Es utilizado para alimentar componentes externos que requieran esta alimentación en particular. Y aunque puedas pensar que no es necesario te garantizo que te ayudara a simplificar muchas aplicaciones.
Si revisamos su hoja de datos vemos que puede ofrecer una corriente máxima de 150 mA (sin embargo, se recomienda no exceder los 50mA). Esto nos indica que hay que tener mucho cuidado con lo que conectamos a este pin ya que no está pensado para grandes consumos.
Interfaz USB-Serie
Es el encargado de establecer un puente entre el ordenador y el microcontrolador ATmega2560 para permitir la programación de este último. El Arduino MEGA 2560, a diferencia de otras placas, utiliza un microcontrolador ATmega8U2 o ATmega16U2 para esta función.
La presencia de este microcontrolador extra en la placa le ofrece un ventaja sustanciosa. Dado que se podría usar como un microcontrolador completamente funcional y no solo como un conversor USB-Serial. Eso permitiría usar ambos microcontroladores en la misma placa.
Si quieres profundizar en este tema te recomiendo que le eches un ojo al proyecto HoodLoader2 o a su documentación en formato wiki donde explican como realizar este proceso paso a paso.
Cristal oscilador y Resonador cerámico (ambos de 16MHz)
El cristal oscilador y el resonador cerámico son componentes que generan variaciones de voltaje a una frecuencia muy precisa (16MHz en este caso). Estos son utilizados por el ATmega16U2 y el ATmega2560 respectivamente para generar sus correspondientes señales de reloj (después te explico que es esto).
A la izquierda de la imagen puedes ver un resonador cerámico y a la derecha un oscilador de cuarzo.
En ambos casos se conectan a los correspondientes pines XTAL1 y XTAL2 de los microcontroladores, que internamente están conectados a un circuito especial llamado oscilador. Este circuito toma las variaciones de voltaje (obtenidas del cristal o resonador) para generar una onda cuadrada a su misma frecuencia.
Esa onda cuadrada es llamada señal de reloj y determina que tan rápido el microcontrolador ejecutará las operaciones que le hemos programado. De este modo si se utiliza un cristal de 10MHz el microcontrolador realizará 10 millones de instrucciones por segundo.
Aclarando el trabalenguas: el cristal o resonador determina la velocidad de operación del microcontrolador. En este caso tanto el cristal como el resonador utilizados generan variaciones a una frecuencia de 16MHz por ser la máxima admisible por ambos microcontroladores.
Leds
La placa cuenta con 4 Leds:
- LED ON: Este LED se enciende cuando la placa es alimentada, por lo tanto, indica si la placa está siendo alimentada correctamente.
- LED Tx: está conectado al pin TX (1) y pestañea cuando el Arduino transmite información al monitor serie. Esto permite comprobar de forma simple si la placa está realmente transmitiendo información.
- LED Rx: está conectado al pin RX(0) y pestañea cuando la placa recibe información del monitor serie. De este modo se puede comprobar si realmente se está efectuando la comunicación.
- LED Integrado: Este LED está conectado al pin digital 13 y es denotado como LED_BUILTIN. Para encenderlo/apagarlo es necesario poner en este pin con un estado alto (HIGH)/bajo(LOW).
Si la comunicación Serie no es necesaria los pines TX y RX pueden ser configurados como pines digitales de salida para controlar ambos LEDs a tu gusto.
Botón de Reinicio
Este botón permite que reinicies el sistema. Esto significa que todo el código programado será ejecutado nuevamente, tal y como si el sistema se acabara de conectar a la corriente.
Pines del Arduino MEGA 2560
Arduino MEGA dispone de un total de 54 pines de entrada/salida digital. De esos pines 15 pueden ser empleados como salidas analógicas (realmente son señales PWM y están marcados con el símbolo ~).
También cuenta con 16 entradas analógicas (10 bits de resolución) denotadas A0, A1,…,A15, que pueden ser utilizadas con sensores analógicos (como sondas de temperatura o humedad). En caso de no ser necesarios pueden ser utilizados como pines digitales.
Además de los pines digitales y analógicos, el Arduino MEGA 2560 también nos provee de pines para alimentar otros dispositivos a la hora de realizar un proyecto:
- GND: Pines de Tierra.
- 5V: Alimentación de 5 voltios para sensores u otros dispositivos a utilizar que formen parte de tu proyecto.
- 3V3: Este pin provee un voltaje de 3,3 voltios para dispositivos que así lo requieran (Puede suministrar hasta 150 mA, aunque es recomendable no sobrepasar los 50 mA).
- VIN(Similar al conector Jack): Permite alimentar la placa cuando esta no es alimentada utilizando el puerto USB . Este pin puede ser empleado para obtener el voltaje presente en el conector Jack.
Como aspecto importante es necesario destacar que debido a que los cabezales de pines del Arduino Mega coinciden con los del UNO (excepto por el cabezal final) la gran mayoría de los shields diseñados para Arduino UNO son compatibles con el Arduino MEGA 2560 también.
En el sitio oficial de Arduino puedes encontrar la distribución de pines completa del Arduino MEGA 2560.
Puertos de Comunicación Serial
Al igual que el Arduino UNO, el Arduino MEGA 2560 cuenta con un puerto Serial que permite la comunicación de la placa con el ordenador o con otro dispositivo que soporte este protocolo. Sin embargo, el Arduino MEGA cuenta con un total de 4 puertos Serial:
- Serial: Transmisión (1) y Recepción (0). Este puerto es análogo al presente en el Arduino UNO y por tanto puede ser utilizado tal cual.
- Serial1: Transmisión (18) y Recepción (19).
- Serial2: Transmisión (16) y Recepción (17).
- Serial3: Transmisión (14) y Recepción (15).
SPI
El Arduino Mega cuenta con un puerto SPI. Este puerto es utilizado con varios módulos: El Shield Ethernet y el módulo RFID RC522 son ejemplos típicos.
Además de estar presentes en el conector ICSP, los pines del puerto SPI también los encontramos en el cabezal inferior con la distribución mostrada en la siguiente imagen.
TWI o I2C
Al igual que el Arduino UNO, el Arduino MEGA también soporta la comunicación TWI o I2C. Para esto se utilizan los pines 20 (SDA) y 21 (SCL). Este protocolo es utilizado por muchos dispositivos ya que solo utiliza dos pines y es un bus compartido.
Pines de alimentación de Arduino MEGA 2560
Analizando la información anterior, existen tres opciones para alimentar un Arduino MEGA 2560:
- Utilizando el puerto USB con un voltaje de 5V
- Utilizando el conector Jack: esta opción requiere un voltaje entre los 7 y 12 volts.
- Utilizando los pines GND y VIN: esta opción requiere un voltaje entre los 7 y 12 volts.
Arduino MEGA 2560 vs Arduino UNO
La principal diferencia, a simple vista, entre un Arduino UNO y un Arduino MEGA 2560 es su tamaño y número de pines. Sin embargo, eso no es todo.
A continuación te muestro una tabla donde podrás apreciar las diferencias entre estos. A partir de aquí podrás saber cuál de las placas necesitas utilizar para tu proyecto.
Parámetro | Arduino UNO | Arduino Mega 2560 | Descripción |
---|---|---|---|
Tamaño de la placa | 68.6×53.4 mm2 | 101.52×53.3 mm2 | Son las dimensiones de la placa (Largo x Ancho). |
Microcontrolador | ATmega328 | ATmega2560 | Microcontrolador empleado en la placa. Principalmente de este depende la potencia de la misma |
Memoria FLASH | 32 KB (0.5 KB reservados para el bootloader) | 256 KB (8KB reservados para el bootloader) | Memoria en la que se almacena el código generado utilizando Arduino IDE. |
Memoria SRAM | 2 KB | 8 KB | Memoria utilizada para almacenar variables. Es el equivalente a la memoria RAM de los ordenadores. |
Memoria EEPROM | 1 KB | 4 KB | Memoria utilizada para almacenar información que debe mantenerse aun cuando la placa no esté siendo alimentada. |
Nivel Lógico | 5V | 5V | Este parámetro indica el voltaje presente en las salidas digitales de la placa cuando estas son puestas a nivel alto (HIGH). |
Entradas/Salidas Digitales | 14 | 54 | Cantidad de pines digitales |
Salidas Analógicas (PWM) | 6 | 15 | Cantidad de salidas analógicas disponibles |
Entradas Analógicas | 6 | 16 | Pines para la lectura de parámetros analógicos (por ejemplo temperatura utilizando un LM35). |
Puertos Serial | 1 | 4 | Cantidad de puertos de comunicación Serial |
Comunicación SPI | Si | Si | Protocolo utilizado por algunos dispositivos: Lectores/Grabadores RFID, tarjetas SD, entre otros. |
Comunicación I2C | Si | Si | También conocido como I2C, es muy utilizado debido a que solo utiliza dos pines para la comunicación entre muchos dispositivos. |
Corriente por Pin E/S | 20 mA | 20 mA | Corriente que es capaz de suministrar cada pin digital. |
Corriente por pin de 3.3V: | 50 mA | 50 mA | Corriente que es capaz de suministrar por el pin 3V3. |
¿Dónde comprar un Arduino Mega 2560?
Basta escribir en Google (o tu buscador favorito) la frase “comprar Arduino Mega” para que aparezcan un montón de resultados. A continuación te muestro un resumen con algunos de los sitios donde puedes comprar tu Arduino Mega y sus precios:
- Arduino Store: sitio oficial de Arduino donde solo podrás comprar la placa original por unos 40€.
- Amazon: en la famosa tienda online puedes encontrar placas Arduino MEGA clones por unos 10€ hasta placas originales por los 40€.
- Ali Express: solo tiene placas clones y muy baratas. Por 8€ puedes conseguir una
- Brico Geek: sitio web de confianza donde solo hay placas originales.
Pero entonces ¿de qué depende el precio? Pues básicamente, los Arduinos baratos son generalmente copias y los más caros son originales. Esto se debe principalmente a la calidad de los componentes, el ensamblado, etc…
Pero si quieres ayudar a que Arduino siga existiendo, te aconsejo que te rasques el bolsillo y compres por lo menos una placa original. Esto no quita que también tengas placas copia o clones.
¿Cómo programar un Arduino MEGA 2560?
De nada sirve todo lo que te he explicado si no lo ponemos en práctica, pero para eso primero voy a mostrarte cómo programar un Arduino MEGA 2560 utilizando Arduino IDE. Comencemos:
Requisitos Previos
- Arduino IDE: Es necesario tener el software instalado en tu sistema. En caso de que no lo tengas y presentes dudas con respecto a su instalación puedes consultar la web de Arduino oficial.
- Arduino MEGA 2560: Por supuesto, es necesario tener una placa Arduino MEGA 2560 original o copia, da lo mismo.
- Cable USB: el cable tiene que ser USB tipo B en un extremo (Arduino) y USB tipo A en el otro (ordenador).
Primeros pasos para programar un Arduino MEGA
Paso 1. Conectar el Arduino MEGA al ordenador
Para conectar el Arduino Mega al ordenador se utiliza el cable USB. Una vez conectado, el LRF de encendido se encenderá. Adicionalmente, los Arduinos por lo general, vienen con el programa de ejemplo blink pre-grabado, por lo tanto el led integrado comenzará a pestañear indicando que la placa está en perfecto estado. Si esto no ocurre no te desesperes, ya que algunas copias no traen ningún ejemplo pre-grabado.
Paso 2. Ejecutar Arduino IDE
Para ejecutar Arduino IDE es necesario hacer doble clic en su ícono del escritorio o utilizar el menú inicio (en dependencia del sistema operativo).
Paso 3. Seleccionar la placa Arduino Mega 2560
Ahora tienes que indicarle al software qué tipo de placa Arduino vas a programar. Para eso, debes ir, en la barra de menús, a Herramientas>Placas>Arduino/Genuino Mega or Mega 2560
Teniendo en cuenta que existen dos modelos de Arduino MEGA es necesario indicar que el microcontrolador a utilizar es el ATmega2560. Para esto debes ir a Herramientas>Procesador>ATmega2560 (Mega2560)
Paso 4. Seleccionar el puerto
Aunque en muchas ocasiones el propio IDE determina el puerto empleado por el Arduino, en otras es necesario especificarlo. Para esto tienes que ir a Herramientas>Puerto, una vez aquí es necesario seleccionar el puerto correspondiente al Arduino.
El nombre del puerto puede variar en dependencia del sistema:
- en Windows estará compuesto por la palabra COM seguida de un número, por ejemplo COM4;
- en linux comienza con tty y es seguida generalmente de las palabras ACM o USB con un número de orden, por ejemplo ttyUSB0.
Paso 5. Cargar programa al Arduino
Ya solo queda cargar el código implementado al Arduino. Unicamente con fines demostrativos y para comprobar que el proceso de grabado sea correcto, una buena opción es utilizar los ejemplos Blink o Fade, ya que no requieren ningún componente externo.
Aquí tienes el ejemplo Fade modificado para utilizar el pin 13, ya que este puede ser empleado como salida analógica y está conectado al LED integrado en el Arduino MEGA.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 |
int led = 13; // the PWM pin the LED is attached to int brightness = 0; // how bright the LED is int fadeAmount = 5; // how many points to fade the LED by // the setup routine runs once when you press reset: void setup() { // declare pin 9 to be an output: pinMode(led, OUTPUT); } // the loop routine runs over and over again forever: void loop() { // set the brightness of pin 9: analogWrite(led, brightness); // change the brightness for next time through the loop: brightness = brightness + fadeAmount; // reverse the direction of the fading at the ends of the fade: if (brightness <= 0 || brightness >= 255) { fadeAmount = -fadeAmount; } // wait for 30 milliseconds to see the dimming effect delay(30); } |
Una vez el código esté listo es necesario hacer clic en el botón verificar del IDE para comprobar que no exista ningún error en él. Luego, haciendo clic en el botón cargar, el código es grabado al Arduino.
Un mensaje como el mostrado en la siguiente figura debe aparecer indicando que el código fue cargado satisfactoriamente. El led ahora debería iluminarse y apagarse gradualmente producto del programa recién cargado.
Ejemplo práctico con un Arduino MEGA 2560
Como ya te he comentado con anterioridad, el Arduino MEGA 2560 es equivalente a un Arduino Uno con mejores prestaciones, esto significa que, todo código implementado para Arduino UNO será 100% compatible con Arduino MEGA 2560.
Esto permite la fácil migración de un proyecto, de una placa a la otra realizando (a lo sumo) algunos cambios en el hardware. Para comprobar esto te propongo un ejemplo sencillo utilizando un LCD y el monitor Serial.
Código ejemplo práctico
Este sketch fue uno de los primeros que implementé cuando comencé en el mundo de Arduino. Es realmente sencillo (estaba aprendiendo) y lo único que hace es incrementar un contador (variable cnt) cada 1 segundo; también envía el valor por el puerto Serial y lo muestra en el LCD.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 |
#include <LiquidCrystal.h> // pantalla LCD const int rs = 12, en = 11, d4 = 2, d5 = 3, d6 = 4, d7 = 5; LiquidCrystal lcd(rs, en, d4, d5, d6, d7); void setup() { Serial.begin(9600); // inicializa puerto serie lcd.begin(16, 2); // inicializa LCD } uint8_t cnt = 0; void loop() { // mostrar en monitor Serial Serial.print( "Contador: " ); Serial.println(cnt); // Mostrar en LCD lcd.clear(); lcd.print( "Contador: " ); lcd.print( cnt ); // Incrementar contador cnt++; // Espera 1 segundo delay(1000); } |
Ese código lo hice pensando en un Arduino UNO, conectando la LCD como se muestra en la figura. En esta configuración, el Arduino solo necesita 6 pines para controlar el LCD con Arduino. Adicionalmente, se utilizan los pines 5V y GND para alimentar el display.
Si quisiéramos migrar este “proyecto” a un Arduino Mega 2560 el circuito quedaría como se muestra en la siguiente imagen.
Como se puede observar, no es necesario realizar ningún cambio sustancial en el circuito, simplemente cambiar la placa. Por su parte el código resulta totalmente compatible.
A continuación te muestro el resultado obtenido en el monitor Serial.
Conclusiones sobre el Arduino MEGA 2560
Como conclusión final puedo decir que el Arduino MEGA 2560 es la solución ideal cuando un Arduino UNO se queda pequeño en un proyecto. El caso más claro son las Impresoras 3D.
Las ventajas son que el código es totalmente compatible con el Arduino UNO salvo el número de los pines, dispones de muchos más pines digitales y analógicos y además, la gran mayoría de shields para Arduino UNO son compatibles con Arduino MEGA 2560.
Como inconveniente principal se podría decir que quizás sea demasiado grande. Me refiero a su tamaño. Esto puede ser un problema cuando el espacio para el montaje es limitado.
Y con esto doy por finalizado el tutorial sobre Arduino MEGA 2560. Cualquier duda o sugerencia en los comentarios de aquí abajo.
Gracias por la atención :)