Dienstag, 3. Dezember 2013

Arduino L-Band Radioteleskop

Ein einfaches Amateur Radioteleskop mit dem MEGA2560

Die Radioastronomie ermöglicht jedem Astronomie begeisterten sein Hobby auch unter Sonnenlicht und vor allem mit schlechtem Wetter zu genießen. Mit diesem Hintergrund und bedingt durch eine unheimlich große Zuneigung für elektronische Bastelei haben wir den Bau unseres Radioteleskops vor einigen Jahren angefangen. Blockdiagramm: 
Bild 1: Blockdiagramm des Radioteleskops


Motorsteuerung                                                                           

Bild 2: Processing Sketch für die Steuerung des Motors

Diese besteht aus einem MEGA2560 verbunden mit einem Gy-80. Eine kurze Beschreibung über das komplette 10DOF System:

ADXL345 Accelerometer (Teil des Gy-80)

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  (Teil des Gy-80)

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.
Bild 3: Nicht kalibrierte Magnetometer Daten

Bild 4: Kalibrierte Magnetometer Daten


Bedingt durch die Schwierigkeiten bei der Kalibrierung durfte der Sensor nicht an seiner ursprünglichen Position eingebaut werden (in der Mitte unter dem Parabolschüssel) . Das Gehäuse liegt am Rahmen der Antenne weit entfernt vom Mast. Der Neigung-Offset zwischen Antenne ALT und Sensor ALT wird berücksichtigt.

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.

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.
Bild 5: Pitch und Roll Winkel

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). 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.

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. Information über Tastenbelegung und Reaktion hier: Motorsteuerung.

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. Es scheint aber dieses nicht mit dem MEGA2560 möglich zu sein.

Code 

Arduino und Processing Sketches können am Ende der Seite Motorsteuerung heruntergeladen werden. 





Receiver                                                                                         

An einer gut 5m entfernten wettergeschützten Stelle befindet sich der Zwischenfrequenzverstärker,  der logarithmische Detektor (am unveränderten DC-Board - für Verstärkung und Integration - angeschlossen) und zum Schluss Arduino als Schnittstelle zwischen dem System und dem Rechner.

Die Entwicklung der eigenen Software ist mit Arduino und Processing für Datenbeschaffung sowie Darstellung sehr einfach, vorausgesetzt man kennt die C++ Programmiersprache. Jedes Arduino Board bietet einen AD Wandler, der im Grunde genommen für die Digitalisierung der Daten aus dem Detektor, Temperatursensor, usw. in gewissen Maßen ausreicht. Arduin Mega2560 besitzt einige analoge Inputs mit 8 Bit Auflösung. Die Frage ist immer, reicht die Auflösung oder will man mehr. Das System ist einfach erweiterbar mit einem externen AD Wandler, wie zum Beispiel MCP3428.

Externer AD-Wandler als Erweiterung für Arduino

Der MCP3428 hat 4 Kanäle und eine Auflösung von 16 Bit. MCP3424 hat aber eine Auflösung von 18 Bit, nur leider kam diese Erkenntnis zu spät, denn die ICs waren schon bestellt. Was aus meiner Sicht diesen Chip so interessant macht, ist, mit welcher Leichtigkeit man ihn einbauen kann. Mit dieser Erweiterung können Signale mit extrem kleinen Veränderungen an den externen ADC angeschlossen werden und der Rest an den Arduino analogen Eingängen.

In unserem System sind 4 unterschiedliche Datenquellen vorhanden (Siehe Link HF Elektronik für L-Band Radioteleskop):
  • Logarithmischer Detektor 
  • Ausgang vom DC Board für die DC Verstärkung und Integration des Ausgangs des logarithmischen Detektors
  • Spannungswert aus dem Temperatursensor
  • Platine für die Verstärkung der Temperatur

Externer DA-Wandler als Erweiterung für Arduino

Die ganze Arbeit, um das vorherige System durch Arduino zu ersetzen, hatte als Hauptgrund das Ziel, eine softwaregesteuerte Anpassung/Modifikation vom Signal des Detektors zu machen, um eine temperaturabhängige Kompensation zu realisieren. Die natürliche Veränderung der Signal Baseline ist klar, je kälter desto höher, da die Kälte für eine stärkere LNA Verstärkung sorgt. Einen entsprechender Offset kann per Software berechnet und mittel der analogen Ausgänge und einem Operationsverstärker-Addierer zu dem Detektor Signal  addiert werden. Die Auflösung der analogen Ausgänge ist leider auch etwas niedrig (8 Bit) und in der gleichen Art wie mit dem ADC ist das System hier mit einem externen DA Wandler erweiterbar. Ausgesucht haben wir den MCP4922 mit zwei Ausgängen, denn wer weiß, ob man einen zweiten gebrauchen kann. Arduino und Processing Code kann unten heruntergeladen werden.

Software Defined Radio

Das gesplittete Antennensignal wird mit der günstigen Software Defined Radio (SDR) DVBT Stick analysiert. Damit ist es möglich, den Frequenzbereich zwischen 1420 und 1422 MHz zu untersuchen. Da das ursprüngliches Signal von 1420-1422 MHz durch den Downconverter auf 28 bis 30 MHz runterkonvertiert wird und der Stick erst ab 62 MHz empfindlich wird, müssen wir dieses Signal einmal hochkonvertieren mit einem UpConverter. Nach der UpConversion findet man die gesuchten Frequenzen bei Freq+100 MHz, das heisst, was vorher bei 28-30 MHz war, ist jetzt bei 128-130 MHz. Beides, Stick und UpConverter, sind bei Amazon oder direkt auf der Seite von NooElec zu finden. 

Darstellung 

Processing dient uns als Mittel für die Datenaufzeichnung für alle mit Arduino digitalisierten und verarbeiteten Daten. Die Daten werden mit gnuplot dargestellt.
Bild 6: Beispiel einer Aufzeichnung mit Arduino

Die Darstellung der mit dem SDR-Stick aufgezeichnete Daten erfolgt durch Windows Batch Scripts und gnuplot. 
Bild 7: Beispiel einer Aufzeichnung mit dem SDR-Stick

Code

Alle notwendige Arduino und Processing Sketches, sowie windows batch scripts und programmierte gnuplot files können aus der Seite heruntergeladen werden: L-Band Radionteleskop

Beispiel von einer Beobachtung



Vielen Dank für Ihr Interesse.

M°Jesús Sogorb Amorós