TODOPIC

Mecatrónica => DMX512 - Diseños y Proyectos => Mensaje iniciado por: Cryn en 09 de Diciembre de 2007, 01:20:41

Título: dudas Led's RGB
Publicado por: Cryn en 09 de Diciembre de 2007, 01:20:41
Estoy estrenando unos RGB, de catodo comun, y pues tienen una muesca por una de las patas, y pensaba que ese era el comun pero no!, el comun es uno de alado :D :D y pues esto es normal??

ahora pretendo hacer mas o menos algo como las muchas muestras que hay en youtube, solo ver la gama de colores que se puede ver, y talvez unos pulsadores para incrementar verde azul y rojo, como otra opcion

ahora vi el ejemplo de nocturno sobre generar 3 pwm usando un timer, y pretendo hacerlo con ello, ya que hare el programa para un 16f648a (que solo tiene un canal pwm o 2 creo)

- que frecuencia debo usar?? periodo
- es necesario usar transistores a la salida del pic a los pines del rgb?

un saludo, y con vuestras respuestas me pongo a trabajar en el codigo, para lo que pretendo
Título: Re: dudas Led's RGB
Publicado por: Nocturno en 09 de Diciembre de 2007, 02:49:50
La frecuencia debe ser superior a 50Hz. Teóricamente a 25Hz ya superamos la velocidad a la que la retina deja de ver parpadeos para ver cambios continuos, pero en la práctica a esa frecuencia se sigue viendo parpadear.
Para un sólo led no necesitarás transistores; puedes conectar directo el led a los pines del micro a través de resistencias.
Título: Re: dudas Led's RGB
Publicado por: Marttyn en 09 de Diciembre de 2007, 04:00:59
nocturno, no me gusta llevarte la contraria, pero habria que tener cuidado de que led pongas, y sobre todo las resistencias... el transistor es para cuando consumes mas de 20mA del pic, asi que habria que buscar la resistencia adecuada... pero hace unos dias compre un led rgb de 3W, que consumen alrededor de 350mA por color... ESTOY DESEANDO QUE ME LLEGUE PARA HACER LAS PRUEBAS!!!
en el caso de cryn es poco probable que su led consuma demasiado, ya que habra de patas del led, y estos suelen ser los normales, con consumos maximos de 20-25mA por color, siempre que se le coloque la resistencia correspondiente, claro.

manolo, aprobechando que te tengo aqui me gustaria hacerte unas preguntitas sobre tu ejemplo de led rgb:
en la rutina de "procesaRGB", en el if que procesas el valor numerico introducido haces el siguiente calculo
Código: C
  1. Rojo=Rojo*10+Buffer[i]-48;
y queria saber (si puede ser  :mrgreen:) que significa todo eso...
tambien tenia una duda con la rutina de "demo", porque me da la impresion que solo muestras unos 1500 colores, aunque tu ALARDEAS de poder visualizar toda la gama cromatica (16 millones de colores) :P... y a un milisegundo por color como tienes en el codigo, enseñar todos los colores tardaria 4 horas y 40 minutos...  :D :D :D
y ahora, despues de criticarte duramente, me gustaria hacerte otra pregunta  :5}
si por ejemplo tengo una variable INT8, y le voy sumando 1, luego 1, y asi hasta que desborda, luego que ocurre? despues del 255 continua contando por el 0? y si a 250 le sumo 10, me daria 4 como resultado? eso no da ningun problema ni nada? es que yo recuerdo de VB que si se me desbordaba una variable se finalizaba el programa... aqui en C no hay problema?
gracias y salu2
Título: Re: dudas Led's RGB
Publicado por: Nocturno en 09 de Diciembre de 2007, 04:14:10
nocturno, no me gusta llevarte la contraria, pero habria que tener cuidado de que led pongas, y sobre todo las resistencias... el transistor es para cuando consumes mas de 20mA del pic, asi que habria que buscar la resistencia adecuada... pero hace unos dias compre un led rgb de 3W, que consumen alrededor de 350mA por color... ESTOY DESEANDO QUE ME LLEGUE PARA HACER LAS PRUEBAS!!!
en el caso de cryn es poco probable que su led consuma demasiado, ya que habra de patas del led, y estos suelen ser los normales, con consumos maximos de 20-25mA por color, siempre que se le coloque la resistencia correspondiente, claro.
Tienes razón, si pasa de 20mA habrá que "transistorizarlo". Yo daba por hecho que era normalito.

manolo, aprobechando que te tengo aqui me gustaria hacerte unas preguntitas sobre tu ejemplo de led rgb:
en la rutina de "procesaRGB", en el if que procesas el valor numerico introducido haces el siguiente calculo
Código: C
  1. Rojo=Rojo*10+Buffer[i]-48;
y queria saber (si puede ser  :mrgreen:) que significa todo eso...
Rojo recibe un valor que se introduce por teclado. Las teclas recibidas están en Buffer. En cada iteración, hacemos lo siguiente:
- Rojo se mueve un dígito hacia la izquierda: Rojo = Rojo*10
- El valor ascii de la tecla recibida se convierte en un número entero: Buffer[ i ]-48
- ese número entero se suma a Rojo: Rojo=Rojo*10+Buffer[ i ]-48;

tambien tenia una duda con la rutina de "demo", porque me da la impresion que solo muestras unos 1500 colores, aunque tu ALARDEAS de poder visualizar toda la gama cromatica (16 millones de colores) :P... y a un milisegundo por color como tienes en el codigo, enseñar todos los colores tardaria 4 horas y 40 minutos...  :D :D :D
Obviamente en la demo no se ven todos porque tardaría mucho. Donde se ven todos es tecleando directamente el código RGB de cada color. En ese caso, como tienes la opción de dar a cada color un valor entre 0 y 255, tienes 256^3 colores = 16M colores.

y ahora, despues de criticarte duramente, me gustaria hacerte otra pregunta  :5}
si por ejemplo tengo una variable INT8, y le voy sumando 1, luego 1, y asi hasta que desborda, luego que ocurre? despues del 255 continua contando por el 0? y si a 250 le sumo 10, me daria 4 como resultado? eso no da ningun problema ni nada? es que yo recuerdo de VB que si se me desbordaba una variable se finalizaba el programa... aqui en C no hay problema?
gracias y salu2
Ea, pues ahora no tengo ganas de contestarte, por criticón.  :D

Bueeeeeno, ahí va. Considera que las variables recorren un círculo y cuando llegan a 255 siguen por 0 como si tal cosa. En ese caso, 250+10=4.
Título: Re: dudas Led's RGB
Publicado por: Marttyn en 09 de Diciembre de 2007, 13:48:37
ah! una ultima cosa... porque pones punto y como ";" despues de los corchetes del IF del timer0 ISR, y despues del WHILE del main? signigica algo?
yo no los pongo, y CREO que funciona igual...
y por cierto... pones el timer en 140 para que desborde cada 58uS, que en 256 ticks serian casi unos 15mS de periodo de PWM, lo que nos daria una frecuencia de unos 67 ciclos por segundo. estos valores son fruto de pruebas o simplemente lo hiciste asi porque te gustaban esos numeros?
entiendo que a partir de una determinada frecuencia, el ojo ya no ve los leds parpadear, pero supongo que habra algun valor optimo, no? o mientras la frecuencia sea mayor a la que perciben nuestros ojos cualquiera vale?
hay TANTAS cosas que no se, y por suerte, cuando me intereso en alguna de ellas, el gran nocturno ya ha recorrido ese camino y puede guiarme :D
Título: Re: dudas Led's RGB
Publicado por: stk500 en 09 de Diciembre de 2007, 14:45:59
Estoy estrenando unos RGB, de catodo comun, y pues tienen una muesca por una de las patas, y pensaba que ese era el comun pero no!, el comun es uno de alado :D :D y pues esto es normal??

ahora pretendo hacer mas o menos algo como las muchas muestras que hay en youtube, solo ver la gama de colores que se puede ver, y talvez unos pulsadores para incrementar verde azul y rojo, como otra opcion

ahora vi el ejemplo de nocturno sobre generar 3 pwm usando un timer, y pretendo hacerlo con ello, ya que hare el programa para un 16f648a (que solo tiene un canal pwm o 2 creo)

- que frecuencia debo usar?? periodo
- es necesario usar transistores a la salida del pic a los pines del rgb?

un saludo, y con vuestras respuestas me pongo a trabajar en el codigo, para lo que pretendo
Hola Cryn amigo  :mrgreen:
Aqui te pongo un Esquema para que vea la Idea, claro depende  del tipo de Led RGB que tu usa ya que lo hay de diferente consumo, como te explica manolo son para LED standard, pero lo hay de 1W,5W, 10W y algo mas, claro es que asi no lo puede atacar directamente a los Port, siempre usa un Transistor con Resistencia de Carga y mas  aun los LED de gran consumo necesitan de un Radiador,

http://tobe.nimio.info/led_mood_lamp.php
Muchas suerte y espero ver por aqui tu projecto  :lol:
Título: Re: dudas Led's RGB
Publicado por: Nocturno en 09 de Diciembre de 2007, 15:08:10
ah! una ultima cosa... porque pones punto y como ";" despues de los corchetes del IF del timer0 ISR, y despues del WHILE del main? signigica algo?
yo no los pongo, y CREO que funciona igual...
Efectivamente, no son obligatorios. Los pongo por coherencia con el resto de estructuras en C.

y por cierto... pones el timer en 140 para que desborde cada 58uS, que en 256 ticks serian casi unos 15mS de periodo de PWM, lo que nos daria una frecuencia de unos 67 ciclos por segundo. estos valores son fruto de pruebas o simplemente lo hiciste asi porque te gustaban esos numeros?
entiendo que a partir de una determinada frecuencia, el ojo ya no ve los leds parpadear, pero supongo que habra algun valor optimo, no? o mientras la frecuencia sea mayor a la que perciben nuestros ojos cualquiera vale?
No hay base teórica detrás de esa frecuencia, sólo empírica.
Título: Re: dudas Led's RGB
Publicado por: Marttyn en 09 de Diciembre de 2007, 15:22:17
No hay base teórica detrás de esa frecuencia, sólo empírica.

 8) 8) la que mas me gusta!  :D
gracias manolo
Título: Re: dudas Led's RGB
Publicado por: Cryn en 09 de Diciembre de 2007, 17:13:14
gracias por las respuestas, entonces trabajare con 50Hz (o mas)

como estamos usando PWM, pues al led le estamos dando un valor promedio, el cual si mal no recuerdo es: (1/T)*Integral(de 0 a T) de f(x)dx, donde f(x) es la funcion, que en este caso seria una cuadrada, y no importa la freceuncia, ya que siempre sera el mismo resultado:

(http://img108.imageshack.us/img108/9484/ecuamj5.jpg)
hay alguna especificacion que diga en las hojas de datos respecto a ello??
No hay base teórica detrás de esa frecuencia, sólo empírica.
creo que no lo hay, cierto? pero de esa formula creo que se puede optar por cualquier frecuencia, arriba de la cual la retina de nuestro ojo ya no distinga el parpadeo y maximo hasta una freceuncia que pueda ver el led, ya que si es muy muy alta y el led no distingue supongo que el led no reaccionaria (pero cual la frecuencia maxima? dice en la hoja de datos?).

con respecto a mis leds son como estos, son los standar, verdad?:
(http://img114.imageshack.us/img114/8469/13446670ai7.jpg)
no creo que pasen del 1/4 o 1/2 W exagerando, no??

claro que lo cuelgo por aca cuando este todo terminado y funcionando :mrgreen:

un saludo
Título: Re: dudas Led's RGB
Publicado por: stk500 en 09 de Diciembre de 2007, 17:31:11
eso son como lo que tiene Manolo :D
lo puede montar directo al pic
pero yo pondria resistencia y asi no folsar el pic y claro dependiendo el pic que usa y su caracteristica de Port de salida, :mrgreen:
mira el datasheet de los led y a ver que consumo tiene y el pic.
Suerte amigo
Título: Re: dudas Led's RGB
Publicado por: Cryn en 09 de Diciembre de 2007, 18:20:46
vale pues, gracias por la respuesta, si les pongo resistencias de 510 ohm que son con las que vinieron
Título: Re: dudas Led's RGB
Publicado por: stk500 en 09 de Diciembre de 2007, 18:46:38
Para eso se recomienda DMX512 y asi en 256 punto por punto controlar las gamas de colores,
tengo implementacion para eso todos en ingles,
tengo los planos de controlar 512 Led en su rango de gamas :-)
pero en AVR Atmel :lol:
Título: Re: dudas Led's RGB
Publicado por: Cryn en 09 de Diciembre de 2007, 19:07:50
Citar
- que frecuencia debo usar?? periodo

Si vas a trabajar con leds RGBs tienes que tener en claro que pueden coexistir tres frecuencias diferentes:

a) la frecuencia de refresco propiamente dicha que es la que me imagino que mencionas.
b) la frecuencia del pwm de los leds para darles diferente valor (que no es lo mismo que color, más abajo lo explico).
c) la frecuencia de actualización en donde puedes cambiar la información del led.

Tú puedes tener por ejemplo la frecuencia de refresco de 100 hertz para que no se observe parpadeo, la frecuencia de actualización de información de 60 hertz para emular el sincronismo de actualización del NTSC, y la frecuencia pwm de los valores del led en digamos 5 MHz para poder desplegar digamos (es un decir, hay que hacer cálculos exactos) 4096 colores.


bueno me referia a la frecuencia del pwm, ya qeu de el hablaba todo el tiempo, jeje :mrgreen:

ni idea que era necesario una frecuencia de refresco, y eso en codigo de ccs que significa??
y la frecuencia de actualizacion?? :shock:
yo creia que solo cambiaba los datos por ejemplo con un pulsador, y ya el programa solito retardaba la caida en el pwm
bueno haber si me das la manito en esas dudas :mrgreen:
Título: Re: dudas Led's RGB
Publicado por: Cryn en 09 de Diciembre de 2007, 19:37:58
ok, :mrgreen: ya me estaba asustando con tantas frecuencias :D :D

ahora me doy tiempo y comienzo con el codigo de lleno, un saludo, supongo que sera con la resolucion de 8 bits como lo hizo nocturno, supongo que saldran como unas 20k o 30k de tonalidades como mencionaste JCC40

un saludo y ahi pongo el codigo y si puedo algun video y fotos :mrgreen:

un saludo mg
Título: Re: dudas Led's RGB
Publicado por: Gorgonas en 09 de Diciembre de 2007, 19:41:57
Usando el metodo de nocturno, para conseguir una fecuencia decente sin parpadeos y poder hacer mas cosas he puesto un cristal de 16Mz, con el de 4 interno me parpadeaba todo el rato. Y otra cosa si alguien se fia del eskema que han colgado mas arriba de la mood lamp. Las resistencias son incorrectas para un led normal de 3w :D
Título: Re: dudas Led's RGB
Publicado por: Nocturno en 10 de Diciembre de 2007, 02:50:20
¿Cómo se interpreta ese diagrama de cromaticidad?
Título: Re: dudas Led's RGB
Publicado por: Nocturno en 11 de Diciembre de 2007, 02:21:18
Gracias por la explicación, es realmente un tema muy interesante.

Hay algo que no entiendo de todas formas: si la limitación para conseguir los 16M de colores no es eléctrica sino visual, ya que los saltos deben producirse en un mínimo de 0.027 de ECTH, ¿cómo es que se consiguen encajar todos los colores con tablas de corrección?
Título: Re: dudas Led's RGB
Publicado por: stk500 en 11 de Diciembre de 2007, 03:07:47
Efectivamente amigo JCC40!
aqui ha dado un tutorial muy intenso, lastima que yo no este a tu alcance y poder programarlo asi, lo he hecho con PWM y Dimmando sus
corriente general de para asi darle mas brillos, yo uso un multiplexer DMX que controla la corriente de 0 a 5 Voltio, y de 0 a 10 Voltio, y creo que asi le saco todas las gamas linear, pero no veo ninguna Oscilaciones, lo que explica tu aqui no lo estuve en cuenta al hacerlo,
aunque me gustaria poder pasar por aqui algunos Video y foto del ambiente donde hicimos un Ecenario con mas 5000 LED RGB y lo encontre super genial los efecto.
pero ya pondre aqui Foto y Video para que vean sus efecto :mrgreen:
Título: Re: dudas Led's RGB
Publicado por: Cryn en 11 de Diciembre de 2007, 15:46:41
haber, estoy trabajando en el codigo, de momento hice esto:

Código: [Seleccionar]
#include <16f648a.h>
#FUSES NOWDT,INTRC_IO,NOPROTECT,BROWNOUT,PUT,NOLVP,MCLR,NOCPD
#use delay(internal=4000000)
#define Rojo PIN_B0
#define Verde PIN_B1
#define Azul PIN_B2

int caida_rojo,caida_verde,caida_azul,count_pwm;

#int_Timer0
void tmr0_handle()
{
   count_pwm++;
   if(count_pwm==caida_rojo)
      output_low(Rojo);
   if(count_pwm==caida_verde)
      output_low(Verde);
   if(count_pwm==caida_azul)
      output_low(Azul);
   if(count_pwm==20)
   {
      output_b(0x07);
      count_pwm=0;
   }
   set_timer0(131);
}

void demo()
{
}

void main()
{
   output_b(0);
   set_timer0(131);
   setup_timer_0(RTCC_INTERNAL|RTCC_DIV_4);
   setup_oscillator(OSC_4MHZ);
   //enable_interrupts(INT_TIMER0);
   enable_interrupts(GLOBAL);
   while(true)
   {
      if(input(PIN_A0))
      {
         delay_ms(20);
         while(input(PIN_A0))
         delay_ms(20);
         enable_interrupts(INT_TIMER0);
         //output_b(7);
         caida_rojo++;
         if(caida_rojo==21)
            caida_rojo=0;
      }
      if(input(PIN_A1))
      {
         delay_ms(20);
         while(input(PIN_A1))
         delay_ms(20);
         enable_interrupts(INT_TIMER0);
         //output_b(7);
         caida_verde++;
         if(caida_verde==21)
            caida_verde=0;
      }
      if(input(PIN_A2))
      {
         delay_ms(20);
         while(input(PIN_A2))
         delay_ms(20);
         enable_interrupts(INT_TIMER0);
         //output_b(7);
         caida_azul++;
         if(caida_azul==21)
            caida_azul=0;
      }
      if(input(PIN_A3))
      {
         output_b(7);
         enable_interrupts(int_timer0);
         demo();
      }
   }
}

con los pulsadores cambia de color, pero no se logra distinguir con claridad ya que al parecer los tres leds se encienden al presionar un pulsador, lo que segun mi codigo creo no deberia pasar, aunqeu seguramente estoy cometiendo un error en el codigo. he tenido un problema con el demo, jeje, alguien me comenta algunos pasos a seguir para el demo??

un saludo, y seguire trabajando en el rgb :mrgreen: