Arduino Uno Rev3

Programmierung

Der Arduino Uno kann mit der (Arduino Software (IDE)) programmiert werden. Wählen Sie „Arduino Uno“ aus dem Menü „Tools“> Board (entsprechend dem Mikrocontroller auf Ihrem Board). Details finden Sie in der Referenz und in den Tutorials.

Der ATmega328 auf dem Arduino Uno wird mit einem Bootloader vorprogrammiert geliefert, der es Ihnen ermöglicht, neuen Code ohne die Verwendung eines externen Hardware-Programmierers auf das Board zu laden. Er kommuniziert mit dem originalen STK500-Protokoll (Referenz, C-Header-Dateien).

Sie können den Bootloader auch umgehen und den Mikrocontroller über den ICSP-Header (In-Circuit Serial Programming) mit Arduino ISP oder ähnlichem programmieren; siehe diese Anleitung für Details.

Der ATmega16U2 (oder 8U2 in den rev1 und rev2 Boards) Firmware-Quellcode ist im Arduino Repository verfügbar. Der ATmega16U2/8U2 ist mit einem DFU-Bootloader geladen, der wie folgt aktiviert werden kann:

  • Auf Rev1-Boards: Verbinden des Lötjumpers auf der Rückseite des Boards (in der Nähe der Karte von Italien) und dann Umstecken des 8U2.
  • Auf Rev2 oder späteren Boards: es gibt einen Widerstand, der die 8U2/16U2 HWB-Leitung auf Masse zieht, was es einfacher macht, sie in den DFU-Modus zu versetzen.

Sie können dann die FLIP-Software von Atmel (Windows) oder den DFU-Programmer (Mac OS X und Linux) verwenden, um eine neue Firmware zu laden. Oder Sie können den ISP-Header mit einem externen Programmiergerät verwenden (Überschreiben des DFU-Bootloaders). Weitere Informationen finden Sie in diesem von einem Benutzer erstellten Tutorial.

Warnungen

Der Arduino Uno verfügt über eine rücksetzbare Polysicherung, die die USB-Ports Ihres Computers vor Kurzschlüssen und Überstrom schützt. Obwohl die meisten Computer über einen eigenen internen Schutz verfügen, bietet die Sicherung eine zusätzliche Schutzschicht. Wenn mehr als 500 mA am USB-Port anliegen, unterbricht die Sicherung automatisch die Verbindung, bis der Kurzschluss oder die Überlast beseitigt ist.

Unterschiede zu anderen Boards

Der Uno unterscheidet sich von allen vorangegangenen Boards dadurch, dass er nicht den FTDI USB-zu-Seriell-Treiber-Chip verwendet. Stattdessen verfügt es über den Atmega16U2 (Atmega8U2 bis Version R2), der als USB-zu-seriell-Wandler programmiert ist.

Stromversorgung

Das Arduino Uno Board kann über den USB-Anschluss oder mit einem externen Netzteil mit Strom versorgt werden. Die Stromquelle wird automatisch ausgewählt.

Externe (nicht-USB) Stromversorgung kann entweder von einem AC-zu-DC-Adapter (wall-wart) oder einer Batterie kommen. Der Adapter kann durch Einstecken eines 2,1-mm-Mittelpositionssteckers in die Strombuchse der Karte angeschlossen werden. Leitungen von einer Batterie können in die GND- und Vin-Stiftleisten des POWER-Anschlusses eingesteckt werden.

Die Karte kann mit einer externen Versorgung von 6 bis 20 Volt betrieben werden. Bei einer Versorgung mit weniger als 7 V kann es jedoch vorkommen, dass der 5-V-Pin weniger als fünf Volt liefert und die Platine instabil wird. Wenn mehr als 12 V verwendet werden, kann der Spannungsregler überhitzen und die Karte beschädigen. Der empfohlene Bereich ist 7 bis 12 Volt.

Die Power-Pins sind wie folgt:

  • Vin. Die Eingangsspannung für das Arduino-Board, wenn es eine externe Stromquelle verwendet (im Gegensatz zu 5 Volt vom USB-Anschluss oder einer anderen regulierten Stromquelle). Sie können die Spannung über diesen Pin einspeisen, oder, wenn Sie die Spannung über die Strombuchse einspeisen, über diesen Pin zugreifen.
  • 5V.Dieser Pin gibt eine geregelte 5V vom Regler auf dem Board aus. Die Platine kann entweder über die DC-Strombuchse (7 – 12V), den USB-Anschluss (5V) oder den VIN-Pin der Platine (7-12V) mit Spannung versorgt werden. Die Spannungsversorgung über die 5V- oder 3,3V-Pins umgeht den Regler und kann Ihr Board beschädigen. Wir raten davon ab.
  • 3V3. Eine 3,3-Volt-Versorgung, die durch den On-Board-Regler erzeugt wird. Die maximale Stromaufnahme beträgt 50 mA.
  • GND. Masse-Pins.
  • IOREF. Dieser Pin auf dem Arduino-Board liefert die Spannungsreferenz, mit der der Mikrocontroller arbeitet. Ein richtig konfiguriertes Shield kann die Spannung des IOREF-Pins auslesen und die entsprechende Stromquelle auswählen oder Spannungsübersetzer an den Ausgängen aktivieren, um mit 5V oder 3,3V zu arbeiten.

Speicher

Der ATmega328 hat 32 KB (wobei 0,5 KB durch den Bootloader belegt sind). Außerdem hat er 2 KB SRAM und 1 KB EEPROM (die mit der EEPROM-Bibliothek gelesen und geschrieben werden können).

Ein- und Ausgänge

Siehe das Mapping zwischen Arduino-Pins und ATmega328P-Ports. Das Mapping für den Atmega8, 168 und 328 ist identisch.

PIN-MAPPING ATmega328P

Jeder der 14 digitalen Pins des Uno kann mit den Funktionen pinMode(), digitalWrite() und digitalRead() als Eingang oder Ausgang verwendet werden. Sie arbeiten mit einer Spannung von 5 Volt. Jeder Pin kann 20 mA als empfohlene Betriebsbedingung liefern oder empfangen und hat einen internen Pull-Up-Widerstand (standardmäßig abgeschaltet) von 20-50k Ohm. Maximal 40mA ist der Wert, der an keinem I/O-Pin überschritten werden darf, um eine dauerhafte Beschädigung des Mikrocontrollers zu vermeiden.

Zusätzlich haben einige Pins spezielle Funktionen:

Der Uno hat 6 analoge Eingänge, beschriftet mit A0 bis A5, von denen jeder 10 Bit Auflösung (d.h. 1024 verschiedene Werte) bietet. Standardmäßig messen sie von Masse bis 5 Volt, allerdings ist es möglich, das obere Ende ihres Bereichs mit dem AREF-Pin und der Funktion analogReference() zu verändern. Es gibt noch ein paar andere Pins auf dem Board:

  • AREF. Referenzspannung für die analogen Eingänge. Wird mit analogReference() verwendet.
  • Reset. Bringen Sie diese Leitung auf LOW, um den Mikrocontroller zurückzusetzen. Wird typischerweise verwendet, um einen Reset-Knopf zu Shields hinzuzufügen, die den auf dem Board blockieren.

Kommunikation

Der Arduino Uno hat eine Reihe von Möglichkeiten, um mit einem Computer, einem anderen Arduino-Board oder anderen Mikrocontrollern zu kommunizieren. Der ATmega328 bietet eine serielle UART-TTL-Kommunikation (5 V), die an den digitalen Pins 0 (RX) und 1 (TX) verfügbar ist. Ein ATmega16U2 auf dem Board kanalisiert diese serielle Kommunikation über USB und erscheint der Software auf dem Computer als virtueller Com-Port. Die 16U2-Firmware verwendet die Standard-USB-COM-Treiber, so dass kein externer Treiber erforderlich ist. Unter Windows ist jedoch eine .inf-Datei erforderlich. Die Arduino-Software (IDE) enthält einen seriellen Monitor, mit dem einfache Textdaten zum und vom Board gesendet werden können. Die RX- und TX-LEDs auf dem Board blinken, wenn Daten über den USB-zu-Seriell-Chip und die USB-Verbindung zum Computer übertragen werden (aber nicht bei serieller Kommunikation an den Pins 0 und 1).

Eine SoftwareSerial-Bibliothek ermöglicht die serielle Kommunikation an jedem der digitalen Pins des Uno.

Der ATmega328 unterstützt auch I2C (TWI) und SPI-Kommunikation. Die Arduino-Software (IDE) enthält eine Wire-Bibliothek, um die Nutzung des I2C-Busses zu vereinfachen; Details finden Sie in der Dokumentation. Für die SPI-Kommunikation verwenden Sie die SPI-Bibliothek.

Automatischer (Software-)Reset

Anstatt einen physischen Druck auf den Reset-Knopf vor einem Upload zu erfordern, ist das Arduino Uno-Board so konzipiert, dass es per Software auf einem angeschlossenen Computer zurückgesetzt werden kann. Eine der Hardware-Flusskontrollleitungen (DTR) des ATmega8U2/16U2 ist über einen 100-Nanofarad-Kondensator mit der Reset-Leitung des ATmega328 verbunden. Wenn diese Leitung durchgesetzt wird (auf Low genommen), fällt die Reset-Leitung lange genug ab, um den Chip zurückzusetzen. Die Arduino-Software (IDE) nutzt diese Fähigkeit, um das Hochladen von Code durch einfaches Drücken der Upload-Schaltfläche in der Symbolleiste der Schnittstelle zu ermöglichen. Das bedeutet, dass der Bootloader ein kürzeres Timeout haben kann, da das Absenken von DTR gut mit dem Start des Uploads koordiniert werden kann.

Dieser Aufbau hat weitere Auswirkungen. Wenn der Uno an einen Computer angeschlossen ist, auf dem Mac OS X oder Linux läuft, setzt er sich jedes Mal zurück, wenn eine Verbindung von der Software (über USB) zu ihm hergestellt wird. Für die folgende halbe Sekunde oder so, läuft der Bootloader auf dem Uno. Er ist zwar so programmiert, dass er fehlerhafte Daten ignoriert (d. h. alles außer dem Hochladen von neuem Code), aber er fängt die ersten paar Bytes der Daten ab, die nach dem Öffnen einer Verbindung an das Board gesendet werden. Wenn ein auf dem Board laufender Sketch beim ersten Start einmalige Konfigurations- oder andere Daten empfängt, stellen Sie sicher, dass die Software, mit der er kommuniziert, nach dem Öffnen der Verbindung und vor dem Senden dieser Daten eine Sekunde wartet.

Das Uno-Board enthält eine Leiterbahn, die abgeschnitten werden kann, um den Autoreset zu deaktivieren. Die Pads auf beiden Seiten der Leiterbahn können zusammengelötet werden, um sie wieder zu aktivieren. Sie ist mit „RESET-EN“ beschriftet. Sie können den Auto-Reset auch deaktivieren, indem Sie einen 110-Ohm-Widerstand von 5V an die Reset-Leitung anschließen; siehe diesen Forums-Thread für Details.

Revisionen

Revision 3 des Boards hat folgende neue Funktionen:

  • 1.0 Pinout: Es wurden SDA- und SCL-Pins hinzugefügt, die sich in der Nähe des AREF-Pins befinden, sowie zwei weitere neue Pins, die in der Nähe des RESET-Pins platziert wurden, der IOREF, die es den Shields ermöglichen, sich an die vom Board bereitgestellte Spannung anzupassen. In Zukunft werden die Shields sowohl mit dem Board, das den AVR verwendet, der mit 5V arbeitet, als auch mit dem Arduino Due, der mit 3,3V arbeitet, kompatibel sein. Der zweite ist ein nicht angeschlossener Pin, der für zukünftige Zwecke reserviert ist.
  • Stärkere RESET-Schaltung.
  • Atmega 16U2 ersetzen den 8U2.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.