Hackeando un ventilador POV de Thermaltake



Volvemos a la carga con un montaje diferente, al estilo DIY de hackaday, hackedgadgets o make.
Hace unos meses, en el escaparate de una tienda de informática, me llamó la atención un ventilador POV (Persistence of vision) de la firma Thermaltake, concretamente el modelo iflash mini.



En él se mostraba el nombre de la marca, la temperatura y creo que las revoluciones ( de esto ya no estoy seguro) y me dije: - si no se puede reprogramar, se puede modificar y si no, se puede aprovechar la PCB de los leds y la alimentación- y me compré uno.
Echando un vistazo a la electrónica, lleva un uC chino MDT2010 ( un clon del PIC16C56 y con patillaje similar al 16F628 ) en formato SOP



El circuito
EL circuito está compuesto por:

  • El uC en cuestión que usa una señal de reloj interna y no necesita cuarzo.
  • Una NTC con un circuito de carga/descarga de un condensador para medir el valor del tiempo de la descarga y así obtener el valor de la temperatura.
  • 8 leds tamaño 0603 que ponen el mensaje en el aire.
  • Una bobina tipo dinamo de 8 cuerpos que genera la tensión que alimenta al circuito y los pulsos para que el uC sepa cuando da una vuelta el ventilador y posicionar los mensajes.
  • Un puente rectificador para la tension de la bobina y un zener estabilizador, además de un condensador electrolítico para reducir el rizado de la tensión de alimentación y algunos componentes discretos
Lo primero de todo fue sustituir el MDT2010 por algo que pudiera programar, y como el patillaje del PIC 16F628 es el mismo, pues quité uno y puse el otro ( no tengo imágenes del antes... )
Como no tenía ganas de crear una rutina que midiera el tiempo de carga y descarga del condensador para obtener el valor de la NTC y así la temperatura, le añadí un DS1820 ( 1-wire sensor de temperatura ) que solo necesita una patilla y una resistencia de pullup para conectarse, pegado a la PCB con un poco de Epoxi.
También añadí una conexión ICD2 para facilitar las operaciones de programación del PIC:
Unos hilos por aqui y otros por allá y así quedó:




Ahora necesitaba usar la señal de los pulsos que vienen de la bobina ( que son 8 por cada vuelta que da, ya que tiene 8 devanados ) y lo más sencillo para contarlos sin usar ninguna rutina de interrupciones es ponerlos en la patilla 3 que es la entrada del contador RTCC, así no me tengo que preocupar si estoy poniendo algo en "pantalla" de que se me escapen pulsos y me desposicione el mensaje en el refresco siguiente (ojo a la resistencia de pullup).
Este es el esquema del antes y el después del circuito:




Ahora el tema está en contar los pulsos de entrada y cada 8, poner el mensaje para refrescarlo.
Al principio me volví un poco loco con los pulsos, pero finalmente conseguí domesticarlos.
Esta es una prueba que hice mandando un pulso cada 8 recibidos:



Trabajando en CCS
Entonces configuramos el RTCC en el inicio del código:

  1. set_rtcc(0);
  2. setup_counters(RTCC_EXT_H_TO_L,RTCC_DIV_1);


  1. void espera_inicio()
  2. {
  3. flancos = get_rtcc(); //asigna valor del contador RTCC
  4. //a flancos
  5. while (flancos<8) //Espera a que hayan pasado
  6. //8 flancos
  7. {
  8. flancos = get_rtcc();
  9. }
  10. set_rtcc(0); //reinicia el contador del RTCC
  11. }



Entonces el programa lo que hace es:
  1. Espera inicio ( 8 pulsos )
  2. Pone mensaje
  3. Vuelve al punto 1 y así el mensaje se mantiene en la misma posición.
He añadido algunas rutinas de giro, efecto con una máscara y parpadeo. Os dejo los fuentes para que si os animáis hagáis algo más creativo.
Los caracteres están todos organizados en 3 tablas de ROM ( por aquello de solo poder direccionar 255 indices )
Unas imágenes:









Un video del funcionamiento (el parpadeo es de la cámara):



Y en el último momento le he añadido una rutina de alarma por sobrecalentamiento, que podeis ver en el siguiente vídeo aplicandole una tobera de soldadura:


Hasta que la temperatura no baja de 50ºC, la alarma no desaparece y no continua su funcionamiento normal.

Hasta otra...

DESCARGAS


1 comentarios:

Mundojadisa dijo...

Una muy buena aplicación, para usar en pc modding-tunning.

 
RaDiKalDeSIG | Designed by Techtrends | © 2007-2008 All rights reserved