Arduino Projekte

In diesem Bereich möchte ich einige Projekte zeigen, die ich mit einem Arduino oder ähnlichem verwirkliche. Nicht alles hat dann mit Modellbau zu tun aber fast.

Hier kann ich dann auch auf einzelheiten eingehen ohne einen Baubericht zu sehr zu stapazieren.

 

für homepage
  1. Rundumlicht
  2. Multiswitch Gefjon
  3. Zeitraffer
  4. Aktive Schlingerkiele
  5. Panzer Steuernug
  6. Erweiterung meiner Fernsteuerung F14 Robbe/Futaba
  7. Grafikdisplay zur Radarsimulation ansteuern
  8. RC-Car Beleuchtung


1. Rundumlicht

Angefangen habe ich mit LEDs. Das ist einfach und fürt schnell zu Ergebnissen. Ein Rundumlicht sollte es sein. Da ich zum ausprobieren nur rote LEDs hatte, besetzte ich den Arduino mit 8 LEDs mit 3mm Durchmesser. Es ging mir nur um die Funktion. Die Größe und Farbe hätte ich sonst anders gewählt.

Eine LED sollte in der mitte immer mit voller Helligkeit leuchten und jeweils eine vor und eine nachher mit ca 30% "Nachglühen". So wollte ich den eindruck eines Warnlichtes oder Rundumlichtes erzeugen. Die LEDs lassen sich mit hilfe eines PWM-Signals hervorragend dimmen.



2. Multiswitch Gefjon

In meinem Baubericht habe ich ja schon einiges zu diesem Projekt geschrieben. Möchte es hier aber mit aufführen um einiges zu vertiefen und genauer zu beschreiben.

Angefangen hat dieses Projekt mit dem Wunsch die 5-6 Beleuchtungsfunktionen des Bootes nicht mehr über die schalter an Deck, sondern über den Sender zu schalten. Da ich keinen Proportionalen Kanal dazu opfern wollte schlossen die fertigen Lösungen die auf dem Markt erhältlich sind, weitestgehend schon mal aus. Der 5. Kanal an meiner Planet T5 sollte zur Verwendung kommen. Dieser ist mit einem Ein/Aus Schalter oben auf dem Gehäuse angebracht. In Reihe zu diesem Schalter brachte ich nun einen Taster an um den Sendestatus des Schalter zu verändern. Ist der Schalter Eingeschaltet kann ich mit dem Taster nun das Signal Unterbrechen. Mit der RC-Reciever Bibliothek von Willie (siehe Link rechtes), lese ich alle 5 Kanäle des Empfängers in einen Arduino Mega 2650 ein.

das schwerste an so einem Programm ist der unterbrechungsfreie Ablauf, das man auch bei Zeitabfragen dem MC nicht ausbremst und andere aufgaben erledigen lässt. Befehle wie delay scheiden damit von vornherein aus.

Das Programm ist in verschiedene bereiche gegliedert. Zuerst werden die Bibliotheken geladen und alle Variablen eingerichtet die man global nutzen möchte. Im Anschluss kommt die Setup Routine in der alle wichtigen Einstellungen und Objekte eingerichtet werden. Aus- und Eingänge werden festgelegt. Dieser bereich wird nur am Start des Arduino durchlaufen. 

Nun folgt die Loop Anweisung und in ihr das eigentliche Programm, welches immer wieder von vorne ausgeführt wird sobald es abgelaufen ist.

Nach der Loop Anweisung folgen sogenannte Funktionen, Unterprogramme die aus der Loop Anweisung aufgerufen werden.

In meinem Programm habe ich in der Loop schleife eigentlich nur eine Empfängerabfrage drin stehen, die die fünf Kanäle überwacht. Sollte sich da am Empfänger etwas tun, wird eine Work-Funktion aufgerufen. Diese wertet die Veränderung aus und springt in die zuständige Funktion wie Kopf bewegen oder Licht schalten oder was auch immer. Das schwierigste an dem Programm war für mich das alle Funktionen parallel arbeiten können müssen. Da sie nicht mit der maximalen Geschwindigkeit ausgeführt werden, also nicht bei jedem Programmdurchlauf, habe ich viele zeitvergleichende Variablen einpflegen müssen. Der milis Befehl war dort unerlässlich.

 



3. Zeitraffer

Eines meiner ersten Projekte mit einem Arduino Nano war der Wunsch meine DSLR über den Controler auszulösen.

Zuerst sollte es dann in einstellbaren Zeitabständen als Zeitraffer programiert werden.

Nach durcharbeiten einiger Foren und Elektronik Katalogen habe ich mich dazu entschieden die Camera mit einem einfachen Transistor dem BC 548 auszulösen. Die Camera hat zum Auslösen drei elektrische Kontakte, von denen einer Masse ist. Das Fokussieren wird geschaltet mit dem ersten Kontakt gegen Masse. Ausgelöst wird dann mit dem Zweiten Kontakt gegen Masse. Wobei der erste Kontakt nicht geschaltet sein muss. Es reicht den Zweiten Kontakt zu schliessen.

das Ergebnis möchte ich Euch nicht vorenthalten.



4. Aktive Schlingerkiele

Ein weiteres Projekt ist für einen Modellbau Kolegen der die Russische Korvette " STEREGUSHIY " nachbauen möchte.

Das Original hat unten am Rumpf zwei aktive Schlingerkiele in form von zwei Flossen. Diese werden wohl zum Ausbalancieren der Korvette genutzt. Da es nun sehr schwer sein dürfte diese über eine RC-Anlage zu steuern, habe ich ihm vorgeschlagen einen kleinen Arduino einzubauen und mit einem GY 521 das ist ein Gyrosensor und Accelerometer zu verbinden. Dieser registriert die Schiffsbewegungen um die Längsachse und merkt sehr schnell wenn das Modell schief im Wasser liegt. Dann kann er zwei Servo ansteuern die die Flossen bewegen und so das Modell wieder aufrichten. Das Funktioniert natürlich nur wenn die Korvette fahrt macht. So zumindest der Plan...
Leider hatte ich den Versuchsaufbau auf dem Breadbord wieder zerlegt, bevor mir die Idee kam, diese Sparte hier einzurichten. Das GY-521 nutzt einen 6050 IMU baustein den man für kleines Geld in Asien bekommen kann. Zum Auslesen werden noch zwei Bibliotheken in der Arduino IDE benötigt, aber das ist auch nicht schlimm einzurichten.

Hier noch schnell ein Link zum Schaltbild des GY-521 : http://playground.arduino.cc/uploads/Main/MPU6050-V1-SCH.jpg

Arduino Nano von oben.
Arduino Nano von oben.

Das ist ein Clone eines Arduino Nano V3.0 aus China. Die Cent-Münze habe ich als Größenvergleich dazugelegt. am oberen Bildrand ist ein mini-USB-Anschluss zu erkennen. Mit diesem wird der Nano mit dem PC zum Programmieren verbunden. 

Dies ist nun die Unterseite des Controllers mit den ganzen Anschlusspins. 

Dieses Board ist zur Verwendung auf sogenannten Breadboard designt worden. Dort lässt es sich leicht aufstecken und weiter verdrahten. Aber ich habe anderes damit vor...

Grundplatte
Grundplatte

Anstatt eines Breadboard nehme ich ne kleine Holzplatte. Ne Lochplatine wäre sicher fachlich besser geeignet, Aber so gehts für einen Prototypen auch.

Die lange Doppelreihe ist für den Arduino, die Querreihe ist für den Sensor und die kleinen oben rechts werden die Anschlüsse für die Servo, sowie Stromversorgung.

Noch ein wenig Hühnerfutter, ein Taster zum einstellen, eine LED zum Status anzeigen, ein 10k Widerstand um den Signalpegel des Tasters auf GND zu ziehen, ein Zweiter Widerstand 220 Ohm zur LED und Optional noch nen L7806CV als Spannungswandler. Je nach Hersteller sollten diese aber mit Keramikkondensatoren betrieben werden um die Spannung zu glätten. In meinem Fall benötige ich einen 0,33uF von GND zum Plus Eingang sowie einen 0,1uF von GND zu Plus Ausgang.

 

Der Gy-521 ist leider noch nicht da aber ich glaube die Anordnung kann man schon sehen.

Ich möchte die Schlingerkiele in Kurvenfahrt ein wenig übersteuern um noch schneller und eventuell auch wendiger zu werden. Dazu muss dann das Ruder-Signal vom Empfänger auf den Arduino durchgeschleift werden. Dazu nutze ich die "RC-Recever" Bibliothek von Willies Word (siehe Link auf der rechten Seite oder links von der Klammer). Dazu gehören dann auch die beiden Bibliotheken "makros.h" und "debug.h". Um die Servos zu steuern benötige ich die "Servo.h" Bibliothek, die mit der Arduino IDE mitinstalliert wird. Um den Beschleunigungssensor nutzen zu können benötige ich noch die Bibliothek für den Sensor "MPU6050_6Axis_MotionApps20.h". Dieser Sensor kommuniziert über die I2C Schnittstelle, was nun wiederum die Bibliotheken "I2Cdev.h" und "Wire.h" auf den Plan bringt. 

 

Das ist schon mal ne ganze Menge.

Die Bibliotheken muss man sich als Programmteile vorstellen die Komplexe Prozesse mit wenigen und eigen definierten Befehlen erweitern können. Das schöne daran ist nun das die Hauptaufgabe, um mit komplexen Sensoren zu arbeiten, schon in diesen Bibliotheken geleistet wurde. So kann man sich auf das Programm konzentrieren.

 

Ein Programm für den Arduino wird Sketch genannt, warum kann ich nicht sagen. Nicht weil ich es nicht darf sondern weil ich es nicht weiß. Geschrieben wird es in einem Dialekt der Sprache C. So kann man es wohl beschreiben. Die Struktur sieht so aus, dass am Anfang die Bibliotheken geladen werden. Zusätzlich werden die globalen Variablen ( Variablen die im Gesamten Sketch genutzt werden) deklariert.

 

#include <Servo.h> 

#include "makros.h"

#include "debug.h"

#include <RCReceive.h>

#include <I2Cdev.h>

#include <MPU6050_6Axis_MotionApps20.h>

#if I2CDEV_IMPLEMENTATION == I2CDEV_ARDUINO_WIRE

    #include <Wire.h>

#endif


//So werden die Bibliotheken eingebunden.

// In einem Sketch werden Kommentare mit zwei Slash eingeleitet.

 

Den ganzen Sketch werde ich hier nicht erklären, aber vielleicht zum Download anbieten. Mal sehen, den Arduino lebt vom selber machen. Sollten Fragen zum Sketch auftauchen so steht mein Kontaktformular jedem offen. Werde mich bemühen alles nach bestem Wissen und Gewissen zu beantworten.

Der Beschleunigungssensor ist da. Gleich ein paar Bilder damit sich auch das Auge erfreuen kann. Es handelt sich hier um ein IMU 6050 Breakoutboard. Gy-521.

Auf der Unterseite ist das Teilchen schön eben, so das es auf eine ebene Fläche aufgelegt werden kann.

An den Arduino schließe ich es mit fünf Kabeln an. Der INT geht an den Pin zwei des Arduinos. VCC geht an den 5 Volt Pin. GND geht natürlich wieder an GND. SDA geht an den Analogen Pin 4 und SCL geht an den Analogen Pin 5.

Soweit alles klar?

Nun kommt die kleine Holzplatte ins Spiel.

Ein kleiner Taster und der GY-521 sind schon Verlötet und aufgeklebt.

Hmm, wo sollen denn die alle hin?

So, fertig gelötet. neben dem GY-521 habe ich den Taster, eine LED, und vier Stecker für Servo und Empfänger an den Arduino angeschlossen. Der Taster ist mit dem einen Pol an 5 Volt plus angeschlossen. der andere Pol ist mit einem 10 K Widerstand an GND sowie an Pin 12 Angelötet. Der Widerstand zieht das Signal auf Pin 12 auf null solange der Taster geschlossen ist. 

Die LED ist an Pin 11 angelötet. Sie hat einen 220 Ohm Vorwiderstand.




An der Steckerleiste ist auf Steckplatz eins der normale Stromanschluss angedacht. es sollte vom BEC kommen und 5 - 6 Volt nicht übersteigen. Wenn ein Extra Akku für dieses System zur Verwendung kommt, müssen die Minuspole der Akkus zusammengeführt werden, da es ansonsten zu Störungen kommen kann. 


Wenn das Schiff nun vorwärts fährt und sich nach links neigt. muss die linke Flosse vorne nach oben gehen und die rechte nach unten. Fährt das Schiff nun rückwärts so muss sich die Bewegung der Flossen umkehren. Also muss der Arduino an den Empfänger angeschlossen werden und das Signal (Kanal)   zum Motor muss an Pin 3 des Arduinos gehen. Das ist mit dem Steckplatz Zwei geschehen. Das Signal zum links rechts Lenken kann später noch an Steckplatz 3 angesteckt werden. Zur Zeit hat es im Programm noch keine Funktion.


Die beiden Servo werden an den Steckplatz vier und fünf angeschlossen. 


Noch ein kleines Video zum Schluss. Wenn das System eingebaut und Funktionstüchtig ist gibt es sicher weitere Bilder und Videos. 

Nach einigen weiteren Überlegungen und Einstellungen musste ich vorerst die Idee mit der Kurven-Voreinstellung verwerfen. Der RC-Kanal wird vorerst für die vor und zurück Fahr Funktion gebraucht.. Der Zweite Interrupt des Nano ist mit dem GY-521 verbunden. Den Flügelausschlag habe ich nun geschwindigkeitsabhängig Programmiert, um ein Übersteuern zu vermeiden.


5. Panzer Steuerung

Mein nächstes Projekt mit einem Arduino wird eine Steuerung für einen Panzer weden. Dazu hat mich mein großer Sohn überredet. Allerdings wird er mich dabei unterstützen müssen (Hä Hä Hä). Das wird sehr Umfangreich und mit einem Arduino Mega 2560 umgesetzt werden. Ich hoffe ich komme damit aus. Zusätzlich werde ich ein Kompassmodul und einen Gyrosensor zur Waffenstabilisierung benötigen. Ein Schrittmotor wird die Turmdrehung antreiben und denselben auf Position halten.

Ebenso soll ein Soundmodul der Firma Beier für einen satten Klang sorgen. Folgende Punkte soll die Steuerung können:

 

  1. Mischfunktion der beiden Kettenantriebe über einen Kreutzknüppel. Vor und zurück.
  2. Ausrollfunktion das der 50T Panzer nicht sofort stehen bleibt. 
  3. Bremsfunktion mit Bremslichtern wenn von Vorwärts in den Rückwärtsgang geschaltet wird.
  4. Turmdrehfunktion mit Waffenrichtsystem über ein Kompassmodul.
  5. Kanone heben senken mit Waffenrichtsystem über Gyrosteuerung
  6. Rohrückzug bei Schuss (schnell zurück und langsam wieder vor).
  7. Leerlauffunktion, das der Panzer auch im Stand Gas geben kann.
  8. Lüftersteuerung für einen Rauchgenerator um den Abgasrauch zu simulieren
  9. Klangsteuerung über Beier Soundmodul.
  10. Lichtersteuerung soweit nötig.
  11. Komandanten in der Luke bewegen, wenn es denn noch geht...

Damit haben wir schon mal eine umfangreiche Sammlung an Aufgaben mit denen wir uns in der nächsten Zeit beschäftigen können. Anfangen werden wir mit der Mischfunktion zur Kettensteuerung. Um möglichst viele Motoren mit dieser Steuerung ansprechen zu können werden wir von dem Arduino aus ein im Modellbau übliches PWM-Signal erzeugen mit dem wir zwei Fahtenregler auch Drehzahlsteller genannt ansprechen werden. Das hält den Preis gering und mann kann Motoren seiner Wahl einbauen. Ob Brushless oder eine 480er Bürste ist dann eine Frage der zwischengeschalteten Regler und des persönlichen Geschmack bzw. Geldbeutel.

Um mit dem Projekt zu starten habe ich ein L298N an meinen Arduino Nano, also vorerst noch den Kleinen, angeschlossen. Der L298N ist ein kleiner Motor-Treiber der zwei Motoren bis 2A ansteuern kann.

Ebenso habe ich die Kanäle des Empfänger für vor und zurück, sowie links und rechts in den kleinen Nano verdrahtet. Zwei kleine Motoren habe ich an den L298N angeschlossen welcher für die Drehzahl der Motoren zuständig ist. der Nano sagt ihm dann was ich über den Sender von den Motoren will.  Eine LED habe ich an Pin 11 angesetzt die vorerst das Soundmodul Simulieren muss. Je heller sie leuchtet desto Schneller der Motor. Nach diesem ersten Versuchsaufbau habe ich mir dann auch gleich ein erstes Programm geschrieben. 

Im Einschaltzustand des Nano ist die Motorsteuerung, LED (Soundmodul) aus. Der Empfänger ist aktiv. Wenn ich den links rechts Hebel nun kurz nach links bewege schaltet der Motor ein (Die LED als Soundmodul), die tatsächlichen Motoren werden noch nicht eingeschaltet. Nun kann man schön im Leerlauf mit dem Gas und Sound spielen. Erst wenn ich ein weiteres mal den Hebel nach links bewege werden die Motoren zugeschaltet und ich kann mit dem vor und zurück Hebel fahren, wobei beide Ketten mit einem Hebel gesteuert werden. Eine Entsprechende Mischfunktion habe ich mir auf dem Arduino geschrieben. Soweit läuft das ganze schon recht vielversprechend auch wenn das eine oder andere natürlich alles noch angepasst werden muss.

Arduino Mega 2560 R3 Clone der Firma SainSmart

Den Arduino Mega 2560 R3 Clone der Firma SainSmart habe ich schon mal zu Testzwecken aus einem anderen Versuchsaufbau gelöst.

Der Motortreiber L298N, weiß nicht wer auf diese Nummern kommt. 

Es handelt sich um eine doppelte H-Brücke die den Betrieb von zwei Gleichstrommotoren mit jeweils zwei Ampere unabhängig voneinander steuern kann. Bis ich zur weiteren Verwendung stärkere Fahrtenregler von meinem Sohn für dieses Projekt bekomme werde ich sie Stellvertretend nutzen um die Funktion zu simulieren. 

In kleineren Modellen mag es ja auch durchaus sinnvolle Anwendungen für die kleinen Treiber geben. Vielleicht für eine Kran Steuerung oder... 

Da kommen schon die nächsten Projekte angelaufen...

Einige Bauteile habe ich Euch schon gezeigt, andere sind noch auf der Straße unterwegs zu mir...

So auch ein Magnetometer HMC 5883L welches ich als Kompass nutzen möchte. Wofür genau werde ich später beschreiben. Ebenso ist ein Schrittmotor 17PM-K031-02V  bestellt, der den Turm drehen soll. Als Testfahrzeug hat mein Sohn mir eine seiner Eigenentwicklungen zur Verfügung gestellt. Mut hat er ja...

Bis zur Messe in Neumünster am 01.03.2015 soll das Panzerchen nun mit einer auf Arduino basierenden Steuerung ausgestattet sein.

Zwei kleine Fahrtenregler benötigen wir auch noch...


Da die EIgenentwicklung noch nicht abgeschlossen ist geht die Erprobung ohne Lackierung los.



Schützenpanzer K4 von Nordwerk
Nordwerk K4 Schützenpanzer
K4 im Testlauf mit einer anderen Steuerung
K4 im Testlauf mit einer anderen Steuerung

Frisch gereinigt geht es auf in die Werkstatt (Schreibtisch) während Felix die Servo an der Kanone einbaut, Rohrrückzug und Rohr heben senken, fange ich damit an den Empfänger mit dem Arduino Mega zu verdrahten. Dazu habe ich in jeder Leitung einen kleinen 100 Ohm Widerstand eingespannt. Der Empfänger kann mit 6 Volt arbeiten und das könnte dem Dino nicht bekommen. Der Widerstand bremst die Spannung ein wenig. Fünf Kanäle werde ich auf diese weise einlesen. Einen zweiten kleinen Arduino Nano werde ich im Turm implementieren. Um die Waffenstabilisierung umzusetzen. Dazu werden zwei Breakout Boards mittels I2C Protokoll angeschlossen. Das erste habe ich schon oben bei den Schlingerkielen beschrieben und ist ein GY-521  und das zweite wird der HMC 5883L sein.  

An Pin 13 ist eine LED fest verbaut, Die soll zuerst einmal den Motorsound simulieren. An Pin 24 habe ich eine LED für den Mündungsblitz angeschlossen. An Pin 11 ist das Servo für den Rohrrückzug verbaut. Wichtig ist die gemeinsame Masse der Komponenten. An meiner F14 sind zwei Kreutzknüppel und zwei Schieberegler Verbaut und so hat sie sechs Kanäle.

Fünf davon werden nun von dem Mega eingelesen und ich habe ein Programm geschrieben mit dem ich die Fahrmotoren über den L298n mit einem Kreutzknüppel ansteuern kann. Mit dem selben Knüppel kann ich den Motor ein und ausschalten sowie in den Leerlauf. mit dem Schieberegler habe ich ein Signal zum schießen einprogrammiert. Dieses regelt nun den Rohrrückzug mit Mündungsblitz. Alle Funktionen beeinflussen sich dabei gegenseitig nicht, was das Programmieren dann so richtig interessant macht. Wäre doch doof wenn der Panzer zum schießen  anhalten würde, oder der Rohrrückzug stehenbleibt weil man Gas gibt.

Heute hat es mal wieder ein Päckchen gegeben, in dem zwei kleine Schrittmotoren zu finden waren.

Ein neues Spielzeug hat somit den weg auf meinen Basteltisch gefunden. Es sind zwei Mineba 17PM-K031-02V. Natürlich konnte ich es nicht aushalten und habe gleich einen Arduino Nano mit einem L298N verbunden. Ein Testprogramm habe ich mir schnell aus dem Netz gezogen und schon brummt der Motor fleißig hin und her. Der Motor hat einen Schrittwinkel von 1.8° was 200 Schritte auf eine Umdrehung ergibt. Zur Steuerung des Turmes scheint es mir genug zu sein. ein Haltemoment von 20 Ncm sollten auch ausreichen um dem kleinen Panzer das Drehen beizubringen. Die Ansteuerung funktioniert als Bipolarer Motor und wird mit vier Leitungen angeschlossen. Ein Anschlußschema sowie ein Beispielprogamm findet ihr auf DIESER Seite.

Mit den Nächsten Bildern wird es noch ein paar Tage dauern bis es was vorzeigbares zu sehen gibt. Bis über beide Ohren stecke ich in den Programmen.

Der aktuelle Stand:

Fünf Signale werden vom Empfänger eingelesen.

Der Mischer für die Antriebsmotoren ist programmiert.

Der Motor kann gestartet werden und im Leerlauf aufgedreht werden.

Fahrfunktion ist zuschaltbar programmiert. 

Wegen Überlagerung einiger spezieller Pins wird ein zweiter Arduino diesmal ein Nano benötigt.

Kommunikation der Beiden ist über die Serial hergestellt mit 115200 Baudrate.

Schußfunktion mit Mündungsblitz und Rohrrückzug ist programmiert.

Programmstrucktur ist für die Turmdrehfunktion sowie teile der Waffenstabilisierung vorbereitet und mit einem Servo getestet.

Der Schrittmotor ist bei schnellem Anlaufen mit dem Turmgewicht überfordert. Nun überlege ich ob ich da eine Anlauframpe sowie eine Abbremsrampe schreibe oder eine andere Treiberkarte für den Schrittmotor besorge?

Da ich soetwas noch nie gemacht habe werde ich mich in den nächsten Tagen erst mal schlau machen.


So, da nun einige Tage vergangen sind habe ich auch wieder Neues zu berichten. Das Problem mit den Schrittmotoren habe ich in den Griff bekommen indem ich die Beschleunigung des Motor in eine Liste in einem Array gespeichert habe. Das Funktioniert ganz gut und ich bin damit schon sehr zufrieden. Wer darüber weitere Informationen haben möchte darf sich gerne bei mir melden.


Inzwischen ist auch der Kompass bei mir eingetroffen. Der HMC5883L ist ein empfindliches kleines Bauteil, das ich natürlich sofort anschließen musste. Das Test-Programm war auch schnell aufgespielt, und die Rohdaten des Moduls flimmerten über meinen Bildschirm. Begeisterung setzte bei mir ein, aber leider nur kurz. Wie schon so oft in der Arduino-Welt, musste ich feststellen das es doch immer wieder neue Herausforderungen zu erarbeiten gilt. 

Die Rohdaten müssen natürlich in werte übersetzt werden mit denen ich dann auch was anfangen kann. Dazu gibt es einiges an Hilfe im Netz. Eine Lösung war schnell gefunden. 

Bei der anzeige der Winkel wurde dann schnell klar das es weitere Probleme zu geben scheint. Denn der Kompass weicht durch drehen aus der Wagerechten, vom Kurs ab.


Kurzer Erklärungsversuch dazu:

Da die Magnetstrahlen des Erdmagnetfeldes nicht parallel zur Oberfläch verlaufen, werden die Rohdaten der drei Achsen des Sensors bei jeder Drehung alle verändert. Aus diesen Rohdaten wird nun aber der Winkel zum Magnetfeld berechnet.

ist der Winkel des Sensors nun nicht in Wage entstehen Meßfehler. Diese müssen nun rausgerechnet werden. Dazu werde ich wohl den Winkel des Sensores benötigen. Den wiederum könnte ich mit dem Gyrosensor ermitteln. Nun ist der aber im Turm zu verbauen und der Kompass in der Wanne des  Panzers. Dreht sich nun der Turm ändert sich die Zuständigkeit der Achsen zwischen Gyro und Kompass. Irgendwie muss ich auch das mit einberechnen. Mir raucht jetzt schon der Kopf.


 

Die kleinen Nema 17 Motoren. 1,8 ° Schrittwinkel ergeben auf 200 Schritte einen Vollkreis.

Der HMC 5883L Kompass ist sehr empfindlich und eine Herausforderung für mich. Hoffe ich zeige mich dem gewachsen.

Der verkabelte Motortreiber L298N. Im v

Versuchsaufbau sieht das alles sehr chaotisch aus. Das mag an meiner Arbeitsweise liegen.

Der Mega mit seinen zahlreichen Anschlussmöglichkeiten ist mitten im Chaos. 

Damit der Mega durch das Empfängersignal keinen Schaden nimmt hab ich die Eingänge mit einem Widerstand gedrosselt.

Nach einigem ausprobieren und bin ich der Überzeugung das die Sache mit dem Kompass zu umfangreich wird um mit dem Dino die Bewegungen fließend zu halten. Die komplexen Berechnungen und Sensor-Abfragen werden schon einiges an Rechenleistung fordern. Zudem wächst mir die Sache so langsam über den Kopf.

Der Schrittmotor benötigt eine Anfahrrampe, und Ruckelt bei langsamer Drehung merklich. Das ist nicht wirklich gefällig. 


So habe ich kurzerhand den Schrittmotor gegen einen Standart Modellbauservo getauscht. Den Servo habe ich so umgebaut, dass das Poti nicht mehr mitgedreht wird. Der Endanschlag an den Zahnrädern im Getriebe des Servo habe ich auch rausgefeilt. Nun kann der Servo endlos drehen und ist feinfühlig steuerbar. Genau richtig als Turmdrehlager. Den Kompass habe ich erst einmal beiseite gelegt, da ich mehr Magnetfelder im Panzer habe als Zahlen die ich persönlich kenne. Nun habe ich versucht den Gyrosensor im Turm unterzubringen. Platz ist da, aber durch die Gegendrehbewegungen wenn der Panzer dreht, schaukeln sich die Bewegungen auf und der Turm zittert nur noch. Also musste der Gyro in die Panzerwanne und zwar mittig unter dem Turmdrehpunkt. Nun sieht das schon richtig gut aus, so das ich euch in der nächsten Woche ein Video machen kann. Zur Stabilisierung der Kanone werde ich einen Zweiten Gyro in den Turm einbauen. Das wäre nicht zwingend erforderlich, stellt aber für mich zur Zeit den leichteren Weg da. Einiges an Rechenanforderung weniger und ich muss den Drehwinkel des Turmes nicht messen. Da mir so langsam die Zeit wegläuft muss ich das etwas kompensieren. Das Soundmodul wird nicht rechtzeitig hier sein. So lass ich diese Programmierung erstmal aus. Das kann ich dann immer noch einfügen. Ein Rauchmodul, wird vorerst noch nicht verbaut. Auch das kommt Später. So hat sich mein Projekt wieder einmal etwas geändert.

Einen  Nano und einen Gyrosensor werde ich in den Turm mehr einbauen. Sound und Rauch fallen vorerst weg. Die Signale zum Turmdrehen und Kanone Heben und Senken werden parallel vom Arduino Mega und den jeweilig zuständigen Arduino Nano eingelesen. Damit fällt die Verbindung der Arduinos über die Serial Schnittstelle weg. Was die Programme beschleunigen dürfte. 

Die offene Panzerwanne nur mit Akku und Getriebe
Noch eine Woche und es geht an den Einbau.

So langsam wird es eng und die Zeit läuft mir davon. Deswegen beginne ich nun mit dem Einbau der Elektronik. Dazu habe ich ein paar Bilder gemacht, damit die Seite schön Bunt aussieht. Der Akku sitzt in seiner Halterung und der Mega 2560 sucht seinen Platz.

Kabelsalat
Dieses Gewusel soll seinen Platz finden.

Diese Komponenten möchte ich heute noch sinnvoll in den Panzer verbauen. Dazu müssen sämtliche Kabel angepasst werden damit man einigermaßen den Überblick behalten kann.

Nach einer kleinen Erholungspause soll es nun mit dem Bericht weiter gehen. Da die bestellten Fahrtenregler auf sich warten lassen und nicht rechtzeitig eingetroffen sind, habe ich zwei Modellschiffe um ihre Antriebe gebracht. Nun begann der Kampf gegen die Uhrzeit. Die Regler eingebaut, Arduinos rein, Kabel ranglühen und Programme aufspielen.

Erster Test bringt große Ernüchterung. Beim Gas geben dreht der Turm...

Lange Fehlersuche bringt schlussendlich einen Masse-Fehler zu Tage. Dann gehts weiter. Die Nacht vor der Messe wird Durchprogrammiert, damit die einzeln getesteten Komponenten auch zusammen arbeiten können. Bis vier Uhr in der Nacht ist dann alles geschafft. Nur testen geht um diese Zeit nicht mehr, sonst wäre ich die längste Zeit verheiratet gewesen. Also auf gut Glück. Den Lappi habe ich zum nachbessern mitgenommen.

Ein erstes Fazit:

Die Ansteuerung der Fahrtenregler ist stark Verbesserungswürdig. Das Modell ist so kaum zu beherrschen.  Die Schalterbelegung an der Funke hat gut funktioniert und ist schlüssig. Die Waffenstabilisierung dreht den Turm noch ein wenig zu weit bei hoher Drehgeschwindigkeit, doch lässt sich da noch einiges Nachprogrammieren, so daß ich da zuversichtlich bin, das in kürze beheben zu können.

Nach diesem Schema habe ich die Signale meiner F14 ausgewertet und auf die Steuerung übertragen.

6. Erweiterung meiner Fernsteuerung

Da ich in den letzten Tagen immer öfter zu diesem Projekt Anfragen bekomme habe ich mich dazu entschlossen diesen Bericht noch mal zu überarbeiten. Dazu werde ich sicher einige Wochen brauchen, doch dafür sollte das dann nachvollziehbar sein was ich hier gebastelt habe.

Zuerst aber noch eine Wichtige Sache. Soweit ich informiert bin gibt es zwei, bald drei Versionen der F14. Die ersten die auf den Markt kamen waren die 7 Kanal Versionen. Dabei ist es unwichtig ob alle Kanäle belegt sind. Die 8 Kanal Funke kam dann etwas Später raus und ich hatte gelesen das die F14 neu aufgelegt werden soll von dem Nachfolger der Firma Fobbe/Futaba. Dieses Projekt, welches ich hier vorstelle funktioniert ausschließlich mit der 8 Kanal Version. Die 7 Kanal arbeitet zur Signalerzeugung intern mit einer anderen Spannung. Also Vorsicht und erst einmal prüfen ob der richtige Sender vorliegt. 

 

Meine Fernsteuerung, eine F14 von Robbe soll mit einem Arduino Nano erweitert werden. So wie ich die Fernbedienung bekommen habe hat sie 8 Kanäle von denen 6 belegt sind. Vier sind mit Kreuzknüppeln belegt und zwei Schieberegler sind in der Mitte eingebaut. Angefangen hat das ganze mit der Idee einen Taster oder Schalter nachzurüsten. Im Original sind die Schalter nicht gerade in meiner Preisklasse untergebracht so das ich im Netz nach günstigeren Lösungen suchte. Dabei stolperte ich über Nautig Module mit zig Schaltern und dachte mir das wäre schön...

Auf irgendeiner Seite fand ich dann den Tip wie man sich einen Propotionalen Kanal mit einem Potentiometer und einem Widerstand selber Bauen konnte. Von dem Moment an keimte in mir die Idee einen Arduino zu nutzen. Irgendwie sollte es doch möglich sein damit die Spannung, die zum erzeugen des Sendersignals notwendig ist, zu beeinflussen. Die Lösung war dann denkbar einfach. ich habe sie mittels eines Digitalen Potentiometers gelöst. Ein MCP 42010 2Kanal 10K Poti kam zum Einsatz. Das löst in 8 Bit auf und hat somit 256 Schaltstuffen. Da der Arduino das Sendersignal ebenfalls in 8 Bit auflöst sollte das zusammen passen. Den Richtigen Punkt um die Spannung abzugreifen, die der Arduino benötigt, werde ich als erstes suchen. 

Den Pluspol habe ich schnell gefunden. an der Stelle wo das rote Kabel angelötet ist, war ein Umschalter eingebaut um von 2,4 GHz auf 40 MHz umzuschalten.

Diesen benötige ich eigentlich nicht, weil ich keine 40 MHz Empfänger mehr habe. Somit ist meine Stomversorgung des Dino gefunden. 

Auf diesem Bild ist nun der Arduino Nano mit dem MCP 42010 zu sehen. Ich habe beide Kanäle des Digitalen Potentiometers auf die F14 gelegt. Damit sind die Kanäle 7 und 8 belegt.


Alles findet seinen Platz. Da an dem Kleinen Dino nicht genügend Pin vorhanden sind um alle 16 freien Plätze mit Schaltern zu belegen habe ich die Kabel erst einmal mit in den Kanal gelegt. Mir fehlen 3 Pin. Um das in den Griff zu bekommen habe ich mir zwei Portexpander bestellt. Es sind NXP PCF8574 / PCF8574AP. 8 Bit I/O Erweiterung. Diese kleinen Helfer liefern über die I2C Schnittstelle 8 weitere Pin.

Sie werden in den nächsten Tagen wohl hier eintreffen.

Eindeutig zu viel Kabel...

Aber ohne ist das auch irgendwie nix.

 

Der erste Schalter ist verbaut.

Die F14 wartet auf die Schalter
Die F14 wartet auf die Schalter

So weiter gehts, Die Portexpander sind geliefert. Die Kabel für die Schalter verlegt und erste Testprogramme laufen in Einzelteilen schon recht gut. Zum testen werde ich den Empfänger erst einmal an einen zweiten Arduino Nano anschließen und mit einem LCD-Display verbinden. Dieses Display hat 16 Zeichen und 2 Zeilen. Die Schalter werde ich mit den Ziffern des Display abgleichen, so kann ich sehen ob der geschaltete Empfang mit dem Schalter überein stimmt. Mehr kommt an den Zweiten Arduino nicht ran. Den ersten habe ich so in den Sender eingebaut, dass die USB-Buchse seitlich am Gehäuse zugänglich ist. So kann ich den Sender an den Rechner anschließen ohne ihn öffnen zu müssen. 


Den Portexpander habe ich inzwischen auf eine kleine Lochraster-Platine gelötet und mit dem Nano verbunden. Pinbelegungen findet ihr hierzu genügend im Netz. Probleme hat mir nur die Adresse des PCF- Bausteins gemacht. Dem Problem bin ich dann mit einem I2C Scanner zuleibe gerückt. der hat die Adresse sofort gefunden. 

Nachdem die Schalter nun auch eingetroffen sind, wurden sie auch gleich verbaut. Das sieht schon toll aus, aber funktionieren tut da nichts

Nachdem nun einige Zeit des Probierens ins Land gezogen ist, kann ich nun berichten das es bei mir Funktioniert. über die art der Funktion werde ich in kürze berichten. Auch werde ich noch ein Video dazu einstellen. Auf zu weiteren Projekten...


Kleine Materialliste:

  • F14 8 Kanal
  • 2 Arduino Nano v3
  • 16 Schalter (Taster gehen auch)
  • 1 MCP 42010
  • 1 PCF  8574
  • 2 Widerstände 81 Kilo Ohm
  • Div. kleine Kabel
  • etwas Lochraster Platine

Ein Breadboard und ein LCD 1602 sind beim Aufbau und in der Testfase gute Helfer, bis man die Erweiterung am laufen hat. 

Einen Verdrahtungsplan habe ich mal versucht zu Zeichnen. Da ich nicht vom Fach bin hoffe ich das er dennoch verständlich ist.

Verdrahtung in der Funke
Verdrahtung in der Funke

7. Grafikdisplay zur Radarsimulation

In meinem offenen Fahrerstand meiner Gefjon, habe ich mir gedacht , würde sich ein Monitor mit einem Radar doch sehr gut machen. Es ist gut einsehbar und in dem Maßstab von 1:10 lässt sich dann ja auch was erkennen. Zudem muss ich meinen Hauptdarstellern mal ein wenig techniches Spielzeug zukommen lassen, Damit sie nicht auf dumme Gedanken kommen.

Zuerst einmal die Komponenten. Einen Arduino Nano, brauche ich wohl nicht mehr vorstellen. Ein 0.96" OLED Grafikdisplay mit 128 mal 64 Bildpunkten soll als Monitor dienen. Die Anzeigefläche ist dann ca 26mm mal 14mm groß. Die Platiene selber ist 27mm mal 27mm Groß.

Der Euro hat keine andere Funkion als ein Größenvergleich. 

Oben sieht man die vier Anschlüsse mit denen das Display über die I2C-Schnittstelle angesprochen wird.  VCC ist die Plus Versorgung. 

GND ist Masse oder minus.

SCL ist mit Pin analog 5 verbunden

SDA mit Pin analog 4.

Noch ein kurzer Blick auf die Rückseite.


So sieht das im Betrieb aus.

Ein Video werde ich in eingebautem Zustand später eintellen. Vorab nur ei paar Bilder

Um die Anzeige in betrieb zu nehmen sind vier Bibliotheken nötig. das sind die 

  1. SPI.h
  2. Wire.h
  3. Adafruit_GFX.h
  4. Adafruit_SSD1306.h

SPI und Wire ist nötig für die Kommunikation mit dem Display und die beiden Adafruit sind für die Grafik-Sprache da.

Um mich einzuarbeiten habe ich das Demoprogramm von Ardafruit genommen und soweit abgeändert das es für mich passt. Die Anzeigen auf der linken Seite wie RPM und Temperatur sind zur Zeit nur als Platzhalter eingefügt und nicht mit Echtzeit Daten hinterlegt. Mit den entsprechenden Sensoren ließe sich dies aber leicht ändern, mal sehen was mir beim Einbau noch so alles einfällt.

Die Hintergrundkarte ist ein Bitmap aus 64 X 62  Punkten. Die frei gestaltet werden kann, dazu muss leider in dem Arduino-Code eine Array-Variable angelegt werden die die Bitwerte enthält. Das sieht dann so aus:


B00010100,B11110001,B11001100...usw.


wobei jede 0 für dunkel und jede 1 für hell steht.


Das ganze Display lässt sich auch im invertierten Modus betreiben, dann sind alle hellen Stellen dunkel und anders rum. Gefällt mir persönlich nicht so gut.

So zum Abschluss noch ein kleines Video, auf dem die Funktion besser zusehen ist.


Es ist wieder einige Zeit ins Land gegangen und ich habe dieses kleine Modul ein wenig erweitert.

Zum ersten habe ich einen kleinen Spannungsteiler aus zwei Widerständen (10K und 4,7K) zusammengelötet. Der Teilt mir die Akkuspannung im Verhältnis der Widerstände zueinander auf. So kann ich an einem Analogen Pin der bis 5V Gleichspannung messen kann, ohne Schaden zu nehmen, eine Spannung bis 14,7V messen. Dieser gemessene Wert wird auf dem Display unter Volt angezeigt. 


Einen Linearen Temperatursensor habe ich auch an den Arduino angeschlossen. Es handelt sich hierbei um den LM35dz welcher in der Lage ist Temperaturen bis 100° Celsius zu messen. Den Sensor habe ich für den Motor eingeplant. Das kleine Bauteil ist ein einfacher Temperaturabhängiger Widerstand. Je wärmer es wird desto geringer ist der Widerstand.Um nun die Temperatur zu messen wird das Bauteil mit Plus 5V und GND verbunden. Der Messpin wird an einen Analogen Eingang angeschlossen. Da der Arduino das Eingangssignal auf 1024 werte auflöst, müssen die 5v Spannungsbereich des Einganges entsprechend umgerechnet werden. Dazu habe ich folgende Formel benutzt:


   (5.0 * Temp * 100.0) / 1024


Vier mal messe ich diesen Wert und rechne die Ergebnisse zusammen. Anschließend teile ich diesen wert durch vier und erhalte so einen Durchschnittswert. Natürlich wird dieser dann auch auf dem Display unter Temp angegeben.

Die Karte habe ich auch ein wenig modifiziert. so gefällt es mir noch besser.

Damit es so richtig zur Geltung kommt, habe ich das Display von der Platine gelöst und im Fahrstand meiner Gefjon eingefräst. Es steht dort jetzt wie ein TFT-Monitor und sieht in der Dämmerung so richtig klasse aus.

Ein Einbaubeispiel in der Seaway Condor. Dieses Modell ist nicht meines sonder gehört Herrn Haller. Das Bild durfte ich auf meiner Seite zeigen und freue mich, Das meine Ideen auch bei anderen Modellbauern anklang finden.

8. RC-Car Beleuchtung.

Ein weiteres Projekt entsteht. Da ich mir ein 1:10 Tamiya TT02 Cassis gekauft habe und ich natürlich nicht einfach so durch die Landschaft fahren möchte, habe ich mir gedacht ein kleines Arduino Projekt daraus zu machen. Ich möchte eine einfache Beleuchtung nachbauen und entweder über die Funke oder automatisch schalten lassen. Das möchte ich dann umschalten können. Die Beleuchtung werde ich mit LEDs machen, weil die so schön robust und Stromsparend sind.

Geplant ist:

 

  1.  Standlicht.
  2.  Abblendlicht.
  3.  Fernlicht
  4.  Blinker
  5.  Rücklicht
  6.  Bremslicht
  7.  Nummernschild Beleuchtung

 

Die Punkte 1. bis 3. werden alle mit den zwei weißen LEDs vorne umgesetz. Die werden dann entsprechend mit einer PWM gedimmt. Dazu später mehr.

 

 

Eine erste Matterialliste:

 

  • 1 Spannungsregler L7805CV
  • 1 Kondensator Keramik 0.33 µF
  • 1 Kondensator Keramik 1 µF
  • 1 LDR (Fotoelektrischer Widersand)
  • 1 Widerstand 100K
  • 6 Widerstände 10K
  • 11 Widerstände  220 Ohm
  • 6 Transistoren BC548 NPN
  • 2 Super helle LED weiß
  • 4 LEDs gelb
  • 2 LEDs rot
  • 2 LED rot heller
  • 1 LED weiß
  • 1 Schalter (an/aus)
  • 1 Arduino Nano.
  • Div. Steckbrücken.
Einzelne Bauteile
Ein grober Überblick der einzelteile

Ich beginne das Projekt auf einem Steckbrett zusammen zu stecken. Die Stromversorgung vom Akku (ein 2s Lipo 7.4V) kommt oben an. Dann habe ich den Spannungsregler L7805cv eingesteckt. Von Plus 7.4V eine Steckbrücke zu dem Eingang des L7805. Den Minus Pol habe ich mit dem unteren Minus Pol verbunden und dann eine Seckbrücke zu dem Masse Pol gesteckt. Der Plus Ausgang wurde dann mit der unteren Plus Leiung auf dem Steckbrett verbunden. Zum glätten der Spannung kommt ein Keramik Kondensator mit 0.33 µF zwischen Minus und Plus Eingang (7.4V) und ein Kondensator mit 1 µF zwischen Masse und Ausgang (5V). Soweit alles klar? 

Die Werte der Kondensatoren können je nach Hersteller des L7805 anders sein. Um sicher zu gehen hilft ein Blick in das Technische Merkblatt des jeweiligen Herstellers.

 

 

 

Der Spannungsregler L7805cv mit den beiden Kondensatoren
Der Spannungsregler L7805cv mit den beiden Kondensatoren

Um das Licht gegebenen Falles auch automatisch einschalten zu lassen, also von der Helligkeit abhängig, möchte ich einen Fotoelektrischen Widerstand verwenden. Diese werden mit LDR abgekürzt, was aus dem englischen kommt und Light Dependent Resistor heißt. Je mehr Licht auf diesen Widerstand fällt, um so geringer wird der elektrische Widerstand. Diesen werden wir an einem Analogen Pin des Arduino messen, der die 5v Spannung in 1024 Schritte unterteilt und somit 0.39V Spannungsunterschiede des LDR messen kann. Damit kann man dann sehr genau eine Helligkeitsstufe festlegen zu der man sein Licht einschalten lassen kann.

Der eingesteckte LDR, dahinter sieht man den Spannungsregler
Der eingesteckte LDR, dahinter sieht man den Spannungsregler

Der LDR wird nun an der Plus 5V leitung angeschlossen und geht auf eine Klemmleiste des Steckbrettes. von diesem stecke ich eine Steckbrücke zu einem Analogen Pin am Arduino, ich denke ich nehme den A7. Ebenfalls kommt von diesem Pin ein 100k Pulldown Widerstand zum minus Pol. 

Mein bisheriger Aufbau in Fritzing (meine ersten Schritte in dem Programm)
Mein bisheriger Aufbau in Fritzing (meine ersten Schritte in dem Programm)

Da ich den Arduino Stromtechnisch nicht überlasten möchte, werde ich die LEDs über Transistoren an und aus schalten. Man könnte auch Relais nehmen, aber Transistoren haben in dieser Anwendung den Vorteil der Geschwindigkeit und sie schalten für unsere Ohren lautlos. Einem Transistor macht es nichts aus einige tausend male in der Sekunde zu schalten.

Dies brauchen wir um die LEDs zu dimmen.

Ich verwende BC548 einen NPN Transistor. Der ist an wenn an der Basis eine geringe Spannung anliegt. Damit habe ich die meisten Bauteile erfasst.

ich habe nicht alle LED verdrahtet eingezeichnet weil das auch so schon sehr unübersichtlich ist
ich habe nicht alle LED verdrahtet eingezeichnet weil das auch so schon sehr unübersichtlich ist

So, nun muss ich das alles auf dem Steckbrett nachbauen. Dann gehts ans Programmieren und ausprobieren.

Das Steckbrett wird mir nun zu klein, Die LEDs habe ich deshalb in der richtigen Anordnung auf ein A4 Blatt geklebt. Alles ist verkabelt und der Sketch entsteht. Einen Schaltplan zu dem Versuchsaufbau habe ich mit einer menge Unterstützung der Arduino Deutschland Gruppe auf fb zustande gebracht. Diesen möchte ich euch nicht vorenthalten.

Schaltplan Versuchsaufbau
Schaltplan Versuchsaufbau

Einige Links

Auch wenn sie rechts stehen, so bleiben es doch Links!

Harrislee

Besucher seit 01.12.2016