# Receptor DMX de 8 canales (con PIC16F628A)



## gino_kgx (Ene 19, 2013)

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:


```
init_timer0
init_usart

  counter = 0            ' Initialize counter

  while TRUE
      adres = 1
    '

   wend
end.
```
(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!


----------



## gervit (Ene 20, 2013)

Me parece muy buena la idea de abrir un post que sea solo dmx.
En lo que pueda voy a contribuir.
Con respecto al parpadeo no tuve ningun problema.

Estaria muy bueno que le podamos incorporar un sistema de llaves.
Tambien le incorpore un led ( algo simple con una resistencia no mas) a la entrada que me indica si esta llegando dmx o no.

Saludos

Posdata: Gracias Gino_kgx tambien por tus aportes.



Me olvidaba:
No se si lo viste, date una vuelta por este post: "Receptor dmx para dimmer" : https://www.forosdeelectronica.com/f23/receptor-dmx-dimmer-23816/index2.html
Hay algunas direcciones tambien que te pueden ser utiles.
Hay un receptor interesante con un pic atmega 8515-16pu pero primero que aca no lo consigo y despues no se como se programan esos pic


----------



## gino_kgx (Mar 8, 2013)

Huston, tenemos problemas =P. Acabo de comprar una consola DMX-512 de las mas comunes (http://bimg2.mlstatic.com/consola-dmx-512-192-canales_MLA-F-3162403532_092012.jpg) yyy.. No funciona :S. Paso a comentarles...

El circuito lo probé, como bien conte mas arriba, con un emisor Arduino + la libreria "DMX simple". Con esto funciona perfectamente, la intensidad de la luz varia bien entre 0 y 255 y se respetan los canales..

Ahora bien, cuando conecto la consola al Decodificador DMX, coloco una lampara en el canal 2 del dimmer, y cualquiera sea el canal de la consola que sube o baje, me prende y apaga el foco erroneamente. Por ejemplo: Subo el canal 8 hasta 240, y la lampara comienza a encenderse y apagarse sola, como si no sincronizaria bien con los canales o los bits..

Estube intentando modificar el codigo, para ver en que parte no esta recibiendo bien los datos, pero no obtengo resultados, no logro encontrar donde esta el problema... (Probe modificar el tmr0, el option_register, pero suena mas bien a que no identificase el break, o el startcode)..

¿A alguno de ustedes se les ocurre algo?...


----------



## gervit (Feb 6, 2014)

hola el circuito anda bien yo lo uso con una consola dmx para teatro.
hace bastante que lo vengo usando y no me ha fallado.


----------



## locodelafonola (Feb 6, 2014)

gino_kgx dijo:


> Huston, tenemos problemas =P. Acabo de comprar una consola DMX-512 de las mas comunes (http://bimg2.mlstatic.com/consola-dmx-512-192-canales_MLA-F-3162403532_092012.jpg) yyy.. No funciona :S. Paso a comentarles...
> 
> El circuito lo probé, como bien conte mas arriba, con un emisor Arduino + la libreria "DMX simple". Con esto funciona perfectamente, la intensidad de la luz varia bien entre 0 y 255 y se respetan los canales..
> 
> ...


hola  amigo mira yo recien empiezo...y en una consola dmx estandarizada..no va a funcionar....  por la simple razon que NO TIENE EL DIRECCIONAMIENTO DMX..o sea al circuito le falta las llaves mini dip... que setea los canales del receptor ..un grave fallo en el diseño... la consola no sabe o no lee los canales asignados....


----------



## gino_kgx (May 22, 2018)

Mejor tarde que nunca (?). Me habia olvidado de esta publicación la verdad.. En fin, si alguien nuevo entra y lo quiere armar, el receptor funciona perfecto. El problema con la consola comercial habia sido un descuido mio, de algo que conecté mal, pero funciona bien. Como puse en mi primer post, en el codigo del PIC se puede setear el canal, que como está viene en canal 1 (osea, de 1 a 8) pero se puede configurar cualquier otro antes de programar el PIC. El dip seria mejor, pero no se me ocurrio una forma simple de implementarlo. (Con resistencias a algun analog imput quizas?)

En fin, armenlo tranquilos que el circuito FUNCIONA BIEN. Y disculpen el cuelgue. Saludos!


----------



## locodelafonola (May 22, 2018)

Hola ., 
Bueno no se si se nesesita ., pero yo arme y postie con videos ., el circuito funciona con atmega8515 ., un lcd de 4 botones
Para asignar y grabar la direccion que queda en la memoria ., es compatible con todos los equipos DMX ., 
Este es el limK del foro CARGADOR DE DIRECCIONES DMX


----------

