viernes, 5 de diciembre de 2008

Guía De Programación en BASIC

Cómo último aporte al Blog y sus lectores, estamos orgullosos de anunciarles que hemos confeccionado una guía lo más completa posible para aprender a programar en BASIC. Fue desarrollada interinamente por los autores de este Blog (Matías Maravankin y Ezequiel Wajs). Consta de 57 páginas divididas y sub-dividas en las secciones que creímos pertinente dividirla. Cada explicación incluye un ejemplo a modo ilustrativo. Están también todas las programaciones desarrolladas por nosotros. Todas ellas, salvo la última, fueron probadas y resultaron eficaces.
Sin más, les dejo la portada de la Guía:

Les queremos comentar que esta guía fue hecha sin ánimo de lucro y que es enteramente producto de nuestro trabajo. No es una traducción, todo el material es original.
Por lo tanto esta guía es completamente gratuita para aquel que la necesite o desee tenerla. La guía no se encuentra en Internet ya que carecemos de un servidor ftp propio y porque deseamos hacer un seguimiento de esta, es decir, saber quienes son aquellos que piden nuestra guía.
Es por esto que aquél que la desee puede enviarme un mail a mi (Ezequiel) a ezewajs@gmail.com o a Matías a mmaravankin@gmail.com para pedirnos la guía que será enviada a la brevedad. El peso de esta es de 381Kb, por lo tanto puede ser enviada tranquilamente por e-mail. La guía posee un Menú y Bookmarks jerarquizados que permiten navegar por ella más fácilmente. Basta con clickear el título deseado en el menú para que la guía se sitúe automáticamente en la hoja deseada.

Esperamos que sea de ayuda para aquél que la solicite.
Sin más nos despedimos.

Matías Maravankin y Ezequiel Wajs

lunes, 17 de noviembre de 2008

Día del Vuelo - 30/10/08

Nos reunimos temprano en la escuela, para preparar los últimos detalles. Reprogramamos algunos de los PIC's cargándoles los programas hechos la noche anterior, esperando que alguno de ellos pueda efectuar el vuelo.
Luego del viaje de aproximadamente hora y media, llegamos a San Vicente donde nos reunimos junto a dos escuelas mas y distintos miembros de la ACEMA.
El predio pertenece a Guillermo Descalzo, también miembro de la ACEMA.
Ni bien llegamos armamos la carpa donde pondríamos todo nuestro instrumental.
Una vez desempacado todo lo traído del micro, presenciamos algunos lanzamientos, desde su éxito total hasta su destrucción contra el suelo.
Mas tarde, junto con Leandro Arcusin nos dispusimos a probar los programas de emergencia realizados la noche anterior.
Al principio y sin saber porque, los PIC's calentaban demasiado al conectarlos en la placa y aplicarle tensión. Es por esto que rehicimos los conexionados auxiliares (que eran cables y resistencias agregadas a ultimo momento de manera rudimentaria) con mas cuidado.
Los conexionados auxiliares consistían en cables y una resistencia que salían directamente de los ejes utilizados para la alimentación (tornillos largos de bronce que atraviesan todas las placas) e iban a algún puerto del PIC para retornar de la misma manera al otro eje.
Luego de este retoque, el programa auxiliar HPWM8 comenzó a funcionar correctamente.
La forma que utilizamos para detectar el funcionamiento, fue usar una antena creada por alumno de 4to año de electrónica que vinieron con nosotros al campo. Esta antena recibía una señal y emitía un tono de la misma frecuencia por unos auriculares. De esta forma cuando variaba la presión, variaba el sonido. Mientras mas alto estaba el cohete, mas aguda debería sonar el tono de la antena y mientras mas bajo, mas grave.
Contentos con lo que pudimos llegar a improvisar, nos fuimos a almorzar un buen asado.
Después del almuerzo, continuamos dándole retoques finales a la placa.
Nuestro mayor desafío, fue el de montar algún tipo de sensor que nos permitiera detectar el despegue. Para ello, utilizamos dos contactos metálicos, separados por un recorte aislante improvisado. Este recorte, por medio de un hilo, salia del cohete y se ataba a la base, de esta manera al despegar el cohete se arrancaría el aislante y las dos placas entrarían en contacto, detectando así el despegue. Esta tarea no fue fácil, ya que nos vimos dificultados por la estructura del cohete y por la ausencia de un hilo resistente al tirón del despegue. Tal fue la incertidumbre, que no supimos si iba a funcionar hasta el momento del despegue.
Llegada la hora de despegue de nuestro cohete que casi no tiramos por la ausencia de cabezales que encajaran en nuestro cohete. Una vez resuelto este problema, lo llevamos hasta la base de lanzamientos, lo colocamos y nos retiramos a una distancia prudencial.
El lanzamiento fue un éxito y pudimos oír el ascenso y descenso del cohete por medio de la antena antes nombrada.
Felices por lo logrado, nos volvimos hacia el colegio, terminando la jornada no de la mejor manera( porque hubiéramos preferido tirar el cohete con el programa final), pero de todas formas alegres. Les dejamos unas fotos de este memorable evento:

Preparando el "combustible" de los cohetistas.

Armando la carpa, Maravankin nos señala el Norte.

Secretos en reunión es mala educación.

Uno de los despegues.

EL asado.

Gracias Leandro por todo lo que nos enseñaste.
Con cariño Mati y Wajs.

Los alumnos que hicieron la antena... y la antena.

Leandro y Ezequiel dando los ultimos retoques.
Matias vigila que ningun asteroide nos arruine la tarde.

Todos.


Hasta aquí llego nuestra participación en el proyecto de CanSat, comenzada en Marzo y realizada a lo largo de todo el Ciclo Lectivo 2008. Estamos agradecidos con nuestros profesores Edgardo Baez, Leandro Arcusin y Mariano Foullier por los conocimientos y buen humor transmitidos hacia nostros. Cerramos esta jornada que fue sin duda enriquecedora para nosotros deseando que esta bitácora sea útil para aquel que la necesite o la encuentre. Sin más damos por cerrado este Blog que contiene todas nuestras experiencias, éxitos y fracasos.

Matias Maravankin y Ezequiel Wajs.








martes, 11 de noviembre de 2008

Noche Previa al Vuelo - 29/10/08

Nos reunimos en la casa de Ezequiel la noche anterior al vuelo para ver si podíamos hacer algo util antes del vuelo y poder darle una culminación a este año de arduo trabajo. Es por esto que nos quedamos hasta altas horas preparando algunos "programas de emergencia" evitando el uso de división y multiplicación. Los programas eran mucho más simples que el Programa Final V3, pero esperabamos que aunque sea cumplieran con su propósito. Es por esto que surgieron esa noche 3 programas:

  • HPWM10
El programa toma una medición en 10 bits, la emite por un PWM donde la frecuencia de este es 1000 mas 2 veces el dato medido (igual que en el protocolo), también las reduce a 8 Bit's mediante una operación bastante grosera (ya que lo correcto hubiera sido dividir el dato por 4) y la guarda en la EEPROM.
  • HPWM8
El programa toma una medición de 8 bits, la emite por un PWM donde la frecuencia de este es 1000 mas 4 veces el dato medido (parecido al protocolo) y luego las guarda en la EEPROM.
  • Almacenamiento
El programa toma y almacena mediciones de 8 bits


Aquí los programas:
Ultima Posibilidad



*Notese que para evitar multiplicar sumamos varias veces el registro.

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.

viernes, 7 de noviembre de 2008

Día Trigésimoprimero (31º) - 17/10/08

Una vez terminado el altímetro, nos dispusimos a calibrarlo.
Para calibrar el circuito debíamos simular los niveles de presión por los que pasaría el cohete una vez en vuelo, es por eso que utilizamos una campana para crear vacío y generar los posibles valores de presión.
La idea original se basa en el método obtenido en la página de Guillermo Descalzo. Esta consiste en un frasco totalmente sellado, excepto por dos agujeros por donde pasarán mangueras, del que se succionará el aire para simular distintos niveles de presión. Al succionar, el agua se abre paso por la manguera y empleando un metro, se determinará la altura a la que llegó el agua. El sistema utilizado es bastante parecido al propuesto por Descalzo, solo que en lugar de emplear un frasco y un altímetro bajo prueba, utilizamos una campana de vacío y el altímetro hecho por nosotros.
En base a los niveles de agua que se presentaban, utilizamos una tabla de equivalencias realizada por Guillermo Descalzo en donde se establecía una altura para cada nivel de agua. Esta es la tabla de equivalencias de Guillermo Descalzo:
El sensor de presión se encarga de asignar un valor de tensión a un determinado valor de presión atmosférica. El circuito estaba conformado por unas resistencias que realimentadas al amplificador hacían que la salida alcance los 5v, pero cuando lo llevamos a la practica no llegábamos ni a 4v y luego de analizar los posibles valores y probar con unas resistencias que saturaban el circuito, logramos llegar a una salida de 4,70v.

lunes, 3 de noviembre de 2008

Día Trigésimo (30º) - 10/10/08

El circuito que habíamos impreso tenía algunos errores y utilizando el Protel 99 SE los corregimos. Procedimos a realizar todo el proceso que nos permite tener como producto final un circuito impreso: (La placa de cobre que utilizamos esta compuesta por una cara de cobre y otra de Fibra de Vidrio)

1. Limpiado y lijado de la Placa sobre la cara de cobre.
2. Planchado del circuito ya impreso con Toner en una hoja especial sobre la placa de cobre.
3. Separado de la hoja de la placa de cobre dentro de un recipiente de agua fria.
Subproducto: Placa de cobre con las pistas de Toner cubriendo parte de su superficie.
4. Sumergido de la placa con las pistas en un tanque de Cloruro Férrico durante 20 minutos.
5. Retirado de la placa del tanque de Cloruro.
6. Enjuagado de la placa.
Subproducto: Placa con el cobre disuelto, salvo en las partes bajo el toner.
7. Removido mediante el lijado de las partes con toner.
Subproducto: Placa con las pistas de cobre.
8. Recubrimiento de la cara de cobre con ContacFlux.
9. Agujereado de los pads y demás orificios necesarios.
Subproducto: Placa final vacía.
10. Montado de los componentes en sus respectivos lugares.
11. Soldado de los componentes.
Producto Final: Circuito Impreso.

Día Vigésimonoveno (29º) - 3/10/08

En vista de que no conseguiamos un sensor y que necesitabamos uno urgentemente para el lanzamiento, desoldamos el sensor de una de las placas de años anteriores.
Le sustituimos los conectores cortados del sensor, por alambres nuevos y lo colocamos en el protoboard, para ver el desempeño del sistema entero.
Conseguimos amplificar las mediciones de variaciones de presion, traduciendolas en variaciones de tensión que son más apreciables que las de la salida del sensor que es de unos pocos miliVolt (mV), de esta forma el PIC puede apreciar con menor error la medición que se está realizando, ya que el PIC mide de 0 a 5 Volt y con una resolución de, como máximo 10 bit's, es decir, 1024 escalones por lo que el escalón más pequeño es de 5V/1024 que es aproximadamente 4 mV . Si no hubieramos amplificado la salida del sensor la medición sería realmente muy vaga. Amplificandola conseguimos un mayor grado de certeza.