LUSEX PROCESADOR Y APLICACION

Anuncio
Amsat Argentina
LUSEX
LU Satellite EXperiment
LUSEX – Satélite cubesat de Amsat Argentina – Operación APRS, Programación dsPIC, Detección del Sol
Lusex - Operación satelital en APRS
- Programación dsPIC alta gama
Sergio Daniel Otero - Amsat Argentina
[email protected]
Satélite LUSEX, CPU.
Luego de analizar varias posibilidades y habiendo
realizado varias simulaciones y ensayos con
distintos tipos de microcontroladores disponibles en
el mercado argentino, se decidió utlizar para este
emprendimiento un microcontrolador dsPic de la
línea 33f es decir con capacidad de procesamiento
de señales (DSP ó DSC).
Por tratarse de un desarrollo sin sistema operativo,
se debe de algún modo organizar el software para
cumplir con todas las necesidades operativas del
satélite.
Dado que no se conocen antecedentes del uso de
estos microcontroladores en ambiente espacial y
para lograr una mayor confiabilidad y vida útil del
mismo se decidió el uso de dos microcontroladores
iguales, con el mismo programa, uno ocupando el rol
de principal y el otro en función de reserva.
Se describen a continuación una serie de
lineamientos a seguir en el desarrollo de los
distintos módulos de software utilizando esta
plataforma y el conjunto de periféricos integrados
en el mismo.
Ambos microcontroladores cuentan con dos sistemas
osciladores, el principal en 4MHz y el de baja
potencia en 32768KHz. Es posible hacer que la CPU
ejecute instrucciones a una tasa baja haciéndola
funcionar con el oscilador de baja potencia. En todo
momento puede efectuarse un cambio al otro
oscilador para lograr un funcionamiento a plena
velocidad, incluso durante pequeños intervalos de
tiempo.
Como entorno de programación se utiliza el
provisto por el fabricante denominado MPLAB que
integra un compliador assembler, un compilador de
lenguaje C y un entorno gráfico en ambiente de
sitema operativo grafico de gran practicidad de uso.
Se pretende utilizar lenguaje C hasta donde sea
posible y solo en rutinas altamente especializadas
se hará uso del assembler.
2
Derechos reservados Amsat Argentina
LUSEX – Satélite cubesat de Amsat Argentina – Operación APRS, Programación dsPIC, Detección del Sol
Con esta posibilidad la estrategia de funcionamiento
planteada consiste en hacer funcionar un timer
interno acoplado al oscilador de baja potencia y
generar con éste una interrupción con un período de
1/seg para ser utilizada como reloj de tiempo real y
ejecutar una corta rutina de chequeo de contexto en
la cual se decide en base a la energía disponible y
otras condiciones, el paso de la CPU a un estado de
mayor energía.
En el procesador de reserva, esta rutina revisará el
estado del principal y tomará el control del satélite en
caso de comprobar la falla del primero.El consumo
de ambas CPU ejecutando estas rutinas en módo de
baja energía es de alrededor de 1,5mA. Este mínimo
consumo debería ser cubierto por el conjunto de
paneles solares aún encontrándose en situación de
eclipse.Si el contexto lo permite la CPU principal
podrá encender su oscilador principal y pasar a
varios modos de mayor velocidad de ejecución.
El sistema de oscilador principal de este tipo de
microcontroladores permite ajustar la velocidad de la
CPU de acuerdo a las necesidades de
procesamiento. Para ello cuenta con un complejo
sistema de divisores, multiplicadores y sistema PLL.
También cuenta con la posibilidad de ejecución a
velocidad fija pero un porcentaje de tiempo
controlable de modo que el consumo de energía se
reduce en forma similar a si se redujese la velocidad
de ejecución (modo doze).Luego de varios ensayos
se comprobó que la ejecución de un código de
prueba dado, insume la misma cantidad de energía
ejecutándolo en baja velocidad y consecuentemente
en mayor tiempo o a alta velocidad y menor duración.
La única diferencia encontrada consiste en que si la
ejecución del código implica elementos periféricos,
estos consumirán una energía proporcional al tiempo
que estan encendidos por lo cual se decidió utilizar la
CPU a su máxima velociad adoptada de 38.4MHz
facilmente sintetizable a partir del oscilador de 4MHz
y realizar la ejecución de código en “ráfagas”,
pasando la CPU a modo baja energía el tiempo
sobrante. La frecuencia adoptada permite mediante
divisiones
enteras,
obtener
velocidades
estandarizadas de comunicación serial.
Estando en modo de baja energía es posible
mantener el estado lógico de las líneas de “I/O” con
lo cual resulta mucho mas sencillo el control del
satélite. En cambio en este modo no es posible
relizar comunicaciones tipo serie con elementos
externos.La estrategia a seguir acorde al modelo de
ejecución en ráfagas, consiste en organizar el
software en distintas rutinas de interrupción
aprovechando los siete niveles de prioridad en que
estas pueden organizarse.
De este modo en el nivel mas alto de prioridad se
ubicará la interrupción de reloj y chequeo de
contexto, la cual habilitará las demás rutinas según lo
que se desee ejecutar.
3
Derechos reservados Amsat Argentina
LUSEX – Satélite cubesat de Amsat Argentina – Operación APRS, Programación dsPIC, Detección del Sol
A nivel cero de interrupción es decir a nivel
programa principal, se ejecutará en forma de loop
con punto de parada todo el conjunto de tareas que
no necesiten estricto control de tiempo real. Luego
de cada vuelta de loop la CPU pasará a estado de
baja energía y saldrá de ella al producirse cualquier
interrupción como mínimo una vez por segundo por
la de reloj. Luego de ejecutada cada rutina de
interrupción la CPU ejecutará siempre una vuelta
de loop de programa principal.
Desarrollo del sistema packet/APRS para el
LUSEX
Se desea dar al satélite la capacidad de
comunicación digital de baja velocidad en protocolo
packet/AX25 aplicado particularmente a APRS, con
capacidad para funcionar como baliza de telemetría,
digipeater y configurarse remotamente o por agenda.
También se desea mediante este protocolo, poder
controlar varias funciones del satélite en forma
segura.
Las rutinas de interrupción estarán vinculadas a
elementos periféricos y de ser necesario activarán
mediante señales en memoria distintos segmentos
del loop del programa principal.
Si cada módulo a ejecutar se considera una tarea,
se logra de este modo algo equivalente a un
sistema operativo “multitarea cooperativo” con
prioridades de ejecución dadas por los niveles de
interrupción.
Como premisa se debe efectuar este desarrollo
utilizando como plataforma el procesador elegido de
la familia dsPic 33f, utilizando la mínima cantidad de
componentes externos, ocupando un tiempo de CPU
compatible con el resto de las funciones del satélite y
a su vez con un consumo de energía de la CPU
acotado, maximizando la capacidad de tratamiento
de este tipo de señales analógicas de modo tal que
se obtenga una una adecuada sensibilidad.
4
Derechos reservados Amsat Argentina
LUSEX – Satélite cubesat de Amsat Argentina – Operación APRS, Programación dsPIC, Detección del Sol
las mismas se puede activar un proceso de decisión
y paso al siguiente bit.
Desarrollo:
La capa física del sistema de packet comprende el
sistema de radio del satélite, el cual entrega señal
analógica procedente del receptor de FM y debe
ser modulado por el mismo tipo de señal.
Como la información a ser enviada se encuentra
organizada en bytes (octetos) se dispone para su
correcto tratamiento de dos contadores, uno de bits y
otro de stuff. El primero indicará el momento de tomar
un nuevo byte a ser transmitido desde el bufer y el
otro contará la cantidad de bits en estado uno
transmitidos, que de acuerdo con el Standard,
cuando se alcanza una cantidad de cinco sucesivos
en este estado se debe intercalar un bit denominado
de stuff que no es parte de la data original y asegura
el sincronismo del lado receptor.
Generación de Packet AX25
Comenzando con la generación de la señal a
aplicar al modulador del transmisor, resulta
conveniente utilizar entre los recursos disponibles
del microcontrolador adoptado, el sistema de PWM
(pulse width modulation) que es capaz de producir
estas señales mediante un sencillo filtrado
pasabajos pasivo externo.
Un último contador de bytes sirve para direccionar la
extracción de los datos desde el buffer de origen.
Finalmente partiendo de la decisión de paso al
siguiente bit, se debe generar un preámbulo y una
secuencia de fin de cada paquete que consiste en
una serie de “Flags HDLC” que son parte necesaria
del protocolo empleado.
Se hace necesario además contar con la
posibilidad de control del encendido del transmisor
para una correcta sincronización entre la señal
generada y su emisión.
El sistema PWM dentro del dsPic está
implementado en base a un timer interno que
establece la frecuencia base de generación de los
pulsos y un registro que controla el porcentaje de
tiempo ON/OFF del pulso generado. En cada ciclo
de timer se genera un nuevo pulso y es posible de
este modo controlar el ancho de cada pulso
generado que equivale a la tensión continua que
resultará luego del filtrado.
Todo este proceso se desarrolla a nievel de la rutina
de interrupción del timer seleccionado, con una
ocupación de CPU del orden del 1% para cada bit,
4% para cada byte y 7% en los cambios de byte y
paso de preámbulo a información y a cierre del
paquete.
El nivel de esta interrupción se elige en prioridad, por
debajo del reloj del sistema. Para todo el proceso de
generación de la señal de packet no es necesario el
uso del motor DSP. Esto asegura una rígida
continuidad en la generación de la señal.
El timer también posee la capacidad de generar
interrupciones periódicas a la CPU, con lo cual se
puede utilizar como base de tiempo para todo el
proceso de generación de la señal. En base a esto
se ha conseguido desarrollar una rutina de
interrupción que luego de activado el mencionado
timer, realizará la tarea de generación de la señal
AFSK, partiendo de un “Bufer” donde se
encuentran los datos del paquete a ser transmitido.
Decodificación de señales Packet AX25:
La decodificación de la señal de packet es un
proceso algo más complejo que la generación de la
misma. Como se trata de una señal analógica se
hace necesario muestrear la misma a intervalo
regular para obtener una señal digitalizada que la
represente la cual es tratada luego mediante el uso
del motor DSP.
El método utilizado en este módulo de software
consiste en una tabla de “look-up” donde se
encuentran almacenados valores que representan
un ciclo de una senoide. Estos son aplicados en
cada interrupción de timer, al registro de control de
ancho de pulso. La toma de cada valor de la tabla
se realiza mediante un registro de “acumulador de
fase” el cual en cada interrupción es incrementado
en proporción a la frecuencia que se está
generando.
El dsPic elegido tiene la posibilidad de muestrear
señales mediante sus conversores analógico/digital
incorporados o mediante un dispositivo denominado
codec externo. Este último método posee mejor
desempeño que el primero pero requiere una
complejidad circuital mayor, por lo que se decidió
utilizar los conversores internos para el muestreo,
compensando
mediante
sobremuestreo
(oversampling) la menor resolución de los mismos.
El overflow de este registro coincide con el fin la
senoide por lo cual la generación del siguiente ciclo
se produce sin discontinuidad, simplemente
continuando con la secuencia de incremento.
Estos conversores están diseñados para soportar
una elevada tasa de muestreo de señales con una
resolución máxima de 12 bits. Los resultados del
muestreo es posible obtenerlos en forma de “Vector“
de valores sin necesidad de intervención de la CPU y
sin alterar el funcionamiento de ésta, por el método
de Acceso directo a memoria (DMA) sobre un sector
especial de la memoria interna de doble puerta.
El incremento de fase para el sistema AFSK puede
ser uno entre dos posibles, ya que se utilizan solo
dos frecuencias para codificar la información.
La elección entre un incremento o el otro se realiza
a intervalos fijos, correspondientes al ancho de
cada bit a ser transmitido. Este intervalo se elige de
modo tal que sea un múltiplo entero del intervalo
entre interrupciones, tal que simplemente contando
5
Derechos reservados Amsat Argentina
LUSEX – Satélite cubesat de Amsat Argentina – Operación APRS, Programación dsPIC, Detección del Sol
A su vez es posible programar al módulo de
conversión analógico-digital para que al completar
un número dado de conversiones genere un pedido
de interrupción a la CPU la cual deberá realizar el
tratamiento de las muestras obtenidas.
anterior cosa que debería ocurrir en la frontera de
cada bit, se opera sobre dicho contador de modo tal
que se trata de corregir para llevarlo a un valor igual
a la mitad de su valor máximo.
La correción se efectúa de forma parcial, tal que sean
necesarios al menos ocho cambios de valor para
lograr el sincronismo, de este modo se asegura que
ante un ruido esporádico el sincronismo no quede
inmediatamente perdido.
Debido a que se desea decodificar una señal de
1200 bits / segundo se adoptó una velocidad de
conversión de 153600 muestras / segundo, y una
frecuencia de interrupción a la CPU de 9600 /
Segundo.
Si las fronteras de bit corresponden a la mitad del
rango del contador, cuando este hace overflow
estaremos en el “centro” de cada bit, punto en el cual
se muestrea finalmente el valor de este.
Esto equivale a una interrupción cada 16 muestras
y 8 interrupciones en el tiempo de cada bit.
En cada interrupción la CPU ejecuta sobre el vector
de 16 muestras recibido el algoritmo SDFT (Slide
Discrete Fourier Transformation), en las dos
frecuencias de interés y para cada frecuencia en
parte real e imaginaria. Por cada vector procesado
se obtienen 4 valores parciales i1, q1, i2, q2. Estos
se almacenan en cuatro vectores de resultados que
acumulan en forma circular los resultados de los
ocho últimos vectores de muestras procesados.
Por cada overflow del contador PLL se va obteniendo
cada bit decodificado. Esto ocurrirá tanto cuando
haya señal útil como cuando solo se esté recibiendo
ruido aleatorio de canal vacío.
Esta secuencia de bits debe ser procesada a efectos
de reconocer el patrón de arranque de cada paquete.
Para ello se acumulan ocho bits sucesivos en un
registro de desplazamiento y se los compara a la
llegada de cada uno de ellos con dicho patrón (Flag
HDLC).
Luego de este cómputo si se realiza la sumatoria
sobre cada uno de estos vectores de resultados, se
obtendrán cuatro valores I1, Q1, I2, Q2; los cuales
representan la intensidad espectral en fase y
cuadratura sobre las dos frecuencias de interés.
Si dicha comparación resulta positiva se procede
mediante el mismo mecanismo de acumulación a
obtener la secuencia de octetos que contiene el
paquete de datos a recibir. Es necesario en este
proceso realizar la eliminación de los bits de stuff
agregados del lado transmisor.
Simplemente obteniendo el módulo o amplitúd en
ambas frecuencias de interés y comparando su
magnitud se conoce cual de las dos frecuencias
componentes de la información se está recibiendo
y en base a esto si el bit que se esta recibiendo es
un cero o un uno.
La información se va volcando byte a byte a un buffer
de paquete decodificado. Cuando se recibe una
nueva secuencia “Flag HDLC” se da por terminado el
paquete. También si se recibe una secuencia
errónea, solo que en este caso el paquete se
descarta y el proceso vuelve al principio.
Nótese que cada sumatoria se realiza sobre ocho
resultados parciales cada uno de ellos obtenido
cada 1/9600 de segundo por lo tanto la sumatoria
se hace sobre un intervalo equivalente a un bit
(1200 bit/Seg).
Si se completa correctamente el paquete se calcula
sobre este la CRC (Suma cíclica redundante) para
verificar la integridad del mismo, de ser correcta es
necesario su procesamiento ya en una instancia de
software correspondiente a la siguiente capa.
Al procesarse cada vector de muestras se obtienen
nuevos parciales y se vuelve a procesar los totales
habiendo descartado por método de cola circular
los parciales mas antiguos. Esto equivale a que por
cada bit de información se obtienen ocho
resultados.
Hasta aquí se realiza todo en la rutina de interrupción
generada por el controlador DMA del conversor
analógico digital integrado. El proceso insume un
37% de CPU a su máxima velocidad,
incrementándose a un máximo 43% cada ocho
interrupciones.
Como no se conoce de antemano donde se
encuentra la frontera entre un bit y el siguiente es
necesario elaborar un mecanismo de recuperación
de “sincronismo” para así poder decodificar
finalmente la secuencia de bits. Para esto se utiliza
un sistema de PLL digital implementado en
software. Este consiste en un contador que se
incrementa cada octavo de bit. El incremento se
elige de modo que dicho contador sature (overflow)
y vuelva a cero en el tiempo de un bit, es decir
luego de incrementarlo ocho veces.
El procesamiento del paquete ya validado se sigue a
nivel programa principal, es decir interrumpible.
Este tiempo de CPU equivale por mediciones
realizadas en el prototipo a un consumo de 38mA
promedio en la CPU. Esta corriente se compone de
pulsos de 60mA de consumo máximo, con una
frecuencia de 9600 Hz.
Cuando el proceso de decodificación antes
mencionado de por resultado un valor distinto del
6
Derechos reservados Amsat Argentina
LUSEX – Satélite cubesat de Amsat Argentina – Operación APRS, Programación dsPIC, Detección del Sol
Si bién el uso de CPU resulta elevado, por tratarse
de un uso discontinuo a una tasa de 1/9600 de
segundo, permite una total compatibilidad con los
otros módulos de software tales como el control de
actitud y gestión de energía que operan en
frecuencias mucho mas bajas.
contrario se deriva al módulo digipeater y al módulo
de registro.
Modulo de comandos:
El satélite debe responder a una serie de comandos
Standard APRS utilizados universalmente. Este
módulo se compone simplemente de una tabla con
todos los comandos reconocidos contra los cuales se
compara el texto obtenido del segmento de
información del paquete.
El nivel de prioridad de interrupción se fija debajo
del de transmisión de datos ya que por la
acumulación de datos en buffers se cuenta con la
suficiente elasticidad temporal para el procesar los
mismos.
Si se encuentra coincidencia simplemente se procede
a generar una respuesta la cual es puesta en un
buffer que luego será pasado al sistema de
transmisión. Como algunos comandos pueden
requerir la transmisión de más de un paquete es
necesario contar con varios buffers de transmisión.
Capa de aplicación: APRS
Si no se halla coincidencia con los comandos del
standarsd APRS se analiza si la data recibida
corresponde a un comando dedicado al control del
satélite.
Como el método de comunicación permite hasta este
punto un libre acceso a toda la comunidad que desee
utilizarlo, resulta sumamente importante contar con
un método que restrinja el acceso a este nivel de
comando, solo a aquellos que cuenten con la debida
autorización.
Con este fin se implementa un sistema de
encriptación de comandos del tipo de clave privada.
Existirá un comando inicial mediante el cual el satélite
genera una secuencia llave que devuelve a tierra.
Con esta secuencia y contando con el adecuado
algoritmo se codificarán los comandos a enviar.
El programa principal de la CPU está compuesto
de una serie de instrucciones que se ejecutan en
un lazo cerrado. En un punto de dicha ejecución
cíclica se chequea la recepción de paquetes de
datos AX25.
En caso de haberse recibido un paquete válido se
realiza todo un proceso de validación del paquete
considerando el protocolo APRS.
Utilizando el algoritmo a la inversa a bordo, se
decodificará el tren recibido y se seguirá un algoritmo
tabular similar al utilizado en los comandos APRS,
para ajustar los parámetros de interés.
Para ello es necesario que el mismo corresponda a
un paquete tipo UI (Unnumbered Information); que
el indicador de protocolo de aplicación corresponda
a APRS. Luego se sigue con un chequeo de
consistencia y separación del paquete en dos
segmentos: Encabezado y datos. Sobre el
encabezado se hace un proceso de separación en
campos Origen, Destino, y campos “Via”si los hay.
El campo Origen es revisado de acuerdo con las
reglas de licencias válidas para la actividad
radioamateur.
Este conjunto de parámetros quedará completamente
definido al completarse el desarrollo del satélite.
Modulo digirrepetidor o digipeater:
Este módulo tiene por objeto hacer que el satélite
repita cada paquete recibido de acuerdo con el
standard utilizado en APRS. Todos los paquetes que
lleguen, no sean comandos y contengan en su via
path el identificador del satélite o alguno de sus alias,
serán retransmitidos por éste. Se podrá tambien
activar la repetición de vias genéricos como los
universalmente utilizados WIDE1-1 o WIDEn-n.
En este punto el paquete se considera APRS válido
y su proceso continúa, caso contrario simplemente
se descartará.
Módulo de registro:
Dado por paquete APRS el campo de datos es
revisado en busca de un formato de mensaje
APRS y si es positivo, que esté dirigido al indicativo
del satélite o alguno de sus alias.
Tiene por objeto mantener una lista de las estaciones
que han sido recepcionadas por el satélite. Se
mantiene en memoria RAM interna de la CPU y
mediante comando standard APRS puede solicitarse
dicha lista.
Si se encuentra concordancia el paquete es
pasado para su ejecución como comando. Caso
7
Derechos reservados Amsat Argentina
LUSEX – Satélite cubesat de Amsat Argentina – Operación APRS, Programación dsPIC, Detección del Sol
8
Derechos reservados Amsat Argentina
LUSEX – Satélite cubesat de Amsat Argentina – Operación APRS, Programación dsPIC, Detección del Sol
Para cada paquete recepcionado se verifica si el
remitente esta en la lista, caso contrario se anexa.
Se mantiene un contador de paquetes
recepcionados de cada estación. También,
mediante el segundo conversor analógico-digital
disponible se toma lectura de la intensidad de señal
relativa recibida y se almacena vinculada con cada
estación. Dada la limitada capacidad de memoria
RAM disponible en el microcontrolador, se ha
limitado la cantidad de estaciones a un máximo de
100. Si se supera dicho número se descartará la
estación que no se haya recibido por mas tiempo.
Es posible borrar total o parcialmente el contenido
de la lista por medio de comandos.
Balizamiento periódico:
Este módulo genera paquetes periodicamente con la
identificación del satélite e información del estado de
sus principales sitsemas.
El período será variable acorde con la disponibilidad
de energía.
La información a ser transmitida aún no se ha
definido pero consistirá de las mediciones mas
importantes a para un diagnóstico de funcionamiento.
Otro conjunto mas avanzado de mediciones será
accesible solo por comando.
Otras funciones:
Como se trata de un satélite con modo APRS resulta
importante que en la baliza emitida conste la posición
del mismo.
Se ha confeccionado un módulo de
almacenamiento de mensajes acorde a la limitada
memoria disponible. Este módulo es capaz de
retransmitir un mensaje en tiempo diferido. Una
estación emite un mensaje con destino al satélite y
contenido donde figura el destinatario del mismo.
Ésta se determinará por medio de los parmetros
orbitales y el reloj de tiempo real, y será provista por
el módulo de software dedicado a tal fin.
El satélite al recibir un paquete cualquiera
procedente de dicho destinatario le envía el
mensaje almacenado.Este sistema simple de
almacenamiento puede activarse y desactivarse
por comando.
Tanto los parámetros orbitales como el reloj serán
ajustados desde tierra por el mecanismo de
comandos.
9
Derechos reservados Amsat Argentina
LUSEX – Satélite cubesat de Amsat Argentina – Operación APRS, Programación dsPIC, Detección del Sol
LUSEX MODULO DE MEDICION DE ACTITUD
POR ILUMINACION SOLAR
La elección de los fototransistores se ha basado en
la sensibilidad no nula de los mismos con luz
incidente en ángulos cercanos a los noventa grados
respecto a la dirección de máxima sensibilidad.
Introducción:
El objetivo de este módulo es la determinación de
la dirección en la que se encuentra el sol respecto
de un sistema de referencia solidario al satélite.
Este objetivo se consiguió mecanizando la cara
activa (lente) de fototransistores comunes, de modo
que la misma quede plana y con pulido mate.
La implementación del mismo pretende realizarse
con elementos de bajo costo y fácil adquisición en
nuestro mercado.
El software de obtención del vector Sol, comienza
con la adecuada inicialización del conversor
analógico/digital secundario del microcontrolador, a
los efectos de recoger seis magnitudes con precisión
de 12 bits en formato entero sin signo.
La precisión pretendida no es muy elevada ya que
un error de actitud del orden de los 10 grados no
afecta significativamente la producción de energía
en las placas solares, objetivo principal del control
de actitud.
Utilizando acceso directo a memoria (DMA) el
conversor mencionado vuelca directamente en
memoria RAM interna dichos resultados, sin otra
intervención de la CPU.
Desarrollo:
Se decidió armar un prototipo de ensayo basado
en la medición de la intensidad de iluminación
mediante seis sensores del tipo semiconductor
(fototransistor),
los
cuales
polarizados
convenientemente entregan una corriente
relacionada mediante una función no lineal con la
intensidad de radiación luminosa que les incide.
En el ciclo del programa principal, se chequea la
presencia de los resultados de medición y si se
completaron los seis valores se procede al cálculo
correspondiente.
El paso siguiente consiste en convertir la magnitud
obtenida en otra proporcional a la intensidad
luminosa.
Dichos sensores se ubicaron convenientemente en
las caras del cubo, con sus ejes de máxima
sensibilidad perpendiculares a cada una de ellas.
Para esto la curva intensidad vrs. Tensión de cada
par transistor resistencia se modela previamente
mediante una función de segundo grado, obtenida
por método de los cuadrados mínimos. Se obtienen
entonces tres valores de coeficientes (a, b, c) del
polinomio ilum = a X2 + b X + c.
Como la intensidad de radiación luminosa
procedente del sol puede considerarse
aproximadamente constante se procedió a obtener
la curva de sensibilidad de cada elemento en
función del ángulo de los mismos con respeto a
una fuente de luz equivalente al sol.
Las diferencias de medición de cada elemento se
compensan mediante el uso de ternas
independientes de coeficientes para cada uno de
ellos y estas ternas se almacenan en la memoria
ROM (Flash) del microcontrolador.
El circuito de ensayo utilizado consiste
simplemente en una simple conexión serie entre
cada fototransistor y una resistencia de valor
adecuado. El colector de los fototransistores se
conecta a positivo de CPU y el otro extremo de
cada serie a negativo.
Los valores medidos se convierten previamente a
punto flotante y utilizando las librerías que permiten
trabajar en este formato y las funciones individuales
se obtienen seis valores de intensidad luminosa.
Los puntos de unión de cada par se conectan a
seis entradas analógicas del microcontrolador
dsPic pudiendo de este modo medirse desde la
CPU seis valores de tensión.
Los valores correspondientes a sensores de caras
opuestas simplemente se restan para obtener
finalmente tres valores (punto flotante con signo) que
representan el vector intensidad de luz.
10
Derechos reservados Amsat Argentina
LUSEX – Satélite cubesat de Amsat Argentina – Operación APRS, Programación dsPIC, Detección del Sol
Como la intensidad de iluminación no es de interés
sino solo la dirección de donde procede la luz, se
obtiene el módulo del vector iluminación y luego
dividiendo los resultados en cada eje por dicho
módulo, quedan finalmente las componentes
normalizadas del vector Sol.
Nuevamente utilizando el método de corrección
mediante ecuación de segundo grado, se obtienen
cuatro valores proporcionales a la intensidad de luz
en cada uno de los ejes elegidos. De acuerdo al
signo de la lectura obtenida se aplicará la ecuación
de corrección del sensor predominante.
Ensayos
Resta entonces la proyección de estos valores en
cada eje del satélite y su normalización para obtener
la terna representativa de la dirección del vector Sol.
Los ensayos realizados con este módulo arrojaron
como
resultado
final
una
precisión
aproximadamente el doble de la pretendida, en el
peor de los casos.
En apariencia este proceso requiere el uso de
funciones trigonométricas, pero como las direcciones
de los vectores de medición son fijas respecto a la
terna de referencia, los coeficientes de proyección
serán constantes y pueden tabularse, de modo que
el proceso de proyección en cada eje de la terna se
reduce a una suma algebraica del producto de cada
magnitud obtenida, por un coeficiente de proyección
grabado en ROM.
Para la integración final en el satélite se
encontraron dificultades en la aplicación del
esquema ensayado debido a que la configuración
de placas solares causa sombras en los sensores
de las caras laterales con lo cual se hace
necesario un replanteo de la ubicación de los
mismos.
Se codificó todo el algoritmo usando lenguaje C y se
procedió a ejecutar el mismo en forma recurrente a
efectos de evaluar su tiempo de ejecución.
Luego de varios ensayos finalmente se decidió
elevar el número de sensores a ocho, ubicando
cada uno de ellos en las proximidades de los
vértices del cubesat, y con la dirección de máxima
sensibilidad de cada uno de ellos orientada según
las diagonales principales del cubo. Este esquema
permite una minimización del efecto de las
sombras a expensas de una mayor complejidad de
cálculo.
Se observó que requiere un tiempo neto de 53 milisegundos a máxima velocidad de CPU con una
variación del orden del 5% según los valores de
iluminación, lapso medido desde que se encuentran
las mediciones en memoria hasta la obtención del
resultado.
Para simplificar el circuito de medición y teniendo
en cuenta que dos sensores ubicados en vértices
opuestos no pueden estar iluminados al mismo
tiempo, se optó por conectar ambos
fototransistores en serie, y a su vez cada uno de
ellos en paralelo con sendas resistencias de
ecualización. La serie se polariza con tensión de
CPU mediante un circuito llave y la tensión de
medición se obtiene del punto medio de la serie.
El tiempo insumido en la inicialización del conversor
analógico/digital y la conversión realizada por éste
resultan despreciables frente al de cálculo.
Este tiempo sumado al resto de los procesos de
CPU limitará la tasa máxima a la cual podrá
efectuarse el ajuste de la actuación magnética para
el control de la actitud del satélite.
Para la fase final de integración del satélite, resta
incluir en el algoritmo el efecto de las sombras de los
paneles. Se planea medir estos efectos en los
prototipos finales y hacer las correcciones
correspondientes en el algoritmo de cálculo.
En oscuridad, la tensión obtenida será la mitad de
la de alimentación de CPU. Al aumentar la
iluminación en uno de los sensores se obtendrá un
valor por sobre el de oscuridad, y si esto ocurre en
el opuesto dicho valor estará por debajo. El
conversor analógico digital se configura
convenientemente en formato fraccionario con
signo, de modo que la magnitud obtenida en
memoria sea fácilmente convertida a punto flotante
con signo.
Elaborado para AMSAT por
Sergio Daniel Otero
LU8EKM
02.04.2009
11
Derechos reservados Amsat Argentina
Descargar