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.