Zuallererst, warum Arduino Mega 2560?
Wenn billigere Boards verfügbar sind, warum mit Arduino Mega gehen? Der Hauptgrund dafür sind die zusätzlichen Funktionen, die in diesem Board eingebaut sind. Das erste Merkmal ist das große E/A-System mit 16 eingebauten analogen und 54 digitalen Wandlern, die mit USART und anderen Kommunikationsmodi unterstützt werden. Zweitens hat es eine eingebaute RTC und andere Funktionen wie einen analogen Komparator, einen erweiterten Timer, einen Interrupt für den Wakeup-Mechanismus des Controllers, um mehr Strom zu sparen, und eine schnelle Geschwindigkeit mit einem 16-MHz-Quarz-Takt, um 16 MIBS zu erhalten. Es hat mehr als 5 Pins für Vcc und Gnd, um andere Geräte an den Arduino Mega anzuschließen.
Weitere Funktionen sind JTAG-Unterstützung für die Programmierung, Fehlersuche und Fehlerbehebung. Mit großem FLASH-Speicher und SRAM kann dieses Board große Systemprogramme mit Leichtigkeit verarbeiten. Es ist auch kompatibel mit den verschiedenen Arten von Boards wie High-Level-Signal (5V) oder Low-Level-Signal (3,3V) mit I/O-Ref-Pin.
Brownout und Watchdog helfen, das System zuverlässiger und robuster zu machen. Er unterstützt sowohl ICSP- als auch USB-Mikrocontroller-Programmierung mit dem PC.
Der Arduino Mega 2560 ist ein Ersatz für den alten Arduino Mega, daher wird er im Allgemeinen ohne die Erweiterung ‚2560‘ genannt. Aufgrund der vielen Pins wird er normalerweise nicht für gewöhnliche Projekte verwendet, aber man findet ihn in viel komplexeren Projekten wie Radon-Detektoren, 3D-Druckern, Temperaturmessung, IOT-Anwendungen, Echtzeit-Datenüberwachungsanwendungen usw.
Arduino Mega 2560 Spezifikationen
Arduino Mega – Grundlegende Eigenschaften
Arduino Mega | Features |
---|---|
Mikrocontroller | AVR ATmega 2560 (8bit) |
Stromversorgung | 7-12V (eingebauter Regler für Controller) |
Digitale E/A-Pins | 54 |
Analoge E/A-Pins | 16 |
Gesamt-Digital-E/A | 70 (Digital + Analog) |
Taktfrequenz | 16 MHz (werkseitig auf 1Mhz eingestellt) |
Flash-Speicher | 128 KB |
SRAM | 8 KB |
Kommunikation | USB (Programmierung mit ATmega 8), ICSP (Programmierung), SPI, I2C und USART |
Arduino Mega – Erweiterte Funktionen
Arduino Mega | Erweiterte Funktionen |
---|---|
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 ist auch mit zusätzlichen Funktionen wie Analog Comparator verpackt, Externer Interrupt & Software Interrupt, Energiesparmodus, eingebauter Temperatursensor, RTC und mehr.
Arduino Mega Pinout
![](https://www.circuitstoday.com/wp-content/uploads/2018/02/Arduino-Mega-Pinout-1024x525.png)
Power Pins :
Arduino Mega | Power Pins |
---|---|
VIN | Versorgungsspannung (7-12V) |
GND | Masse |
5V-Versorgung | Für die Stromversorgung externer Hardwaregeräte |
3.3V Versorgung | Für externe Niederspannungs-Hardware-Stromversorgung |
Arduino Mega Pin Diagramm
![](https://www.circuitstoday.com/wp-content/uploads/2018/02/Arduino-Mega-Pin-Configuration-1024x602.jpg)
Controller Pins:
RESET: (Reset-Eingang) Ein Low-Pegel an diesem Pin, der länger als der 4-Takt-Zyklus ist, erzeugt einen Reset. Arduino Mega hat einen eingebauten Reset-Schaltkreis mit Druckknopf zum Zurücksetzen des Systems und dieser Pin kann von anderen Geräten zum Zurücksetzen des Controllers verwendet werden.
XTAL1,XTAL2: Crystal (16Mhz) ist angeschlossen, um den Takt für den Controller mit 2 Bypass-Kondensator auf Masse zu liefern.
AREF: Dieser Pin wird verwendet, wenn wir Adc für die Analog-Digital-Wandlung mit externer Referenzspannung für die Umwandlung verwenden und keine interne 1,1V oder 5v Referenz verwenden wollen.
Digitalpins (70):
Digital pins (0-53) + Analog (0-15) = Total Digital I/O pins.
Digitalpins: Von 0-53 (digital) und 0-15 (analog) können als Eingang oder Ausgang für digitale Wandler und Ausgabegeräte durch pinMode() für Pin-Richtung, digtalWrite() zum Schreiben von Pin und digitalRead() zum Lesen von Pin-Status verwendet werden.
Anwendung:
Ausgabegeräte: Relais, LED, Buzzer, LCD und andere.
Eingabegeräte: Digitaler Thermistor, Drucktaster, Ultraschallsensor, Joystick und andere
Beispiel:
- Output low signal on Arduino mega board
pinMode(0,OUTPUT);
digitalWrite(0,LOW);
- Eingangssignal lesen auf Arduino mega board
pinMode(0,INPUT);
digitalRead(0);
Analoge Pins (16):
Analoge Pins: Von 0-15 (analog) kann als analoger Eingangs-Pin für adc verwendet werden, wenn nicht verwendet, als es als normale digitale Pin arbeiten. Es kann durch pinMode() für die Pin-Richtung, analogRead() verwendet werden, um den Pin-Status zu lesen und einen digitalen Wert für das analoge Signal zu erhalten, es muss auf die Auswahl der internen oder externen Referenzspannung und des Aref-Pins geachtet werden.
Anwendung :
Eingangsgeräte: Ntc Thermistor, Sensoren (wie ldr, irled und Feuchtigkeit) und andere
Beispiel :
- INPUT analoges Signal auf Arduino mega board
pinMode(0,INPUT);
analogRead(0);
Alternative Pins Funktion:
SPI Pins:
Pin 22 - SS, Pin 23 - SCK, Pin 24 - MOSI, Pin 25 – MISO
Diese Pins werden für die serielle Kommunikation mit dem SPI-Protokoll für die Kommunikation zwischen 2 oder mehr Geräten verwendet. SPI-Enable-Bit muss gesetzt werden, um die Kommunikation mit anderen Geräten zu starten.
Anwendung:
Programmierung von AVR-Controllern, Kommunikation mit anderen Peripheriegeräten wie LCD und SD-Karte mit vierzeiliger Kommunikation bei hoher Geschwindigkeit.
I2C Pins:
Digitaler Pin 20 für SDA und 21 für SCK (Geschwindigkeit 400khz), um die Zweidrahtkommunikation mit anderen Geräten zu ermöglichen. Verwendete Funktionen sind wire.begin() um die I2C Konvertierung zu starten, mit wire.Read() um i2c Daten zu lesen und wire.Write() um i2c Daten zu schreiben.
Anwendung:
Ausgabegeräte: LCD und Kommunikation zwischen mehreren Geräten mit zwei Drähten.
Eingabegeräte : rtc und andere.
Beispiel:
I2c-Master liest Daten von Slave
Wire.begin();
Wire.requestFrom(2, 1); //1Byte Daten
Wire.Read();
PWM Pins:
Digitale Pins 2-13 können als PWM-Ausgang mit analogWrite() verwendet werden, um PWM-Werte von 0-255 zu schreiben.
Es ist eine Alternative zu DAC für kostengünstige Systeme, um ein analoges Signal am Ausgang zu erhalten, indem ein Filter verwendet wird.
Anwendung:
Ausgangsgeräte: Drehzahlregelung von Motoren, Lichtdimmer, Pid für effiziente Steuerungen.
Beispiel:
- OUTPUT analoges Signal auf 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
Dieser Pin wird für die serielle usart Kommunikation mit dem PC oder einem anderen System für Datenaustausch und Logging verwendet. Es wird mit serialBegin() verwendet, um die Baudrate einzustellen und die Kommunikation mit serial.Println() zu starten, um ein Array von Zeichen auf einem anderen Gerät zu drucken.
Anwendung:
Zwei Controller Kommunikation, PC und Controller Kommunikation, Debugging mit usart durch seriellen Monitor.
Beispiel:
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
Dieser Pin wird für Pin Change Interrupt verwendet. Das Enable-Bit des Pinwechsel-Interrupts muss mit der globalen Interrupt-Freigabe gesetzt werden.
Anwendung:
Drehgeber, tastenbasierter Interrupt und andere.
Beispiel :
pinMode(0, OUTPUT);
pinMode(1, INPUT_PULLUP);
attachInterrupt(digitalPinToInterrupt(1), LOW, CHANGE);
Hardware Interrupt Pins :
Digital Pin 18 – 21,2,3 Hardware Interrupt wird für Interrupt Dienste verwendet. Hardware-Interrupt muss mit globaler Interrupt-Freigabe aktiviert werden, um Interrupts von anderen Geräten zu erhalten.
Anwendung:
Taster für ISR-Programm, Aufwecken von Controller mit externen Geräten, Sensoren wie Ultraschall und andere.
Beispiel:
pinMode(0, OUTPUT);
pinMode(1, INPUT_PULLUP);
attachInterrupt(digitalPinToInterrupt(1), LOW, LOW);
Arduino Mega Schematische Komponenten:
DC Jack Power Supply :
Externe Versorgung für Arduino Mega aus dem Bereich 7-12 Volt ist mit diesem Anschluss gegeben. Arduino Mega R3 hat einen Spannungsregler für 5v und 3.3v Versorgung für Arduino Controller und Sensorversorgung.
AVR 2560 :
Dies ist der Hauptcontroller, der zum Programmieren und Ausführen von Aufgaben für das System verwendet wird. Dies ist das Gehirn des Systems, um alle anderen Geräte an Bord zu steuern.
ATmega8 :
Dieser Controller wird für die Kommunikation zwischen dem Hauptcontroller und anderen Geräten verwendet. Dieser Controller ist für USB-Kommunikation und serielle Programmierfunktionen programmiert.
ICSP 1 (ATmega8) und 2 (AVR 2560):
Es verfügt über Funktionen zur Programmierung über den seriellen Bus mit AVR-Programmierer über SPI-Kommunikation. Der AVR 2560 wird programmiert, um das System zu betreiben und der ATmega 8 wird für die serielle Kommunikation und Programmierung programmiert.
![](https://www.circuitstoday.com/wp-content/uploads/2018/02/Arduino-Mega-ICSP-Pinout.png)
Reset :
Es hat eine Reset-Schaltung mit Kondensator, Taster und Widerstand, um den Controller zurückzusetzen. Ein Druckknopf wird verwendet, um ein 4-Zyklen-Low-Signal am Reset-Pin zu erhalten, um den Controller in den Reset-Modus zu bringen.
Kristall :
Es hat eine Quarzschaltung mit zwei Kondensatoren und einem 16 Mhz-Quarz für die xtal-Pins 1 und 2, die mit dem avr 2560 verbunden sind.
I2C :
Es verfügt über I2C-Funktionen (Zweidrahtkommunikation) mit einem externen Pull-up-Widerstand.
USART :
Es verfügt über TXD- und RXD-Pin für die serielle Kommunikation mit LED-Anzeige.
Einige einfache Programme zum Ausprobieren mit Arduino Mega 2560
Programm 1: Blinkende LED (Digitaler 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}
Programm 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);}
Programm 3: Analog Read Voltage (Analog Pin mit 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 kannst auch deine eigene Logik ausprobieren und Programme für Arduino mega mit grundlegenden C und Arduino Funktionen implementieren.