jueves, 28 de febrero de 2013

Nuevo TinyVar+ y nuevo firmware 2.0 (alpha)

A la espera de las PCBs para el nuevo TinyVar Plus.

A parte de los cambios en el trazado de la PCB, se han añadido 4 entradas , casi con total seguridad servirán para añadir 4 pulsadores. De esta forma se podrán implementar nuevas funciones como la de poder configurar el vario sin necesidad de reprogramarlo.

El firmware es compatible con la anterior versión de la PCB, la cual también podrá actualizarse fácilmente para añadir los pulsadores, los detalles tendrán que esperar a que lo depure.

De momento, dejo un avance de los cambios que llevo en el firmware. Funcionalmente es igual que el anterior pero el código se ha reestructurado para adaptarlo la nueva PCB.

La principal diferencia de esta alpha radica en el audio, ahora la transición de una frecuencia de audio a otra se hace de forma gradual (lo he llamado audioSmooth), personalmente me gusta mas esta configuración en el sonido, aunque en futuras versiones podrá elegirse entre uno u otro.

También se ha aumentado el filtrado en la velocidad vertical, de forma que es mas estable que antes (obiamente también un poco mas lenta en apreciar los cambios). También será configurable en un futuro.

El firmware está disponible en la sección de descargas.

Cambios respecto a la versión anterior:

-Cambios menores en pantalla de presentación.
-Aumentado el filtro de velocidad vertical (ahora es mas estable).
-Modificaciones en el audio, ahora cambia aumenta/disminuye la frecuencia de forma
 gradual (audioSmooth).
-Cambios menores en el código fuente, adaptándolo al nuevo "tinyVar Plus" (en desarrollo).

Error detectado en el esquema electrónico

(ene-2013)
Error detectado en el esquema electrónico de la primera entrada (ya esta corregido).

Nuevo firmware TinyVar v1.1

(nov-2012)
Nuevo firmware TinyVar v1.1 en la sección de descargas.

Cambios:
-Se pasa del compilador PCWHD v4.104 al PCWHDv 4.128

-Modificaciones en el campo de datos rotativo:
 *Aumentado tiempo que se muestra en pantalla cada dato de 1 a 2 s.
 *Corregida duracion del ultimo dato (duraba la mitad que el resto).
 *Han sido eliminados los campos poco utiles para una mayor simplicidad.
  Campos matenidos:P,T,FL,FLMax,FLmin,VrMin,VrMax,AltRMin,AltRMax
  Campos suprimidos:Pmin,PMax,Tmin,Tmax.
 *Modificado el orden en que aparecen estos a un orden mas logico.

-La lectura del nivel de bateria pasa a realizarse cada 2 minutos en lugar de cada 500ms.

-Modificaciones UART:
 *Corregida definicion de pines TX/RX (estaban invertidos).
 *Se añade envio de datos al exterior via UART, cada 500ms se envian los valores de presion
  y temperatura actuales.
 *Añadido comando reset, al recibir el caracter 'r' o 'R' por la UART TinyVar se resetea.

-Modificada escala de la grafica a 3s/pixel eje X y 4m/pixel eje Y (anteriormente estaban ambos a 1).

-Cambios menores en la interfaz de usuario.

-Corregido bug que provocaba lecturas inestables y desmesuradas por debajo de unos 20ºC.

-Se aumenta la "ventana muda", antes el beep sonaba a partir de +0,1m/s y -0,1m/s, ahora
 suena a partir de +0,2m/s y -2,5m/s.

-Optimizacion de codigo.

TinyVar. Un vario a medida

(sep-2012)

INTRO

El concepto:
Llevaba ya mucho tiempo con la idea en la cabeza de construir un altivario adaptado a mis necesidades y que encajara con mi concepto de aparato simple y eficaz :
Debería ofrecer datos básicos y precisos sobre la ganancia/perdida de altitud en el tiempo e ir en el cockpit porta-instrumentos, junto a la cámara, el teléfono y el GPS. Ya puestos a pedir, ser rápido y simple de encender, para minimizar el “nervio-fatiguismo” producido por la puesta en marcha de tantos aparatos antes de despegar.

Lo vivido:
El diseño y construcción desde cero de este vario me ha llevado muchas horas de trabajo y de sueño, así como una pequeña inversión. He tenido que comprar, quemar, probar, pisotear...  varios  modelos de PICs, LCDs y sensores.  No voy a entrar en detalles para no extenderme demasiado, pero son muchos los imprevistos que van surgiendo  (tensiones de funcionamiento, capacidad de proceso, encapsulado, disponibilidad, funcionamiento no deseado…). Como todo, tiene su parte buena, he aprendido mucho y me llevo la satisfacción de haber terminado un “proyecto útil” y propio.

El resultado:
El resultado ha sido un vario con un mejor tiempo de respuesta, mayor precisión y menor ruido (falsas fluctuaciones de medidas) que mi actual vario comercial (Digifly Flyer II). Objetivo superado!!.
No obstante, tengo pensado continuar trabajando en el firmware para añadirle mejoras y nuevas funciones.

AL GRANO:

El listado que dejo a continuación ha sido la selección final de componentes que por una u otra razón he considerado mas oportuno para este proyecto.

Sensor:
El sensor barométrico utilizado es el MS5611-01BA01 de MEAS Company, encontrado en el gran buscador de chismes “Ebay”. Viene montado en una break-out board con las ventajas que conlleva a la hora de pincharlo en la protoboard.
Microprocesador:
El elegido ha sido un micro controlador PIC24FJ64GA002 de Microchip (16 bits) con encapsulado SPDIP para pinchar en la protoboard. Comprado también a través de Ebay.
Pantalla:
Es un display LCD monocromático de 84x48 pixeles (utilizado por los viejos NOKIA 5110), su uso esta bastante extendido por los hobbistas, por lo que es económico y está bien documentado. También proviene de Ebay  con su correspondiente break-out board.


Alimentación:
Se ha optado por un modulo Step-Up de Sparkfun basado en el integrado NCP1402.
Este módulo nos permite alimentarlo con una única batería de 1,5v ofreciéndonos 3,3v regulados a su salida. Igualmente en su correspondiente break-out board.


A continuación un reportaje fotográfico sobre su evolución:
Primer circuito en la protoboard
Jugando con los sensores
Creando la interfaz
El primer proto
Pruebas en vuelo proto1
PCB casera para proto2
Proto2
Diseñando carcasa para el proto2 con mi fresadora CNC
Carcasa proto2, ensamblado
Carcasa proto2, terminada
Proto1 vs Proto2
Depuración y correcciónde de errores del firm

 

Vídeo

 


Algunos vídeos  mas (clic para verlos):

FUNCIONAMIENTO  

 


TinyVar Descripción de la pantalla: (basado en el firmware v1.1) 
 
1-Velocidad vertical (m/s) (actualizado cada 0,5s con los datos del ultimo segundo).
2-Altitud relativa ("altura sobre el despegue") (m) (se resetea a 0 al encenderlo).
3-Crono hh:mm:ss (se resetea a 0 al encenderlo).
4-Campo de datos variable. Rota cada 2s ofreciendo los siguientes valores:
-P.: Presión atmosférica (mb).
-T.: Temperatura(° C)
-FL.: Altitud FL (m)  (Altura sobre el nivel del mar considerando que hay 1013,25mb a 0 metros).
-FL.M: Máxima altitud FL alcanzada (m) (se resetea al encenderlo).
-FL.m: Mínima altitud FL alcanzada (m) (se resetea al encenderlo). 
-AltR.M: Máxima altitud relativa alcanzada (m) (se resetea al encenderlo).
-AltR.m: Mínima altitud relativa alcanzada (m) (se resetea al encenderlo). 
-Vr.M: Máxima velocidad vertical de alcanzada (m/s) (se resetea al encenderlo).
-Vr.m: Mínima velocidad vertical alcanzada (m/s) (se resetea al encenderlo). 
5-Gráfica de Altura-Tiempo (muy útil en paramotor, con un simple vistazo comprobamos si vamos en crucero, subiendo o bajando). Actualmente la escala es de 3s/pixel para el eje X y 4m/pixel para el eje Y.
6-Porcentaje de batería (10 niveles). Actualizado cada 2 minutos.





Acústica:
 

Actualmente el sonido de ascenso comienza a +0,2m/s y el de descenso a -2,5m/s (entre -2,4 y +0.1 no hay sonido)

El sonido de ascenso es intermitente y de frecuencia y duración proporcional a la tasa de ascenso.
El sonido de descenso es continuo y de frecuencia inversamente proporcional a la tasa de descenso.

Otros:


Internamente tiene el pinout de salida para una UART (niveles TTL 3.3v), trabaja a 9600baud 8bits sin paridad 1bit de stop. 

Por el momento lo único que hace es enviar de forma continuada los valores de presión y temperatura actuales cada 500ms. Además si le enviamos el carácter 'r' o 'R' el vario se reseteara.

Actualmente tengo montado un pequeño altavoz en lugar del piezo-buzzer, tiene un sonido más limpio y bonito, pero por contra consume un poco más (para el próximo dejare el piezo).


Manejo:
Poco que argumentar, tiene 3 interruptores: uno de encendido general (no consume energía alguna en estado apagado), otro para activar/desactivar la iluminación de fondo (lo habitual es llevarla apagada) y otro para activar/desactiva el sonido.

FIRMWARE

Puedes descargar los archivos en la sección de descargas.