Arduino Nano
Die Arduinos sind eine Serie von sehr populären Mikroprozessor-Boards. Dazu gibt es eine
komplette Programmierumgebung. Eines der kleinsten Mitglieder ist der sogenannte NANO.
Das
Board ist bestückt mit einem Mikroprozessor Atmega328p von
Atmel.
Weiterhin sind ein Spannungsregler, ein USB-Seriell Baustein
und
diverse Kleinteile vorhanden. Für die ersten Versuche muss man das
Board nur an den USB eines PC anstecken und kann loslegen.
Inbetriebnahme
Ganz so einfach ist es dann doch nicht..Zuerst muss auf dem PC der Treiber für die USB-Verbindung installiert werden. Auf meinem "China Clone" sitzt ein IC mit der Bezeichung CH340. Der passende Treiber (für einen CH341!) ist im Internet zu finden.
Andere Nano-Versionen benutzen ein IC der Firma FTDI. Welche man benutzt spielt keine Rolle, funktionieren beide.
Die Arduino-Programmierumgebung gibt's auf den Arduino-Projektseiten. Die muss natürlich ebenfalls installiert werden.
Testprogramm
Im Ardunio-Land heissen die Programme SKETCH. Zum ersten Testen den "Blink"-Sketch laden. Bei Erfolg blinkt die rote LED auf dem
Board im Sekundentakt.
Funktionsgenerator
Zum Spielen habe ich ein kleines Programm
geschrieben. Es ist ein Funktionsgenerator der mir die Signale zum
Testen meiner Ganganzeige liefert.
Hier liegt der Source-Code:
Nano_2.zip
An den Kontaktpins D9 und D6 werden zwei einstellbare Rechteckignale
ausgegeben. Gesteuert wird das ganze per Terminal-Programm.
Für die Frequenzen hat man 2 Optionen:
- Freie Wahl der Frequenz mit "a" und "b.
-
Drehzahl "d" und Gang "g" vorgeben. Die Frequenzen werden dann
automatisch berechnet. Die dabei benutzen Rechenfaktoren werden mit "?"
angezeigt und können mit "!" verändert werden.
Die Frequenzgrenzen liegen, je nach erwarteter Qualität der Signale,
bei mehreren 10kHz.
Cockpitsignale
Der Arduino liefert an seinen Ausgängen 5V Rechtecksignale, bei einem
maximalen Strom von ca. 10mA. Wenn man damit sein digitales Cockpit
testen möchte sind einige Dinge zu beachten.
Die Signalamplitude vom Tachogeber
beträgt (meistens) 5V. Das passt schon mal. Die Tachogeber haben aber
üblicherweise einen Open-Kollektor-Ausgang, d.h. sie schalten
eigentlich den Strom. Der Arduino muss daher die typ. 3 .. 4mA an Strom
nach Masse schalten können. In Serie zum Ausgang sollte noch ein 100
Ohm Widerstand als Sicherheit aufgenommen werden.
Die Drehzahlsignale
haben (meistens) eine Amplitude von 12V. Das wird jetzt ein
bischen knapp, je nach Auslegung der Toleranzen des Cockpits. Im
Zweifel muss eine einfache Transistorstufe, die mit 12V versorgt wird,
nachgeschaltet werden.
Zuletzt sollte man noch darauf achten
in welcher Reihenfolge die Stromversorgungen hochgefahren werden. Der
Arduino wird über USB versorgt, das Cockpit über eine 12V Batterie
(oder ein Netzteil). Eine Art Zwischenstufe (Transistoren) ist daher
immer von Vorteil um Rückwärtsspeisung des Arduino über seine Ausgänge
zu vermeiden.
Arduino Spannungsregler
Der Nano läuft original mit einem LM1117-5.0 bei 5V Betriebsspannung.
Die maximale Eingangsspannung beträgt 20V. Für einen direkten Betrieb
an einem 12V Bordnetz ist das ausreichend, bei Spikes kann es aber
problematisch werden. Es sollte dann unbedingt ein kleiner
Überspannungsschutz hinzugefügt werden.
Ein
Umbau auf 3V ist durch Austausch gegen einen LM1117-3.3 möglich, oder
die Adjust-Variante plus Spannungsteiler. Die Diode für die
USB-Speisung muss dann evtl. entfernt werden. Ebenso gibt es einige
16MHz-Quarze die bei den geringen Spannungen Probleme bekommen.
Notfalls kann man auch die Fusebits auf den internen 8MHz-Oszillator
umschalten.
Der Vorteil ist das man z.B. LCDs mit 3V-Logik direkt ansteuern kann.
Arduino mit WinAVR programmieren
WinAVR ist eine Open Source Entwicklungsumgebung für Atmel Prozessoren. Das letzte Release ist leider schon ein paar Jahre alt aber es gibt immer
noch kleinere Updates. Simpel und stabil und genau das richtige für Kommandozeilen-Freaks die gerne alles unter Kontrolle haben :)
In der vor-Arduino Zeit wurde typischerweise ein AVR-ISP Programmer verwendet um die Programme per ISP-Schnittstelle zu flashen. Mit
einem Arduino kann man dessen Bootlader benutzen und direkt per USB-Kabel (=virtueller COM-Port) und mit Hilfe von "avrdude"
beschreiben. Der entsprechende Eintrag im Make-File hat die folgende
Struktur:
avrdude -v -patmega328p -carduino -PCOMNummer -b57600 -D -V -U flash:w:Programmname.hex:i
Nummer: verwendeter COM-Port
Programmname: das compilierte Programm
Die Bedeutung der sonstigen Parameter findet man in der Avrdude-Beschreibung.
WinAVR-Programm als "Sketch" verwenden
Wer in der Sketch-Umgebung arbeitet, aber die vordefinierte Bibliotheken der Sketch-Umgebung nicht mag und seine (alten?) mit WinAVR
erstellten Programme weiterhin verwenden möchte, kann dies einfach erreichen.
Die Struktur des "ino"-Files mit "setup" und "loop" wird beibehalten. Das "ino"-File sieht beispielhaft so aus:
/* Am Anfang stehen alle includes, Variablen Deklarationen, Defines, Funktionsdeklarationen etc. */
/* aus dem WinAVR-Programm z.B. */
#include <avr/io.h>
uint8_t lauf;
void USART_SendChar(char *Text)
{
Hier stehen die Befehle für die jeweilige Funktion
}
/* In den Abschnitt "setup" kommt alles was einmalig vor dem eigentlichen Programm ablaufen soll */
void setup() {
lauf = 1; // Beispiel
}
/* Im Abschnitt "loop" steht das Hauptprogramm */
void loop()
{
while(lauf < 100){
USART_SendChar(lauf);
lauf++;
}
lauf = 1;
}
Zumindest für relativ einfache Programme sollte das funktionieren. Sobald man aber, beispielsweise, mit speziellen Compiler-Schaltern arbeitet (weil
der Speicher knapp ist oder so) dann muss man das in den "Tiefen" der Arduino-Umgebung anpassen.