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