Autor Tema: 64 canales DMX512 con 8 x TDA8444  (Leído 7605 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado stk500

  • Moderador Local
  • DsPIC33
  • *****
  • Mensajes: 4851
64 canales DMX512 con 8 x TDA8444
« en: 13 de Noviembre de 2008, 13:31:07 »
esto lo saque de este post viejo http://www.todopic.com.ar/foros/index.php?PHPSESSID=03f22a173ee0244fd55a242d5b2aedc8&topic=3675.0

al montarlo me da una serie de problema que no lo encuentro y no se por donde empezar, bien el problema que me da es, que al hacer fader con el primer canal poniendo ante el dipswitch numero 1 a cero al hacer fader en 50% la salida del canal pin numero 9 del primer TDA8444 me hace oscilaciones donde deberia dar 5Voltio, al subir el Fader a 100% me llega a 10 Voltio pero se queda oscilando, otro caso curioso tambien es, que el segundo canal me hace los mismo pero y me interfiere en el primer canal.
yo pienso que el error esta aqui ndmx = ndmx ^ %0000001111111111
 os pongo el programa aqui completo


DEFINE OSC 20
@ DEVICE HS_OSC

'Configurazione usart 250000
DEFINE HSER_BITS 9
DEFINE HSER_RCSTA 208
DEFINE HSER_TXSTA 101
DEFINE HSER_BAUD 250000
DEFINE HSER_CLROERR 1 'Hser clear overflow automatically


SYMBOL IN =PORTC.0
SYMBOL LED =PORTC.3 'LED
SYMBOL SDA =PORTA.2 'SDA TDA8444 OUT ANALOGICHE ESTERNE
SYMBOL SCL =PORTA.3 'SCL TDA8444 OUT ANALOGICHE ESTERNE

INPUT IN

TMP VAR WORD
TMP1 VAR WORD
VALORE VAR byte[65]
BREAK VAR WORD
NDMX VAR WORD
DATI VAR WORD
Clear

ADCON0=0
ADCON1=7
OPTION_REG.7=0 'Abilita resistenze di pull-up
FOR TMP=0 TO 10
TOGGLE LED
PAUSE 200
NEXT TMP
LOW LED

MAIN:

NDMX=0
NDMX.0=PORTA.1
NDMX.1=PORTA.0
NDMX.2=PORTB.7
NDMX.3=PORTB.6
NDMX.4=PORTB.5
NDMX.5=PORTB.4
NDMX.6=PORTB.3
NDMX.7=PORTB.2
NDMX.8=PORTB.1
NDMX.9=PORTB.0

ndmx = ndmx ^ %0000001111111111
DATI=0
PULSIN in,0,break

IF BREAK>=44 THEN

HSERIN 1000,MAIN,[tmp,tmp1]
if tmp<>0 and tmp1<>0 then
goto main
endif

FOR TMP=1 TO ndmx
HSERIN 10,main,[tmp1]
NEXT TMP

FOR tmp=1 TO 64
hserin 10,EXIT,[VALORE[tmp]]
DATI=DATI+1
NEXT TMP

EXIT:
FOR TMP=1 TO DATI
VALORE[TMP]=VALORE[TMP]/4
NEXT TMP

I2CWRITE SDA,SCL,%01000000,%00000000,[VALORE[1],VALORE[2],VALORE[3],VALORE[4],VALORE[5],VALORE[6],VALORE[7],VALORE[8]]
I2CWRITE SDA,SCL,%01000010,%00000000,[VALORE[9],VALORE[10],VALORE[11],VALORE[12],VALORE[13],VALORE[14],VALORE[15],VALORE[16]]
I2CWRITE SDA,SCL,%01000100,%00000000,[VALORE[17],VALORE[18],VALORE[19],VALORE[20],VALORE[21],VALORE[22],VALORE[23],VALORE[24]]
I2CWRITE SDA,SCL,%01000110,%00000000,[VALORE[25],VALORE[26],VALORE[27],VALORE[28],VALORE[29],VALORE[30],VALORE[31],VALORE[32]]
I2CWRITE SDA,SCL,%01001000,%00000000,[VALORE[33],VALORE[34],VALORE[35],VALORE[36],VALORE[37],VALORE[38],VALORE[39],VALORE[40]]
I2CWRITE SDA,SCL,%01001010,%00000000,[VALORE[41],VALORE[42],VALORE[43],VALORE[44],VALORE[45],VALORE[46],VALORE[47],VALORE[48]]
I2CWRITE SDA,SCL,%01001100,%00000000,[VALORE[49],VALORE[50],VALORE[51],VALORE[52],VALORE[53],VALORE[54],VALORE[55],VALORE[56]]
I2CWRITE SDA,SCL,%01001110,%00000000,[VALORE[57],VALORE[58],VALORE[59],VALORE[60],VALORE[61],VALORE[62],VALORE[63],VALORE[64]]

ENDIF


GOTO MAIN



quizas alguien me puede dar algunas pista.
saludo

Desconectado navaismo

  • Jubilado Todopic
  • PIC24H
  • ****
  • Mensajes: 1973
Re: 64 canales DMX512 con 8 x TDA8444
« Respuesta #1 en: 13 de Noviembre de 2008, 13:55:54 »
La verdad que NPI de lo que es, hace o sirve el DMX, pero dime porque crees que el error este en esa porcion del codigo?

Lo que hace ndmx = ndmx ^ %0000001111111111 es invertir el valor original para meterlo al FOR, no se si es lo mismo que pretendas en tu codigo.
"Mi tercer deseo, que otra cosa podría ser, poner un final a todo el sufrimiento, que sólo con mi propia extinción el planeta podrá ser aliviado. Pobre de mí, Si tuviera tres deseos hoy, la elección no sería dificil para mí, Sólo tres deseos serían suficientes, No tendría uso para más."

"He sido un hombre que busca y aun lo sigo siendo, pero ya no busco en las estrellas y en los libros, sino en las enseñanzas de mi sangre."

Desconectado stk500

  • Moderador Local
  • DsPIC33
  • *****
  • Mensajes: 4851
Re: 64 canales DMX512 con 8 x TDA8444
« Respuesta #2 en: 13 de Noviembre de 2008, 14:47:56 »
La verdad que NPI de lo que es, hace o sirve el DMX, pero dime porque crees que el error este en esa porcion del codigo?

Lo que hace ndmx = ndmx ^ %0000001111111111 es invertir el valor original para meterlo al FOR, no se si es lo mismo que pretendas en tu codigo.
correcto amigo Navaismo, pero creo que es ahi ,porque se mezclan los canales uno con otros, es decir el PORTA,1 es donde comienza el primer canales cuando los pongo va, pero el canal 2 influye tambien, yo cambie esto pensando que el Hserin recibia la señal muy lenta, estaba en 2000 y lo puse asi
HSERIN 1000,MAIN,[tmp,tmp1]
if tmp<>0 and tmp1<>0 then
goto main
endif
yo nunca he usado la UART con picbasic pero entrando alli en el Foro nadie daba una explicacion logica al asunto, por que se supone que debo recibir el primer canal de la Trama? y pienso que seria tambien aqui if tmp<>0 and tmp1<>0 then
quizas me pueda dar tu algunas pista. gracias por colaborar
Saludo

Desconectado navaismo

  • Jubilado Todopic
  • PIC24H
  • ****
  • Mensajes: 1973
Re: 64 canales DMX512 con 8 x TDA8444
« Respuesta #3 en: 13 de Noviembre de 2008, 15:56:46 »
En estos momentos no estoy en mi maquina para poder darle un vistazo a la ayuda del HSERIN, lo que si es que me quedan muchas lagunas por lo mismo de que no conozco este protocolo y para brindarte ayuda deberia conocer un poco mas. Bueno si por ahi tienes un link que me adentre a esto te podria ayudar mas; por otra parte tambien necesitaria saber como funciona el TDA y lo que se hace.

Sobre el If que comentas pues habria que ver que recibe la UART ya que ese if te manda a MAIN si ambos son diferentes de cero e imagino que siempre lo son.

Saludos
"Mi tercer deseo, que otra cosa podría ser, poner un final a todo el sufrimiento, que sólo con mi propia extinción el planeta podrá ser aliviado. Pobre de mí, Si tuviera tres deseos hoy, la elección no sería dificil para mí, Sólo tres deseos serían suficientes, No tendría uso para más."

"He sido un hombre que busca y aun lo sigo siendo, pero ya no busco en las estrellas y en los libros, sino en las enseñanzas de mi sangre."

Desconectado navaismo

  • Jubilado Todopic
  • PIC24H
  • ****
  • Mensajes: 1973
Re: 64 canales DMX512 con 8 x TDA8444
« Respuesta #4 en: 13 de Noviembre de 2008, 16:27:01 »
brrrrrrrr! se borro lo que ya llevaba bueno de nuevo.

Ya revise la intruccion HSERIN y me quedaron algunas dudas con tu codigo. Lo primero ¿Que PIC estas usando? Porque no estoy seguro si estas declaraciones esten en funcion del PIC:

DEFINE HSER_BITS 9 ' Al habilitar la recepcion de 9bits los siguientes registros se supone cambian en automatico. Pero no se si correspondan al PIC que uses:
DEFINE HSER_RCSTA 208
DEFINE HSER_TXSTA 101

Luego en DEFINE HSER_BAUD 250000 cual se supone deberia ser la velocidad? Ya que no veo el MODEDEFS.BAS y no se parece a 2400,9600,19200 etc. O bien usa el registro DEFINE HSER_SPBRG para hacerlo mediante el Data del PIC y habilitar el modo rapido y esas cosas.

Bueno y despues viene esto:

HSERIN 1000,MAIN,[tmp,tmp1] ' Aqui habilitas la recepcion, pasado 1 segundo sin obtener nada mandas a MAIN de nuevo, si recibes correctamente lo guardas en tmp y tmp1.

Despues vuelves a evaluar los valores recibidos y sin son diferentes de cero mandas a MAIN de nuevo:

if tmp<>0 and tmp1<>0 then
goto main
endif

Disculpa que sea tan chocante pero primero me gustaria entender que se prentende o como funciona para yudarte mejor.

Saludos
"Mi tercer deseo, que otra cosa podría ser, poner un final a todo el sufrimiento, que sólo con mi propia extinción el planeta podrá ser aliviado. Pobre de mí, Si tuviera tres deseos hoy, la elección no sería dificil para mí, Sólo tres deseos serían suficientes, No tendría uso para más."

"He sido un hombre que busca y aun lo sigo siendo, pero ya no busco en las estrellas y en los libros, sino en las enseñanzas de mi sangre."

Desconectado stk500

  • Moderador Local
  • DsPIC33
  • *****
  • Mensajes: 4851
Re: 64 canales DMX512 con 8 x TDA8444
« Respuesta #5 en: 13 de Noviembre de 2008, 17:54:11 »
gracia Navaismo!
Yo uso el pic16F876
la velocidad del protocolo en 250000 Baud leete aqui y asi sabra como va http://www.dmx512-online.com/packt.html
la Uart recibe la Trama o paquete, y yo solo cacturo con los ndmx los canales que deseo, en este caso 64 canales ( 8x TDA8444)

pues creo que ahi esta el error, como tu lo explica arriba.
voy a experimentar haciendo algunos cambio aqui tmp<>0 and tmp1<>0 then
goto main
endif
espero que haya recibido mi mensaje privado.
Saludo

Desconectado navaismo

  • Jubilado Todopic
  • PIC24H
  • ****
  • Mensajes: 1973
Re: 64 canales DMX512 con 8 x TDA8444
« Respuesta #6 en: 13 de Noviembre de 2008, 18:51:54 »
Hola si lo recibi, y bueno ya mas o menos me quedan algunas cosas claras, obviamente me haria falta muchisimo para poder aplicar lago pero la idea ya tomo forma.

Bueno buscando por ahi, di con este enlace que es del foro de PBP en Ingles, supongo que este es para uno de 8 canales. Y bueno viendo la forma en que esperan el codigo de "break" y reciben los canales y datos te pueden ayudar a adaptarlo a tu codigo.

Aqui el enlace

Saludos
"Mi tercer deseo, que otra cosa podría ser, poner un final a todo el sufrimiento, que sólo con mi propia extinción el planeta podrá ser aliviado. Pobre de mí, Si tuviera tres deseos hoy, la elección no sería dificil para mí, Sólo tres deseos serían suficientes, No tendría uso para más."

"He sido un hombre que busca y aun lo sigo siendo, pero ya no busco en las estrellas y en los libros, sino en las enseñanzas de mi sangre."

Desconectado RALF2

  • Moderadores
  • PIC24H
  • *****
  • Mensajes: 2034
Re: 64 canales DMX512 con 8 x TDA8444
« Respuesta #7 en: 14 de Noviembre de 2008, 00:35:32 »
Que tal amigos!
Stk500!
Mañana te paso el codigo corregido que colocaste para que lo pruebes y te doy mis impresiones de lo que pudiese estar pasando  :mrgreen:
Para mi el error esta en estas lineas
HSERIN 1000,MAIN,[tmp,tmp1]
if tmp<>0 and tmp1<>0 then

Saludos

Desconectado RALF2

  • Moderadores
  • PIC24H
  • *****
  • Mensajes: 2034
Re: 64 canales DMX512 con 8 x TDA8444
« Respuesta #8 en: 14 de Noviembre de 2008, 07:46:40 »
Ah y se me olvidaba  :mrgreen:
El tda8444 es un DAC de 6bits, por lo que no puedes enviarle un valor de 0 a 255 a travez del dmx512, sino que los valores que debes enviar deben estar de 0 a 63  :shock:
Si les estas enviando valores mayores, a 63, eso puede ser la causa del problema o una de las razones por la cual no te funciona bien el circuito  :shock:  :D

Revisa eso y me comentas   :P

Desconectado stk500

  • Moderador Local
  • DsPIC33
  • *****
  • Mensajes: 4851
Re: 64 canales DMX512 con 8 x TDA8444
« Respuesta #9 en: 14 de Noviembre de 2008, 08:29:52 »
Ah y se me olvidaba  :mrgreen:
El tda8444 es un DAC de 6bits, por lo que no puedes enviarle un valor de 0 a 255 a travez del dmx512, sino que los valores que debes enviar deben estar de 0 a 63  :shock:
Si les estas enviando valores mayores, a 63, eso puede ser la causa del problema o una de las razones por la cual no te funciona bien el circuito  :shock:  :D

Revisa eso y me comentas   :P
:shock: que!!!!
eso me pasa por confiar en los circuito ya hecho :D
de momentos estoy haciendo cambio aqui
 HSERIN 2000,MAIN,[tmp,tmp1]
if tmp<>0 and tmp1<>1 then
lo puse asi y obtengo mejor resultado, pero al llegar a 100% los Fader de cada canal, me hace oscilaciones el Voltage, osea no se mantienen estable(linear) pero sigo con la prueba que me dijiste, y muchas Gracias Raul  :-/ :-/ :-/
saludo



Desconectado todopic

  • Administrador
  • DsPIC30
  • *******
  • Mensajes: 3491
    • http://www.todopicelectronica.com.ar
Re: 64 canales DMX512 con 8 x TDA8444
« Respuesta #10 en: 14 de Noviembre de 2008, 10:31:54 »
Hola Rafael!, creo que el problema viene como te dice RALF2, por parte de que el TDA8444 es de 6 bits...

no tienes el link para ver el circuito?

Un abrazo

Norberto
Firmat - Santa Fe - Argentina

www.TodoPic.net

Solo se tiran piedras, al arbol que tiene frutos...

Desconectado RALF2

  • Moderadores
  • PIC24H
  • *****
  • Mensajes: 2034
Re: 64 canales DMX512 con 8 x TDA8444
« Respuesta #11 en: 14 de Noviembre de 2008, 22:04:43 »
Que tal amigos!
mira stk500 cambia estas lineas:

IF BREAK>=44 THEN
HSERIN 1000,MAIN,[tmp,tmp1]
if tmp<>0 and tmp1<>0 then
goto main
endif

Y coloca solo esto:
If Break < 44 then main

El resto del programa dejalo igual y me dices como te fue   :mrgreen:

Amigo Norberto, se me paso una cosita en mi post anterior  :mrgreen:
Aunque el DAC es de 6 bits y el dmx512 es de 8 bits con esta rutinita ellos lo llevan de 8 a 6 bits:

EXIT:
FOR TMP=1 TO DATI
VALORE[TMP]=VALORE[TMP]/4
NEXT TMP

Saludos
« Última modificación: 14 de Noviembre de 2008, 23:59:42 por RALF2 »

Desconectado stk500

  • Moderador Local
  • DsPIC33
  • *****
  • Mensajes: 4851
Re: 64 canales DMX512 con 8 x TDA8444
« Respuesta #12 en: 15 de Noviembre de 2008, 16:12:46 »
hola Ralf!
He hecho los cambios que me comenta sin ningun resultados, asi como lo pone no activa ningun canal, los raros del casos es que al delizar el FADER suavemente cuando llega a 50% el canal que se me hace oscilaciones el voltage de salida y cuando los suboa 100% se queda un corto
rato estable y me sigue oscilando el voltage.
por lo que yo creo el problema puede ser del Cristal, lo cambiera y comentare por aqui.
Hola Norberto de momento no puedo publicar el circuito y debo decirte que el circuito esta bien, yo ya lo habia probado en el Protoboard y pensaba que era el protoboard que me daba problema y ahora veo que montandolo en la placa sigo igual :(
un abrazo Norberto y ven a menudo por aqui que se te extraña :mrgreen:
Un abrazo

Desconectado RALF2

  • Moderadores
  • PIC24H
  • *****
  • Mensajes: 2034
Re: 64 canales DMX512 con 8 x TDA8444
« Respuesta #13 en: 16 de Noviembre de 2008, 00:15:51 »
Que tal stk500!
Mira aqui te adjunto el programa hecho en proton para el dmx512, con la ultima version del compilador  :shock: :mrgreen:
Pruebalo y nos comentas los resultados.
Código: [Seleccionar]
'****************************************************************
'*  Name    : UNTITLED.BAS                                      *
'*  Author  : [select VIEW...EDITOR OPTIONS]                    *
'*  Notice  : Copyright (c) 2008 [select VIEW...EDITOR OPTIONS] *
'*          : All Rights Reserved                               *
'*  Date    : 15/11/2008                                        *
'*  Version : 1.0                                               *
'*  Notes   :                                                   *
'*          :                                                   *
'****************************************************************
                Device = 16F876
                XTAL = 20
                Config CP_OFF, DEBUG_OFF, WRT_ENABLE_OFF, CPD_OFF, LVP_OFF, BODEN_OFF, PWRTE_ON, WDT_OFF, HS_OSC
               
                ADCON1 = 7                     ' ENTRADAS Y SALIDAS DIGITALES
                ADCON0 = 0
                HSERIAL_BAUD = 250000          ' Set baud rate to 250K
                HSERIAL_RCSTA = %11010000      ' Enable serial port and continuous receive
                HSERIAL_TXSTA = %01100101      ' Enable transmit and asynchronous mode
                HSERIAL_CLEAR = On             ' Optionally clear the buffer before receiving
               
                Symbol IN =PORTC.0
                Symbol LED =PORTC.3            'LED
                Symbol SDA =PORTA.2            'SDA TDA8444 OUT ANALOGICHE ESTERNE
                Symbol SCL =PORTA.3            'SCL TDA8444 OUT ANALOGICHE ESTERNE
               
                Input IN
                Dim TMP As Word
                Dim TMP1 As Byte
                Dim VALORE[65] As Byte
                Dim BREAKI As Word
                Dim NDMX As Word
                Dim DATI As Word
               
                Clear
                OPTION_REG.7 = 0                'ACTIVA LAS RESISTENCIAS PULL UP DEL PORTB
               
                For TMP = 0 To 10
                Toggle LED
                DelayMS 200
                Next
                Low LED
               
MAIN:
                NDMX=0
                NDMX.0=PORTA.1
                NDMX.1=PORTA.0
                NDMX.2=PORTB.7
                NDMX.3=PORTB.6
                NDMX.4=PORTB.5
                NDMX.5=PORTB.4
                NDMX.6=PORTB.3
                NDMX.7=PORTB.2
                NDMX.8=PORTB.1
                NDMX.9=PORTB.0
               
                NDMX = NDMX ^ %0000001111111111
                DATI=0
                BREAKI = PulsIn IN, 0                 'Espera a que se genere el pulso del break del dmx
                If BREAKI < 44 Then MAIN
               
                For TMP = 1 To NDMX                   'BUSCA DONDE COMIENZA EL CANAL SETEADO EN LOS DIP SWITCH 
                TMP1 = HRSin, {10, MAIN}
                Next
               
                For TMP = 1 To 64                     'COMIENZA A ALMACENAR LOS DATOS A PARTIR DEL CANAL   
                VALORE[TMP] = HRSin, {1000, MAIN}     'SELECCIONADO EN LOS DIP SW
                DATI = DATI + 1
                Next
               
                For TMP = 1 To DATI                   'CAMBIA LA ESCALA DE VALORES DE 0 A 255 POR
                VALORE[TMP] = VALORE[TMP]/4           'O A 64 PARA PODER SER ENVIADOS A LOS TDA8444
                Next
               
                'AQUI ENVIAMOS LOS VALORES OBTENIDOS DEL DMX512 A LOS TDA8444
                I2COUT SDA,SCL,%01000000,%00000000,[VALORE[1],VALORE[2],VALORE[3],VALORE[4],VALORE[5],VALORE[6],VALORE[7],VALORE[8]]
                I2COUT SDA,SCL,%01000010,%00000000,[VALORE[9],VALORE[10],VALORE[11],VALORE[12],VALORE[13],VALORE[14],VALORE[15],VALORE[16]]
                I2COUT SDA,SCL,%01000100,%00000000,[VALORE[17],VALORE[18],VALORE[19],VALORE[20],VALORE[21],VALORE[22],VALORE[23],VALORE[24]]
                I2COUT SDA,SCL,%01000110,%00000000,[VALORE[25],VALORE[26],VALORE[27],VALORE[28],VALORE[29],VALORE[30],VALORE[31],VALORE[32]]
                I2COUT SDA,SCL,%01001000,%00000000,[VALORE[33],VALORE[34],VALORE[35],VALORE[36],VALORE[37],VALORE[38],VALORE[39],VALORE[40]]
                I2COUT SDA,SCL,%01001010,%00000000,[VALORE[41],VALORE[42],VALORE[43],VALORE[44],VALORE[45],VALORE[46],VALORE[47],VALORE[48]]
                I2COUT SDA,SCL,%01001100,%00000000,[VALORE[49],VALORE[50],VALORE[51],VALORE[52],VALORE[53],VALORE[54],VALORE[55],VALORE[56]]
                I2COUT SDA,SCL,%01001110,%00000000,[VALORE[57],VALORE[58],VALORE[59],VALORE[60],VALORE[61],VALORE[62],VALORE[63],VALORE[64]]
               
                GoTo MAIN
               
                End
               
               
               
               
               


 

Saludos
« Última modificación: 11 de Julio de 2011, 09:31:37 por stk500 »