Arduino Projekte

Im folgenden werde ich einige Projekte präsentieren die auf dem Arduino basieren. Diese Microcontroler sind einfach zu Programmieren und kostengünstig. Einige Möglichkeiten dies im Modellbau zu nutzen werde ich hier präsentieren. Weiterhin werde ich die Schaltpläne und den Programmcode im Downloadbereich bereitstellen. Um zu erklären was ein Arduino eigentlich ist werde ich zuerst auf diese kleinen Steuercomputer eingehen.


Der Arduino
Vor einiger Zeit habe ich angefangen mich für die Arduino-Familie zu interessieren. Hierbei handelt es sich um programmierbare Steuerungen, sogenannte Microcontroler. Diese kann man als fertig aufgebaute Schaltungen, Bausatz oder in Einzelteilen kaufen, aber dazu später mehr.
Das Besondere an diesen Microcontrolern ist das man Sie einfach über USB an einen Computer anschließen kann, es ist kein zusätzliches -kostspieliges- Programmiergerät nötig. Weiterhin gibt es für die Programmierung eine Kostenlose Software, die Arduino IDE. Die Programmierung erfolgt mit einer vereinfachten Version der Programmiersprache C und wird durch sogenannte Biliotheken weiter vereinfacht. Die Bibliotheken funktionieren indem man Sie am Anfang des Programmes lädt und sie dann komplexe Programmieraufgaben auf einige wenige Befehle reduzieren. Als Beispiel sei die Servo Bibliothek genannt, mit ihr muss Mann sich keine Gedanken machen wie man die jeweils nötigen Impulse mit den nötigen Zeiten erzeugt sondern dem Programm nur sagen an welchem Ausgang der Servo hängt und auf welchen Wert er gestellt werden soll.
Ein weiterer Pluspunkt ist das die Arduino-Familie ein Open-Source Projekt ist. Das heißt das die gesamten Schaltpläne und die Programme der Bootloader kostenlos und öffentlich sind. Der Bootloader ist das Programm das auf dem Microcontroler vorhanden sein muß damit man ihn über USB programmieren kann. Somit kann man sich seinen eigenen Arduino auch selber für die entsprechende Aufgabe Maßgeschneidert bauen. Eine weitere Folge der Open-Source Politik ist das es eine Vielzahl von Anbietern gibt was die Preise für fertige Arduinos recht niedrig hält.
Für den Einsteiger ist besonders hervorzuheben das es zu den Arduinos eine Unmenge an Tutorials im Internet gibt und es in unzähligen Foren Hilfe und zum Teil fertig programmierte Problemlösungen gibt. Also einfach ausprobieren und keine Angst, Programmieren ist einfacher als man denkt!

 


Blinklichtsteuerung

 

Aufgebaute Blaulichtschaltung

Aufgebaute Blaulichtschaltung

Rückseite Aufgebaute Blinklichtschaltung

Rückseite Aufgebaute Blinklichtschaltung

Ein Vereinskollege hat mich vor kurzem angesprochen ob ich ihm nicht eine Schaltung machen kann die für sein neues Projekt die “Blaulichter” mit einem “doppelblink” Signal versorgen kann. Mache ich natürlich gerne, das Blaulicht soll aktiviert werden wenn ein Anschluss auf Masse (Minuspol) gelegt wird. Weiterhin haben wir besprochen das die Blinkgeschwindigkeit und Helligkeit einstellbar sein sollen. Schlussendlich soll es noch eine Option geben das die angeschlossenen LED’s nicht im nur Gleichtakt sondern auch im Wechsel blinken können. Betrieben wird das ganze dann an 2s LiPo’s also 7,4V. Das Programm war recht schnell geschrieben und basiert darauf bestimmte Ausgänge des Arduinos mit einer Pause dazwischen ein und auszuschalten.

Da die Ausgänge des Arduinos genug Leistung haben um eine LED mit Strom zu versorgen und die Ausgangsspannung mit 5V auch gut für den Betrieb einer LED mit Vorwiederstand geeignet ist kann die LED hier direkt angeschlossen werden.

Die Steuerung der Helligkeit habe ich umgesetzt indem ich für die LED’s Ausgänge gewählt habe die PWM beherrschen. Das bedeutet das der Arduino diese Sehr Schnell ein und ausschalten kann. Das Zeiterhältnis zwischen dem eingeschalteten und dem ausgeschalteten Zustand definiert in diesem Fall die Helligkeit. Da dieses Schalten sehr schnell erfolgt nimmt das Auge es nicht als flackern war sondern als Wechsel der Helligkeit. Durch einen an einem Eingang angeschlossenen variablen Widerstand (Potentiometer ) lese ich einen Wert aus der dann die PWM und somit die Helligkeit der LED’s steuert.

Um die Pausenlängen und somit die Blinkgeschwindigkeit variabel zu gestalten habe ich einen weiteren Anschluss als Eingang definiert und ebenfalls ein Potentiometer angeschlossen welches den Wert definiert mit dem die Pausen zwischen den Schaltvorgängen definiert werden. Man muss hierbei beachten das man, um Potentiometer mit dem Arduino Auslesen zu können einen Analogen Anschluss des Arduino wählen muss. Wenn man hier den Schleifer (meist der mittlere Anschluss) anlötet und die anderen beiden Anschlüsse an +5V und gnd vom Arduino anschließt kann der Arduino die Spannung und somit die Position des Potischleifers auslesen (bei Interesse nach Infos zum Spannungsteiler suchen) und in einen Zahlenwert umwandeln.

Nachdem ich alles zusammengelötet und Programmiert habe freut sich nun der Vereinskollege (hoffentlich) über seine Steuerung.

 

(Vorsicht! Ich hatte keine Zeit ein kurzes Video zu Planen, daher habe ich spontan ein langes gedreht)


Blaulichtsteuerung mit “drehenden” Blaulicht und Radarantrieb per Mikroschrittmotor

Dieses Projekt gehört eigentlich an den Anfang, da ich noch vor der “Blinksteuerung” damit angefangen habe. Da es aber ungleich komplexer ist bin ich hier noch in der Entwicklungsarbeit. Betrachten wir zuerst einmal die Funktionen die Ausgeführt werden sollen:

– es sollen mehrere Blaulichter wahlweise als “drehendes” oder blinkendes Licht dargestellt werden.

– die Helligkeit, Blink- und “Dreh-” geschwindigkeit soll einstellbar sein

-es soll ein “Radargerät” mit einstellbarer vorbildgetreuer Geschwindigkeit betrieben werden.

– Zur Steuerung stehen zwei Anschlüsse zur Verfügung die jeweils ferngesteuert auf Masse geschaltet werden können.

Erstmal Planen

Was wie umsetzen
Als erstes habe ich mir Gedanken gemacht wie ich drei Funktionen am besten mit 2 “Schaltern” kontrollieren kann. Dies löse ich indem ich eine Steuerleitung dem Radar zuweise, somit kann man dieses unabhängig ein und ausschalten. Für den Wechsel zwischen den Funktionen des Blaulichtes habe ich mir überlegt das per Software definiert werden soll das nach jedem aus und einschalten der Funktion der Modus gewechselt werden soll. Das heißt wenn ich z.B. blinken will und Drehen habe muss ich das Blaulicht nur per Fernbedienung aus und wieder einschalten. Die Einstellung der Veränderbaren Werte nehme ich wie beim vorig beschriebenen Projekt mit Potentiometern vor.

Hardware
Um die oben beschriebenen Funktionen umzusetzen muss ich erst einmal festlegen welche Bauteile ich wie zusammenstellen muss.

Der Mikroprozessor:
Basieren wird das Ganze auf dem Arduino nano Pro. Das Pro bedeutet das die Platine keinen eigenen USB Anschluss hat, stattdessen wird eine entsprechende Platine über ein mehrpoliges Kabel an Lötpads angeschlossen. Da ich den USB Anschluss nur beim Programmieren benötige ist der Mehraufwand zu verschmerzen. Später im Boot kann der eingesparte Platz für die USB-Buchse von Vorteil sein.

Arduino Mini Pro

Arduino Mini Pro

Steuereingänge:
Für das Schalten der Eingänge möchte ich Interrupts verwenden. Der Vorteil ist das ein angesprochener Interrupt das laufende Programm unterbricht um eine programmierte Funktion sofort auszuführen bevor das eigentliche Programm fortgesetzt wird. Man muss also nicht Warten das ein bestimmter Eingang abgefragt wird um eine Funktion zu aktivieren. Dies ist gerade bei Programmen die eine Vielzahl von Pausen in Ihrem Ablauf haben von Vorteil.

Entprellen:
Da die Interrupts über einen Wechsel des Schaltzustandes gesteuert werden sollen und man nie weiß was für ein “Schalter” den Eingang steuern wird sollte er entprellt werden. Gerade Mechanische Schalter neigen zum Prellen, das heißt das das Signal in Wirklichkeit nicht einfach von ein zu aus wechselt sondern über einen sehr kurzen Zeitraum mehrfach hin- und her- schwankt. Da unser Mikrokontroler mehrere Millionen Wechsel des Schaltzustandes in der Sekunde wahrnehmen kann würde er unter Umständen einen Schaltvorgängen als 3 oder mehr Zustandswechsel interpretieren. Daher benutzt man eine Schaltung die aus dem Schwingenden Signal einen stabilen Wechsel macht. Eine Möglichkeit hierfür ist die folgende Schaltung, hier wird ein Kondensator über einen Widerstand geladen bis er eine Bestimmte Mindestspannung erreicht und dann einen nachgeschalteten Verstärker dazu bringt ein Sauberes Signal zu erzeugen. Das verzögert die Ausführung zwar minimal, diese Verzögerung ist jedoch für unsere Anwendung nicht wahrnehmbar.

Entprellung durch Schmidttrigger und Kondensator

Entprellung durch Schmidttrigger und Kondensator

LED-Steuerung
Da ich bei dieses Projekt sehr viele Ein und Ausgänge braucht und ich 6-8 LED schalten möchte habe ich hier einen IC eingesetzt welcher mit wenigen Anschlüssen ein seriell -also nacheinander über eine Leitung gegebenes- Signal in ein Paralleles -die Signale liegen gleichzeitig auf jeweils einer eigenen Leitung- umsetzt. Weiterhin kann ich eine Funktion des IC -Output enable (Ausgang einschalten)- nutzen um gleichzeitig alle LEDs über ein PWM Signal zu dimmen. Von diesen IC kann man auch beliebig viele hintereinanderschalten, die Anzahl der Steuerbaren Eingänge ist somit nur durch die Zeit begrenzt die man zur Verfügung hat um das Signal seriell an die Hintereinander geschalteten ICs zu übertragen. Man könnte problemlos 16 ICs in Reihe schalten und so 128 Funktionen einzeln Kontrollieren, bei so etwas wie der Lichtsteuerung am Modell würde die Zeitverzögerung nicht weiter Auffallen.

LED-Treiber:
Da ich an jedem Kanal im 4 LEDs anschließen möchte reicht die Ausgangsleistung meines IC genauso wenig wie es die Ausgangsleistung des Arduinos würde. Um die Leistung zu erhöhen werde ich in jedem Kanal einen Transistor verwenden der vom schwachen Strom des IC angesteuert wird und dann die Leistung für die Ausgänge bereitstellt.

Transistoren als Treiber (Verstärker)für die LEDs

Transistoren als Treiber (Verstärker)für die LEDs

Radarantrieb ansteuern:
Der hier verwendete Motor ist ein Schrittmotor mit 4 Anschlüssen. Der Nachteil ist das es nicht reicht eine Gleichspannung anzulegen, die zwei Windungen des Schrittmotors müssen immer im Wechsel eingeschaltet werden damit der Motor sich dreht. Die besorgt ein sogenannter Schrittmotortreiber. Die von mir gewählte Variante beherrscht auch den sogenannten Mikroschritt betrieb, das bedeutet das der Motor durch einen technischen Trick nicht von einer Position zur nächsten springt -also einen Schritt ausführt- sondern nur einen Teil dieser Bewegung. Im Falle des von mir verwendeten —- kann man ihn auf 1/16 schrittbetrieb einstellen indem man die entsprechenden Anschlüsse auf Masse legt. Weiterhin benötigt der Treiber an Steuersignalen nur ein Signal das die Drehrichtung vorgibt und ein Signal das ihn mit jedem Impuls einem (Mikro-)Schritt ausführen lässt. Da die von mir verwendeten Kleinstschrittmotoren eine Schrittweite von 20 grad (1/18 Kreis) haben und ich je 16 Mikroschritte ausführen will benötige ich 288 Impulse um eine Drehung des Radars durchzuführen. Da diese Drehung in ca. 1 Sekunde ausgeführt werden soll brauche ich am Signaleingang der Treiberstufe eine Frequenz von 288 “Schwingungen” pro Sekunde also 288 Hz (gesprochen Hertz). Da ich die Drehgeschwindigkeit einstellbar machen will werde ich diese Frequenz über eine Poti von 144Hz (1/2 Umdrehung pro Sekunde) bis 576 Hz (2 Umdrehungen pro Sekunde) einstellbar machen. Für Schrittmotore mit anderen Schrittweiten müsste man dann die entsprechenden Werte im Programm anpassen.

Schrittmotortreiber A4988

Schrittmotortreiber A4988

Erster Schaltungsaufbau und Programmierung:

Die Schaltung wurde dann Schritt für schritt auf einem sogenannten Breadboard aufgebaut. Dies ist ein Gehäuse das über eine Vielzahl an kleinen Einsteckmöglichkeiten für Bauteile verfügt die immer in einem bestimmten Muster miteinander verbunden sind. Hierdurch kann man schnell und ohne löten Schaltungen aufbauen und anpassen bis alles wie gewünscht funktioniert.

img_3531

An dieser Breadboardschaltung habe ich dann auch das Programm Schritt für schritt Entwickelt und getestet. So kann man immer gleich prüfen ob das Programmierte auch in der Schaltung funktioniert. Gegebenenfalls kann man dann das Programm oder die Schaltung relativ leicht anpassen um die gewünschte Funktion zu erreichen.

Der erste Prototyp:

Den ersten Prototyp habe ich auf einer Lochrasterplatiene erstellt, dies macht den Aufbau recht schnell und einfach aber auch recht klobig. Dieser Prototyp reicht jedoch um die Funktion in der Praxis zu testen und eventuell erst bei der Anwendung auftretende Probleme zu finden bevor man evtl. den Aufwand macht eine Geätzte Platine zu fertigen oder fertigen zu lassen.

Aufgebauter Prototyp

Aufgebauter Prototyp

fortsetzung Folgt…

Schreibe einen Kommentar