Autor Tema: GiroPlay: un display giratorio con vistas  (Leído 329323 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado gera

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 2188
Re: GiroPlay: un display giratorio con vistas
« Respuesta #405 en: 24 de Julio de 2008, 22:29:41 »
Subo una foto q saqué haciendo "trampa" jeje. Puse un intervalo constante entre pixeles y con un regulador acomodé la velocidad del rotor hasta q se viera la imagen.


Sigo rompiendome la cabeza para hacerlo andar bien... probe con otro metodo: determinando el periodo de revolucion y dividiendolo en 60 (cantidad de pixeles total), pero no logro q funcione...
Alguna idea?
Saludos!

"conozco dos cosas infinitas: el universo y la estupidez humana. Y no estoy muy seguro del primero." A.Einstein

Desconectado jfh900

  • Moderador Local
  • DsPIC30
  • *****
  • Mensajes: 3595
Re: GiroPlay: un display giratorio con vistas
« Respuesta #406 en: 24 de Julio de 2008, 22:35:23 »
Hola muy bonito el invento. Una pregunta tonta ¿se supone que tienes un punto de referencia fijo mediante un interruptor o una barrera de infrarrojos?.

Un saludo
* Cuando hables, procura que tus palabras sean mejores que el silencio.
* 'Todos somos ignorantes, lo que ocurre es que no todos ignoramos las mismas cosas.' Albert Einstein.
* No hay nada peor que un experto para evitar el progreso en un campo
* "La vida es como una novela. No importa que sea larga, sino que esté bien narrada" Seneca
* La vida no se vive por las veces que respiras, sino por los momentos que dejan sin aliento.
* Dios dijo: ∇·E=ρ/ε0 ; ∇·B=0 ; ∇xE=-dB/dt ; ∇xB= μ0ε0dE/dt..y la luz se hizo..!!..

Desde España Jesús

Desconectado gera

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 2188
Re: GiroPlay: un display giratorio con vistas
« Respuesta #407 en: 24 de Julio de 2008, 22:44:19 »
Exacto, en esta foto se ve el led infrarrojo y el fototransistor


saludos!

"conozco dos cosas infinitas: el universo y la estupidez humana. Y no estoy muy seguro del primero." A.Einstein

Desconectado RALF2

  • Moderadores
  • PIC24H
  • *****
  • Mensajes: 2062
Re: GiroPlay: un display giratorio con vistas
« Respuesta #408 en: 24 de Julio de 2008, 23:35:54 »
Wao esta quedandote fino!  :mrgreen:

Me voy a animar a hacer el mio  :mrgreen:
De momento no te ayudo con el codigo porque veo que lo estas haciendo en C y yo uso el basic  :lol:

Saludos

Desconectado Nocturno

  • Administrador
  • DsPIC33
  • *******
  • Mensajes: 18310
    • MicroPIC
Re: GiroPlay: un display giratorio con vistas
« Respuesta #409 en: 25 de Julio de 2008, 01:32:58 »
Lo que te ocurre básicamente Gera es que no estás pintando los pixeles en la rutina de interrupción del Timer, sino que los imprimes en una rutina no sincronizada que es llamada desde un bucle sin fin en el programa principal.

Mi sugerencia:
- guarda en un array todos los pixeles que quieras pintar. Si son 60 pixeles tu array sería por ejemplo:
       int8 VRam[60];
- en tu Timer saca por el PORTB el byte que corresponda en cada momento e incrementa el contador:
       port_b=VRam[contador++];
- en tu rutina asíncrona (escribir) puedes ir rellenando el array con la información que quieras que salga, pero sin preocuparte por hacerlo rápido ni de manera continua. Una vez que esté cargada la información, será el Timer el responsable de sacarla fuera.

Suerte

Desconectado gera

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 2188
Re: GiroPlay: un display giratorio con vistas
« Respuesta #410 en: 26 de Julio de 2008, 01:00:54 »
Muchas gracias por tus consejos Nocturno!!! a mi jamas se me hubiera ocurrido este metodo tan eficaz ;)
Ya tengo algo mas o menos funcionando... es un poco inestable, supongo q es por el "redondeo" de los periodos (q son de tipo float). Tenia pensado hacerlo tomando como unidad de tiempo los ticks del clock, ya voy a ver como puedo hacer.
Tambien ocurre q se demora demasiado en agarrar "ritmo", salvo q lo ponga a toda velocidad al principio. Es raro porq no va probando valores, sino q calcula el ancho de pixel en cada vuelta... en fin, con el tiempo ire optimizando el codigo (espero).

ATENCION: El siguiente video no es apto para personas con problemas cardiacos.. jajaja


Y como buen usuario de software libre, aca dejo el codigo para q sea usado a gusto y placer bajo la licencia GPL :P

Código: [Seleccionar]
#include <16f873a.h>
#fuses HS,NOWDT,NOPROTECT,NOLVP,PUT,NOBROWNOUT
#use delay(clock=20000000)
#byte port_b=0x06
#use fast_io(b)

#define pixeles 120  //total de pixeles horizontales
//contador: nºdesbordamientos de tmr1
//timer: valor con el q cargamos tmr1
//T_rev: periodo de revolucion
//T_tmr: periodo de desbordamiento de tmr1
long int contador,timer;
double T_rev,T_tmr;
const float usxtick=0.2;

//matriz y caracteres a mostrar
char matriz[60];
char num[10][4]={{0x7E,0x91,0x89,0x7E},  //0
                 {0x00,0x82,0xFF,0x80},  //1
                 {0xE2,0x91,0x89,0x86},  //2
                 {0x81,0x89,0x95,0x63},  //3
                 {0x18,0x14,0x12,0xFF},  //4
                 {0x8F,0x89,0x89,0x71},  //5
                 {0x7C,0x92,0x91,0x60},  //6
                 {0xE1,0x11,0x09,0x07},  //7
                 {0x76,0x89,0x89,0x76},  //8
                 {0x06,0x89,0x69,0xE3}}; //9
char espacio[4]= {0,0,0,0};

#INT_CCP1
void handle_ccp1_int()
{
   if(contador!=pixeles)
   {
      T_tmr=T_rev/pixeles;
      timer=65536-(T_tmr/usxtick);
      T_rev=contador*(65536-timer)*usxtick;
   }
   set_timer1(timer);
   contador=0;
}

#INT_TIMER1
void handle_timer1_int()
{
   //dividimos el display en 2 de 180º
   port_b=contador<(pixeles/2)?matriz[contador++]:matriz[contador++ -60];
   set_timer1(timer);
}
void main()
{
   int i,j;
   setup_timer_1(T1_INTERNAL|T1_DIV_BY_1);
   setup_ccp1(CCP_CAPTURE_RE);
   enable_interrupts(INT_CCP1);
   enable_interrupts(INT_TIMER1);
   enable_interrupts(GLOBAL);
   
   set_tris_b(0x00);
   port_b=0x00;

   //este par de bucles cargan la matriz con los numeros del 1 al 6
   //intercalando un espacio de por medio
   for(i=0;i<=6;i++)
   {
      for(j=0;j<=3;j++)
      {
         matriz[8*i+j]=num[i][j];
         matriz[8*i+4+j]=espacio[j];
      }
   }
   for(j=0;j<=3;j++)
   {
      matriz[56+j]=espacio[j];
   }
   while(TRUE);
}

PD: gracias a todos por sus halagos, pero el q se merece los aplausos aca es nocturno, que fue el de la idea, y el q me resolvio todos los problemas jaja. Gracias!

"conozco dos cosas infinitas: el universo y la estupidez humana. Y no estoy muy seguro del primero." A.Einstein

Desconectado Nocturno

  • Administrador
  • DsPIC33
  • *******
  • Mensajes: 18310
    • MicroPIC
Re: GiroPlay: un display giratorio con vistas
« Respuesta #411 en: 26 de Julio de 2008, 01:51:01 »
Todavía no permanece completamente estable, pero no creo que sea culpa del programa.
Me he fijado en que no está equilibrado porque la base no hace más que moverse.
Si la parte giratoria no está perfectamente equilibrada el giro no es homogéneo, además de que con el uso terminará por romperse por alguna parte, y el motor trabaja mucho más para mantener las revoluciones.

Desconectado gera

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 2188
Re: GiroPlay: un display giratorio con vistas
« Respuesta #412 en: 26 de Julio de 2008, 02:29:03 »
Estoy de acuerdo, le dedique poco a la estabilidad mecanica... lo que pasa es q no queria ponerlo directamente sobre el motor, asique arme un pequeño sistema de engranages para evitar torcer el eje del motor (y para reducir un poco las revoluciones). Evidentemente, mientras mas partes tiene un sistema, mas probabilidades de q no funcione como uno quiere... Ademas la idea era poner la bateria adentro de la caja para q no se mueva, pero no me quedo espacio jeje.
Igual esto era para una version de prueba... voy a ver si logro equilibrar bien el rotor con unos contrapesos, y quizas invierta algo de plata y compre un buen motor, y una base...
Escucho sugerencias ;)

Gracias y saludos!

"conozco dos cosas infinitas: el universo y la estupidez humana. Y no estoy muy seguro del primero." A.Einstein

Desconectado RALF2

  • Moderadores
  • PIC24H
  • *****
  • Mensajes: 2062
Re: GiroPlay: un display giratorio con vistas
« Respuesta #413 en: 26 de Julio de 2008, 12:25:42 »
Toda una belleza!
Pana podrias colocar el esquematico tambien para hecharle una ojeada  :D

Gracias

Desconectado gera

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 2188
Re: GiroPlay: un display giratorio con vistas
« Respuesta #414 en: 26 de Julio de 2008, 13:50:45 »
Muchas gracias RALF! Haria el esquematico si tuviera algun software decente jeje. Ya voy a ver q consigo. Igual no es mucha ciencia, tenemos un regulador para bajar los 9V de la bateria a 5V, despues un pic16f873a con su alimentacion, su cristal de 20MHz, y el CCP1 al fototransistor.
Creo q lo mas dificil aca fue el montado sobre la caja de CDs jajaja. Asi y todo, todavia no me convence, cuando tenga algo de tiempo (porq ando a full con la facu :S) voy a sacar la v2.0 ;)
salutes!

« Última modificación: 26 de Julio de 2008, 13:53:37 por gera »

"conozco dos cosas infinitas: el universo y la estupidez humana. Y no estoy muy seguro del primero." A.Einstein

Desconectado RALF2

  • Moderadores
  • PIC24H
  • *****
  • Mensajes: 2062
Re: GiroPlay: un display giratorio con vistas
« Respuesta #415 en: 04 de Agosto de 2008, 22:40:03 »
Muchas gracias RALF! Haria el esquematico si tuviera algun software decente jeje. Ya voy a ver q consigo. Igual no es mucha ciencia, tenemos un regulador para bajar los 9V de la bateria a 5V, despues un pic16f873a con su alimentacion, su cristal de 20MHz, y el CCP1 al fototransistor.
Creo q lo mas dificil aca fue el montado sobre la caja de CDs jajaja. Asi y todo, todavia no me convence, cuando tenga algo de tiempo (porq ando a full con la facu :S) voy a sacar la v2.0 ;)
salutes!


Hola gera!
Pero los led los manejas directamente con el pic?

Saludos

Desconectado gera

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 2188
Re: GiroPlay: un display giratorio con vistas
« Respuesta #416 en: 05 de Agosto de 2008, 19:19:31 »
Claro, son 8 LEDs conectados directamente al puerto B del pic (con sus resistencias claro). Por el momento estoy un poco (bastante) ocupado con la facultad, pero cuando me haga un tiempito hago los esquematicos y explico bien como lo construi.

Por cierto, ya mejore muuuchas cosas. Ahora la imagen es mucho mas estable, e implemente unas funciones para escribir texto sin tener q armar la matriz manualmente, ademas una funcion de scroll ;). Y tengo pensadas varias cositas, ya les voy a contar ;)

Saludos!

"conozco dos cosas infinitas: el universo y la estupidez humana. Y no estoy muy seguro del primero." A.Einstein

Desconectado RALF2

  • Moderadores
  • PIC24H
  • *****
  • Mensajes: 2062
Re: GiroPlay: un display giratorio con vistas
« Respuesta #417 en: 31 de Agosto de 2008, 14:45:52 »
Que tal amigos!
Gera una pregunta a que velocidad gira el aparatito?  :D
Cada cuanto tiempo activas una columna para ir formando el caracter ?  :mrgreen:

Gracias

Desconectado gera

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 2188
Re: GiroPlay: un display giratorio con vistas
« Respuesta #418 en: 31 de Agosto de 2008, 22:19:31 »
Buenas ralf!
La velocidad del motorcito es controlada por un regulador, la misma varia entre 20 y 25fps (1200 a 1500rpm). La imagen se forma independientemente de la velocidad, gracias al metodo q me explico nocturno ;)
El tiempo de encendido de la columna depende tanto de la velocidad como del diametro del rotor y el ancho del pixel. Estos son valores q podes calcular a tu gusto.
Sinceramente no me acuerdo los valores q use yo, y la hojita donde saque los calculos se perdio :S pero te explico mas o menos como los calcule:
Primero calculamos la circunferencia de giro, q seria el ancho de nuestra "pantalla". Esto es p=2pi*r   donde p es el perimetro, y r es el radio.
Luego elegimos el ancho de nuestros pixeles y veremos cuantos entran en nuestra pantalla, o bien, elegimos la "resolucion" de nuestra pantalla y vemos q ancho de pixel necesitamos para eso. La relacion entre ambos es: ancho de pixel=perimetro/nºpixeles. Yo use 120 pixeles para un diametro de mas o menos 20cm.
El metodo para calcular el periodo q dura cada columna encendida lo explica nocturno unas paginas mas atras, saludos!

"conozco dos cosas infinitas: el universo y la estupidez humana. Y no estoy muy seguro del primero." A.Einstein

Desconectado RALF2

  • Moderadores
  • PIC24H
  • *****
  • Mensajes: 2062
Re: GiroPlay: un display giratorio con vistas
« Respuesta #419 en: 01 de Septiembre de 2008, 16:27:27 »
Que tal Gera, gracias por tu respuesta  :mrgreen:

Ok te voy a decir como pienso hacerlo a ver si te parece correcto  :mrgreen:
Pienso utilizar led RGB catodo comun que ya poseo.
Mi idea es la siguiente no se si estare equivocado  :?
La idea es tener 8 filas por 85 columnas ( 8x85), para mostrar algunos caracteres  :mrgreen:
Entonces me plantie que para que no se vea el parpadeo de los led la frecuencia de muestreo debe ser de al menos 50Hz, en otras palabras las 85 columnas deben ser muestreadas 50 veces en un segundo; para ello, la velocidad del motor debe ser de 3000 RPM   :shock:
eso nos da 20ms/vuelta, luego como quiero que las columnas ocupen solo 180 grados ( la mitad de una vuelta) entonces haria 10ms/85 = 117.64us
por lo tanto tendria que desplegar cada columna cada 117.64us, ya que, 117.64us * 85 = 10ms (180 grados).
Ahora bien el ancho del pixel vendra dado por el diametro del circulo formado por el giro play y la velocidad del motor (3000rpm)

No se si esto que me estoy plantendo este correcto asi que me gustaria saber la opinion de los amigos del foro.

Saludos


 


 

anything