Dienstag, 29. Juli 2014

Radiotelescopio sencillo para banda L con Arduino Mega2560

Radiotelescopio sencillo para banda L


La radioastronomía hace posible que todo aquel estusiasta de la astronomía disfrute su hobby también bajo la luz del sol o incluso en días nublados. Esta idea y la fascinación por el desarrollo de circuitos electrónicos es lo que nos llevó hace unos años a comenzar con la construcción de un radiotelescopio. A continuacion un diagrama general de nuestro radiotelescopio:

Imagen 1: Diagrama general del radiotelescopio para banda L

Aqui se aprecian dos partes relativamente diferenciadas por su funcionalidad. En primer lugar el receptor y en segundo lugar el elemento de control de la antena. Un Sketch intermedio en Processing permite la visualización de los datos recibidos así como control de la antena.

A continuación se expone un resumen del proyecto, descrito más exaustivamente en la página http://www.germersogorb.de/html/radiotelescopio_band_l.html.

1.  Receptor

En el foco de la antena dentro de una caja se encuentra el  LNA y el Down-Converter. La transmisión en banda L a la frecuencia de 1420MHz por una línea muy larga no es aconsejable debido a la baja relación señal-ruido SRN existente en estas señales tan débiles.  El Down-Converter baja el espectro de señales entre 1420 y 1422 MHz a 28-30 MHz. En el foco se encuentra también instalado un sensor de temperatura LM35. 

En el observatorio a unos 5m de distancia de la antena se encuentran el amplificador de frecuencia intermedia, el detector logarítmico conectado a la placa amplificadora DC y finalmente Arduino Mega2560, como interfaz entre radiotelescopio y ordenador. Paralelamente y a través de una splitter instalado tras el amplificador de IF se analiza la señal mediante una SDR. Una parte de los componentes es de fabricación propia. En la página http://www.germersogorb.de/html/circuitos_hf_.html se puede leer más detalles al respecto.

Con la incorporación de Arduino se nos ha abierto un espectro muy grande de posibilidades. Ahora podemos desarrollar nuestro propio software con arduino y processing para el registro y visualización de datos, ya que el único requisito es conocer C++.

Imagen 2: Diagrama de bloques del receptor. 

Software Defined Radio

La señal dividida y procedente del splitter se analiza con una SDR muy económica, un Stick USB para recepción de DVBT, que nos permite la visualización de la señal en el dominio de frecuencias de 1420 a 1422 MHz. Dado que la señal fue convertida al margen de 28 a 30MHz y el stick trabaja a partir de 62MHz, tenemos que volver a convertir la señal con un UpConverter a un margen de frecuencias detectable por el stick. Tras la conversión con un oscilador de 100MHz, encontramos nuestra señal entre 128 y 130 MHz. Tanto el stick como el UpConverter se pueden adquirir en Amazón o directamente en la página de NooElec.
 
   1420-1422MHz -> DownConverter 28-30MHz  -> Amplificador + Filtro 27-31MHz ->
 -> UpConverter 128-130MHz -> SDR Stick (62-1700MHz)

Visualización de datos

Con un Sketch en Processing podemos guardar los datos digitalizados y enviados por Arduino a través del puerto serie en ficheros de texto. Estos datos de visualizan utilizando para ello gnuplot:
Imagen 3: Representación gráfica de datos haciendo uso de gnuplot
Para visualizar los datos registrados por el Stick empleamos batch scripts y nuevamente gnuplot:
Imagen 4: Representación gráfica en 3D de un tránsito registrado con el DVBT-Stick.
X: Frecuencias 1420 - 1422 MHz
Z: Potencia (dB)
Y: Tiempo
Para más detalles y descarga de ficheros y código ver la página siguiente:
http://www.germersogorb.de/html/radiotelescopio_band_l.html.


Ejemplo de una observación diaria


https://www.youtube.com/watch?v=NL3YYqwJ0tA&feature=youtu.be

2.  Control de la antena con 10DOF-80GY

Sensor de aceleración ADXL345 (parte del 80GY)

El uso de este sensor es muy sencillo. A pesar de todo es indispensable llevar cuidado con la librería descargada para Arduino, puesto que contiene unos valores de Offset determinados que nosotros debemos de adaptar a nuestro sistema. Estos offsets corrigen los pequenos errores de posicionamiento del IC sobre la placa o de orientación de la platina con respecto a la caja. Es conveniente editar el archivo  ADXL345.cpp para visualizar el código. Hay métodos matemáticos que podemos emplear para calcular los valores exactos necesarios en nuestro aparato, pero jugando un poco con estos valores podemos quizá obtener en algunos minutos un resultado convincente.

Brújula digital HMC5883L (parte del 80GY)

Este y probablemente todos los sensores de campo magnético traen consigo mucho trabajo. La primera tarea a realizar es analizar la influencia ferromagnética a la que está sometido nuestro sensor, para así poder determindar la profundidad de nuestras compensaciones de Hard y Soft Iron. “Hard Iron Compenssation” es absolutamente indispensable cuando el sensor se encuentra certa de materiales ferrosos pero su posición con respecto a éstos no varía (tornillos en la platina o caja para la instalación, etc). Aquí se calcula un offset constante para cada uno de los ejes y los 3 offsets resultantes se consideran en todos los cálculos. “Soft Iron Compenssation” será necesaria cuando el entorno en el que se encuentra el aparato distorsiona el campo magnético y esto de forma variable dependiendo de la posición exacta del aparato. Esta compensación es más complicada, dado que aquí hemos de encontrar una matriz de offsets.
Finalmente determinamos las posible posiciones que puede tomar el sensor, puesto que en ciertos casos tendremos que realizar la compensacion de la inclinación. El motivo es que los headings (azimuth) calculados con el sensor de campo magnético solo son correctos cuando el chip está en posición exactamente horzontal.

Todas las calibraciones y compensaciones realizadas por nuestra parte están descritas en la página Calibración de HMC5883L.
Imagen 5: Datos de sensor no calibrado

Imagen 6: Sensor calibrado.

L298N Motor Drive

Con este componente y a través de Arduino podemos mover la antena por software. Tres pines son necesarios para determinar la dirección y velocidad con la que se controloará el motor. Un Sketch en Processing nos sirve de interfaz para realizar esto de forma gráfica y exacta (aunque no más exacta de lo que nos permite el sensor de aceleración, que es el nos proporcional el ángulo de altura).



Imagen : Sketch Processing para visualización de datos y control de la antena paralelamente. 

Código

Todo los Sketches de Arduino y Processing pueden descargarse de las páginas http://www.germersogorb.de/html/controlmotorconarduino.html y http://www.germersogorb.de/html/calibraciondesensores.html, donde además se encuentra una más amplia descripción del proyecto.

Freitag, 23. Mai 2014

Radiotelescopio Android en banda L

Radiotelescopio Android en banda L

                                                 

Descripción

Unas de la ventajas más importante que ha traido consigo el emplear Arduino en nuestro proyecto es la facilidad con la que podemos crear una conexión bluetooth entre un Smartphone Android y el radiotelescopio. Con poco esfuerzo hemos creado así una App para Android partiendo de la aplicación Processing que creamos para el PC. El entorno de trabajo sigue siendo Processing (versión 2.1.1) solo que ahora el sketch no lo ejecutamos en el ordenador sino en el Smartphone en forma de APP. 



El código para la decodificación y representación de los datos lo tomamos directamente del Processing Sketch arriba indicado http://www.germersogorb.de/ProcessingSketch9b.zip ). Solo tenemos que cambiar la interfaz de entrada de datos con el código para conexión por Bluetooth. El módulo bluetooth más utilizado con arduino es el HC-05. En internet hay suficiente información respecto a las conexiones y configuración pero aquí mostramos los enlaces principales, que más nos han ayudado:


En nuestro proyecto necesitamos dos HC-05 que actúan como Slave. El Smartphone hará de Master. Por lo tanto no necesitamos cambiar la configuración del módulo de forma excesiva. Lo único importante es que podamos diferenciar los dos módulos por su nombre, con lo que bastará configurar su marca de identificación. Con el siguiente Sketch y empleando el terminal en serie de arduino podemos hacer esto facilmente (instrucciones bajo el enlace 
http://www.instructables.com/id/Modify-The-HC-05-Bluetooth-Module-Defaults-Using-A/3/?lang=de

/***********************************************************/
/*   Arduino Sketch:  HC-05 in Command Mode                         */ 
/***********************************************************/
#include <SoftwareSerial.h>
SoftwareSerial BTSerial(51, 50); // RX | TX
void setup()
{
  pinMode(9, OUTPUT);  
            // this pin will pull the HC-05 pin 34 (key pin) HIGH to switch module to AT mode

  digitalWrite(9, HIGH);
  Serial.begin(9600);
  Serial.println("Enter AT commands:");
  BTSerial.begin(38400);  // HC-05 default speed in AT command more
}

void loop()
{
  // Keep reading from HC-05 and send to Arduino Serial Monitor
  if (BTSerial.available())
    Serial.write(BTSerial.read());

  // Keep reading from Arduino Serial Monitor and send to HC-05
  if (Serial.available())
    BTSerial.write(Serial.read());
}


De esta forma hemos cambiado el nombre del módulo HC-05 que conectamos al radiotelescopio, identificandose éste ahora con "RADIOTELESKOP". El otro módulo mantiene su nombre "HC-05".


El Sketch ha sido disenado para un Samsung Galaxy Note 2. Para adaptar este Sketch a cualquier otro Smartphone solo hay que cambiar la coordenadas gráficas de los objetos representados. 


En la ventana de la App se puede diferenciar gráficamente el origen de los datos representados. La parte superior indica la posición de la antena y ofrece la posibilidad de cambiarla a una velocidad determinda ajustable. Una altitud exacta se puede introducir con formato grados-minutos-segundos en los tres campos de entrada de texto. Después de rellenar los tres campos más "Enter", pulsamos el botón SEND se envía el valor a arduino. Este ajusta así la altitud deseada en la antena. 

La parte inferior de la App es un StripChart-Logger, para registrar los datos del detector logarítmico y del sensor de temperatura procedentes del radiotelescopio. La aplicación es muy útil para ajustar el foco de la antena haciendo uso del Sol como "radio source".


Downloads

Processing Sketch für Processing 2.1.1 in Adroid Mode
Arduino Sketch Radioteleskop
Arduino Sketch Antenne Seite
     

Auf deutsch

Android L-Band Radioteleskop

Android L-Band Radioteleskop

Projektbeschreibung

Einer der Vorteile, die die Benutzung vom Arduino in unserem Projekt mit sich gebracht hat, ist der einfache Bluetooth Verbindungsaufbau zwischen einem Smartphone und dem Radioteleskop und so war nur einer kleiner Schritt bis zu dieser Android Version. Die Entwicklungsumgebung bleibt hier Processing (jetzt Version 2.1.1), aber die Ausführung eines Sketches läuft nicht mehr am Computer sondern am Smartphone, auf einer Android APP.



Die Decodierung und Darstellung der Daten übernehmen wir direkt aus dem Computer Processing Sketch (Abschnitt 4.1 http://www.germersogorb.de/html/l-band_radioteleskop.html) und ausschließlich die Datenschnittstelle mit Bluetooth wird hier erweitert. Der am meisten verwendete BT-Modul für Arduino ist das HC-05. Es gibt im Internet ausreichende Informationen über Verkabelung, Konfiguration und Verbindung mit diesem Gerät. Hier einige Quellenlinks:

In unserem Projekt brauchen wir 2 Stück, die beide als Slave arbeiten. Das Smartphone arbeitet als Master. Es ist daher nicht nötig, die Default Konfiguration großartig zu ändern. Wichtig ist nur, dass man beide durch den Namen unterscheiden kann. Anbei ein kleiner Arduino Sketch, mit dem man schnell und einfach die Voreinstellungen verändern kann:


/***********************************************************/
/*   Arduino Sketch:  HC-05 in Command Mode                           */ 
/***********************************************************/
#include <SoftwareSerial.h>
SoftwareSerial BTSerial(51, 50); // RX | TX
void setup()
{
  pinMode(9, OUTPUT);  
            // this pin will pull the HC-05 pin 34 (key pin) HIGH to switch module to AT mode

  digitalWrite(9, HIGH);
  Serial.begin(9600);
  Serial.println("Enter AT commands:");
  BTSerial.begin(38400);  // HC-05 default speed in AT command more
}

void loop()
{
  // Keep reading from HC-05 and send to Arduino Serial Monitor
  if (BTSerial.available())
    Serial.write(BTSerial.read());

  // Keep reading from Arduino Serial Monitor and send to HC-05
  if (Serial.available())
    BTSerial.write(Serial.read());
}


Somit haben wir den HC-05 für die Steuerung der Antenne "HC-05" genannt, während das HC-05 am Radioteleskop angeschlossen in "RADIOTELESKOP" umbenannt wurde.

Der neue Processing Sketch wurde für ein Samsumg Galaxy Note 2 entwickelt. Die Anpassung für ein anderes Smartphone ist durch die Änderung der XY-Darstellungskoordinaten einfach möglich.




Im Fenster der App kann man die beiden Datenquellen grafisch gut unterscheiden. Der obere Teil zeigt die Position der Antenne und bietet die Möglichkeit, diese mit einstellbarer Geschwindigkeit zu ändern. Eine gewünschte ALTITUD kann man in "grad-min-sec" Format eingeben und bei Betätigen des Buttons SENDEN wird diese umgesetzt. Der untere Teil ist ein Stripchart-Logger, der die Daten des logarithmischen Detektors sowie des Temperatur-Sensors anzeigt. Für die Justierung der Antenne mit der Verwendung der Sonne als Signalquelle ist diese Applikation sehr nützlich.




Downloads

Processing Sketch für Processing 2.1.1 in Adroid Mode
Arduino Sketch Radioteleskop
Arduino Sketch Antenne Seite

en espanol