TODOPIC
Mecatrónica => DMX512 - Diseños y Proyectos => Mensaje iniciado por: alogic.on en 11 de Diciembre de 2007, 07:17:56
-
hola
aqui estoy enfrascado en otro cacharro, :mrgreen: he visto unas cuantas webs en las que desarrollan proyectos para manejar leds RGB con el protocolo DMX512 yo no he echo nada todavía con este tipo de leds ni con DMX, ya el nombre de DMX512 me sugiere que utiliza tramas de 512 ordenes, dos bytes, transmitidas por la usart, sincrona o asincrona a X bauds esto tiene que estar especificado en algun lugar que a mi, google me ha escondido, tampoco localizo una lista con lo que hace cada orden, por ejemplo una primera trama de dos bytes 0x00,0x00 sería el canal cero, y la siguiente trama de dos bytes dice a que frecuencia parapadea un led RGB,tambien habra tramas de canal on/off +256 on, -256 off "corregidme", por favor que todo esto son conjeturas, que no quiero hacer un nuevo protocolo antes de conocer el que existe :D volviendo al tema los leds RGB se manejan por PWM a que frecuencia trabajan estos leds o mejor dicho a que frecuencia les hace trabajar el DMX, esto será un tipo de estandar o cada fabricante lo hace a gusto¿?¿?. :?
entonces recapitulando conjeturas voy a usar en el proyecto el pic que tengo a mano con usart , un 16f877a, para las salidas de los leds estaba pensando en ampliar con registros de desplazamiento de esta forma seria mas facil ampliar el numero de canales añadiendo poco codigo, pero a mas salidas reduce el tiempo de pulsos ademas lo logico seria hacerlo con los perifericos de PWM pero estos son solo dos y se quedan cortos .... alguna idea , enfoque o punto de vista diferente para afrontar este muro de dudas :-)
una explicacion del programa en el que pienso, serian 8 registros para 8 leds o como son tramas de 512 valores dos bytes por led, el programa iria decf cada registro, al llegar a cero pone a uno o a cero el correspondiente bit y cada vez que de la vuelta envia a los registros de desplazamiento, los bits del registro que estamos haciendo bailar. pensad en que todo esto son conjeturas dudas y pensamientos propios, no se si le va a dar tiempo al micro, ha recibir la trama de datos, dar la vuelta al programa decrementando los registros y enviar los datos en serie, antes de comerse el tiempo de los ciclos en los que deben de titilar los leds :? :? ya podria ser DMX256 :D
alguna idea o enlace a la santa biblia de DMx512 en el que expliquen de forma tecnica en que se basa el protocolo
un saludo y gracias
-
Yo estoy terminando de montar un proyectito receptor DMX con PIC que publicaré en cuanto esté acabado. Te recomiendo que eches un vistazo a esta nota de aplicación donde viene todo muy bien explicadito:
http://www.microchip.com/stellent/idcplg?IdcService=SS_GET_PAGE&nodeId=1824&appnote=en527825
-
Bien¡¡ me parece que es lo que necesitaba :-/ voy a leerlo, me conto STK500 que estabais haciendo algo de eso :mrgreen: pero como actuaba de intermediario y yo que no conozco el protocolo pense que hera mejor postearlo, empezando por aclarar mis dudas para conocer como funciona antes de abrir ningun proyecto en el foro, cuando empeceis a postear ya lo leere, mientras me quedo por aqui en el banquillo de suplentes :D recopilando info y estudiando un ratito
otro enlace para C Topic (http://www.ccsinfo.com/forum/viewtopic.php?t=17513&highlight=dmx)
un saludo y gracias
-
Hola JJC40!
Muchas gracias por tu Tutorial lo encuentro Genial,
te podria pasar por aca y asi quizas me ayude con el dichoso DmxPack
http://www.todopic.com.ar/foros/index.php?topic=19450.0
y aqui esta mis projectos
http://www.todopic.com.ar/foros/index.php?topic=18862.0
Se te agradece tu gran ayudas
Gracias de antemano amigo :mrgreen:
-
vamos ya ¡¡¡ ahora si que si, tendré que incar codos para manejar asi la usart pero algo podremos hacer :mrgreen:
una pequeña aclaracion en el caso del controlador. supongamos un solo canal para empezar, un potenciometro conectado al pic. este envia tóo lo que decias antes (aun no asimilado) del BREAK, MAB, START CODE, y los DATA. ( :? me estoy imaginando la rutina de interrupcion de la usart del receptor) y vuelve a empezar con BREAK, MAB, START CODE, y los DATA. y una y otra :-) o el controlador solo envia #mas los datos si cambia el valor del potenciometro
un saludo y gracias
-
JCC40 excelente explicación: clara, corta y concisa. No se puede pedir más. Pero por lo que veo el meollo de la cuestión está en que no exista un protocolo de control de los receptores, me explico: si quiero manejar un receptor que controla el brillo de una bombilla, sé como enviarlo, pero ¿qué tengo que enviar?.
Un saludo
-
Hola gran amigo Fito !
aqui me he puesto a chamusquear un liazo y me da 5 error claro la primera lina es el primer error y estuve mirando ejemplo
y no se como hacer :D
quizas tu o alguien me echa una mano
;4 chan DMX, PWM Salida
;On RB5, RB6, RB7, RA3
;Rafael J
__CONFIG _CP_OFF& _PWRTE_ON& _WDT_OFF& _HS_OSC&_LVP_OFF
list P=16F628A
#INCLUDE <P16F628A.INC>
#DEFINE OUT1 PORTB,5
#DEFINE OUT2 PORTB,6
#DEFINE OUT3 PORTB,7
#DEFINE OUT4 PORTA,3
#DEFINE RCLED PORTB,3 ;Led Verde recibiendo dmx
#DEFINE RX PORTB,1
#DEFINE ERRLED PORTB,4 ;Led Rojo error dmx
#DEFINE BREAK DMX_reg,0
#DEFINE STARTCODE DMX_reg,1
#DEFINE MOVED DMX_reg,2
#DEFINE ADDR9 DMX_reg,3
#DEFINE RC9 DMX_reg,4
DMX_reg EQU 020h
Reg1 EQU 021h
Reg2 EQU 022h
Reg3 EQU 023h
Reg4 EQU 024h
W_SAVE EQU 026h
S_SAVE EQU 027h
P_SAVE EQU 028h
pwmcounter EQU 029h
flag EQU 02Ah
D_ADDR EQU 02Bh
temp EQU 02Ch
R_ADDR EQU 02Dh
Offset EQU 02Eh
temp2 EQU 02Fh
ORG 00h
GOTO INIT ;Inicial el PIC
ORG 04h ;Interrupt vector
MOVWF W_SAVE ;save context,
MOVF STATUS,W ;save STATUS, PCLATH & W
MOVWF S_SAVE
MOVF PCLATH,W
MOVWF P_SAVE
GOTO INTHANDLER
INIT
MOVLW 0x07 ;encender comparador
MOVWF CMCON
CLRF PORTA
CLRF PORTB
BSF STATUS,RP0 ;Selecte Bank1
CLRF TRISA ;porta salida
CLRF TRISB ;portb salida
BSF TRISB,1 ;B1 entrada UART Recibiendo
MOVLW 04h
MOVWF SPBRG ;poner baud rate
BSF TXSTA,BRGH ;max velocidad
BCF TXSTA,SYNC ;Async conexion
CLRF PIE1 ;borrar otro interrupor
BSF PIE1,RCIE ;poner interruptor Recibido
BCF STATUS,RP0 ;volver al bank0
BSF RCSTA,RX9 ;activar 9bit de data
MOVF RCREG,W ;borrar RCREG FIFO
MOVF RCREG,W
MOVF RCREG,W
BSF RCSTA,CREN ;activar recibiendo
BSF RCSTA,SPEN ;activar UART
BSF INTCON,PEIE ;activar interruptor
BSF INTCON,GIE
BCF RCLED ;
BCF ERRLED
CLRF Reg1
CLRF Reg2
CLRF Reg3
CLRF Reg4
CLRF D_ADDR ;poner dmx a 0
BCF ADDR9
GOTO MAIN ;ir al inicio del programa
MAIN
BCF RCLED
BCF ERRLED
MOVLW 0FFh
MOVWF pwmcounter
BCF OUT1
BCF OUT2
BCF OUT3
BCF OUT4
CALL PWM_CYCLE
GOTO MAIN
PWM_CYCLE
MOVF Reg1,W
XORWF pwmcounter,W
BTFSC STATUS,Z
BSF OUT1
MOVF Reg2,W
XORWF pwmcounter,W
BTFSC STATUS,Z
BSF OUT2
MOVF Reg3,W
XORWF pwmcounter,W
BTFSC STATUS,Z
BSF OUT3
MOVF Reg4,W
XORWF pwmcounter,W
BTFSC STATUS,Z
BSF OUT4
DECFSZ pwmcounter
GOTO PWM_CYCLE
RETURN
INTRETURN
MOVF P_SAVE,W ;renovar contexto
MOVWF PCLATH
MOVF S_SAVE,W
MOVWF STATUS
SWAPF W_SAVE,F
SWAPF W_SAVE,W
RETFIE
INTHANDLER
BTFSS PIR1,RCIF
GOTO INTRETURN
BTFSC NO_DMX
MOVF RCREG,W
BTFSC NO_DMX
GOTO INTRETURN
GOTO DMX
DMX
BSF ERRLED
BTFSC RCSTA,OERR
GOTO OVERRUN
BTFSC RCSTA,FERR ;chequea error de framing
GOTO FRAME
BTFSS BREAK ;chequea si ha sucedido un break
GOTO RET
BTFSS STARTCODE ;
GOTO SC ;
BTFSC STARTCODE
GOTO CHANNEL
RET
MOVF RCREG,W
GOTO INTRETURN
OVERRUN
BCF RCSTA,SPEN
BSF RCSTA,SPEN
MOVF RCREG,W
BSF ERRLED
GOTO LAST
FRAME
BCF BREAK
BCF STARTCODE
BCF RC9
CLRF R_ADDR
CLRF Offset
BTFSS RCSTA,RX9D
BSF BREAK
MOVF RCREG,W
GOTO INTRETURN
SC
MOVF RCREG,W
XORLW 00h
BTFSC STATUS,Z
BSF STARTCODE
GOTO INTRETURN
INCREASE
INCF R_ADDR
BTFSC STATUS,Z
BSF RC9
RETURN
CHANNEL
MOVF Offset,W
XORLW 00h ;check if offset != 0
BTFSS STATUS,Z
GOTO CHAN
MOVF R_ADDR,W ;else: check if chans match
XORWF D_ADDR,W
BTFSC STATUS,Z
GOTO NINTH ;if so: check for 9th bit
CALL INCREASE
GOTO RET ;if not: just return from interrupt
NINTH
BTFSC ADDR9
GOTO TRUE
MOVF RCREG,W
GOTO FALSE
TRUE ;our 9th bit is set
BTFSC RC9
GOTO CHAN
CALL INCREASE
GOTO RET
FALSE
BTFSS RC9
GOTO CHAN
CALL INCREASE
GOTO RET
CHAN
; BCF RCLED
INCF Offset
MOVF Offset,W
XORLW 01h ;check if count = 0
BTFSC STATUS,Z
GOTO CHAN1
MOVF Offset,W
XORLW 02h
BTFSC STATUS,Z
GOTO CHAN2
MOVF Offset,W
XORLW 03h
BTFSC STATUS,Z
GOTO CHAN3
MOVF Offset,W
XORLW 04h
BTFSC STATUS,Z
GOTO CHAN4
MOVF Offset,W
XORLW 05h
BTFSC STATUS,Z
GOTO LAST
CHAN1
MOVF RCREG,W
MOVWF Reg1
CALL INCREASE
GOTO INTRETURN
CHAN2
MOVF RCREG,W
MOVWF Reg2
CALL INCREASE
GOTO INTRETURN
CHAN3
MOVF RCREG,W
MOVWF Reg3
CALL INCREASE
GOTO INTRETURN
CHAN4
MOVF RCREG,W
MOVWF Reg4
CALL INCREASE
GOTO INTRETURN
LAST
BCF BREAK
BCF STARTCODE
CLRF Offset
GOTO INTRETURN
END
-
tienes que indicarle al mplab que bit es el NO_DMX, no esta definido. asi a simple vista es dificil averiguar a que se refiere
alguna pista ?¿?¿
#DEFINE NO_DMX PORTx,x "por ejemplo"
un saludo
-
buuuf y un par de NOP despues de encender o apagar cualquier pin de las puertas para darle tiempo a que estabilice que si no hacen cosas raras
un saludo
-
mmmmpf perdona a lo mejor no me explique bien, con mi pregunta, era si envia el paquete completo cada vez que termina o cada vez que se modifica algo en el controlador
El controlador (transmisor) siempre envía toda la cadena del protocolo completo:
BREAK, MAB, START CODE, y los DATA
BREAK, MAB, START CODE, y los DATA
BREAK, MAB, START CODE, y los DATA..
un saludo y gracias
-
Gracias por tu respuesta JCC40 pero me surge otra duda ¿todos los receptores que controlan bombillas, por ejemplo, utilizan los mismos códigos de control?, se sobreentiende que son de distinto fabricante.
Un saludo
-
Muy bien. Eso implica que los receptores los podemos hacer como queramos. Pero no podemos programar el emisor sin tener los receptores, ademas el emisor habrá de ser reprogramable de forma fácil para poder cambiar de receptores, ¿me equivoco?
Un saludo
-
Y en la práctica cuando tienes todos los dispositivos receptores que vas a controlar ¿como se programa el transmisor?. Entiendo que el firmware no cambiará, entonces ¿que hay que hacer?, ¿una seudoprogramación a mano?.
Un saludo.
-
Imagino que en la mayoría de las situaciones complicadas el emisor será un PC, donde puedes programar lo que quieras muy fácilmente de manera visual.
-
Asi mismo manolo!
Claro es que estos 2 elementos Receive y Transeiver son configurable como RS485, JCC40 puso muchos ejemplos, cada persona configura las tramas a sus gustos tantos en analogo como digital, hay una inmensidad de aparatos Profesional que trabajan con el protocolo, tantos video,audio y luces, ahora bien, pensar que se realiza un aparato que va a reciber la trama y de esa trama solo queremos recibir solo 8 canales, pensar aqui siempre en esto Multiplexer y Demux, esa trama que recibimos la podemos convertir en analogo para Pj. controlar un motor, con un solo canal, los parametro se realizan en el soft que uno va emplear, digamos asi en un Ram, que por medio de teclado llamamos al mover el Fader en un % difinido, activa el motor y se memoriza en real modo, seguimos en otro % definido la variacion de Speed del motor, y se memoriaza esto, otro % podiamos poner aqui la direcion del motor Dcha Izq. y seguimos con otras variante a nuestros gustos, ahora bien usted se pregunta como? para eso esta el Demux, en mi trabajo yo opero para Chequear nuestros aparatos de efectos especial,
Movie Light un Studio Spot que ocupa 26 canales donde ese block de 26 canales lo puede meter dentros de los 512 canales, cada de los 26 canales independiente se configura de acuerdo a la tabla que nos el inventor o fabricante del aparato, alli tenemos una Tabla con los parametros que podamos ustilizar y operar con el, eso es una gran sensacion operar un gran sin numero de aparatos atravez de una Consola DMX por ejemplo esta miren aqui http://www.pa-light.com/articulos/getArtPdf.php?SEC=CON&art=351 vean que jueguitos :D de estos tenemos donde trabajo 4 aparte de otras mas. por eso es tan bellos trabajar con DMX y asi poder lograr todos tipos de resultados.
-
Donde se pueden pedir samples de esas consolas :D :D :D :D
Un saludo
-
Donde se pueden pedir samples de esas consolas :D :D :D :D
Un saludo
:D :D Hola Jesus :D
por desgracia no es se consigue nada de eso :D
pero el que quiera hacer un Curso de Light Designer ya aqui en Alemania hay escuela de eso, donde duran casi 6 meses de practica y Teoria, yo e hice un curso, siendo asi esa consola no la conozco a fondo por tener tantas cosas juntas, no se si leiste las caracteristica tecnica, habia que darle un Vistazo a eso y asi darse cuenta que es mas que una PC, pasaste por aqui y mira que otras preciosidad de programa http://www.madrix.de/ tambien trabajamos con esta http://www.highend.com/products/controllers/Wholehog3Console.asp otros Jueguitos lindo http://www.highend.com/products/controllers/Wholehog3Console.asp
el sueños de cada Diseñador de Eventos :-) :-) :-) :-) :-) :-)