Primeiro de tudo, Porquê Arduino Mega 2560?
Quando há tábuas mais baratas disponíveis, porquê escolher Arduino Mega? A principal razão por detrás disto são as características adicionais que são incorporadas com esta prancha. A primeira característica é o grande design do sistema de I/O com 16 transdutores analógicos embutidos e 54 transdutores digitais que suportam com USART e outros modos de comunicação. Em segundo lugar, ele tem RTC embutido e outras características como o comparador analógico, timer avançado, interrupção para o mecanismo de despertar do controlador para economizar mais energia e velocidade rápida com relógio de cristal de 16 Mhz para obter 16 MIBS. Possui mais de 5 pinos para Vcc e Gnd para conectar outros dispositivos ao Arduino Mega.
Outras características incluem suporte JTAG para programação, depuração e resolução de problemas. Com grande memória FLASH e SRAM, esta placa pode lidar com grandes programas de sistema com facilidade. Também é compatível com os diferentes tipos de placas como sinal de alto nível (5V) ou sinal de baixo nível (3.3V) com pino de ref.I/O.
Brownout e watchdog ajudam a tornar o sistema mais confiável e robusto. Ele suporta ICSP assim como programação de microcontroladores USB com PC.
O Arduino Mega 2560 é um substituto do antigo Arduino Mega, e por isso, em referência geral, ele será chamado sem a extensão ‘2560’. Devido ao grande número de pinos, normalmente não é usado para projectos comuns, mas pode encontrá-los em projectos muito mais complexos como detectores de radão, impressoras 3D, sensores de temperatura, aplicações IOT, aplicações de monitorização de dados em tempo real, etc.
Arduino Mega 2560 Especificações
Arduino Mega – Características Básicas
Arduino Mega | Características |
---|---|
Microcontrolador | AVR ATmega 2560 (8bit) |
Fornecimento de energia | 7-12V (Regulador incorporado para o controlador) |
Pinos E/S digitais | 54 |
Pinos E/S analógicos | 16 |
Total Digital E/S | 70 (Digital + Analógico) |
Velocidade do relógio | 16 MHz (Definido de fábrica para 1Mhz) |
Flash Memory | 128 KB |
SRAM | 8 KB |
Comunicação | USB (Programação com ATmega 8), ICSP (programação), SPI, I2C e USART |
Arduino Mega – Características Avançadas
Arduino Mega | Avançado Características |
---|---|
Timer | 2 (8bit) + 4 (16bit) = 6 timer |
PWM | 12 (2-16 bit) |
ADC | 16 (10 bit) |
USART | 4 |
Pin Change Interrupção | 24 |
Arduino Mega 2560 também está repleto de recursos adicionais como o Comparador Analógico, Interrupção Externa & Interrupção de Software, Modo de Economia de Energia, Sensor de Temperatura Inbuilt, RTC e muito mais.
Arduino Mega Pinout
![](https://www.circuitstoday.com/wp-content/uploads/2018/02/Arduino-Mega-Pinout-1024x525.png)
Pinos de potência :
Mega Arduino Mega | Pinos de potência |
---|---|
VIN | Tensão de alimentação (7-12V) |
GND | Ground |
5V Alimentação | Para alimentação de dispositivos de hardware externo |
3.Alimentação 3V | Para alimentação de dispositivos de hardware externo de baixa tensão |
Arduino Mega Pino Diagrama
![](https://www.circuitstoday.com/wp-content/uploads/2018/02/Arduino-Mega-Pin-Configuration-1024x602.jpg)
Pinos Controladores:
RESET: (Reset input) Um nível baixo neste pino por mais tempo que o ciclo de 4 relógios gerará um reset. Arduino Mega tem um circuito de reset embutido com botão de pressão para reiniciar o sistema e este pino pode ser usado por outros dispositivos para reiniciar o controlador.
XTAL1,XTAL2: Crystal (16Mhz) é ligado ao relógio de alimentação do controlador com condensador de 2 bypass para terra.
AREF: Este pino é usado, quando usamos Adc para conversão analógica para digital com tensão de referência externa para conversão e não queremos usar pinos internos de 1.1V ou 5v de referência.
Pinos digitais (70):
Digital pins (0-53) + Analog (0-15) = Total Digital I/O pins.
Pinos digitais: De 0-53(digital) e 0-15(analógico) podem ser usados como entrada ou saída para transdutor digital e dispositivos de saída por pinMode() para direção do pino, digtalWrite() para escrever pino e digitalRead() para ler o status do pino.
Aplicação:
Dispositivos de saída : Relé, LED, buzzer, LCD e outros.
>
Dispositivos de entrada: termistor digital, botão de pressão, sensor ultra-sónico, joystick e outros
>
Exemplo:
- Sinal baixo de saída na mega placa Arduino
pinMode(0,OUTPUT);
digitalWrite(0,LOW);
- Entrada sinal de leitura na mega placa Arduino
pinMode(0,INPUT);
digitalRead(0);
Analog Pins (16):
>
Pinos analógicos: De 0-15(analógico) pode ser usado como pino de entrada analógico para adc, se não for usado do que funciona como pino digital normal. Ele pode ser usado por pinMode() para direção do pino, analogRead() para ler o status do pino e obter valor digital para o sinal analógico, deve-se tomar cuidado para seleção de tensão de referência interna ou externa e Aref pin.
Aplicação :
Input devices: Termistor Ntc, sensores (como ldr, irled e umidade) e outros
Exemplo :
- INPUT sinal analógico na placa mega Arduino
pinMode(0,INPUT);
analogRead(0);
Alternative Pins Function:
PinosSPI:
Pin 22 - SS, Pin 23 - SCK, Pin 24 - MOSI, Pin 25 – MISO
Estes pinos são usados para comunicação serial com protocolo SPI para comunicação entre 2 ou mais dispositivos. O bit SPI enable deve ser definido para iniciar a comunicação com outros dispositivos.
Aplicação:
Controlador AVR de programação, comunicação com outros periféricos como LCD e cartão SD com comunicação de quatro linhas em alta velocidade.
Pinos I2C:
Pino digital 20 para SDA e 21 para SCK (Velocidade 400khz) para habilitar a comunicação de dois fios com outros dispositivos. As funções utilizadas são wire.begin() para iniciar a conversão I2C, com wire.Read() para ler dados i2c e wire.Write() para escrever dados i2c.
Aplicação:
Dispositivos de saída : LCD e comunicação entre múltiplos dispositivos com dois fios.
Input devices : rtc e outros.
Exemplo:
I2c master read data from slave
Wire.begin();
Wire.requestFrom(2, 1); //1byte data
Wire.Read();
PWM Pins:
Pino digital 2-13 pode ser usado como saída PWM com analogWrite() para escrever o valor pwm de 0-255.É uma alternativa do DAC para sistema de baixo custo para obter sinal analógico na saída usando filtro.
Aplicação:
Dispositivos de saída: controle de velocidade do motor, dimmer de luz, pid para um sistema de controle eficiente.
>
Exemplo:
- Sinal analógicoOUTPUT na mega placa Arduino
pinMode(0,OUTPUT);
analogWrite(0,255);
>
Pinos de partida:
Pin 0 – RXD0, pin 1 – TXD0Pin 19 – RXD1, pin 18 – TXD1Pin 17 – RXD2, pin 16 – TXD2Pin 15 – RXD3, pin 14 – TXD3
Este pino é usado para comunicação de partida em série com pc ou outro sistema para partilha de dados e registo. Ele é usado com serialBegin() para definir a taxa de bauds e iniciar a comunicação com serial.Println() para imprimir array de caracteres na saída de outro dispositivo.
Application:
Dois controladores de comunicação, pc e controladores de comunicação, depuração com usart por monitor serial.
Exemplo:
Serial.begin(9600);
Serial.Println(“olá”);
Pinrupt Pins de Interrupção de Troca:
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 pino é usado para interrupção de troca de pinos. Habilitar bit de interrupção de troca de pinos deve ser definido com ativação de interrupção global.
Aplicação :
Codificador rotativo, botão de pressão baseado em interrupção e outros.
Exemplo :
pinMode(0, OUTPUT);
pinMode(1, INPUT_PULLUP);
attachInterrupt(digitalPinToInterrupt(1), LOW, CHANGE);
Pinos de Interrupção de Hardware :
Pino digital 18 – 21,2,3 interrupção de hardware é usado para serviços de interrupção. A interrupção de hardware deve ser habilitada com a interrupção global para obter interrupção de outros dispositivos.
Aplicação:
Botão de pressão para o programa ISR, despertar o controlador com dispositivos externos, sensores como ultra-som e outros.
Exemplo:
pinMode(0, OUTPUT);
pinMode(1, INPUT_PULLUP);
attachInterrupt(digitalPinToInterrupt(1), LOW, LOW);
Arduino Mega Schematic Components:
>
Aquecedor de corrente contínua :
Aquecedor externo para Arduino Mega de 7-12 volts é dado com esta porta. Arduino Mega R3 tem um regulador de tensão para alimentação de 5v e 3.3v para o controlador Arduino e alimentação do sensor.
AVR 2560 :
Este é o controlador principal usado para programar e executar tarefa para o sistema. Este é o cérebro do sistema para controlar todos os outros dispositivos a bordo.
ATmega8 :
Este controlador é usado para a comunicação entre o controlador principal e os outros dispositivos. Este controlador é programado para comunicação USB e recursos de programação serial.
ICSP 1 (ATmega8) e 2 (AVR 2560):
Possui recursos de programação usando barramento serial com programador AVR usando comunicação SPI. O AVR 2560 está programado para executar o sistema e o ATmega 8 está programado para comunicação serial e programação.
![](https://www.circuitstoday.com/wp-content/uploads/2018/02/Arduino-Mega-ICSP-Pinout.png)
Reset :
Possui circuito de reset com capacitor, botão e resistor para resetar o controlador. Um botão de pressão é usado para obter 4 ciclos de sinal baixo no pino de reset para colocar o controlador em modo de reset.
Crystal :
Tem um circuito de cristal com dois condensadores e um cristal de 16 Mhz para a interface dos pinos xtal 1 e 2 com a avr 2560.
I2C :
Possui características de I2C (comunicação de dois fios) com um resistor de pull-up externo.
USART :
Possui pinos TXD e RXD para comunicação serial com indicador LED.
alguns programas simples para experimentar Arduino Mega 2560
Programa 1: LED Piscando (pino 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: Led Light Dimmer (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: Tensão de leitura analógica (pino analógico com 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}
Você também pode tentar sua própria lógica e implementar programas para mega Arduino com função básica C e Arduino.