Käufliche Arduino-Boards haben ihre Vorteile: man packt sie aus, schaltet sie ein und alles läuft. Kommt man beim Basteln auf die nächste Stufe - der Implementation eigener Schaltungen mit dem Arduino - dann muss man sich Gedanken machen, welche Schaltelemente man wirklich braucht.

 

Minimalkonfiguration mit Quarz oder Resonator

Arduino-Boards werden meist mit einem Resonator bestückt, welcher aber wesentlich ungenauer ist als ein Quarz. Zudem ist ein Resonator schwer erhältlich und auch noch teurer (etwa 1€, Quarz 0,20€). Ich habe auf dem Breadboard beide Taktgeber erprobt, am ATMega328P-Chip muss keine Fuse verändert werden. Hier der Schaltplan:

Minimalkonfiguration Arduino

Die Takterzeugung kann über den Quarz Q1/C1/C2 oder alternativ den Resonator Q2 erfolgen. Das Resetglied besteht aus einem Pullup-Widerstand R1 und einem nach Ground schaltenden Taster S1. Die Abblockkondenstaoren C3 und C4 (Keramik 100nF) dienen der Entstörung der Schaltung. Die Stiftleiste K1 hat eine Pinbelegung, welche für einen FTDI-Basic-Adapter passt. Die Schaltung kann auf einem kleinen Breadboard aufgebaut werden:

Aufbau auf dem Breadboard

Auf der Stiftleiste ist der FTDI-Adapter aufgesteckt, der über USB mit dem PC verbunden wird. Hier ist der Testaufbau mit dem Quarz Q1 und den Kondensatoren C1/C2 zu sehen.

Spannungsversorgung 3,3V oder 5V

Die Standard-Spannungsversorgung für einen UNO beträgt 5,0 Volt. Mit einem Standard-FTDI-Adapter wird die Schaltung mit dieser Spannung beliefert (GND und Vcc):

FTDI-Adapter 5Volt

Neuere Modelle (wie im Bild gezeigt) haben die Möglichkeit die Versorgungsspannung per Jumper zwischen 3,3 V und 5V zu setzen. Hier die Jumperstellung für 3,3V

 Jumperstellung 3,3V

Auf der Platine sind die Spannungen aufgedruckt. Wenn der Jumper wie im Bild links gesetzt ist, wird das Breadboard mit 3,3V versorgt. Abhängig von der Versorgungsspannung werden auch die Logikpegel der Ein- und Ausgänge mit umgeschaltet. Unsere Minimalschaltung läuft bei beiden Spannungen, da der ATMega328P ab 1,8V funktioniert. Die 16MHz sind bei 3,3V etwas über der Spezifikation, aber es funktioniert gut, wie man an den JeeNodes unter http://jeelabs.net/projects/cafe/wiki/FAQ.

Info Man sollte die 3,3V-Versorgung in Betrachtung ziehen, weil sehr viele Sensoren nur mit diesem Spannungspegel funktionieren und man sich dann Pegelanpaßschaltungen sparen kann!

Zu betonen ist, dass man bei 3,3V die Fuses umprogrammieren muß, damit der Brownout-Pegel herabgesetzt wird. Diese Anleitung folgt später.

 

Bootloader auf den ATMega328 brennen

Der Microcontroller ist am günstigsten, wenn man ihn ohne Bootloader bezieht. Allerdings benötigt man dann ein Programmiergerät:

Programmiergerät

Den USBtinyISP gibt es bei Ebay schon für etwa 11 € inkl. Versand. Zuerst sollte man den Treiber herunterladen unter http://www.ladyada.net/make/usbtinyisp/download.html und in ein Unterverzeichnis auf dem PC kopieren. Jetzt steckt man den Programmer mit dem USB-Kabel an und gibt bei der Treibersuche des Betriebssystems das eben erstellte Verzeichnis an. Nach dem Laden des Treibers kann man im Gerätemanager des Windows-PC nachsehen, ob er ordentlich installiert ist:

USBtinyISP-  Installierter Treiber

Der Programmer wird jetzt wieder abgesteckt. Für das Programmieren des Bootloaders habe ich einen Arduino UNO verwendet, dessen Original-Chip entfernt und durch einen leeren Chip ersetzt wurde. Programmer und UNO werden über das mitgelieferte 6-polige Flachbandkabel des Programmers verbunden:

Programmer und UNO-Board verbinden

Dabei ist unbedingt auf das richtige Einstecken des Kabels zu achten: Am Programmer und am UNO befindet sich die farblich markierte Kabelader oben! Mit einem USB-Kabel wird der Programmer am PC angesteckt. Dabei werden Programmer und UNO mit Strom versorgt. Jetzt ist die Arduino-IDE (hier 1.02) zu öffnen und über das Menü der richtige Programmertyp auszuwählen:

Einstellen des Programmers

Der serielle Port muss nicht eingestellt werden (anders als bei der normalen Programmierung eines Sketches). Man kann jetzt direkt den Bootloader brennen:

Bootloader brennen

In der Statuszeile der IDE erscheint während des etwa 3 Minuten dauernden Vorgangs die Meldung:

Statusmeldiung

Sollte beim Brennen etwas schiefgehen (z.B. Checksum-Error beim Verify) , erscheint eine Meldung. Ich habe dann den Bootloader dann nochmals gebrannt und alles war OK. Da wir vorher beim Boardtyp den UNO ausgewählt hatten, wurde auch dessen Bootloader installiert. Dieser ist sehr ausgereift und klein (OptiBoot), bietet uns also die beste Möglichkeit.

Jetzt wird der Programmer abgesteckt und der programmierte Chip kann aus dem UNO entnommen und ins Breadboard eingesteckt werden.

 

Programme aufs Breadboard laden

Jetzt wird der FTDI-Adapter auf das Breadboard gesteckt und per USB mit dem PC verbunden:

Aufbau auf dem Breadboard

Nach Anstecken des USB-Kabels wird die komplette Schaltung mit Strom versorgt. In der IDE wird jetzt ein passendes Testprogramm "ShowInfo.ino" geladen (http://playground.arduino.cc/Main/ShowInfo). Jetzt wird das Board in der IDE eingestellt:

Board einstellen

Hier wird für das Breadboard der Boardtyp UNO ausgewählt, weil wir auch dessen Bootlader programmiert hatten. Als serielle Schnittstelle wird diejenge des FTDI-Adapters eingestellt:

Schnittstelle auswählen

Das Programm kann wie gewohnt hochgeladen werden:

Upload starten

Nach ein paar Sekunden erhalten wir die Meldung

Upload abgeschlossen

und öffnen des Serial Monitor (9600 Baud). Das Programm ShowInfo.ino zeigt das Bedienmenü an:

ShowInfo

Mit "i" und <CR> wird die Arduino-Info angezeigt:

ShowInfo

Dabei sind auch die Fuse- und Lockbits zu sehen. Mit dem Menüpunkt "s" und <CR> wird die Verarbeitungsgeschwindigkeit angezeigt, in diesem Fall 16 MHz:

ShowInfo

Die rot markierten Einträge zeigen die sehr lange Verarbeitungsdauer einiger Arduino-Befehle an, welche per Software emuliert werden. Divisionen sind sehr langsam, ebenfalls String-Zahlenwandlungen. 

Mit Diesem Programm sehen wir, dass unser Breadboard und der UNO-Bootloader einwandfrei funktionieren.