Først af alt, hvorfor Arduino Mega 2560?
Når der findes billigere boards, hvorfor så vælge Arduino Mega? Hovedårsagen til dette er de ekstra funktioner, der er indbygget i dette board. Den første funktion er det store I/O-systemdesign med indbyggede 16 analoge transducere og 54 digitale transducere, der understøtter USART og andre kommunikationsformer. For det andet har det indbygget RTC og andre funktioner som analog komparator, avanceret timer, interrupt for controller wakeup-mekanisme for at spare mere strøm og hurtig hastighed med 16 Mhz krystalur for at få 16 MIBS. Den har mere end 5 pins til Vcc og Gnd til at tilslutte andre enheder til Arduino Mega.
Andre funktioner omfatter JTAG-understøttelse til programmering, fejlfinding og fejlfinding. Med stor FLASH-hukommelse og SRAM kan dette board nemt håndtere store systemprogrammer. Det er også kompatibelt med de forskellige typer boards som high-level signal (5V) eller low-level signal (3,3V) med I/O ref pin.
Brownout og watchdog hjælper til at gøre systemet mere pålideligt og robust. Den understøtter ICSP såvel som USB-mikrocontrollerprogrammering med PC.
Arduino Mega 2560 er en erstatning for den gamle Arduino Mega, og derfor vil den i den generelle reference blive kaldt uden udvidelsen “2560”. På grund af de mange antal pins bruges den normalt ikke til almindelige projekter, men du kan finde dem i meget mere komplekse projekter som radondetektorer, 3D-printere, temperaturmåling, IOT-applikationer, realtidsdataovervågningsapplikationer osv.
Arduino Mega 2560 Specifikationer
Arduino Mega – Grundlæggende funktioner
Arduino Mega | Funktioner | |
---|---|---|
Mikrocontroller | AVR ATmega 2560 (8bit) | |
Spændingsforsyning | 7-12V (indbygget regulator til controller) | |
Digitale I/O-stifter | 54 | |
Analog I/O-stifter | 16 | |
Totalt digital I/O | 70 (digital + analog) | |
Klokhastighed | 16 MHz (Fabriksindstillet til 1Mhz) | |
Flash-hukommelse | 128 KB | |
SRAM | 8 KB | |
Kommunikation | USB (Programmering med ATmega 8), ICSP (programmering), SPI, I2C og USART |
Arduino Mega – Avancerede funktioner
Arduino Mega | Forbedret Funktioner |
---|---|
Timer | 2 (8bit) + 4 (16bit) = 6 timer |
PWM | 12 (2-16 bit) |
ADC | 16 (10 bit) |
USART | 4 |
Pin Change Interrupt | 24 |
Arduino Mega 2560 er også pakket med yderligere funktioner som analog komparator, Ekstern Interrupt & Software Interrupt, Strømbesparelsestilstand, indbygget temperatursensor, RTC og meget mere.
Arduino Mega Pinout
![](https://www.circuitstoday.com/wp-content/uploads/2018/02/Arduino-Mega-Pinout-1024x525.png)
Spændingsstifter :
Arduino Mega | Power Pins | |
---|---|---|
VIN | Supply voltage (7-12V) | |
GND | Muld | |
5V forsyning | Til ekstern hardwareenheds strømforsyning | |
3.3V forsyning | Til ekstern strømforsyning af hardwareenhed med lav spænding |
Arduino Mega Pin Diagram
![](https://www.circuitstoday.com/wp-content/uploads/2018/02/Arduino-Mega-Pin-Configuration-1024x602.jpg)
Controller Pins:
RESET: (Reset-indgang) Et lavt niveau på denne pin i længere tid end den 4 clockcyklus vil generere en nulstilling. Arduino Mega har indbygget reset-kredsløb med trykknap til at nulstille systemet, og denne pin kan bruges af andre enheder til at nulstille controlleren.
XTAL1,XTAL2: Crystal (16Mhz) er tilsluttet til at levere clock til controlleren med 2 bypass kondensatorer til jord.
AREF: Denne pin bruges, når vi bruger Adc til analog til digital konvertering med ekstern referencespænding til konvertering og ikke ønsker at bruge intern 1,1V eller 5v reference.
Digitale pins (70):
Digital pins (0-53) + Analog (0-15) = Total Digital I/O pins.
Digitale pins:
Digital pins (0-53) + Analog (0-15) = Total Digital I/O pins.
Digitale pins: Fra 0-53 (digital) og 0-15 (analog) kan bruges som input eller output til digitale transducere og output-enheder ved pinMode() for pin-retning, digtalWrite() for at skrive pin og digitalRead() for at læse pin-status.
Anvendelse:
Output-enheder:
Relæ, LED, buzzer, LCD og andre.
Input-enheder: Digital termistor, trykknap, ultralydssensor, joystick og andre
Eksempel:
- Udgangssignal lavt på Arduino megabord
pinMode(0,OUTPUT);
digitalWrite(0,LOW);
- Input læsesignal på Arduino megakort
pinMode(0,INPUT);
digitalRead(0);
Analogpins (16):
Analogstifter: Fra 0-15(analog) kan bruges som analog indgangspin til adc, hvis den ikke bruges, fungerer den som normal digital pin. Den kan bruges af pinMode() til pin-retning, analogRead() til at læse pin-status og få digital værdi for analogt signal, man skal være forsigtig med valg af intern eller ekstern referencespænding og Aref-pin.
Anvendelse :
Input-enheder: Ntc termistor, sensorer (som ldr, irled og fugtighed) og andre
Eksempel :
- INPUT analogt signal på Arduino mega board
pinMode(0,INPUT);
analogRead(0);
Alternativ Pins Funktion:
Alternativ Pins Funktion:
SPI Pins:
Pin 22 - SS, Pin 23 - SCK, Pin 24 - MOSI, Pin 25 – MISO
Disse pins bruges til seriel kommunikation med SPI-protokol til kommunikation mellem 2 eller flere enheder. SPI-aktiveringsbit skal indstilles for at starte kommunikation med andre enheder.
Anvendelse:
Programmering af AVR-controller, kommunikation med andre perifere enheder som LCD og SD-kort med fire-linjers kommunikation ved høj hastighed.
I2C-stifter:
Digitalpin 20 til SDA og 21 til SCK (hastighed 400khz) for at muliggøre totrådskommunikation med andre enheder. Funktioner, der anvendes, er wire.begin() til at starte I2C-konvertering, med wire.Read() til at læse i2c-data og wire.Write() til at skrive i2c-data.
Anvendelse:
Output-enheder : LCD og kommunikation mellem flere enheder med to wire.
Input-enheder : rtc og andre.
Eksempel:
I2c master læser data fra slave
Wire.begin();
Wire.requestFrom(2, 1); //1byte data
Wire.Read();
PWM Pins:
Digital pin 2-13 kan bruges som PWM-udgang med analogWrite() til at skrive pwm-værdi fra 0-255. Det er et alternativ til DAC til lavprissystemer for at få analogt signal ved udgangen ved hjælp af filter.
Anvendelse:
Output-enheder: hastighedsstyring af motor, lysdæmper, pid til effektivt styresystem.
Eksempel:
- OUTPUT analogt signal på Arduino mega board
pinMode(0,OUTPUT);
analogWrite(0,255);
USART Pins :
Pin 0 – RXD0, pin 1 – TXD0Pin 19 – RXD1, pin 18 – TXD1Pin 17 – RXD2, pin 16 – TXD2Pin 15 – RXD3, pin 14 – TXD3
Denne pin bruges til seriel usart-kommunikation med pc eller andet system til datadeling og logning. Den bruges med serialBegin() til at indstille baud rate-indstilling og starte kommunikation med serial.Println() til at udskrive array af char på anden enheds output.
Anvendelse:
To controller-kommunikation, pc og controller-kommunikation, debugging med usart ved hjælp af seriel monitor.
Eksempel:
Serial.begin(9600);
Serial.Println(“hello”);
Pinchange Interrupt Pins:
Digital Pin 0,22,23,24,25,10,11,12,13,15,14Analog Pin 6,7,8,9,10,11,12,13,14,15
Denne pin bruges til pin change interrupt. Enable bit af pinchange interrupt skal indstilles med global interrupt enable.
Anvendelse :
Rotary encoder, trykknapbaseret interrupt og andre.
Eksempel :
pinMode(0, OUTPUT);
pinMode(1, INPUT_PULLUP);
attachInterrupt(digitalPinToInterrupt(1), LOW, CHANGE);
Hardware Interrupt Pins :
Digital pin 18 – 21,2,3 hardware interrupt bruges til interrupt-tjenester. Hardwareinterrupt skal aktiveres med global interrupt enable for at få interrupt fra andre enheder.
Anvendelse:
Knaptryk til ISR-program, opvågningskontroller med eksterne enheder, sensorer som ultralyd og andre.
Eksempel:
pinMode(0, OUTPUT);
pinMode(1, INPUT_PULLUP);
attachInterrupt(digitalPinToInterrupt(1), LOW, LOW);
Arduino Mega skematiske komponenter:
DC Jack Power Supply :
Ekstern forsyning til Arduino Mega fra området 7-12 volt er givet med denne port. Arduino Mega R3 har en spændingsregulator til 5v og 3,3v forsyning til Arduino controller og sensorforsyning.
AVR 2560 :
Dette er den vigtigste controller, der bruges til at programmere og køre opgave for systemet. Dette er hjernen i systemet til at styre alle andre enheder om bord.
ATmega8 :
Denne controller bruges til kommunikation mellem hovedcontrolleren og de andre enheder. Denne controller er programmeret til USB-kommunikation og serielle programmeringsfunktioner.
ICSP 1 (ATmega8) og 2 (AVR 2560):
Den har funktioner til programmering ved hjælp af seriel bus med AVR-programmør ved hjælp af SPI-kommunikation. AVR 2560 er programmeret til at køre systemet, og ATmega 8 er programmeret til seriel kommunikation og programmering.
![](https://www.circuitstoday.com/wp-content/uploads/2018/02/Arduino-Mega-ICSP-Pinout.png)
Reset :
Den har reset-kredsløb med kondensator, knap og modstand til at nulstille controlleren. En trykknap bruges til at få 4 cyklus lavt signal på reset pin for at få controlleren i reset mode.
Krystal :
Det har et krystal kredsløb med to kondensatorer og et 16 Mhz krystal til xtal pins 1 og 2 interfacing med avr 2560.
I2C :
Den har funktioner til I2C (totrådskommunikation) med en ekstern pull-up-modstand.
USART :
Den har TXD- og RXD-stift til seriel kommunikation med LED-indikator.
Nogle enkle programmer til at prøve på Arduino Mega 2560
Program 1: Blinkende LED (Digital pin)
/*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}
Program 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);}
Program 3: Analog Read Voltage (Analog pin med 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}
Du kan også prøve din egen logik og implementere programmer til Arduino mega med grundlæggende C og Arduino-funktion.