Steuergerät für den Schubstangenmotor mit Arduino
|
|
Für die Motorsteuerung wird auch Arduino verwendet. Eine genauere Ausrichtung der Antenne ist jetzt möglich, weil man mit höherer Präzision ihre Position ermitteln kann. Die erste Version beinhaltete einen analogen Accelerometer, einen digitalen Kompass und ein Motor Drive Shield. Nach einem Elektronikbrand wegen eines falsch programmierten Motor Shields ist nun die zweite Version entstanden. Hierfür ist ein 10DOF GY80 zum Einsatz gekommen. Damit sind einige Probleme der vorherigen Version gelöst. Weil der Eisen- und damit magnetisch beeinflussende Anteil an dem bisher verwendeten Platz zu hoch ist, war die nötige und seit langem geplante Soft- und Hard Iron Compenssation sehr schwierig. Wenn man auf zuverlässige Headings Wert legt, sollte der HMC5883L soweit wie möglich entfernt von magnetischen Metallen eingebaut werden.
|
|
Aktuelle Bewegungshistorie (PHP)
|
|
|
Antenne Online Steuerung
|
|
|
Erste Version
|
ADXL335 Accelerometer
Es handelt sich um einen analogen Accelerometer, der an den Arduino ADC angeschlossen werden muss. Damit werden alle Achsenwerte nur mit 8 Bit Auflösung gelesen. Das ergibt eine kleine Ungenauigkeit in den Werten, deswegen wird diese durch den MPU-6050 ersetzt. Ausreichende Information für seine Beschaltung findet man auf der Seite http://www.electronicsblog.net/simple-angle-meter-using-adxl335-accelerometer-arduino/
|
|
HMC5883L Digitale Kompass
|
Auf der Seite https://www.loveelectronics.co.uk/Tutorials/8/hmc5883l-tutorial-and-arduino-library findet man ein sehr interessantes Tutorial. Dieser Sensor wird an die I2C Schnittstelle von Arduino angeschlossen und bietet eine ausreichende Genauigkeit. Voraussetzung für eine praktische Verwendung der Daten ist die nötige Kompensation für Neigung und hard iron. Bei Neigung stimmen die Werte ohne Kompensation nicht mehr und ab einem bestimmten Winkel lassen sich die Daten nicht mehr verwenden.
Die sogenannte “Hard Iron Compenssation” ist immer notwendig, wenn der Sensor sich in der Nähe vom Eisen befindet und diese Position sich nicht großartig ändern soll. Drei Offsets werden ermittelt und immer berücksichtigt bei der Berechnung der aktuellen Position.
|
|
L298N Motor Drive
|
Die Bewegung der Antenne lässt sich damit per Software regeln. Der Motor wird an den dafür vorgesehenen Pins verbunden, die je nach eingestellter Richtung die entsprechende Spannung und Polarisation aus der ausreichend dimensionierten Spannungsquelle bekommen. Mit dem passenden Processing Sketch wird die Ausrichtung der Antenne grafisch und genau (aber nicht genauer als der Accelerometer Sensor ermöglicht) gemacht.
|
|
Ciseco XRF Radio Xbee (Antenne Seite) + Ciseco URF Radio USB (PC Seite)
Das XRF Radio Übertragungsmodul wandelt ohne weiteres eine herkömmliche serielle Verbindung in eine kabellose Verbindung mit einer Reichweite von 3 km. Dieses wird auf der Seite „Antenne“ mit Arduino verbunden, bekommt wie gewöhnlich einen COM Port zugewiesen und dient dadurch als Sender sowie Empfänger. Das passende Teil auf der Seite „PC“ ist das UHF Modul, welches gleich arbeitet und direkt am PC per USB angeschlossen wird. Kaufen kann man beide bei http://shop.ciseco.co.uk/xrf-wireless-rf-radio-uart-rs232-serial-data-module-xbee-shape-arduino-pic-etc/ . Für eine OnAirProgramming ist die aktive Version erforderlich, wobei sich mit wenigen Widerständen, Kondensatoren und zwei kleinen LEDs einfach die passive in die aktive Version umwandeln lässt.
|
|
Abbildung 1: Screenshot vom Processing Sketch für die Kommunikation mit den Sensoren
|
|
|
Processing Sketch
|
Arduino Sketch
|
|
|
|
Zweite Version
|
Erweiterungen mit einem 10DOF GY-80 und einer Infrarot Fernbedienung
Die Anschaffung eines GY-80 hat mit enormen Aufwand mehr Auflösung gebracht. Jetzt sind Magnetometer und Accelerometer digital, allerdings ist bei der Programmierung klar geworden, dass das Ganze nichts ohne eine richtige Kalibrierung bringt. Verbunden wird der GY-80 am I2C Port mittels der SCL und SDA Pins. Mit dem GY-80 hat man auch einen Gyrometer (ohne Verwendung hier), Temperatur- und Luftdruck Sensor.
Die IR Fernbedienung ist nur gedacht, um bequem die Position der Antenne zu variieren. Da die mit dem Infrarot Sensor gelieferte kleine Fernbedienung genügend Tasten hat, lässt sich ihre Funktion beliebig erweitern.
|
|
ADXL345 Accelerometer
Die Benutzung ist absolut unkompliziert, allerdings ist zu beachten, dass die zu verwendende Library keine Offset-Werte beinhaltet, die für jemand anders gedacht waren. Also lieber ADXL345.cpp öffnen und schauen, wie der Code aussieht. Es gibt mathematische Verfahren, um die geeigneten Offset-Werte zu bestimmen aber ein wenig herumprobieren an diesen Werten kann in wenigen Minuten ein zufriedenstellendes Ergebnis liefern. Für die gedachte Anwendung hier als Neigungssensor war es ausreichend, die richtige Neigung bei 0°, 45° und 90° zu bekommen. An diesen Offset Werten wurde nach und nach angefangen mit (0,0,0) die verschiedene Achsen mit +1 oder -1 auszuprobieren. Jede Veränderung wurde wieder bei 0°, 45° und 90° ausprobiert und die besten Ergebnisse kamen mit (7,4,0).
|
|
HMC5883L Magnetometer
Dieser und vermutlich alle Magnetometer sind eine Wissenschaft für sich. Ohne Kalibrierung bekommt man nie richtige Ergebnisse und wie weit man mit der Kalibrierung geht, hängt von der vorgesehenen Anwendung ab. Es gibt genug Informationsquellen im Internet über Soft- und Hard Iron Calibration, dass es nicht sinnvoll ist, hier irgendwas zu erklären. Das erste, was man herausfinden muss, ist, unter welchem Einfluss das eigene Magnetometer steht und dann dementsprechend kalibrieren. Zusätzlich sind die verschiedenen möglichen Lagen und Ausrichtungen des Sensors zu überlegen, wodurch eine Neigungskompensation erforderlich sein kann (die berechneten Headings sind nur im besten Fall bei einer liegenden Position des Chips richtig). Welche Kalibrierung- und Kompensierungsmethode für die Antenne benutzt wurden, ist auf der Seite Kalibrierung des HMC5883L beschrieben.
Bedingt durch die Schwierigkeiten bei der Kalibrierung durfte der Sensor nicht mehr an seiner ursprünglichen Position eingebaut werden. Der Neigungs-Offset zwischen Antenne ALT und Sensor ALT wird berücksichtigt.
|
|
Info LED’s
Damit die Funktion des Gerätes nach Einbau zumindest grob überwacht werden kann, sind 4 LED’s eingebaut, die nach einem festgelegten Code je nach Aktivität unterschiedlich blinken bzw. leuchten. Mit der passenden Processing Applikation kann man Befehle senden, die zu der gewünschten Bewegung der Antenne führen.
Als Unterstützung für den Einbau des Gerätes an der Antenne ist das Blinken der grünen LED programmiert. Beabsichtigt wurde hier, eine Information darüber zu geben, wie viel seitlich geneigt (roll Winkel) das Gerät ist. Unter optimalen Bedingungen bei einer azimutalen Montierung ist bei der Veränderung der Altitude der Antenne nur eine Veränderung des Neigungswinkels (Pitch) zu erwarten, während der seitliche Neigungswinkel 0 bleibt (siehe Bild).
|
|
Abbildung 2: Variation von Pitch und Roll Winkel mit Veränderung der Lage
|
Die Frequenz des grünen LEDs beim Blinken ist proportional zum Neigungswinkel. Ist das Gerät 100% gerade, blinkt das LED nicht mehr und leuchtet ununterbrochen.
|
LED
|
Blink
|
Bedeutung
|
|
|
|
|
|
WAITING: Arduino ist bereit und wartet auf Befehle
|
|
|
|
|
|
UP: Antenne hoch
|
|
|
|
|
|
DOWN: Antenne runter
|
|
|
|
|
|
WISHED ANGLE: Gewünschte Altitud empfangen. Zum einstellen muss Antenne hoch.
|
|
|
|
|
|
WISHED ANGLE: Gewünschte Altitud empfangen. Zum einstellen muss Antenne runter.
|
|
|
|
|
X
|
ROLL > 0.5°. Frequenz vom Roll direkt proportional abhängig.
|
|
|
|
Infrarot Schnittstelle
Fast die gleichen Befehle, die in der Processing Applikation vorhanden sind, wurden für die Infrarot Fernbedienung implementiert. Hiermit ist zusätzlich möglich, eine Veränderung in dem konfigurierten Antennen- ALT Offset zu realisieren. Anbei die Tastenbelegung und Reaktion:
|

|
Taste
|
Funktion
|
-
|
DOWN: runter
|
+
|
UP: hoch
|

|
STOP
|

|
Reset Inputs
|
     
|
Offset = 20,50°
|
     
|
GoTo ALT 50,20°
|
|
|
|
Processing und Arduino Sketches
|
|
Abbildung 3: Processing Sketch fürs Motorsteuerungsgerät. Für die Bewegung der dargestellten Antenne ist 180° (Süden) der Richtungsvektor, der aus der Seite in Richtung des Ablesers rauskommt. Für den einfach dargestellten Kompass gekennzeichnet mit SOUTH ist Süden ganz unten.
|

|

|
Arduino Sketch
|
Processing Sketch
|
|
|
|
|
|