Hola compañeros. Queria compartir este receptor DMX de 8 canales con PIC16F628A. El mismo esta posteado en el foro, dentro de otro post larguísimo sobre equipos de iluminación, pero dada su gran utilidad me gustaria abrir un tema nuevo para su facil acceso e incluso para poder mejorarlo aun más, ¿por qué no?.
El circuito básicamente consta de un receptor que utiliza el conocido SN75176 como conversor EIA-422/485, y luego interpreta 8 canales mediante el PIC. El mismo entrega 8 salidas PWM, y debido a que muchas consolas utilizan un dimmer controlado por tension , se agregó también un circuito con LM324 que transforma el valor de PWM en una tensión variable de 1 a Vcc (normalmente de 1 a 10V).
Los circuitos son los siguientes:
Receptor DMX

Conversor PWM a tensión

Al PIC se le deberá cargar el código dmx1.hex. Tal y como está, controlara los canales DMX del 1 al 8. Para poder modificar estos valores, se incluye el código para mikroBasic, en donde deberá cambiarse el valor "adres" en la siguiente parte del código:
(el mismo esta llegando al final de todo)
Lei por ahi que funcionaba solo para los primeros 10 canales, yo la verdad probe con valores del 1 al 512 y todos me funcionaron correctamente.
Dejo adjuntos los PCB en PCB Wizzard (Donde estan los circuitos por separado y una version de gervit que incluye ambas partes juntas), el hex para cargar al pic (con canales del 1 al 8), y un rar que contiene el código en mikroBasic para modificar.
Creeria que con esto ya van a poder armar su receptor, dejo algunos datos extras:
**En mi caso, mi consola necesitaba valores de continua entre 1 y 12V. Eso se soluciona elevando el valor de tension de alimentación del circuito PWM to DC.
**En el código se puede ver un diseño de 9 canales (de 0 a 8). Sinceramente, no tuve tiempo de probarlo, pero creo que podria agregarse una salida mas en el pin 3 del pic.
**gervit mencionaba, que asi como muchos otros DMX comerciales, se le integre un DIP-switch de 9 llaves para modificar los canales de DMX sin necesidad de cambiar el código. Si a alguien se le ocurre alguna idea, será bienvenida, yo intente buscarle la vuelta, pero se me complica mucho sin un conversor ADC (El 16F628A no cuenta con el mismo) para poder recibir todos los estados del dip-switch en 1 solo pin del pic. Dejo un PDF adjunto que explica como trabajaria el mismo, espero que sea de ayuda y alguien se anime a incorporarlo.
**En mi proyecto en particular, y no se si en todos ocurrirá lo mismo, habia un alto nivel de parpadeo en el foco (MUY notable en valores bajos de intensidad). Al principio pensaba que era la ausencia de inductores de potencia que normalmente se conectan a la salida de la consola, antes de la lámpara, para suprimir ruidos generados en la conmutación del TRIAC. Luego comprobé que la salida DC del conversor PWM no era completamente lineal, sino que seguia un patron mas bien de un diente de sierra. Esto lo solucioné agregando capacitores de 4700uf x 16v entre cada salida del conversor (la que varia entre 1 y Vcc) y masa (con 1000uf ya era practicamente imperceptible, pero por las dudas..). Si a alguno le ocurre lo mismo y no comprende esto me avisa y hago un diagramita.
**Como "emisor casero", para probar el receptor, utilize como emisor un Arduino+SN75176 descargando la libreria "DmxSimple" de aquí. Vi otros proyectos mucho mas sencillos, que utilizan un simple conversor USB-Serie + SN75176 y un software de control de luces como FreeStyler. Quiero aclarar que esto SOLO FUNCIONA CON CONVERSORES USB - SERIE QUE SOPORTEN FTDI. Los más economicos (como el mio) no soportan FTDI, y envian solo valores entre 0, 128 y 255 (o algo por el estilo) variando de cierta forma el control de la luz, pero muy erroneamente.
Actualmente estoy proximo a acomprar alguna consola DMX para probar que todo funcione bien! Si alguno tiene alguna recomendacion a tener en cuenta para asegurar la compatibilidad de la misma con este circuito se lo agradeceria, tengo entendido que deberia funcionar con cualquier consola DMX-512.
Por último les dejo algunas imágenes del proyecto. Saludos!




El circuito básicamente consta de un receptor que utiliza el conocido SN75176 como conversor EIA-422/485, y luego interpreta 8 canales mediante el PIC. El mismo entrega 8 salidas PWM, y debido a que muchas consolas utilizan un dimmer controlado por tension , se agregó también un circuito con LM324 que transforma el valor de PWM en una tensión variable de 1 a Vcc (normalmente de 1 a 10V).
Los circuitos son los siguientes:
Receptor DMX

Conversor PWM a tensión

Al PIC se le deberá cargar el código dmx1.hex. Tal y como está, controlara los canales DMX del 1 al 8. Para poder modificar estos valores, se incluye el código para mikroBasic, en donde deberá cambiarse el valor "adres" en la siguiente parte del código:
Código:
init_timer0
init_usart
counter = 0 ' Initialize counter
while TRUE
adres = 1
'
wend
end.
Lei por ahi que funcionaba solo para los primeros 10 canales, yo la verdad probe con valores del 1 al 512 y todos me funcionaron correctamente.
Dejo adjuntos los PCB en PCB Wizzard (Donde estan los circuitos por separado y una version de gervit que incluye ambas partes juntas), el hex para cargar al pic (con canales del 1 al 8), y un rar que contiene el código en mikroBasic para modificar.
Creeria que con esto ya van a poder armar su receptor, dejo algunos datos extras:
**En mi caso, mi consola necesitaba valores de continua entre 1 y 12V. Eso se soluciona elevando el valor de tension de alimentación del circuito PWM to DC.
**En el código se puede ver un diseño de 9 canales (de 0 a 8). Sinceramente, no tuve tiempo de probarlo, pero creo que podria agregarse una salida mas en el pin 3 del pic.
**gervit mencionaba, que asi como muchos otros DMX comerciales, se le integre un DIP-switch de 9 llaves para modificar los canales de DMX sin necesidad de cambiar el código. Si a alguien se le ocurre alguna idea, será bienvenida, yo intente buscarle la vuelta, pero se me complica mucho sin un conversor ADC (El 16F628A no cuenta con el mismo) para poder recibir todos los estados del dip-switch en 1 solo pin del pic. Dejo un PDF adjunto que explica como trabajaria el mismo, espero que sea de ayuda y alguien se anime a incorporarlo.
**En mi proyecto en particular, y no se si en todos ocurrirá lo mismo, habia un alto nivel de parpadeo en el foco (MUY notable en valores bajos de intensidad). Al principio pensaba que era la ausencia de inductores de potencia que normalmente se conectan a la salida de la consola, antes de la lámpara, para suprimir ruidos generados en la conmutación del TRIAC. Luego comprobé que la salida DC del conversor PWM no era completamente lineal, sino que seguia un patron mas bien de un diente de sierra. Esto lo solucioné agregando capacitores de 4700uf x 16v entre cada salida del conversor (la que varia entre 1 y Vcc) y masa (con 1000uf ya era practicamente imperceptible, pero por las dudas..). Si a alguno le ocurre lo mismo y no comprende esto me avisa y hago un diagramita.
**Como "emisor casero", para probar el receptor, utilize como emisor un Arduino+SN75176 descargando la libreria "DmxSimple" de aquí. Vi otros proyectos mucho mas sencillos, que utilizan un simple conversor USB-Serie + SN75176 y un software de control de luces como FreeStyler. Quiero aclarar que esto SOLO FUNCIONA CON CONVERSORES USB - SERIE QUE SOPORTEN FTDI. Los más economicos (como el mio) no soportan FTDI, y envian solo valores entre 0, 128 y 255 (o algo por el estilo) variando de cierta forma el control de la luz, pero muy erroneamente.
Actualmente estoy proximo a acomprar alguna consola DMX para probar que todo funcione bien! Si alguno tiene alguna recomendacion a tener en cuenta para asegurar la compatibilidad de la misma con este circuito se lo agradeceria, tengo entendido que deberia funcionar con cualquier consola DMX-512.
Por último les dejo algunas imágenes del proyecto. Saludos!




Adjuntos
Última edición: