Controlador para LEDs RGB con PIC12F629

led1.jpg

En este artículo hablaré de como construir un Controlador para LEDs RGB (rojo, verde, azul) automático. El circuito es muy simple y usa un microcontrolador PIC12F629 de la microchip. Debido a que el programa está hecho sin usar ninguna de las funciones especiales del micro (timer, adc, etc.), con pequeñas modificaciones del listado se puede reemplazar por cualquier micro de la microchip.

micro_led_rgb_foto.jpg

El circuito propuesto puede controlar muchos leds contemporáneamente por lo que es ideal para iluminación (por ejemplo para hacer lámparas multicromáticas). Se pueden conectar tiras de led RGB de hasta 1,5 metros y, cambiando los transistores por otros mas potentes, mucho mas largas. Si usamos led sueltos, metiendo la correspondiente resistencia en grupo de tres (como se ve en la figura siguiente) podemos conectar hasta 45 leds (15 de cada color) siempre en grupos de tres con una resistencia para cada uno.

El cambiador de color trabaja sobre tres canales (rojo, verde, azul) variando continuamente la intensidad de ellos. Como el ciclo de encendido y apagado es levemente distinto entre los 3 canales, nunca se repite la misma condición de iluminación obteniendo así todos los colores posibles con transiciones progresivas.

micro_led_rgb_coneccion.jpg

El sistema de control de la intensidad luminosa es del tipo PWM, es decir, modulación por ancho de impulso. Este método es muy eficiente porque los transistores de salida de los tres canales trabajan en corte o en saturación, disipando muy poca potencia en ellos mismos. Es el mismo principio que se usa para las fuentes de alimentación “switching”, muy pequeñas y con un rendimiento excelente.

micro_led_rgb_circuito.jpg

Como se puede observar, el circuito es muy simple. El micro PIC12F629 tiene solamente 8 patitas: 2 de alimentación y 6 de entradas/salidas. De estas últimas usamos solamente 3 para los distintos canales. La corriente de salida que el micro puede dar no alcanza para encender muchos led, por lo tanto se conectan tres transistores de media potencia (BC337) como amplificadores. Con estos podemos llegar 0,5 Amp por cada canal.

micro_led_rgb_pictorico.jpg

El circuito está pensado para trabajar con 12V. El regulador 78L05 reduce esta tensión a 5V para alimentar solamente el micro. La corriente que va a los led a través de los transistores no pasa por este regulador por lo tanto podemos usar le versión 78L05 de baja corriente, que es muy pequeña y económica (parece un transistor). Los capacitores de 100nF y de 22uF 25V sirven para filtrar la alimentación de 12V.

micro_led_rgb_pcb.jpg

La ventaja de usar un micro está en el hecho que el circuito se simplifica notablemente. Por otro lado esta simplificación obliga a trabajar mucho en el desarrollo del software del micro (el llamado firmware). En nuestro caso el problema está resuelto porque el programa aquí lo tienen ya listo para bajar.

micro_led_rgb_saldature.jpg

En el circuito impreso verán algunas pistas que no se usan. Estas servirán en una versión mas compleja que publicaré en el futuro y que permite regular la velocidad de transición de la luz.

Actualización del 3/7/2011
Gracias al comentario de un lector he descubierto que las versiones mas modernas del sistema de desarrollo MPLAB de la Microchip no reconocen mas la instrucción RES que servía para reservar espacios de memoria. Ha sido reemplazada por el bloque CBLOCK / ENDC. Por lo tanto he actualizado con estas nuevas instrucciones el código assembler para bajar .

 [Software en asm para el micro].

Notice: This work is licensed under a BY-NC-SA. Permalink: Controlador para LEDs RGB con PIC12F629

77 Comments

  1. ezequiel dice:

    la verdad esta lindo pero tira errores al compilar

    Error[118] D:RGBLEDCAMBIACOLOR.ASM 117 : Overwriting previous address contents (0020)
    Error[118] D:RGBLEDCAMBIACOLOR.ASM 117 : Overwriting previous address contents (0020)
    Error[118] D:RGBLEDCAMBIACOLOR.ASM 118 : Overwriting previous address contents (0021)
    Error[118] D:RGBLEDCAMBIACOLOR.ASM 118 : Overwriting previous address contents (0021)
    Error[118] D:RGBLEDCAMBIACOLOR.ASM 126 : Overwriting previous address contents (0022)
    Error[118] D:RGBLEDCAMBIACOLOR.ASM 126 : Overwriting previous address contents (0022)
    Error[118] D:RGBLEDCAMBIACOLOR.ASM 127 : Overwriting previous address contents (0023)
    Error[118] D:RGBLEDCAMBIACOLOR.ASM 127 : Overwriting previous address contents (0023)
    Error[118] D:RGBLEDCAMBIACOLOR.ASM 129 : Overwriting previous address contents (0024)
    Error[118] D:RGBLEDCAMBIACOLOR.ASM 129 : Overwriting previous address contents (0024)
    Error[118] D:RGBLEDCAMBIACOLOR.ASM 130 : Overwriting previous address contents (0025)
    Error[118] D:RGBLEDCAMBIACOLOR.ASM 130 : Overwriting previous address contents (0025)
    Error[118] D:RGBLEDCAMBIACOLOR.ASM 132 : Overwriting previous address contents (0026)
    Error[118] D:RGBLEDCAMBIACOLOR.ASM 132 : Overwriting previous address contents (0026)
    Error[118] D:RGBLEDCAMBIACOLOR.ASM 133 : Overwriting previous address contents (0027)
    Error[118] D:RGBLEDCAMBIACOLOR.ASM 133 : Overwriting previous address contents (0027)
    Error[118] D:RGBLEDCAMBIACOLOR.ASM 134 : Overwriting previous address contents (0028)
    Error[118] D:RGBLEDCAMBIACOLOR.ASM 134 : Overwriting previous address contents (0028)
    Halting build on first failure as requested.

  2. Hola Ezequiel, parece ser que los errores que encuentras son debidos a que las versiones mas modernas del Mplab no usan mas la instrucción RES para reservar espacio de memoria y en su lugar han agregado la instrucción cbloc. Yo uso una versión bastante vieja (la 7.30).

    Debes reemplazar ORG 20H por CBLOCK 20H, eliminar todos los RES 1 después de las variables y terminar el bloque de variables con la instrucción ENDC. Espero de poder modificar los files de programa lo antes posible.

  3. wilmer dice:

    hola porq calienta el regulador 78L05

    El 78L05 puede alimentar circuitos con un consumo de hasta 100mA. En nuestro caso sirve solo para alimentar el micro y las bases de los transistores (en total pocos miliampers) mientras que la corriente para alimentar los leds pasa directamente de los 12V de entrada. Por lo tanto el 78L05 no tendría que calentar. Controla bien que en el circuito no haya algún error.

  4. omar dice:

    disculpa pero con que programa creaste el codigo y con cual lo grabas al pic? gracias :D esta muy padre

    Hola Omar, yo uso el ambiente mplab de la microchip que es gratis y lo podés bajar directamante del sitio.

  5. Lucas dice:

    Hola, que tal? me interesa el proyecto para hacer iluminacion ambiental en casa. Queria saber con circuito programas el pic. Sino no voy a poder usarlo jeje.

    gracias por todo, muy buena pagina!!

    Hola Lucas. Yo uso el programador PICSTART plus y como plataforma uso MPLAB, los dos de la Microchip.

  6. [...] Inventable Tags: circuitos, electronica, leds, [...]

  7. Pablo de la Cruz dice:

    Hola. Me gusto mucho el proyecto. Ya he grabado el pic y lo he montado en el protoboard. Desafortunadamente no he podido hacerlo funcionar. Tengo esta duda. Por lo que veo los Bc337 se conectan con emisor común a negativo, la base conectada al resistor de 1k y los colectores al negativo del led (s). De este modo quedarían colocados justo como aparecen en la ilustración. es esto correcto?
    Muchas gracias, un saludo desde México.

    Así es Pablo. Recuerda que el común de los leds esté conectado a positivo

  8. Pablo de la Cruz dice:

    Pues nada, que ya tengo mis lamparas funcionando y no quería dejar pasar la oportunidad de agradecer tu gentileza y generosidad.
    Un abrazo.

    Muchas gracias Pablo por tus novedades. Me pone contento saber que lo que hago en este blog es de utilidad para las personas.

  9. luisa dice:

    hola amigo mi mensaje es para pedirle cuales son todos los materiales desde lo mas minimo.

    Hola Luisa, no entiendo tu pregunta. ¿Quieres el elenco?

    3 resistencias 1K 1/4 Watt
    2 capacitores de 100nF
    1 capacitor electrolítico de 22uF 25V
    3 transistores BC337
    1 circuito integrado PIC12F675 (hay que programarlo)
    1 circuito integrado regulador 78L05
    1 zócalo para circuito integrado de 8 pin
    1 morsetera de 2 contactos
    1 morsetera de 4 contactos
    1 circuito impreso

  10. walter dice:

    hola estoy aprendiendo todo lo que es electrónica y me gustaría saber ¿cuanto led de alto iluminosida soportan los transistores? y ¿como se programa el integrado?

    Depende del tipo de leds que quieras usar. Fijate que está ya explicado en el artículo Para programar el integrado necesitas un programador y un software. Quizás es un proyecto medio complicado para empezar. Te aconsejo de hacer por ahora cosas de electrónica que no necesiten micros. Hasta pronto.

  11. Jose Angel dice:

    Un videito para ver el funcionamiento no estaria nada mal, aun asi excelente post :)

    Gracias Jose :)

  12. salvador dice:

    hola un apregunta y la respuesta es atu criterio si me podrias pasar el programa soy nuevo en esto de los pics
    y quisiera saber posibles proyectos para mis materias gracias

    Salvador, hace click sobre el link al final del artículo para descargar el código :)

  13. kain dice:

    hola mucho gusta amigo
    chicos quien me pude ayudar con un sircuito que estoy interesado este es mi correo Naraku012@hotmail:com es sobre el hat de daft punk

  14. jhon dice:

    el circuito implementado e s como un multivibrador de multicolor…lo que estoy buscando es un circuito donde se controla el color del led multicolor.. es decir controlar el tiempo de estadia del red o cualquier color

  15. delmy dice:

    esta mui interesante.. voi a hacerlo

  16. Martin dice:

    Hola buenos dias!! he visto el proyecto y me interesa muchisimo. Estaba pensando poner luz indirecta en una habitacion, ocultandola en la moldura del techo. No se si es la mejor opcion. Quisiera saber cual seria la longitud maxima que podria poner, y si es necesario colocar varios circuitos de estos como es posible acoplarlos. muchas gracias!!

    Hola Martín. ¿La longitud máxima de que cosa? Si pensás de usar tiras de leds en lugar de leds de alta potencia, tenés que hacer un puente de alambre en lugar de la resistencia shunt para no limitar la corriente en cada driver. Haciendo así podés conectar tiras de hasta 10 metros. :)

  17. Sergio dice:

    Disculpa, quiero utilizarlo para controlar 80 leds de cada color… Q me recomiendas cambiar en el circuito original???

    Hola Sergio, es necesario reemplazar los transistores de salida, Mejor si usas mosfet de canal N como por ejemplo el STP36NF06 que permite corrientes de muchos Amp.!!! .

  18. JHONWELL dice:

    HOLA MEN SOY NEW EN ESTO ME GUSTARIA APRENDER REALIZANDO TU PROYECTO
    SI ES MUCHO PEDIR PORFAVOR EL ARCHIVO QUE SE TIENE K BAJAR AL PIC LO PODRIS PASAR EN LENGUAJE C
    MI CORREO ES jhonpx08@gmail.com
    atte
    gracias

    Hola JHONWELL. Esta aplicación, como yo la he desarrollado y con un microcontrolador tan pequeño no permite de ser hecha con el lenguaje C. El assempbly es mucho más eficiente y en este caso es necesario que sea así. De cualquier manera, no veo porque necesitas pasarla a C, cualquier plataforma de desarrollo permite la compilación de un file assembly, es más, los programas hechos en C, son traducidos en assembly antes de ser compilados y cargados en el micro.

  19. JHONWELL dice:

    gracias men porfavor aber si me puedes pasar como programar el pic un tutorial
    gracias

  20. ignacio dice:

    hola…necesito iluminar una pileta con 2 placas led de 60 y una de 40 todas rgb que controlador debo comprar para las tres placas y que fuente necesito para todo el sistema gracias

    No conozco Ignacio las placas e las cuales me hablas ni tampoco los controladores RGB en comercio :(. En inventable, tratamos de hacer las cosas nosotros mismos :)

  21. jose carlos dice:

    Hola estoy utilizando tu programa para la decoración de una vitrina, pero la mayoría de veces la secuencia de los led esta en color blanco. Quisiera conseguir colores mas pastel y que no pasara tantas veces por el blanco. He estado modificando el programa, pero llego a conseguir lo que quiero. Agradecería tu ayuda. Gracias

    Se me ocurren dos modos posibles. Uno es el de programar una secuencia precisa de encendidos y apagados evitando el blanco. Esta solución necesita prácticamente rehacer el código. Otro modo más simple (pero no se si es lo que buscas) es el de hacer que un canal (por ejemplo el azul para obtener colores cálidos) no llegue nunca a la intensidad máxima. Por ejemplo reemplazando las lineas:

    incfsz intensidad_azul,f
    retlw 0
    bcf aumenta_azul

    por

    incf intensidad_azul,f
    btfss intensidad_azul,7
    retlw 0
    bcf aumenta_azul

    Lo que hago es no permitir que el contador del azul (que va de 0 a 255) pueda superar el número 127 (la mitad). Probalo y contame.

  22. jose carlos dice:

    Hola, gracias por la ayuda, pero no es precisamente lo que buscaba. Intentare seguir haciendo modificaciones en tu programa. Ya te dire si consigo algo.

    Un saludo y feliz navidad

    Bueno.
    Feliz Navidad para vos también :)

  23. marlon orozco dice:

    men me gustaria perirte un favor si no es mucha molestia. me gustaria saber donde consigo los programas o donde los descargo para hacer figuras diferentes.

    Este proyecto lo desarrollé yo y no he hecho otros programas para generar distintas figuras. No tengo ni idea de donde se puedan encontrar otros softwares que funcionen con este sistema. Lo lamento :(

  24. juan dice:

    hola disculpa quiero saber por donde le conectas en el circuito para poder programar el pic

    Hola Juan, en este proyecto, el pic se programa con un programador externo y después se monta en el circuito

  25. Jose dice:

    Hola

    Por favor necesito tu ayuda para poder modificar el codigo y que la secuencia de colores no pase por el color blanco. He estado modificando los valores de las variables “tiempo_rojo, verde y azul” con los siguientes valores 127, 64 y 20 respectivamente, pero sigo sin poder evitar el dichoso color blanco.

    Esperando tu estimada ayuda se despide atentamente,

    José

  26. Jose dice:

    Te adjunto modificaciones echas en el código:

    ;————————————————————
    ; Declaración de Bits
    ;————————————————————

    c equ 0 ;carry / borrow bit
    gp0 equ 0 ;bit 0 del puerto
    gp1 equ 1 ;bit 1 del puerto
    gp2 equ 2 ;bit 2 del puerto
    rp0 equ 5 ;registro bank select bit
    rp1 equ 6 ;registro bank select bit
    z equ 2 ;bit cero
    gie equ 7 ;habilitador general de interrupciones
    peie equ 6
    tiempo_rojo equ 127 ;30 tiempo encendido rojo / 127
    tiempo_verde equ 64 ;37 tiempo encendido verde / 64
    tiempo_azul equ 27 ;45 tiempo encendido azul / 27
    tiempo_general equ 20 ;254 max
    aumenta_rojo equ 0
    aumenta_verde equ 1
    aumenta_azul equ 2

    reset org 0

    bsf status,rp0 ;cambiar a banco 1
    call 3ffh
    movwf osccal
    bcf status,rp0 ;cambiar a banco 0
    goto Main

    Main
    bcf status,rp0 ;cambiar a banco 0

    movlw b’00000111′ ;configurar el Puerto A
    movwf cmcon
    bsf status,rp0 ;cambiar a banco 1
    clrf ansel
    movlw b’00001000′ ; GP3 = entrada
    movwf trisio

    bcf status,rp0 ;cambiar a banco 0

    bcf intcon,gie ; Ninguna interrupcion activado
    bcf intcon,peie ; Ninguna interrupcion activado

    clrf gpio
    movlw tiempo_verde
    movwf divisor_verde
    movlw tiempo_rojo
    movwf divisor_rojo
    movlw tiempo_azul
    movwf divisor_azul
    clrf regflags
    clrf regpwm
    clrf divisor_general
    clrf intensidad_azul
    clrf intensidad_verde
    clrf intensidad_rojo
    call parpadeo_blanco
    call ciclo_principal

    Ya me dices algo.

    Gracias y un saludo

    José

  27. Jose dice:

    Hola de nuevo,

    ¿Sabes algo sobre la tira de led “F5050A16-D-5″ que permite el control secuencial de los leds?. Estoy interesado en ella para poder utilizarla en un proyecto.

    Gracias de nuevo.

    José

    Hola José, son muy interesantes esas tiras pero yo todavía no las he podido probar. Solo he visto fotografías aunque si la idea es muy buena 8O

  28. jose dice:

    Hola

    ¿Sabes donde puedo conseguir informacion del CI LPD6803 en ingles?.

    Gracias, un saludo.

    Jose

    Este es el link: http://www.adafruit.com/datasheets/LPD6803.pdf

  29. yeison dice:

    Hola espero sí pueden ayudarme la verdad no tengo ni idea de programación psíquica no lo he visto aún..me ayudaran con el programa y así guiarse para más adelante saber más sobre programación..la idea es hacer funcionar 24 led de estos q cambian de color..pero hay está el problema en la programación para q cambien al mismo tiempo ..gracias..3208248266..yeison gonzalez

    Hola Jeison, si quieres que todos los leds cambien de intensidad al mismo tiempo debes solamente conectarlos a un solo canal. No entendí el tema de “de programación psíquica” 8O

  30. yeison dice:

    bueno en programación de pics ..gracias por su ayuda

    Ahhh, ok!! :)

  31. Jose dice:

    Hola Gabriel

    Por favor sigo necesitando tu ayuda para poder modificar el codigo y que la secuencia de colores no pase por el color blanco.

    Gracias

    Jose, el programa, como esta desarrollado, no permite de evitar el blanco y no hay forma de cambiarlo. Se tendría que desarrollar un sistema software completamente diverso y es un trabajo bastante complicado. No se como ayudarte, lo lamento :(

  32. alberto funes dice:

    soy alberto un electricistaa básico ya viejito 76 años soy discapacitado motriz, quiero aprender hacer trabajos de banco como uds que lo hacen muy bien. ¿alguien se anima a enseñarme? soneub_seria@yahoo.com.ar
    nunca es tarde para aprender. un abrazo y gracias.-04/02/2013 07.15 hs pm.- :idea:

    Si Alberto, nunca es tarde para aprender y lo felicito por su deseo de empezar. :)
    Cuenteme más o menos lo que le gustaría hacer que vemos por donde empezar. Por cualquier cosa mi dirección de correo es gabriel@mediacomm.it
    Un abrazo :)

  33. Ernesto dice:

    Hola, quería saber si me puedes responder la siguiente cuestión:
    Quiero probar tu circuito, sólo que la salida serian 2 tiras de leds rgb en diferente canal, cada tira tiene aproximadamente 70 Leds. Mi pregunta es: ¿Que debo de modificar al circuito para que no se me dañe algún componente. También quería saber si existe algún problema si utilizo una fuente de 12v a 5 Ampers.
    Gracias.

    Hola Ernesto, la potencia que necesitas para encender todos los leds es muy superior a la que esta unidad pueden entregar. Servirían 2,8 Amp para las dos tiras por cada canal, (8,4 Amp con todos los leds RGB encendidos). Seria necesario hecer este controlador RGB para leds de alta potencia pero poniendo un puente en lugar de la resistencia a masa para no limitar la corriente.

  34. pascual dice:

    Hola me gusta tu circuito y el esquema mi pregunta es como meter el software en la memoria yo tengo un programador de eproms tipo 24c08 , y utilizo miphony para programar con esto puedo meter ese fichero saludos

    Necesitas un programador para pics y un software. Yo probablemente publicaré un proyecto completo dentro de poco. Estoy trabajando en eso. :)

  35. Jose dice:

    Hola Gabriel,

    Tu que tienes ya esperiencia con el pic12f629. ¿Me podrias indicar como hacer la consulta de una tabla y como crearla?. He intentado hacerla,, pero no me funciona muy bien.

    A continuación te indico como lo estoy haciendo:

    PWM_GAMA
    movlw .5
    movwf jump
    pwm00
    movf jump,w
    call gama1
    movwf jump
    movf jump,w
    call tmsg
    bsf gpio,gp0
    decfsz jump,1
    goto pwm00

    Tabla

    gama1
    addwf pcl,1
    retlw .233 ; linea 1
    retlw .121 ; linea 2
    retlw .118 ; linea 3
    retlw .50 ; linea 4
    retlw .100 ; linea 5

    Un saludo

    Hola, el código es es correcto. Yo generalmente agrego un filtro inicial porque si el valor que le paso es mas grande de mi tabla corro el riesgo que el programa se bloque no encontrando la instrucción retlw, es decir:

    andlw B’00000111′ ; para una tabla de 8 elementos
    addwf pcl,f
    retlw .233 ; linea 1
    retlw .121 ; linea 2
    retlw .118 ; linea 3
    retlw .50 ; linea 4
    retlw .100 ; linea 5
    retlw 0 ; linea 6 (no usada pero necesaria)
    retlw 0 ; linea 7 (no usada pero necesaria)
    retlw 0 ; linea 8 (no usada pero necesaria)

  36. jose dice:

    Gracias Gabriel,

    Un saludo,

  37. Jose dice:

    Hola Gabriel,

    He visto que algunos programadores hacen las tablas de incendido de los led rgb de la siguiente forma:

    dt 0, 254, 255, 0, 0 ; rojo
    dt 255 ; fin secuencia

    dt 0, 254, 0, 255, 0 ; verde
    dt 255 ; fin secuencia

    dt 0, 254, 0, 0, 255 ; azul
    dt 255 ; fin secuencia

    dt 0, 254, 255, 155, 0 ; naranja
    dt 255 ; fin secuencia

    dt 255 ; fin datos

    No lo entiendo muy bien, ¿me podrias ayudar e indicarme alguna forma de hacerlo?.

    Gracias por todo y un saludo,

    Jose

    Hola Jose. “dt” es una directiva del ensamblador (mpasm por ejemplo) que sirve para simplificar la realización de tablas cuando se hace un programa en asm para pic.
    Por ejemplo dt 0, 254, 255, 0, 0 se traduciría como:
    retlw 0
    retlw 254
    retlw 255
    retlw 0
    retlw 0

    Es decir, una tabla típica para pics. En el caso que citas, tu probablemente te estás refiriendo al proyecto “PWM controller for RGB LEDs using 12F6xx PIC” en el que el proyectista del controlador ha hecho un sistema que permite de programar la secuencia de encendido de los leds en base a un file que se llama “SequenceData.inc” y que usa el formato al que tu te refieres. Es un proyecto interesante (y bastante complejo a nivel de software) y el software es perfectamente adaptable a mi sistema cambiando solamente la designación de los pins. En cada dt hay 5 números de los cuales los dos primeros son la duración del evento y la velocidad de transición mientras que los tres números sucesivos son la intensidad luminosa de cada canal RGB.

  38. ervin dice:

    buenas amigos queria saber si alguien tienen los codigos en zip o rar y en codigo hex para poder programar mi chip y probar mi sistema para ver si me funciona. Gracias.

    Si ervin, es una buena idea. Próximamente subiré los files hex de los distintos proyectos. :)

  39. jose dice:

    Gracias de nuevo Gabriel

  40. Ricardo dice:

    Hola me salvarias la vidaa si me ayudaras, necesito un controlador no importa lo sencillo que sea, necesito que controle de manera audioritmica cinta led rgb 5050, es para un proyecto de la universidad, solo necesito que la cinta reaccione con la musica. lo que sea que me ayudes es super buenisimo gracias…

    Dejame pensar ¿Dentro de cuando lo necesitas? ¿De que lugar eres?

  41. luisperez dice:

    hola primero que nada me gusto todo lo que hiciste y pues me dedique a realizarlo ya lo corri en mplab sin errores y lo mande a proteus para simularlo.. al reunir todos los componentes no encuentro el transistor mosfet STP36NF06 que habias mencionado en un comentario me podrías ayudar… como buscarlo o que otro nombre tiene o algun reemplazo espero me puedas ayudar.. de todos modos muchas gracias por este aporte te felicito

    Hola Luis, yo aconsejo el IRF530. Dentro de unos días pienso de publicar un artículo sobre como conectarlo :)

  42. Paulo Acosta dice:

    primero que todo, saludos desde venezuela.
    segundo me resolvistes la vida jeje
    tengo dias revisando e informandome sobre como controlar tiras led rgb con pwm y me con esta explicacion me respondistes muchas preguntas!
    AHORA
    quiero llevarlo a lo espesificamente quiero hacer que es una matriz rgb con estas tiras led! y la verdad me esta costando un poco resolver el problema del hardware ya que en algunas tiras veo RGB y GND pero es tu esquema veo +led! incluso +12v! y es alli donde entra mi duda! si es 12v puedo suichar con un transistor pero si es gnd! supongo que tengo que generar alta y baja impedancia para lograr lo de la matriz! si me puedes ayudar con eso!!

    Hola Paulo :)
    Es muy raro que el común de una tira de leds RGB sea el negativo. Yo todas las que he visto tienen el positivo. ¿Puedes subir una foto así la veo?

  43. Paulo Acosta dice:

    SORRYYYYY me deje llevar por un esquema! no una tira! igual en el esquema sale GND no se como subir la imagen PERO te paso el link para que veas http://picprojects.org.uk/projects/rgb109/index.htm

    Hola Paulo. Si, he visto el proyecto y no tiene sentido. En las fotografías se ve claramente el positivo común de las tiras que conecta. Quizás se equivocó con el diseño del circuito respecto al prototipo, no logro explicarlo de otro modo. De cualquier manera hacete el mio que es más simple (tiene tres transistores menos!) :)

  44. Richy dice:

    hola buenas tarde primero que nada quiero felicitarte por la pagina, y gracias por compartir tus conocimientos, no soy muy bueno con eso de programar y baje el codigo y lo compile en mplap pero me salen unos errores, espero me puedas ayudar, o si me haces favor de pasarme el codigo .hex para programar el pic, te lo agradeceria mucho, pues ya tengo el circuito impreso y todo solo me falta lo mas importante que es el pic :???: a continuacion te pongo los errores.
    Error[113] C:\PROGRAMASLEDS\RGB_1.ASM 81 : Symbol not previously defined (OSCCAL)

    Error[113] C:\PROGRAMASLEDS\RGB_1.ASM 221 : Symbol not previously defined (CMCON)
    Halting build on first failure as requested.

    Hola, es raro lo que te está pasando, las declaraciones de OSCCAL y CMCON junto a muchos otros registros de configuración del PIC se encuentran en el file P12F629.INC que se carga automáticamente gracias a la instrucción “INCLUDE “P12F629.INC” al principio del programa. ¿Estas seguro que configuraste el ambiente para el PIC 12F629?
    De cualquier manera si todo aparentemente está bien puedes hacer lo siguiente:
    En el lugar de “movwf OSCCAL” escribí “movwf 090H” y en lugar de “movwf CMCON” escribí “movwf 019H”
    La idea de poner el hex en lugar del asm es buena, quizás lo haga próximamente :)

  45. Richy dice:

    olvide decirlo pero el pic que compre es el pic12f683, ya le cambie al programa eso y aun asi me salen esos errores, me harías un gran favor si es que me puedes pasar el archivo .hex para el pic12f683.
    saludos.

    Ahh, entiendo. Bueno, en lugar de CMCON escribí CMCON0 o 019H y la linea que dice “movwf OSCCAL” eliminala.

  46. Richy dice:

    muchas gracias, el problema quedo solucionado, ya tengo el archivo.hex haciendo los cambios que dijiste, ahora solo lo quemo y a probar.
    saludos.

    • Richy dice:

      olvide otra cosa, la linea que dice “movwf OSCCAL” no la elimine, le puse “movwf 090h como dijiste en la primera respuesta, ¿no pasa nada si ocupo eso en el pic12f683? es que en el segundo comentario que te hice me dices que la elimine.

      Pienso que sea mejor eliminarla porque el pic que has usado aparentemente no tiene la función de calibración del oscilador (OSCCAL) y por lo tanto “movwf OSCCAL” no sirve para nada. Espero tus novedades. :)

  47. javier hdz dice:

    Buen dia… disculpa tengo una duda, en el diagrama esquematico tienes el pic16f629 y en el otro tienes el pic12f629… cual debo usar? son equivalentes?

    De antemano muchas gracias
    Saludos.

  48. Héctor Javier dice:

    Hola Javier, el micro correcto es el PIC12F629.

    La denominación PIC16F629 no existe, ha sido un error tipográfico seguramente.

    saludos
    HJ

    Si, correcto, es un error. Espero de poder corregirlo en los próximos días

  49. javier hdz dice:

    Muchas gracias Hector.
    Otra pregunta,me podrias pasar el programa en .hex? No he podido compilarlo me arroja errores
    Te dejo mi correo javy_g13@hotmail.com
    Gracias

    Saludos.

  50. Héctor Javier dice:

    hola Javier, acabo de probar y el programa compila sin problemas.
    Acá te dejo el resultado del mismo, solamente copia y pega en un archivo de texto llano, y guárdalo con la extensión “.HEX”.

    Saludos
    HJ

    :020000040000FA
    :0A0000008316FF23900083125A2894
    :10002000A30B00342530A300281C1B28A00F00348C
    :100030002810A0030034A00803192028A0030034CE
    :1000400028140034A40B00341E30A400A81C2D2852
    :10005000A10F0034A810A1030034A108031932280D
    :10006000A1030034A8140034A50B00342D30A500E2
    :10007000281D3F28A20F00342811A2030034A20833
    :1000800003194428A203003428150034A70A2008C5
    :100090002702031C85140318851021082702031C5E
    :1000A00005140318051022082702031C0515031860
    :1000B00005110034831638308500E3308100831247
    :1000C000073099008B130B132530A3001E30A400BA
    :1000D0002D30A5006430A600A801A601A201A00150
    :1000E000A10164004620A60B722810206430A600EF
    :1000F00064004620A60B792822206430A600640004
    :100100004620A60B802834206430A6007128090000
    :00000001FF

  51. Roberto Rico dice:

    Buenos días, soy nuevo en el foro y he visto el circuito que nos propones y me parece muy interesante. Yo lo he montado en una protoboard y he grabado el programa en el micro (ya pasado a hexadecimal) pero no se ve ningún tipo de actividad en el Micro, ¿por favor me puedes indicar si hay que configurar de alguna manera el oscilador?

  52. Héctor Javier dice:

    Hola Roberto, aunque no lo he montado, viendo el esquema y el ASM, deduzco que debes configurar el oscilador del micro como interno, y además, debes configurar el MCLR como interno también.

    Podrías hacerlo agregando la siguiesen línea después de donde utiliza el INCLUDE “P12F629.INC”

    __CONFIG _INTRC_OSC_NOCLKOUT & _WDT_OFF & _PWRTE_ON & _CP_OFF & _BOREN_ON & _MCLRE_OFF & _CPD_OFF

    También puedes configurarlo desde el programa de grabación.

    Saludos
    HJ

  53. Roberto Rico dice:

    Muchas gracias Héctor,
    Mañana en el trabajo en un hueco incluyo la linea como me indicas.
    Cuando lo tenga todo y lo pruebe te lo indico como ha ido.

  54. Luis Cardenas dice:

    Hola, disculpa…
    deseo poder controlar la velocidad de transición de la luz, ay alguna forma de hcerlo…???
    gracias y saludos

    Hola Luis, tienes que hacer la segunda versión de este proyecto. Este es el link

  55. LEO dice:

    Hola, quisiera aprovechar su amabilidad para que me pudiere sugerir algo que estoy buscando. Quiero hacer escudos de futbol en resina transparente, y por detras le quiero meter leds en sus rellenos segun color que corresponda. Ahora se bien que para obtener exsactamente los colores de cada escudo debo recurrir a los rgb. Tu me puedes ayudar un poco con esto? te podria mandar un email con lo que quiero hacer. gracias

    Usando simplemente las combinaciones RGB básicas, sin electrónica de control, podrías obtener 7 colores como explico en mi artículo “anatomía de una tira RGB”. No se si te alcanza para lo que quieres hacer.

  56. Juan Pablo dice:

    El Microcontrolador Puede Ser Usado Para El Circuito De Una Luz De Navidad (Cascada) Con Caja De Cambios ?

    Si Juan Pablo, pero es necesario desarrollar el programa que te haga esos efectos

  57. zero dice:

    No tendras el asm para meterselo a un pic 12f508 o 509 que son los que tengo a la mano, gracias amigo y felicidades por el proyecto esta padre

    Hola zero, lamentablemente el 508 y el 509 son diferentes respecto al 629 a nivel de configuración. Aunque si el programa principal es el mismo se necesita modificar algunas cosas en el código para hacerlo funcionar. Yo no dispongo de estos componentes en laboratorio para poder verificar el correcto funcionamiento por eso no me animo a publicar la versión correspondiente. Estaría bueno que algún lector probara a aportar la respectivas modificaciones y mandarme el código para su publicacion, lo haría encantado.

  58. WILIAM VALLE dice:

    ME PARECE MAGNIFICO ESTO QUE HACEN POR TODOS LOS QUE NOS GUS :razz: TA LA ELECTRÓNICA GRACIAS A INVENTABLE Y TODOS LOS QUE COLABORAN EN EL. :razz:

  59. mauro perazzo dice:

    hola. yo lo estoy haciendo con un ci 4017.. yo lo que busco es tener 7 colores nada mas. andara igual con los transistores?

    No entiendo la pregunta Mauro y no se como es el circuito 8O

  60. charls dice:

    hola
    Quería saber si esta placa la puedo conectar a un parlante,para que sea rítmica.. he visto en algunos tutoriales que el cable de audio pasa por el led…

    PD: excelente tutorial.

    Lamentablemente no Charls :(

  61. Emanuel Teruel dice:

    hola.. yo hice prácticamente lo mismo y no me funciono.. La tira es anodo comun, cuando tenia 1 en la base del transistor el color encendía poco, si tenia un 0 en la base encendía por completo.

    Hola Emanuel, la regulación de la intensidad luminosa se obtiene a través de impulsos generados por el micro (se llama PWM), no con niveles lógicos fijos de 0 y 1. En el artículo lo explico.

  62. Ricardo Esparza dice:

    Buenas tardes. Gracias por compartir sus conocimientos hasta ahora soy muy analfabeta en programación pero voy a usar estos tutoriales para empaparme del tema.
    También tengo la inquietud de hacer un proyecto que active un led con tres destellos rápidos y una pausa y repita el ciclo continuamente.
    Gracias de Nuevo.

    Hola Ricardo, bienvenido. Puedes usar el mismo circuito modificando solamente el programa.

  63. Armando dice:

    Hola : muy bueno , te quería preguntar : no hace falta ponerle un oscilador o cristal al pic ?? gracias

    • Héctor Javier dice:

      Hola Armando, en este caso Gabriel (Inventable) hizo uso del oscilador interno de 4MHz que posee este PIC, por tanto, no hace falta un cristal externo.

      Saludos
      HJ

  64. Nestor dice:

    hola podrias pone el link para descarga la placa de circuito impreso, para hacer por tecnica de planchado? desde ya gracias!

    No tengo experiencia con la técnica de planchado pero no creo que haya diferencia respecto a un circuito impreso normal.

  65. andres dice:

    hola! muchas gracias. Sabes si la imagen del impreso está en tamaño real para poder invertirla y plancharla? muchas gracias. Mi correo es andrespirolo arroba hotmail.com

    Hola Andres, la imagen es de tamaño real y sigue los estándar internacionales de publicación de los impresos. Respecto al método que usas, no soy un entendido. Quizás HJ lo conozca y sepa aconsejarte.

  66. andres dice:

    como haces el impreso vos? lo copias o usas un software? Es decir como se supone que tengo que trasladarlo desde esa imágen a mi impreso? gracias. Más que nada por el tema de las distancias de las patas del micro que son muy justitas.

    Yo compro plaquetas cobreadas con la película sensible ya lista. Imprimo con una impresora laser el diseño en un papel de calcar (o de arquitecto), después pongo el papel y la plaqueta encima (el lado de la impresión en contacto con la parte cobreada) dentro de una caja con luz ultravioleta. El procedimiento lo explico en mi artículo Como hacer circuitos impresos artesanales. Se puede usar también el método de la plancha pero yo lamentablemente nunca lo usé.

  67. cristian dice:

    hola, les hago una consulta?? tengo una controladora RGB que tiene salidas de 2A que solo soporta una tira de 5mts y quiero ampliarla a que soporte 10mts.. que transistor necesito para que tenga salida de 4 o 5A?? quiero las caracteristicas para comprarlo y remplazarlo..
    Saludos y gracias

    Hola Cristian, depende de como esté hecha la controladora. Sería útil saber que transistor tiene actualmente.

  68. Brides dice:

    Hola a Todos yo quiero controlar una tira de led que compre, pero nose mucho de electronica y me gustaria saber si despues de armar el circuito necesito hacer otra cosa porque vi comentarios que me mencionan que hay que programar

    • Héctor Javier dice:

      Hola Bride, efectivamente , en este montaje se necesita programar el microcontrolador para que el circuito funcione.
      Si bien no es difícil, necesitas un programador para el microcontrolador (PIC12F629), el software de programación y aprender a utilizarlo.

      Saludos
      HJ

  69. Eber dice:

    Hola es genial el proyecto, no tengo ninguna carrera en electronica, pero sin embargo soy aficionado y he podido hacer funcionar dicho proyecto, empese de cero primeramente con un grabador de pic y prender un simple led el tiempo que yo quiera con pic 16f628a. Pero todo esto gracias a internet y los creadores de inventable, les agradesco mucho graciaaaaaas… :lol:

    Felicitaciones Eber por los resultados y muchas gracias por contar tu experiencia. :)

  70. Eladio dice:

    Excelente trabajo, lo cual requiere de horas de dedicación. Pero de gran utilidad para todos aquellos que amamos la electrónica. Te deseo muchos Éxitos.Saludos desde Peru.

    Saludos Eladio y muchos éxitos para ti también :)

  71. Cristobal dice:

    hOLA UNA CONSULTA ESTE CIRCUITO ME SIRVE PARA ILUMINAR UNA MANO OSEA ME EXPLICO TENGO QUE ASER UNA MANO GRANDE DE CARTÓN Y QUE SE ILUMINE DEDO A DEDO CON CINTAS LED PERO NO SE COMO HACER EL CIRCUITO…. AYUDA POR FAVOR

    Hola Cristobal, no entiendo el efecto de luces que la mano debería hacer.

  72. varozs dice:

    quien me puede vender el micro ya programado y en cuanto mi correo es: VAROZS@msn.com

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos necesarios están marcados *

*


*

question razz sad evil exclaim smile redface biggrin surprised eek confused cool lol mad twisted rolleyes wink idea arrow neutral cry mrgreen

Puedes usar las siguientes etiquetas y atributos HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>