lunes, 10 de noviembre de 2008

Día Trigesimosegundo (32º) - 24/10/08

El 30/10 sería el lanzamiento del Cohete que llevaría el programa final que venimos preparando a lo largo del año (no preparando textualmente ya que el programa lo programamos en el último mes, pero este programa es la culminación del aprendizaje de toda la programación que estuvimos probando durante todo el año).
Edgardo nos comentó que no estaba muy satisfecho con los rangos con los que trabajaba nuestra placa de altímetro y que prefería utilizar la del año pasado que tenía incluido un potenciómetro que permitía regular el rango de salida. Es por esto que utilizamos el mismo método explicado en el post anterior para calibrar el viejo altímetro, logramos obtener un rango que llegaba hasta los 5V (Límite de los conversores Analógico-Digital del PIC) y partía de un voltaje más bajo que el del Altímetro fabricado por nosotros. Nos dispusimos a grabar 5 PICs, 2 con programas auxiliares que se límitaban a transmitir por antena el Dato que estaban midiendo (en 8 Bit's, para simplificar el funcionamiento, ya que es sólo un programa Auxiliar) y a guardarlo en la EEPROM y otros 3 con el programa principal que contiene las siguientes funciones, todas integradas y de funcionamieto cuasi simultaneo:
  • Toma de datos en 10 Bit's (1024 posibles valores)
  • Detección y Aviso de Despegue y Medición de Altura Inicial
  • Promediado de Datos (Se hace un promedio de 3 datos consecutivos, baja el error)
  • Procesamiento de Datos (Por programa la Altura del Suelo se vuelve 0)
  • Procesaimiento de Datos para Transmisión en RF (Para adaptar al Protocolo)
  • Procesamiento de Datos para Almacenamiento (Se reduce a 8 Bit's)
  • Guardado de Datos en la EEPROM (en 8 Bit's)
  • Busqueda de Apogeo (Constantemente chequenado la trayectoría balística)
  • Subrutina de Apogeo (Simplificada, para mejor funcionamiento en el descenso)
  • 2 Programas en 1 ("Fase de Vuelo" y "Conexión a Computadora")
  • Programa Interactivo de Conexión a PC para recuperación de Datos
Este día cerramos el protoclo de transmisión que consistía en lo siguiente:
  1. El dato iría montado en un PWM y sería proporcional a la frecuencia de este.
  2. El Duty Cycle (Ciclo de Trabajo) discriminaría si el cohete estaba en vuelo o en tierra.
  3. Las Frecuencias irían de 1000Hz a no más de 3048Hz
  4. El dato (entre 0 y 1024, realmente menos por el procesamiento que recibe en el PIC) sería multiplicado por 2 y luego se le sumaría 1000 y de esta forma se obtiene la frecuencia del PWM.
    Aquí la ecuación: F(d) = d*2 + 1000

  5. A la frecuencia medida se le resta 1000 y se la divide por 2 y se obtiene el dato (entre 0 y 1024, realmente menos por el procesamiento que recibe en el PIC).
    Aquí la ecuación: D(f) = (f - 1000)/2

CONSECUENCIA: Sólo las frecuencias PARES son admitidas en este protocolo (debido a la multiplicación por 2) , las impares deben ser redondeadas ya que no son posibles.
Aquí el código de programación:
Programa Final V3



El "Programa Final V3" (como lo llamamos, ya que tuvo otras dos versiones anteriores que fueron modificadas) era demasiado complejo para poder probar en el laboratorio ya que había muchas condiciones y variables a simular que para medir en el Protoboard y con antenas receptoras era demasiado engorroso, se necesitaba el Cohete con su infraestructura (el programa estaba pensado con esa filosofía y por lo tanto allí es donde debía ser probado), y más allá de que no disponíamos del cohete en ese momento, hubieramos necesitado que este se eleve, cosa que no podíamos simular. Es por esto que fuimos probando porciones del programa adaptadas especialmente para ser probadas en el laboratorio independientemente de las demás.
Desafortunadamente nos llevamos la sorpresa de que la emisión de datos por RadioFrecuencia no estaba funcionando nada bien. Como no podíamos encontrar el error en la programación, ni siquiera con la ayuda y la pericia de Edgardo Baez y Leandro Arcusin (2 profesores letrados en el tema) hicimos varios cambios consecutivos de Antenas de transmisión y antenas de recepción (estas últimas de laboratorio, para probar si el PIC emitía realmente los datos) y sin embargo no lograbamos recibir cosas coherentes, sino más bien ruido.
Después de un buen rato Leandro Arcusin notó que el PWM estaba variando constantemente y sin pausa, y nos recomendó poner una pausa luego de modificarlo para que no sea pisado constantemente por el dato que sucede al actual. La corrección que nos dió era correcta, pero el programa seguía sin funcionar. Cabe destacar que nos quedamos hasta mucho después del horario escolar que nos correspondía, de hecho era más del doble de tiempo que teníamos ese día en el colegio. Luego de mucho tiempo decidimos asumir que quizá habían errores al operar con el dato para aplicar el protocolo, luego probando, nos dimos cuenta que por alguna razón externa a nosotros el compilador no manejaba correctamente la multiplicación ni la división, haciendo que los registros se cargaran con valores que no estaban permitidos en el protocolo y que las antenas no podían emitir por un impedimento físico. De esta forma concluyó nuestro día con un final muy desalentador, no teníamos un programa útil para cargar en el Cohete ni podíamos hacer nada a nuestro alcance para arreglar nuestro programa, que habíamos programado asumiendo que el compilador haría exactamente lo que le decíamos. Nos retiramos a nuestras casas ya que nos habíamos quedado hasta tan tarde que comenzaban las clases del Instituto Tecnológico que funciona en nuestro colegio por las noches y debíamos liberar el Aula. Damos las gracias a Edgardo y a Leandro por haberse quedado con nosotros y habernos ayudado.

No hay comentarios.: