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.

Plaqueta montada del controlador para tiras de LEDs RGB
Plaqueta montada del Controlador para tiras de LEDs RGB

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
Conexión de la plaqueta a los 3 canales RGB de una tira de leds.

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.

Circuito completo del controlador para tiras de leds RGB con el PIC12F629.
Circuito completo del controlador para tiras de leds RGB con el PIC12F629.

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.

Elenco de materiales

3 resistencias 1K 1/4 W
2 capacitores 100nF
1 capacitor electrolítico de 22uF 16V (se pueden usar otros valores entre 10uF y 47uF)
3 transistores BC337
1 regulador 78L05
1 PIC12F629 (para programar)
1 zócalo para circuito integrado 8 pin
1 conector de 2 vías
1 conector de 4 vías
1 circuito impreso

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,8 Amp por cada canal.

Vista pictórica del controlador para tiras de leds RGB.
Vista pictórica del controlador para tiras de leds RGB.

Este 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.

Circuito impreso del controlador para tiras de leds RGB.
Circuito impreso del controlador para tiras de leds RGB.

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.

Fotografía del circuito impreso del controlador para tiras de leds RGB.
Fotografía del circuito impreso del controlador para tiras de leds RGB.

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.

logo_descarga

Circuito impreso Controlador RGB (formato KiCad) (4830 descargas )

Programa del mezclador automatico (fuente en asm) (4459 descargas )

 

Artículos relacionados:

- Mezclador automático para tiras de LEDs RGB

- Regulador para tiras de LEDS con 555

- Controlador para tiras RGB con Mosfets

- Calculadora de resistencias para leds

Indice de todos los artículos de Inventable

Los contenidos de este blog son originales y están bajo una licencia Creative Commons BY_NC_ND

Controlador para LEDs RGB con PIC12F629 ultima modifica: 2011-06-03T18:19:38+02:00 da inventable

110 comentarios sobre “Controlador para LEDs RGB con PIC12F629”

  1. 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. 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. disculpa pero con que programa creaste el codigo y con cual lo grabas al pic? gracias 😀 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. 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. 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

  7. 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.

  8. 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

    1. Hola, este circuito me serviría también para controlar los leds rgb de 8mm? Es que tengo muchos y quisiera hacer un circuito para controlarle el color, o bien con 555 podría hacerlo? Gracias

      1. Hola Perino, el circuito està pensado para ser usado con tiras de leds de 12V, no con leds sueltos.

  9. 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.

  10. Un videito para ver el funcionamiento no estaria nada mal, aun asi excelente post 🙂

    Gracias Jose 🙂

  11. 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 🙂

  12. 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

  13. 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

  14. 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. 🙂

  15. 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.!!! .

  16. 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.

  17. 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 🙂

  18. 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.

  19. 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 🙂

  20. 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 🙁

  21. 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

  22. 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é

  23. 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é

  24. 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 😯

  25. 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» 😯

  26. 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 🙁

  27. 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.- 💡

    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 🙂

  28. 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.

  29. 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. 🙂

  30. 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)

  31. 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.

  32. 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. 🙂

  33. 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?

  34. 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 🙂

  35. 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?

  36. 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!) 🙂

  37. 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 🙂

  38. 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.

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

    1. 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. 🙂

  40. 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.

  41. 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

  42. 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

  43. 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?

  44. 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

  45. 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.

  46. 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

  47. 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.

  48. 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

  49. 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.

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

  51. 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 😯

  52. 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 🙁

  53. 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.

  54. 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.

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

    1. 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

  56. 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.

  57. 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.

  58. 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é.

  59. 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.

  60. 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

    1. 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

  61. 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… 😆

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

  62. 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 🙂

  63. 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.

  64. copie el codigo hex que proporciono Hector Javier y lo simule en Proteus pero los leds solo encienden de un color ¿me podrian proporcionar el codigo .hex?

  65. Hola, de antemano muchas gracias por tu aportes, y perdona mi ignorancia.. ya llevo un tiempo con la programacion de pic, aunque es algo basico.. podrias explicar el funcionamiento del programa (codigo) paso por paso… ya que trato de entenderlo y me es imposible entenderlo del todo.. gracias..

    Hola Jaime, en los comentarios del listado explico cada linea de código con bastante detalle. Más de eso no sabría que hacer. Puedes preguntarme específicamente que parte del programa no entiendes que puedo tratar de explicártelo.

  66. hola una preguntota este controlador para leds lo puedo utilisar para el audio es decir para un minicomponente, que cuando la musica este en marcha el controlador funcione al ritmo de la cancion saludos

    Hola Kyo, lo que necesitas es un sistema de luce audiorrítmicas que es otra cosa completamente distinta. En internet hay muchos proyectos así.

  67. Disculpe hice todo el instructivo pero a la hora de probar el circuito los tres colores quedan encendidos al mismo tiempo, estoy usando un PIC12F675 pero no logro hacerlo funcionar…

    Hola Noe, evidentemente no está trabajando el micro. Quizás has tenido problemas durante la fase de la programación.

  68. HOLA QUERIASABER SI PODIAS AYUDAR YO UTILIZO UNAS CONTROLADORAS RGB A CONTROL REMOTO PARA MANEJAR TIRAS DE LED PERO LO QUE ME PASA QUE CUANDO COMANDO MUY POCOS LED SE ME CAMBIAN LOS COLORES O SEA APRETO EL VERDE Y SE PONE A ZUL Y BICEVERSA QUERIA SABER SI HABRIA QUE PONERLE ALGUN FILTRO O SI SABES EL PROBLEMA PARA AYUDARME GRACIAS

    Hola Hernan, no se donde pueda estar el problema 🙁

  69. como puedo hacer un eliminador de 110 v ac a 12 v dc y 1a

    Hola Arturo, no tengo proyectos de alimentadores para publicar. Lo siento 🙁

  70. Hola, quiero hacer un semáforo con leds RGB, crees que me pueda basar en tu programa,
    para usar el pickit 3 recomiendas usar el mplabx o el mplab ide
    si es para una aula con cuantos leds recomiendas montar y si son 3 o 4 colores cuantos por driver
    para usar una batería de 3.6volts que transistores recomiendas?
    las rutinas son usando el modulo pwm o son implementadas por generación de pulsos? gracias

    Gracias y saludos

    Hola Graciela, el software mio usa PWM aunque si en tu caso no sirve. ¿Cuantos led quieres encender?

  71. Siento mucho mi ignorancia, pues es la primera vez que hago programacion. Me preguntaba si podria usar un picaxe 08. Es que tengo un programa que se llama Yenka pero solo admite estos modelos y es que al poder programar con diagramas de flujo es mucho mas sencillo para empezar.
    Si pudiera aconsejarme cual elegir para sustituirlo se lo agradecería mucho.
    Estos son los modelos admitidos
    • PICAXE 08, 08M, 14M, 18, 18A, 18M, 18X, 20M, 28, 28A, 28X, 28X1
    • PIC 16F627, 16F628, 16F84, 16F84A y 16F872
    Gracias de antemano,
    un saludo,
    Entique.

    1. Hola Enrique.
      Si quieres hacer una versión propia, puede utilizar el entorno de desarrollo y el microcontrolador que mas te guste. Pero, en este artículo que nos brinda Gabriel (Inventable) ya está todo hecho para el micro PIC16F629, tanto el circuito, la placa como como el programa que está programado en ASM (ensamblador)… Solo tienes que compilar el programa para obtener el HEX y grabar el microcontrolador. Para compilar el programa se utiliza el MPLAB, que es gratuito y lo puedes bajar de la página de microchip.

      Como mencioné al principio, si quieres puedes hacer tu propia versión, en el lenguaje que desees y con el micro que dispongas.

      Saludos
      HJ

  72. Hola:

    No consigo ver los archivos .brd o .sch, para descargar, solo el firmware

    muchas gracias

    1. Hola Marcelo, el enlace está al final del texto entre la imagen del PCB y la foto de la placa del lado de las soldaduras.

      Saludos
      HJ

      1. Hola Héctor:

        Siento ser pesado, pero los x2 archivos descargables del texto contienen lo mismo, el archivo .asm del firmware, compruebalo y dime algo.

        gracias

        1. Perdón Marcelo, tienes razón, ya le escribo a Gabriel (Inventable) para que vuelva a subirlo.

          Saludos
          HJ

  73. Hola, me podras enviar el programa en HEX a mi correo regio43@yahoo.com por favor?, solo tengo compilaores los cuales apenas empiezo a estudiar en CCS, asi que del ASM aun no tengo mucha idea y no se como obtener el HEX para cargarlo a mi programador. Gracias de antemano, y saludos desde Monterrey Mexico.

  74. Otro favor, no puedo abrir los archivos Rgb_Adc_Controler.brd y el Rgb_Adc_Controler.pro Que software me recomiendas para poder abrirlo?

    1. Hola Mago Martinez, como explica Gabriel (Inventable) en las FAQ’s del Blog, el programa a utilizar es el KiCad y debes bajarlo de la página de su autor.
      Con el KiCad debes abrir el archivo del proyecto » *pro » y desde el proyecto abierto abrir el diseño de la placa » *brd «.

      Saludos
      HJ

      1. Gracias ya lo pude abrir, ya arme el circuito y cargue al pic, pero solo se quedan encendidos los tres leds, ya revise concienzudamente las conexiones, como tu dices es muy simple eso, pero no le encuentro como funciona al energizar todo, quizas el codigo HEX que obtuve no este bien, me lo podras enviar el tuyo para probar por favor?

  75. Antes que nada, el saludo como corresponde y el agradecimiento por los proyectos.
    Mi consulta es debido a que he armado todas las versiones de dicho controlador y no he tenido resultados, pasé muchas horas revisando la parte electrónica para verificar que no hubiera errores. En la parte de software no puedo hacer nada ya que no conozco del tema. Simplemente no encienden los led de ninguna forma posible. A ésta altura no se que hacer y por probar otros circuitos con su software correspondiente de otras web no seguras, lamentablemente ya llevo varios 12F629 que han quedado inútiles debido al borrado del osccal por los programas. Si tienen alguna idea de cual es el problema agradecería alguna ayuda.

    1. Hola Fernando. Lamento que no logres hacerlo funcionar. En los proyectos con PIC, para rastrear un problema debes primero verificar que la electrónica funcione y después buscar a nivel software / firmware el problema. Te aconsejo de seguir los siguientes pasos:

      1. Sobre el zócalo del circuito integrado sin el PIC, prueba a hacer un puente con un trozo de cable entre el pin 1 (positivo) y el pin 7 (salida canal rojo). Los leds del canal rojo tendrían que encenderse. Si no es así, tienes un problema en el montaje. Si se encienden bien haz la misma prueba entre el pin 1 y el 6 (verde) y el 1 con el 5 (azul).

      2. Si el paso 1 es OK, busca esta parte del programa:

      ;—————————————-
      ; CICLO DE TRABAJO PRINCIPAL
      ;—————————————-
      Ciclo

        clrwdt

      modifica el código anterior agregando 3 lineas nuevas:

      ;————————————–
      ;CICLO DE TRABAJO PRINCIPAL
      ;————————————–
      Ciclo

        clrwdt
        movlw 255
        movwf GPIO
        goto Ciclo

      De esta manera todos los leds tendrían que encenderse fijos cuando alimentas el circuito. Si no es así, probablemente tienes un problema en el sistema que estás usando para programar el PIC (sistema de desarrollo o programador). Respecto al borrado del osccal, el sistema de desarrollo debería automáticamente mantener el valor cuando borras el componente. De cualquier manera, aunque si el osccal se borra, el PIC debería funcionar los mismo, solo que con una frecuencia levemente diversa de los 4MHz.
      Per mayores detalles te aconsejo de escribir el problema en el foro donde encontrarás gente que te puede ayudar.
      Buena suerte.

      Gabriel

      1. Hola Gabriel: La parte electrónica fue chequeada en todos los proyectos y está perfecta, por ese lado confío en mis conocimientos, pero en la parte de programación estoy muerto, jajajaja. Le voy a pedir a un amigo que me haga el cambio en el programa como me has dicho. Los pic solo los grabo, hasta el momento no he tenido problemas con la grabadora en otros proyectos, solo y únicamente con manejo de PWM en el 629.
        Tengo funcionando la llave on/off con el mismo pic, sin problemas, y algunos otros.
        La grabadora es la GPIC USB armada en casa.
        En cuanto se hagan los cambios aviso del resultado.
        Muchas gracias.

  76. Hola,
    Ya he visto que este artículo tiene varios años pero el circuito me viene de perlas para algo que estoy diseñando, la diferencia está en que lo que quiero que haga es exactamente lo mismo pero el cambio de color de los led se produzca al presionar un pulsador y el rango de colores sea menor.
    El problema está en que no tengo ni idea de ensamblador y no tengo tiempo de aprenderlo.
    ¿Habría alguna forma de que lo subas en C o similar?
    Muchas gracias y enhorabuena por el artículo.

    1. Me respondo a mí mismo.
      He visto un enlace a otra página en la que está lo que quiero hacer o algo muy parecido.
      Intentaré modificarlo a mi gusto.
      De todas formas sería de gran ayuda el que estuviese publicado el código en C.
      Muchas gracias otra vez.

    2. Hola Antonio, el programa lo he desarrollado directamente en esamblador, no dispongo de una versión en C. Lo siento.
      Gabriel

  77. hola queria decirte que arme el circuito..cargue el archivo en el pic 12f629 en un programador el PICKIT3..pero a la hora de ponerlo en el circuito no funciona…que puede ser..que estoy haciendo mal..gracias

  78. Hola inventable
    estoy usando el pic 12f629 y cargue el archivo ASM y no me funciono me gustaría saber si tienes el archivo .hex para poder lograr un circuito para tiras led RGB agradecería está colaboración

Los comentarios están cerrados.