Arduino UNO: Board Anatomie: Unterschied zwischen den Versionen

Aus HSHL Mechatronik
Zur Navigation springen Zur Suche springen
Keine Bearbeitungszusammenfassung
Keine Bearbeitungszusammenfassung
 
(32 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt)
Zeile 4: Zeile 4:
'''Autor:''' [[Benutzer:Ulrich_Schneider| Prof. Dr.-Ing. Schneider]]<br>
'''Autor:''' [[Benutzer:Ulrich_Schneider| Prof. Dr.-Ing. Schneider]]<br>


Abb. 1 zeigt die Hauptkomponenten des Arduino Uno R3.
Abb. 1 zeigt die Hauptkomponenten des Arduino Uno R3, bestehend aus:
* Anschluss für ein externes Netzgerät
* Spannungswandler
* 16&thinsp;MHz Takt-Quarz
* USB-Anschluss
* Reset-Taster
* USB-UART-Wandler
* Status-LED für <code>Tx</code>, <code>Rx</code> und <code>D13</code>
* SPI/ICSP-Anschlüsse
* 14 Digitale Ein- und Ausgänge
* 6 Analogeingänge
* Spannungsversorgungsanschlüsse
* 5&thinsp;V, 3,3&thinsp;V, GND Referenzpotential
* Atmel ATmega328 Mikrocontroller
 
Die Funktion der I/O-Pins wird in Tabelle 1 beschrieben.
 




Zeile 10: Zeile 26:
|+ style = "text-align: left"|Tabelle 1: Übersicht der I/O-Pins
|+ style = "text-align: left"|Tabelle 1: Übersicht der I/O-Pins
|-
|-
| <code>'''RX, TX'''</code> || Das sind die Sende- und Empfangspins der seriellen Schnittstelle ([https://de.wikipedia.org/wiki/Universal_Asynchronous_Receiver_Transmitter Universal AsynchronousReceiver Transmitter, UART]).
| <code>RX, TX</code> || Das sind die Sende- und Empfangspins der seriellen Schnittstelle ([https://de.wikipedia.org/wiki/Universal_Asynchronous_Receiver_Transmitter Universal AsynchronousReceiver Transmitter, UART]). Die Übertragungsgeschwindigkeit liegt zwischen 1200 und 115200 Baud.  
Bevor der USB-Bus erfunden wurde, waren beispielsweise Mäuse und Modems per serieller Schnittstelle mit dem PC verbunden. Die Übertragungsgeschwindigkeit liegt in der Regel zwischen 1200 und 115200 Baud. Heute spielt der UART nur noch im Entwicklerbereich eine Rolle.
|-
|-
| '''SCL, SDA''' || Die zwei Pins gehören zum [https://de.wikipedia.org/wiki/I%C2%B2C I<sup>2</sup>C-Bus] (Inter IC Communication), über den der Arduino Daten mit Sensoren und anderer Elektronik austauschen kann. Im Unterschied zum UART gibt es nur eine Leitung für die Hin- und Rückrichtung (SDA, Serial Data), dank eines einheitlichen Protokolls und eines Taktsignals (SCL, Serial Clock) gibt es aber keine Konflikte auf dem Bus.
| <code>SCL, SDA</code> || Die zwei Pins gehören zum [https://de.wikipedia.org/wiki/I%C2%B2C I<sup>2</sup>C-Bus] (Inter IC Communication), über den der Arduino Daten mit Sensoren und anderer Elektronik austauschen kann. Im Unterschied zum UART gibt es nur eine Leitung für die Hin- und Rückrichtung (<code>SDA</code>, Serial Data), dank eines einheitlichen Protokolls und eines Taktsignals (<code>SCL</code>, Serial Clock) gibt es aber keine Konflikte auf dem Bus.
|-
|-
| '''SPI''' || Das Serial Peripheral Interface ist ein synchroner serieller Bus, mit Hin-, Rück- und Taktleitung. Beim Arduino dient er dem Datenaustausch mit Sensoren und Steuermodulen, aber auch der Programmierung
| <code>SPI</code> || Das [https://de.wikipedia.org/wiki/Serial_Peripheral_Interface Serial Peripheral Interface] ist ein synchroner serieller Bus, mit Hin-, Rück- und Taktleitung. Beim Arduino dient er dem Datenaustausch mit Sensoren und Steuermodulen, aber auch der Programmierung seines Flash-Speichers mit einem speziellen Gerät. Standardmäßig arbeitet der SPI auf dem Arduino mit 4&thinsp;MHz.
seines Flash-Speichers mit einem speziellen Gerät. Standardmäßig arbeitet der SPI auf dem Arduino mit 4&thinsp;MHz.
|-
|-
| '''Digital (PWM~)'''|| Die digitalen Pins lassen sich jeweils als Ein- oder Ausgang programmieren. Arbeiten sie als Eingang, kann man dem Arduino mit einer Spannung von 0&thinsp;V eine logische 0 und mit 5&thinsp;V eine logische 1 von außen signalisieren, auf die er reagieren kann. Ist ein Pin als Ausgang konfiguriert, kann er per Programm seiner Umwelt oder weiterer Elektronik eine logische 1 oder eine logische 0 signalisieren.
| <code>Digital I/O<br> (PWM~)</code>|| Die digitalen Pins lassen sich jeweils als Ein- oder Ausgang programmieren. Arbeiten sie als Eingang, kann man dem Arduino mit einer Spannung von 0&thinsp;V eine logische 0 und mit 5&thinsp;V eine logische 1 von außen signalisieren, auf die er reagieren kann. Ist ein Pin als Ausgang konfiguriert, kann er per Programm seiner Umwelt oder weiterer Elektronik eine logische 1 oder eine logische 0 signalisieren. Daneben kann man die Ausgangsspannung von 5&thinsp;V auch direkt benutzen, um eine Leuchtdiode (LED) zum Leuchten zu bringen oder ein Relais zu schalten, das wiederum ein anderes Gerät mit Batterieversorgung oder gar mit Netzspannung anschaltet. <br>
Daneben kann man die Ausgangsspannung von 5&thinsp;V auch direkt benutzen, um eine Leuchtdiode (LED) zum Leuchten zu bringen oder ein Relais zu schalten, das wiederum ein anderes Gerät mit Batterieversorgung oder gar mit Netzspannung anschaltet. Zu beachten ist, dass ein Ausgang als Dauerlast nur einen Strom von 20&thinsp;mA liefert, kurzzeitig auch bis zu 40&thinsp;mA. Darüber droht ein dauerhafter Schaden des Pins. Um das zu verhindern,
Zu beachten ist, dass ein Ausgang als Dauerlast nur einen Strom von 20&thinsp;mA liefert, kurzzeitig auch bis zu 40&thinsp;mA. Darüber droht ein '''dauerhafter Schaden''' des Pins. Um das zu verhindern,
muss man den Strom mit einem Widerstand begrenzen. Wie man das macht, erfahren Sie im hinteren Teil des Hefts. Alternativ können einige der digitalen Pins (zu erkennen an der Tilde ~ vor der Nummer
muss man den Strom mit einem Widerstand begrenzen. <br>
auf dem Board) ein sogenanntes PWM-Signal ausgeben. Neben der Leistungssteuerung von LEDs benötigt man dieses Signal in erster Linie zur Ansteuerung von Servo-Motoren, wie man sie im Modellbau einsetzt.
~: An diesen Pins kann eine [https://de.wikipedia.org/wiki/Pulsdauermodulation Pulsdauermodulation] (PWM) ausgegeben werden. Diese benötigt man bspw. zur Leistungssteuerung von LEDs oder zur Ansteuerung von Servo-Motoren.
|-  
|-  
| '''Analog In (A0–A5)''' || Da die Welt eben nicht nur schwarz (5ˇV) und weiß (0ˇV) ist, benötigt man noch eine Möglichkeit, Spannungen irgendwo dazwischen zu messen. Ein Analog-Digital-Wander wandelt, wie beim
| <code>Analog In<br> (A0–A5)</code> || Da die Welt eben nicht nur schwarz (5&thinsp;V) und weiß (0&thinsp;V) ist, benötigt man noch eine Möglichkeit, Spannungen irgendwo dazwischen zu messen. Ein Analog-Digital-Wander wandelt, wie beim Mikrofon-Eingang am PC, analoge Signale in digitale Werte zwischen 0 und 1023 (10&thinsp;Bit). Der UNO hat eigentlich nur einen einzigen internen Wandler, mit einem eingebauten Umschalter kann er jedoch die einzelnen externen Eingänge auf den Eingang des A/D-Wandlers legen.<br>
Mikrofon-Eingang am PC, analoge Signale in digitale Werte zwischen 0 und 1023 (10 Bit). Der UNO hat eigentlich nur einen einzigen internen Wandler, mit einem eingebauten Umschalter kann er jedoch die einzelnen externen
Eingänge auf den Eingang des A/D-Wandlers legen.
 
Grundsätzlich lassen sich auch alle Analog-und Bus-Pins als I/O-Pins festlegen, sodass der Arduino UNO insgesamt 20 digitale Ein- und Ausgänge befehligen kann.
Grundsätzlich lassen sich auch alle Analog-und Bus-Pins als I/O-Pins festlegen, sodass der Arduino UNO insgesamt 20 digitale Ein- und Ausgänge befehligen kann.
|-
|-
| 5&thinsp;V/3,3&thinsp;V|| Die beiden Pins dienen der Spannungsversorgung von Erweiterungsshields oder anderen elektronischen Komponenten.
| <code>5&thinsp;V<br> 3,3&thinsp;V</code>|| Die beiden Pins dienen der Spannungsversorgung von Erweiterungsshields oder anderen elektronischen Komponenten.
|-
|-
| '''VIn''' || Hier liegt die Spannung an, mit der der Arduino bei Verwendung eines externen Netzteils versorgt wird. Shields mit Motoren
| <code>VIn</code> || Hier liegt die Spannung an, mit der der Arduino bei Verwendung eines externen Netzteils versorgt wird. Shields mit Motoren und anderen Verbrauchern mit höherem Spannungsbedarf benötigen diesen Pin.
und anderen Verbrauchern mit höherem Spannungsbedarf benötigen diesen Pin.
|-
|-
| GND||Das ist der gemeinsame Bezugspunkt beim Zusammenschalten von Komponenten mit dem Arduino. Man kann ihn sich vereinfacht wie den Minuspol einer Batterie vorstellen.
| <code>GND</code>||Das ist der gemeinsame Bezugspunkt beim Zusammenschalten von Komponenten mit dem Arduino. Man kann ihn sich vereinfacht wie den Minuspol einer Batterie vorstellen.
|-
|-
| AREF||Die analogen Eingänge nehmen die Digitalisierung in Bezug auf eine bestimmte Spannung vor, standardmäßig 5&thinsp;V. Man kann aber auch durch eine externe Spannungsreferenz einen anderen Wert vorgeben.
| <code>AREF</code>||Die analogen Eingänge nehmen die Digitalisierung in Bezug auf eine bestimmte Spannung vor, standardmäßig 5&thinsp;V. Man kann aber auch durch eine externe Spannungsreferenz einen anderen Wert vorgeben. Liefert beispielsweise ein Sensor nur eine maximale Spannung von 1&thinsp;V, würde man bei <code>AREF = 5&thinsp;V</code> nur ein Fünftel des Wertebereichs (0–205) nutzen. Sinnvoller wäre, <code>AREF</code> mit einer Referenzspannung von 1&thinsp;V zu speisen.
Liefert beispielsweise ein Sensor nur eine maximale Spannung von 1&thinsp;V, würde man bei <code>AREF = 5&thinsp;V</code> nur ein Fünftel des Wertebereichs
(0–205) nutzen. Sinnvoller wäre,
AREF mit einer Referenzspannung von 1ˇV zu
speisen.
|-
|-
| '''IOREF'''||Damit signalisiert der Arduino
| <code>IOREF</code>||Damit signalisiert der Arduino einem Shield, mit welchem Spannungspegel er arbeitet. In der Regel spielt dieser Pin keine Rolle.
einem Shield, mit welchem Spannungspegel
er arbeitet. In der Regel spielt dieser Pin
keine Rolle.
|-
|-
| '''Reset'''||Neben dem manuellen Druck auf
| <code>Reset</code>||Neben dem manuellen Druck auf den Resetkopf kann auch eine externe Schaltung einen Neustart des Arduino auslösen.
den Resetkopf kann auch eine externe
Schaltung einen Neustart des Arduino auslösen.
|}
|}


Zeile 56: Zeile 57:
== Interner Aufbau ==
== Interner Aufbau ==
[[Datei:ATmega328P Blockdiagramm.jpg|thumb|rigth|500px|Abb. 2: Blockdiagramm des ATmega328P]]
[[Datei:ATmega328P Blockdiagramm.jpg|thumb|rigth|500px|Abb. 2: Blockdiagramm des ATmega328P]]
Der Kern des Arduino ist der Mikrocontroller ATmega328 des Herstellers Atmel:
Der Kern des Arduino ist der Mikrocontroller ATmega328 des Herstellers Atmel.
Das Blockschaltbild des ATmega328 in Abb. 2 ist recht
Seine Hauptmerkmale sind
umfangreich, denn in dem kleinen IC sind
{| class="wikitable"
viele Funktionen untergebracht, die früher
|-
beispielsweise – abgesehen von der Videoausgabe
| Digitale I/O Pins || 14 (6 davon können eine PWM ausgeben)
– als einzelne Komponenten auf
|-
den Platinen der Heimcomputer oder auf
| Analog Input Pins || 6 (DIP) or 8 (SMD)
den Mainboards der ersten PCs verbaut
|-
waren. Wenn man sich die einzelnen Blöcke
| Gleichstrom pro I/O Pin || 40&thinsp;mA
in Ruhe anschaut, ergeben sich aber recht
|-
einfach die Zusammenhänge.
| Flash Memory || 32&thinsp;KB
Zentrales System ist der 8-Bit-Prozessor
|-
(CPU), dem ein Arbeitsspeicher (SRAM) für das
| SRAM || 2&thinsp;KB
Ablegen von temporären Daten und ein Programmspeicher
|-
(Flash) zur Seite gestellt sind.
| EEPROM || 1&thinsp;KB
Die 32 KByte Größe des Flash und die 2 KByte
|}
des RAM sind zwar im Vergleich zu einem modernen
 
PC lachhaft klein, allerdings wollen wir
Das Blockschaltbild des ATmega328 in Abb. 2 ist recht umfangreich, denn in dem kleinen IC sind viele Funktionen untergebracht, die früher
ja auch keine grafische Benutzeroberfläche
beispielsweise – abgesehen von der Videoausgabe – als einzelne Komponenten auf den Platinen der Heimcomputer oder auf den Mainboards der ersten PCs verbaut waren. Wenn man sich die einzelnen Blöcke in Ruhe anschaut, ergeben sich aber recht einfach die Zusammenhänge.
mit Browser, Mail und anderem Schnickschnack
 
auf dem Arduino laufen lassen.
Zentrales System ist der 8-Bit-Prozessor ('''CPU'''), dem ein Arbeitsspeicher ('''SRAM''') für das
Aus dem Flash liest die CPU die einzelnen
Ablegen von temporären Daten und ein Programmspeicher ('''Flash''') zur Seite gestellt sind. Aus dem 32&thinsp;KByte Flash liest die CPU die einzelnen Befehle des Programms (Sketch) nacheinander ein und führt sie aus. Ein sogenannter Programm Counter hilft ihr, sich die Speicheradresse zu merken, ab der der nächste Befehl dran ist. Wenn die CPU sich zwischendurch mal bestimmte Werte merken muss, legt sie diese in ihren internen Registern oder im 2&thinsp;KByte großen [https://de.wikipedia.org/wiki/Static_random-access_memory SRAM] ab – der Flash kann nämlich während des Betriebs nicht so ohne Weiteres Daten speichern.
Befehle des Programms (Sketch) nacheinander
 
ein und führt sie aus. Ein sogenannter Programm
Während das RAM beim Abschalten alle Daten verliert, behält der Flash jedoch sein Programm fest gespeichert wie ein USB-Stick. Um trotzdem auch mal während eines Programmlaufs
Counter hilft ihr, sich die Speicher -
erzeugte Daten über das Abschalten hinwegzuretten, dient der [https://de.wikipedia.org/wiki/Electrically_Erasable_Programmable_Read-Only_Memory '''EEPROM''']. Das laufende Programm übergibt ihm Daten für die feste Speicherung, auf die es später nach jedem Anschalten
adresse zu merken, ab der der nächste Befehl
dran ist. Wenn die CPU sich zwischendurch
mal bestimmte Werte merken muss, legt sie
diese in ihren internen Registern oder im RAM
ab – der Flash kann nämlich während des Betriebs
nicht so ohne Weiteres Daten speichern.
Während das RAM beim Abschalten alle Daten
verliert, behält der Flash jedoch sein Programm
fest gespeichert wie ein USB-Stick. Um
trotzdem auch mal während eines Programmlaufs
erzeugte Daten über das Abschalten hinwegzuretten,
dient der EEPROM. Das laufende
Programm übergibt ihm Daten für die feste
Speicherung, auf die es später nach jedem Anschalten
wieder zugreifen kann.
wieder zugreifen kann.
Dem aufmerksamen Leser wird an dieser
Stelle der fundamentale Unterschied zum PC
aufgefallen sein: Der PC kopiert seine Programme
vor der Ausführung immer in seinen
Arbeitsspeicher, um anschließend von
dort die Befehle einzulesen. Dieses Konzept
nennt sich Von-Neumann-Architektur, benannt
nach dem Mathematiker John von
Neumann. Das Konzept der getrennten Speicher
wie beim ATmega nennt sich hingegen
Harvard-Architektur.
Durch die Zuschaltung von Port-Bausteinen
(PORT B, C, D) wird der Mikroprozessor
zum Mikrocontroller – weil er über die Ports
nun seine Umwelt kontrollieren kann. Neben
den bereits erwähnten Schnittstellen USART,
SPI und I2C (der heißt aus lizenzrechtlichen
Gründen bei Atmel allerdings Two Wire Interface,
kurz TWI) gibt es noch mehrere Timer
und Counter (T/C 0, 1, 2) im ATmega. Sie helfen
der CPU, Zeitspannen zu messen, etwa
um Ausgänge mikrosekundengenau ein- beziehungsweise
auszuschalten oder die Dauer
extern anliegender Signale zu messen.
Um die CPU gruppieren sich noch weitere
Bausteine, die die zuverlässige Arbeit gewährleisten
sollen. Bleibt ein Programm bei seinem Ablauf aus irgendeinem Grund hängen – viele
kennen das bereits vom PC – kann der Watchdog
den Controller neu starten und somit
wieder auf die Spur bringen. Einen ähnlichen
Zweck hat die eingebaute Überwachung der
Spannungsversorgung Power Supervision:
Sinkt die Spannung unter 4ˇV, so kann dies die
Logik des Controllers durcheinanderbringen,
die anschließend unter Umständen mit falschen
Daten weiterrechnet. Sicherheitshalber
resetted die Überwachung den Controller –
und zwar so lange, bis die Versorgungsspannung
wieder auf einen für den zuverlässigen
Betrieb geeigneten Wert gestiegen ist.


'''Datenblatt:''' [[Medium: ATmega328P Datasheet.pdf|ATmega328 (PDF)]]
Dem aufmerksamen Lesenden wird an dieser Stelle der fundamentale Unterschied zum PC aufgefallen sein: Der PC kopiert seine Programme vor der Ausführung immer in seinen Arbeitsspeicher, um anschließend von dort die Befehle einzulesen. Dieses Konzept nennt sich Von-Neumann-Architektur, benannt nach dem Mathematiker John von Neumann. Das Konzept der getrennten Speicher wie beim ATmega nennt sich hingegen Harvard-Architektur.
 
Durch die Zuschaltung von Port-Bausteinen ('''PORT B, C, D''') wird der Mikroprozessor zum Mikrocontroller – weil er über die Ports nun seine Umwelt kontrollieren kann. Neben den bereits erwähnten Schnittstellen '''USART''', '''SPI''' und '''I<sup>2</sup>C''' (der heißt aus lizenzrechtlichen Gründen bei Atmel allerdings Two Wire Interface, kurz '''TWI''') gibt es noch mehrere Timer und Counter ('''T/C 0, 1, 2''') im ATmega. Sie helfen der CPU, Zeitspannen zu messen, etwa um Ausgänge mikrosekundengenau ein- beziehungsweise auszuschalten oder die Dauer extern anliegender Signale zu messen.<br>
Um die CPU gruppieren sich noch weitere Bausteine, die die zuverlässige Arbeit gewährleisten sollen. Bleibt ein Programm bei seinem Ablauf aus irgendeinem Grund hängen – viele kennen das bereits vom PC – kann der '''Watchdog''' den Controller neu starten und somitwieder auf die Spur bringen.
 
Einen ähnlichen Zweck hat die eingebaute Überwachung der Spannungsversorgung '''Power Supervision''': Sinkt die Spannung unter 4&thinsp;V, so kann dies die Logik des Controllers durcheinanderbringen, die anschließend unter Umständen mit falschen Daten weiterrechnet. Sicherheitshalber resetted die Überwachung den Controller – und zwar so lange, bis die Versorgungsspannung wieder auf einen für den zuverlässigen Betrieb geeigneten Wert gestiegen ist.
 
== Datenblätter ==
*[[Medium: ATmega328P Datasheet.pdf|ATmega328 (PDF)]]
*[[medium:A000066-datasheet.pdf|Arduino<sup>®</sup> UNO R3]]
 
== Weiterführende Links ==
* [https://docs.arduino.cc/tutorials/uno-rev3/board-anatomy Board-Anatomy]
 
 
 
 
----
----
→ zurück zum Hauptartikel: [[Arduino|Arduino UNO]]
→ zurück zum Hauptartikel: [[Arduino|Arduino UNO]]

Aktuelle Version vom 27. Dezember 2022, 12:28 Uhr

Abb. 1: Arduino Uno R3

Autor: Prof. Dr.-Ing. Schneider

Abb. 1 zeigt die Hauptkomponenten des Arduino Uno R3, bestehend aus:

  • Anschluss für ein externes Netzgerät
  • Spannungswandler
  • 16 MHz Takt-Quarz
  • USB-Anschluss
  • Reset-Taster
  • USB-UART-Wandler
  • Status-LED für Tx, Rx und D13
  • SPI/ICSP-Anschlüsse
  • 14 Digitale Ein- und Ausgänge
  • 6 Analogeingänge
  • Spannungsversorgungsanschlüsse
  • 5 V, 3,3 V, GND Referenzpotential
  • Atmel ATmega328 Mikrocontroller

Die Funktion der I/O-Pins wird in Tabelle 1 beschrieben.


Tabelle 1: Übersicht der I/O-Pins
RX, TX Das sind die Sende- und Empfangspins der seriellen Schnittstelle (Universal AsynchronousReceiver Transmitter, UART). Die Übertragungsgeschwindigkeit liegt zwischen 1200 und 115200 Baud.
SCL, SDA Die zwei Pins gehören zum I2C-Bus (Inter IC Communication), über den der Arduino Daten mit Sensoren und anderer Elektronik austauschen kann. Im Unterschied zum UART gibt es nur eine Leitung für die Hin- und Rückrichtung (SDA, Serial Data), dank eines einheitlichen Protokolls und eines Taktsignals (SCL, Serial Clock) gibt es aber keine Konflikte auf dem Bus.
SPI Das Serial Peripheral Interface ist ein synchroner serieller Bus, mit Hin-, Rück- und Taktleitung. Beim Arduino dient er dem Datenaustausch mit Sensoren und Steuermodulen, aber auch der Programmierung seines Flash-Speichers mit einem speziellen Gerät. Standardmäßig arbeitet der SPI auf dem Arduino mit 4 MHz.
Digital I/O
(PWM~)
Die digitalen Pins lassen sich jeweils als Ein- oder Ausgang programmieren. Arbeiten sie als Eingang, kann man dem Arduino mit einer Spannung von 0 V eine logische 0 und mit 5 V eine logische 1 von außen signalisieren, auf die er reagieren kann. Ist ein Pin als Ausgang konfiguriert, kann er per Programm seiner Umwelt oder weiterer Elektronik eine logische 1 oder eine logische 0 signalisieren. Daneben kann man die Ausgangsspannung von 5 V auch direkt benutzen, um eine Leuchtdiode (LED) zum Leuchten zu bringen oder ein Relais zu schalten, das wiederum ein anderes Gerät mit Batterieversorgung oder gar mit Netzspannung anschaltet.

Zu beachten ist, dass ein Ausgang als Dauerlast nur einen Strom von 20 mA liefert, kurzzeitig auch bis zu 40 mA. Darüber droht ein dauerhafter Schaden des Pins. Um das zu verhindern, muss man den Strom mit einem Widerstand begrenzen.
~: An diesen Pins kann eine Pulsdauermodulation (PWM) ausgegeben werden. Diese benötigt man bspw. zur Leistungssteuerung von LEDs oder zur Ansteuerung von Servo-Motoren.

Analog In
(A0–A5)
Da die Welt eben nicht nur schwarz (5 V) und weiß (0 V) ist, benötigt man noch eine Möglichkeit, Spannungen irgendwo dazwischen zu messen. Ein Analog-Digital-Wander wandelt, wie beim Mikrofon-Eingang am PC, analoge Signale in digitale Werte zwischen 0 und 1023 (10 Bit). Der UNO hat eigentlich nur einen einzigen internen Wandler, mit einem eingebauten Umschalter kann er jedoch die einzelnen externen Eingänge auf den Eingang des A/D-Wandlers legen.

Grundsätzlich lassen sich auch alle Analog-und Bus-Pins als I/O-Pins festlegen, sodass der Arduino UNO insgesamt 20 digitale Ein- und Ausgänge befehligen kann.

5 V
3,3 V
Die beiden Pins dienen der Spannungsversorgung von Erweiterungsshields oder anderen elektronischen Komponenten.
VIn Hier liegt die Spannung an, mit der der Arduino bei Verwendung eines externen Netzteils versorgt wird. Shields mit Motoren und anderen Verbrauchern mit höherem Spannungsbedarf benötigen diesen Pin.
GND Das ist der gemeinsame Bezugspunkt beim Zusammenschalten von Komponenten mit dem Arduino. Man kann ihn sich vereinfacht wie den Minuspol einer Batterie vorstellen.
AREF Die analogen Eingänge nehmen die Digitalisierung in Bezug auf eine bestimmte Spannung vor, standardmäßig 5 V. Man kann aber auch durch eine externe Spannungsreferenz einen anderen Wert vorgeben. Liefert beispielsweise ein Sensor nur eine maximale Spannung von 1 V, würde man bei AREF = 5 V nur ein Fünftel des Wertebereichs (0–205) nutzen. Sinnvoller wäre, AREF mit einer Referenzspannung von 1 V zu speisen.
IOREF Damit signalisiert der Arduino einem Shield, mit welchem Spannungspegel er arbeitet. In der Regel spielt dieser Pin keine Rolle.
Reset Neben dem manuellen Druck auf den Resetkopf kann auch eine externe Schaltung einen Neustart des Arduino auslösen.


Interner Aufbau

Abb. 2: Blockdiagramm des ATmega328P

Der Kern des Arduino ist der Mikrocontroller ATmega328 des Herstellers Atmel. Seine Hauptmerkmale sind

Digitale I/O Pins 14 (6 davon können eine PWM ausgeben)
Analog Input Pins 6 (DIP) or 8 (SMD)
Gleichstrom pro I/O Pin 40 mA
Flash Memory 32 KB
SRAM 2 KB
EEPROM 1 KB

Das Blockschaltbild des ATmega328 in Abb. 2 ist recht umfangreich, denn in dem kleinen IC sind viele Funktionen untergebracht, die früher beispielsweise – abgesehen von der Videoausgabe – als einzelne Komponenten auf den Platinen der Heimcomputer oder auf den Mainboards der ersten PCs verbaut waren. Wenn man sich die einzelnen Blöcke in Ruhe anschaut, ergeben sich aber recht einfach die Zusammenhänge.

Zentrales System ist der 8-Bit-Prozessor (CPU), dem ein Arbeitsspeicher (SRAM) für das Ablegen von temporären Daten und ein Programmspeicher (Flash) zur Seite gestellt sind. Aus dem 32 KByte Flash liest die CPU die einzelnen Befehle des Programms (Sketch) nacheinander ein und führt sie aus. Ein sogenannter Programm Counter hilft ihr, sich die Speicheradresse zu merken, ab der der nächste Befehl dran ist. Wenn die CPU sich zwischendurch mal bestimmte Werte merken muss, legt sie diese in ihren internen Registern oder im 2 KByte großen SRAM ab – der Flash kann nämlich während des Betriebs nicht so ohne Weiteres Daten speichern.

Während das RAM beim Abschalten alle Daten verliert, behält der Flash jedoch sein Programm fest gespeichert wie ein USB-Stick. Um trotzdem auch mal während eines Programmlaufs erzeugte Daten über das Abschalten hinwegzuretten, dient der EEPROM. Das laufende Programm übergibt ihm Daten für die feste Speicherung, auf die es später nach jedem Anschalten wieder zugreifen kann.

Dem aufmerksamen Lesenden wird an dieser Stelle der fundamentale Unterschied zum PC aufgefallen sein: Der PC kopiert seine Programme vor der Ausführung immer in seinen Arbeitsspeicher, um anschließend von dort die Befehle einzulesen. Dieses Konzept nennt sich Von-Neumann-Architektur, benannt nach dem Mathematiker John von Neumann. Das Konzept der getrennten Speicher wie beim ATmega nennt sich hingegen Harvard-Architektur.

Durch die Zuschaltung von Port-Bausteinen (PORT B, C, D) wird der Mikroprozessor zum Mikrocontroller – weil er über die Ports nun seine Umwelt kontrollieren kann. Neben den bereits erwähnten Schnittstellen USART, SPI und I2C (der heißt aus lizenzrechtlichen Gründen bei Atmel allerdings Two Wire Interface, kurz TWI) gibt es noch mehrere Timer und Counter (T/C 0, 1, 2) im ATmega. Sie helfen der CPU, Zeitspannen zu messen, etwa um Ausgänge mikrosekundengenau ein- beziehungsweise auszuschalten oder die Dauer extern anliegender Signale zu messen.
Um die CPU gruppieren sich noch weitere Bausteine, die die zuverlässige Arbeit gewährleisten sollen. Bleibt ein Programm bei seinem Ablauf aus irgendeinem Grund hängen – viele kennen das bereits vom PC – kann der Watchdog den Controller neu starten und somitwieder auf die Spur bringen.

Einen ähnlichen Zweck hat die eingebaute Überwachung der Spannungsversorgung Power Supervision: Sinkt die Spannung unter 4 V, so kann dies die Logik des Controllers durcheinanderbringen, die anschließend unter Umständen mit falschen Daten weiterrechnet. Sicherheitshalber resetted die Überwachung den Controller – und zwar so lange, bis die Versorgungsspannung wieder auf einen für den zuverlässigen Betrieb geeigneten Wert gestiegen ist.

Datenblätter

Weiterführende Links




→ zurück zum Hauptartikel: Arduino UNO