En primer lugar, ¿por qué Arduino Mega 2560?
Cuando hay placas más baratas disponibles, ¿por qué ir con Arduino Mega? La razón principal detrás de esto es las características adicionales que se incorporan con esta placa. La primera característica es el gran diseño del sistema de E/S con 16 transductores analógicos y 54 transductores digitales incorporados que soportan USART y otros modos de comunicación. En segundo lugar, ha incorporado RTC y otras características como comparador analógico, temporizador avanzado, mecanismo de interrupción para el despertar del controlador para ahorrar más energía y velocidad rápida con reloj de cristal de 16 Mhz para obtener 16 MIBS. Tiene más de 5 pines para Vcc y Gnd para conectar otros dispositivos a Arduino Mega.
Otras características incluyen soporte JTAG para la programación, depuración y solución de problemas. Con una gran memoria FLASH y SRAM, esta placa puede manejar un gran programa de sistema con facilidad. También es compatible con los diferentes tipos de placas como la señal de alto nivel (5V) o la señal de bajo nivel (3,3V) con el pin de ref. de E/S.
Las funciones de «rownout» y «watchdog» ayudan a que el sistema sea más fiable y robusto. Soporta ICSP así como la programación del microcontrolador por USB con el PC.
El Arduino Mega 2560 es un reemplazo del antiguo Arduino Mega, por lo que en la referencia general, se llamará sin la extensión ‘2560’. Debido a la gran cantidad de pines, no se suele utilizar para proyectos comunes, pero se pueden encontrar en otros mucho más complejos como detectores de radón, impresoras 3D, detección de temperatura, aplicaciones IOT, aplicaciones de monitorización de datos en tiempo real, etc.
Especificaciones del Arduino Mega 2560
Arduino Mega – Características básicas
Arduino Mega | Características |
---|---|
Microcontrolador | AVR ATmega 2560 (8bit) |
7-12V (Regulador incorporado para el controlador) | |
Pines de E/S digitales | 54 |
Pines de E/S analógicos | 16 |
Total de E/S digitales | 70 (digitales + analógicas) |
Velocidad de reloj | 16 MHz (ajustado de fábrica a 1Mhz) |
Memoria flash | 128 KB |
SRAM | 8 KB |
Comunicación | USB (Programación con ATmega 8), ICSP (programación), SPI, I2C y USART |
Arduino Mega – Características avanzadas
Arduino Mega | Características avanzadas Features |
---|---|
Timer | 2 (8bit) + 4 (16bit) = 6 timer |
PWM | 12 (2-16 bit) |
ADC | 16 (10 bit) |
USART | 4 |
Cambio de pin Interrupción | 24 |
Arduino Mega 2560 también está lleno de características adicionales como Comparador Analógico, Interrupción externa & Interrupción por software, modo de ahorro de energía, sensor de temperatura incorporado, RTC y más.
Distribución de pines del Arduino Mega
Pines de alimentación :
Arduino Mega | Pines de alimentación |
---|---|
VIN | Tensión de alimentación (7-12V) |
GND | Tierra |
Alimentación de 5V | Para la alimentación del dispositivo de hardware externo |
3.Alimentación de 3V | Para alimentación de dispositivo de hardware externo de bajo voltaje |
Diagrama de pines del Arduino Mega
Pines del controlador:
RESET: (Entrada de reset) Un nivel bajo en este pin durante más tiempo que el ciclo de 4 relojes generará un reset. Arduino Mega tiene un circuito de reinicio incorporado con un botón para reiniciar el sistema y este pin puede ser utilizado por otros dispositivos para reiniciar el controlador.
XTAL1,XTAL2: El cristal (16Mhz) se conecta para suministrar el reloj para el controlador con 2 condensadores de derivación a tierra.
AREF: Este pin se utiliza, cuando utilizamos Adc para la conversión analógica a digital con la tensión de referencia externa para la conversión y no quieren utilizar la referencia interna de 1,1V o 5v.
Pines digitales (70):
Digital pins (0-53) + Analog (0-15) = Total Digital I/O pins.
Pines digitales: De 0-53(digital) y 0-15(analógico) se puede utilizar como entrada o salida para transductor digital y dispositivos de salida por pinMode() para la dirección del pin, digtalWrite() para escribir el pin y digitalRead() para leer el estado del pin.
Aplicación:
Dispositivos de salida : Relé, LED, zumbador, LCD y otros.
Dispositivos de entrada: termistor digital, pulsador, sensor ultrasónico, joystick y otros
Ejemplo:
- Señal de salida baja en la placa Arduino mega
pinMode(0,OUTPUT);
digitalWrite(0,LOW);
- Señal de lectura de entrada en la placa Arduino mega
pinMode(0,INPUT);
digitalRead(0);
Pines analógicos (16):
Pines analógicos: De 0-15(analógico) puede ser usado como pin de entrada analógica para adc, si no se usa entonces funciona como pin digital normal. Puede ser utilizado por pinMode() para la dirección del pin, analogRead() para leer el estado del pin y obtener el valor digital de la señal analógica, se debe tener cuidado para la selección de la tensión de referencia interna o externa y el pin Aref.
Aplicación :
Dispositivos de entrada: Termistor Ntc, sensores (como ldr, irled y humedad) y otros
Ejemplo :
- Señal analógica de entrada en la placa Arduino mega
pinMode(0,INPUT);
analogRead(0);
Función de los pines alternativos:
Pines SPI:
Pin 22 - SS, Pin 23 - SCK, Pin 24 - MOSI, Pin 25 – MISO
Estos pines se utilizan para la comunicación en serie con el protocolo SPI para la comunicación entre 2 o más dispositivos. El bit de habilitación SPI debe estar activado para iniciar la comunicación con otros dispositivos.
Aplicación:
Programación del controlador AVR, comunicación con otros periféricos como LCD y tarjeta SD con comunicación de cuatro líneas a alta velocidad.
Pines I2C:
Pin digital 20 para SDA y 21 para SCK (Velocidad 400khz) para permitir la comunicación de dos hilos con otros dispositivos. Las funciones utilizadas son wire.begin() para iniciar la conversión I2C, con wire.Read() para leer datos i2c y wire.Write() para escribir datos i2c.
Aplicación:
Dispositivos de salida : LCD y comunicación entre múltiples dispositivos con dos cables.
Dispositivos de entrada : rtc y otros.
Ejemplo:
El maestro i2c lee los datos del esclavo
Wire.begin();
Wire.requestFrom(2, 1); //1byte de datos
Wire.Read();
Pines PWM:
El pin digital 2-13 se puede utilizar como salida PWM con analogWrite() para escribir el valor pwm de 0-255.Es una alternativa de DAC para el sistema de bajo coste para obtener la señal analógica en la salida mediante el uso de un filtro.
Aplicación:
Dispositivos de salida: control de velocidad del motor, regulador de luz, pid para un sistema de control eficiente.
Ejemplo:
- Salir de la señal analógica en la placa Arduino mega
pinMode(0,OUTPUT);
analogWrite(0,255);
Pines USART :
Pin 0 – RXD0, pin 1 – TXD0Pin 19 – RXD1, pin 18 – TXD1Pin 17 – RXD2, pin 16 – TXD2Pin 15 – RXD3, pin 14 – TXD3
Este pin se utiliza para la comunicación usart en serie con el pc u otro sistema para compartir y registrar datos. Se utiliza con serialBegin() para establecer la tasa de baudios y comenzar la comunicación con serial.Println() para imprimir una matriz de caracteres en la salida de otro dispositivo.
Aplicación:
Comunicación entre dos controladores, comunicación entre el PC y el controlador, depuración con usart por el monitor serial.
Ejemplo:
Serial.begin(9600);
Serial.Println(«hola»);
Pines de interrupción de cambio de pin:
Digital Pin 0,22,23,24,25,10,11,12,13,15,14Analog Pin 6,7,8,9,10,11,12,13,14,15
Este pin se utiliza para la interrupción de cambio de pin. El bit de activación de la interrupción de cambio de patillas debe establecerse con la activación global de la interrupción.
Aplicación :
Codificador rotatorio, interrupción basada en botones y otros.
Ejemplo :
pinMode(0, OUTPUT);
pinMode(1, INPUT_PULLUP);
attachInterrupt(digitalPinToInterrupt(1), LOW, CHANGE);
Pines de interrupción de hardware :
El pin digital 18 – 21,2,3 de interrupción de hardware se utiliza para servicios de interrupción. La interrupción de hardware debe estar habilitada con la habilitación de interrupción global para obtener la interrupción de otros dispositivos.
Aplicación:
Pulsar el botón para el programa ISR, despertar el controlador con dispositivos externos, sensores como los ultrasónicos y otros.
Ejemplo:
pinMode(0, OUTPUT);
pinMode(1, INPUT_PULLUP);
attachInterrupt(digitalPinToInterrupt(1), LOW, LOW);
Componentes del esquema del Arduino Mega:
Fuente de alimentación DC Jack :
Fuente externa para Arduino Mega del rango 7-12 voltios se da con este puerto. Arduino Mega R3 tiene un regulador de voltaje para 5v y 3,3v suministro para el controlador de Arduino y el suministro de sensores.
AVR 2560 :
Este es el controlador principal utilizado para programar y ejecutar la tarea para el sistema. Este es el cerebro del sistema para controlar todos los demás dispositivos a bordo.
ATmega8 :
Este controlador se utiliza para la comunicación entre el controlador principal y otros dispositivos. Este controlador está programado para la comunicación USB y las funciones de programación en serie.
ICSP 1 (ATmega8) y 2 (AVR 2560):
Tiene características de programación mediante bus serie con el programador AVR utilizando la comunicación SPI. AVR 2560 está programado para ejecutar el sistema y ATmega 8 está programado para la comunicación en serie y la programación.
Reset :
Tiene circuito de reset con condensador, botón y resistencia para reiniciar el controlador. Se utiliza un pulsador para obtener una señal baja de 4 ciclos en el pin de reset para poner el controlador en modo reset.
Cristal :
Tiene un circuito de cristal con dos condensadores y un cristal de 16 Mhz para los pines xtal 1 y 2 que interactúan con el avr 2560.
I2C :
Tiene características de I2C (comunicación de dos hilos) con una resistencia externa de pull-up.
USART :
Tiene pines TXD y RXD para la comunicación en serie con indicador LED.
Algunos programas sencillos para probar en Arduino Mega 2560
Programa 1: LED parpadeante (pin digital)
/*Turns on an LED on for two second, then off for two second on pin 13, repeatedly.*/// the setup function runs once when you press reset or power the boardvoid setup() {// initialize digital pin 13 as an output.pinMode(13, OUTPUT);}// the loop function runs again and againvoid loop() {digitalWrite(13, HIGH); // turn the LED on (HIGH is the voltage level)delay(2000); // wait for two seconddigitalWrite(13, LOW); // turn the LED offdelay(2000); // wait for two second}
Programa 2: Atenuador de luz Led (PWM):
int brightness = 0; //pwm valuevoid setup(){pinMode(3, OUTPUT);}void loop(){analogWrite(3, brightness); // pwm write on pin 3++brightness; // brightness is incremented by 1if (brightness <= 0 || brightness >= 255) {brightness=0; // brightness limited to 0-255}delay(10);}
Programa 3: Tensión de lectura analógica (pin analógico con USART) :
void setup(){Serial.begin(9600); // usart communication start function with baudrate set to 9600}void loop(){int sensorValue = analogRead(A0); // analog pin 0 data is read and converted into digital value stored in sensorValue.Serial.println(sensorValue); // usart to output sensor value on serial monitor}
También puedes probar tu propia lógica e implementar programas para Arduino mega con C básico y función de Arduino.