Receptor DMX de 8 canales (con PIC16F628A)

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
Receptor DMX.JPG

Conversor PWM a tensión
PWM a tensión.JPG

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

Receptor DMX Listo.jpg

PWM to DC Listo.jpg

Emisor.jpg

Completo.jpg
 

Adjuntos

  • Circuitos Liveware - PCB Wizzard.zip
    17 KB · Visitas: 267
  • Codigo dmx1.rar
    21.2 KB · Visitas: 348
  • DIP Switch DMX.pdf
    289.7 KB · Visitas: 359
Última edición:
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
 
Última edición:
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?...
 
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?...
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....
 
Última edición:
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!
 
Revivo el tema, soy nuevo en esto del dmx. quisiera que la salida fuese a relay, es decir, solamente necesito prender y apagar. Solo tendria que adaptar a la salida del pic transistor y relay? y que la consola se encarga de poner el pwm al 100% para que cuando active ese canal quede prendido??? o como sería?
 
Pues sí, así es como lo haría yo.
En esta aplicación que realicé se puede ver que al presionar el botón del canal "Humo", el valor del PWM va a 255, o sea, al máximo, y al desactivarlo el PWM va a 0, como en el resto que están apagados.

Chauvet Geiser RGB - DMX Interface.png
 
¿Qué tal, muchachos?
S
oy nuevo en el tema y me gustaría saber si me pueden orientar.
M
e regalaron unos reflectores monocromáticos LED DMX y se me está complicando para conseguir un circuito controlador sencillo que genere de 0 a 255 para usarlo como dimmer.
D
esde ya, muchas gracias.
 
Última edición por un moderador:
Me regalaron unos reflectores monocromáticos LED DMX y se me está complicando para conseguir un circuito controlador sencillo que genere de 0 a 255 para usarlo como dimmer.

Si sabes programar te será muy sencillo crear una aplicación.
Si no, existen aplicaciones gratuitas con las que puedes experimentar.
La imagen de la aplicación que compartí en el post #9 está basada en el proyecto Open DMX y su interfase es muy sencilla.
open-dmx.jpg
Obviamente, el programa para Windows es de mi autoría.

En este mundo del DMX, saber electrónica y programación es fundamental.
Al menos si quieres realizar algo personalizado.
 
Voy a mirar todo , de programación nada , y de realizar no quiero algo personalizado, simplemente poder controlar la intencidad de los reflectores ya que pienso ponerlos en un espacio físico no tan grande , y al encenderlos quedan a su máxima potencia
 
Voy a mirar todo , de programación nada , y de realizar no quiero algo personalizado, simplemente poder controlar la intencidad de los reflectores ya que pienso ponerlos en un espacio físico no tan grande , y al encenderlos quedan a su máxima potencia
Entonces no tenes nada que consultar acá: comprás un controlador DMX de medio pelo, lo conectás y problema resuelto.
 
Podría ser pero lo quiero hacer yo, de todas formas gracias por tu comentario
A ver si te aclaras porque en el anterior dijiste lo contrario:
y de realizar no quiero algo personalizado,
Si lo haces tú es personalizado.

Ya sabes que cuando uno hace las cosas sale más caro, se tarda más tiempo y sale peor.
Es lo que nos gusta a los electrónicos, complicarnos la vida porque es divertido y se aprende.
Si uno solo compite con la industria especializada de algo no va a ganar ni siquiera empatar. Solo aprender y eventualmente pasárselo bien.

Si quieres un coche ve y compra uno, no te pongas investigar como obtener la mena del hierro para fundirlo, laminarlo, hacer acero, plegar la chapa... No pienses que se hace en una tarde.
 
Última edición:
Le doy toda la razón del mundo , yo pensaba en un potenciómetro algún integrado y de ahí a los reflectores, y cuando empecé a investigar era más complejo de lo que me esperaba , por eso pregunté acá si me podían orientar , desde ya muchas gracias por sus consejos
 
Le doy toda la razón del mundo , yo pensaba en un potenciómetro algún integrado y de ahí a los reflectores, y cuando empecé a investigar era más complejo de lo que me esperaba , por eso pregunté acá si me podían orientar , desde ya muchas gracias por sus consejos

Como dijo Confucio (Filosofo Chino 551 a. C. - 479 a. C.): "La realidad es cruel" 🤷‍♂️ 🤷‍♂️
 
Hola, soy de Cuba y me llamo Duniesky. Buenas para todos en el foro, es mi primera interacción directa en el foro, aunque llevo casi 4 años en el. Lo que quisiera es, si alguien de acá me pudiera ayudar en comentar renglón por renglón, del programa del Recepto DMX de 8 canales(con PIC16f628a),es que estoy dando mis primeros pasos en este mundo de los PIC y quiero entender que hace cada uno de ellos. Muchas gracias de antemano por las posibles molestias que puedo ocasionar.

 
Buenas para todos, bueno les cuento que leyendo el DATA Sheet del pic entendí un poco y comente varias líneas del programa, pero en el tema de las direcciones pues eso no lo entendí, por favor si alguien fuera tan amable de explicarme la parte final del programa lo que tiene que ver con las direcciones, muchas gracias.
PD: Les dejo lo que he comentado en el adjunto.
 

Adjuntos

  • dmx pic16f628a.txt
    6 KB · Visitas: 3
Atrás
Arriba