Muy bueno ese proyecto, amigo todopic :mrgreen:
Y utilizando el pcb wizard para ello :D
Muy buenas figuras!
Saludos
Hola Amigos!, les presento este proyecto, que ya está en funcionamiento :-/ :mrgreen:
Continuando con el codigo receptor DMX, luego de verificar el funcionamiento para un motor (empleando 4 leds) agregué para comandar en forma individual, un par de motores, empleo para exitarlos, 2 ULM2003
(http://www.todopic.com.ar/foros/index.php?action=dlattach;topic=21800.0;attach=6932)Código: ASM
;***************************************************************** ;receptor dmx - decodifica 3 canales - dos motores pap y velocidad ; Norberto Pellegrini - Todopic Electronica ;***************************************************************** ;24/12/06 12:09a.m. HAY QUE EMPLEAR EL MICRO A 20 MHZ ; verificacion de tiempos y compensacion con NOP de las tramas ;***************************************************************** list p=16f628 #include p16f628.inc ERRORLEVEL -302, -307 ;(NO FIGURAN LOS ERRORES DE CAMBIO DE PAGINA) CBLOCK H'20' ;32 decimal H'0C' ;ASIGNACION DE REGISTRO DE USO GENERAL CONTA_T ;TIEMPO DEL BREAK, DE 88 uS CONTABIT ;8 BIT DE DATOS CHANEL ;CONTADOR DE CANALES LEIDOS POR EL RECEPTOR DIPSWICH ;seteos de direccion DIPSWICH_MAS1 ;DIRECCION MAS UNO O SIGUIENTE DIPSWICH_MAS2 ;DIRECCION MAS DOS DATOS ;BYTE DE RECEPCION RS485 DE DMX POSICION PASOS_PAN PASOS_TILT CONTA_PASOS_PAN CONTA_PASOS_TILT CONTA_PAN ;CONTADOR DE TABLA DE PASOS DEL MOTOR CONTA_TILT ;CONTADOR DE LA TABLA DEL SEGUNDO MOTOR DESTELLO DESTELLO1 ;SON LOS CONTADORES PARA PRODUCIR EL DESTELLO2 ;DESTELLO DEL LED INDICADOR DE FALTA DE SEÑAL DMX VELOCIDAD COMPENSAR ;TIEMPO A COMPENSAR EN LOS DELAY PARA REDUCIR LA VELOCIDAD AL ESTAR MAS CERCA DE LA POSICION RESTO RETARDO PUERTO ; BYTE AUXILIAR PARA FORMAR EL AND DE LAS SALIDAS AL PUERTO B LOOP1 LOOP2 LOOP3 ENDC #DEFINE DMX PORTA,3 ; en el prototipo era 4 #DEFINE FC_PAN PORTA,1 #DEFINE FC_TILT PORTA,2 #DEFINE LED PORTA,0 __CONFIG _HS_OSC & _WDT_ON & _PWRTE_ON & _CP_OFF & _BODEN_ON & _LVP_OFF & _MCLRE_OFF ; osc 20 mhz ;********************************************************************** RESET org 00h ;el vector de reset es la dirección 00 goto INICIO ;se salta al inicio del programa ;********************************************************************** org 05h ;*************** SUBRUTINA DE RETARDO DE 2 Us ************** ;------------------------------------------------------------- DEMORA2US ; ES EN REALIDAD DE 1.8 uS PARA COMPENZAR NOP ;1 uS NOP CLRWDT NOP NOP ;1 uS RETURN ;********************************************************************************** ;################################################################################## ;********************************************************************************** ;TABLA DE POSICIONAMIENTO DE LOS MEDIO PASOS DEL MOTOR PAP DE PANORAMICO TABLA_PAN ADDWF PCL,F GOTO CORREGIR1 RETLW B'11110001' ;LOS 4 BIT DE MAYOR PESO ESTAN EN UNO PARA HACER BUNA AND ENTRE TABLAS RETLW B'11110011' RETLW B'11110010' RETLW B'11110110' RETLW B'11110100' RETLW B'11111100' RETLW B'11111000' ULTIMO RETLW B'11111001' MOVLW .1 ;LIMITE MAXIMO DE LA TABLA MOVWF CONTA_PAN GOTO TABLA_PAN+2 ;--------------------------------------------------------------------------------------------- CORREGIR1 ;SI ERA CERO, LO PASO AL VALOR 8 DE LA TABLA (LIMITE MINIMO DE LA TABLA) MOVLW .8 MOVWF CONTA_PAN GOTO ULTIMO ;************************************************************************************************ ;################################################################################################ ;************************************************************************************************ ;TABLA DE POSICIONAMIENTO DE LOS MEDIO PASOS DEL MOTOR PAP DE TILT TABLA_TILT ADDWF PCL,F GOTO CORREGIR2 RETLW B'00011111' ;LOS 4 BIT DE MENOR PESO SON 1 PARA HACER UNA AND ENTRE LAS TABLAS RETLW B'00111111' RETLW B'00101111' RETLW B'01101111' RETLW B'01001111' RETLW B'11001111' RETLW B'10001111' ULTIMO2 RETLW B'10011111' MOVLW .1 ;LIMITE MAXIMO DE LA TABLA MOVWF CONTA_TILT GOTO TABLA_TILT+2 ;--------------------------------------------------------------------------------------------- CORREGIR2 ;SI ERA CERO, LO PASO AL VALOR 8 DE LA TABLA (LIMITE MINIMO DE LA TABLA) MOVLW .8 MOVWF CONTA_TILT GOTO ULTIMO2 ;************************************************************************************************ ;############################ PROGRAMA PRINCIPAL ############################################## ;************************************************************************************************ INICIO MOVLW 0x07 MOVWF CMCON ;PARA EL 16F628, ELIMINO LOS COMPARADORES, TODAS SALIDAS DIGITALES BSF STATUS,RP0 ;BANCO 1 MOVLW B'00000000' ; 8 TODAS SALIDAS PARA CONTROLAR 2 MOTORES PAP MOVWF TRISB MOVLW B'11111110' ;1 SALIDAS MOVWF TRISA BCF STATUS,RP0 ;BANCO 0 CLRF TMR0 ; MOVLW B'11111111' CLRF PORTB ;coloco en cero las salidas CLRF PORTA CLRF DATOS CLRF CHANEL BCF LED MOVLW .1 MOVWF CONTA_PASOS_PAN MOVWF CONTA_PASOS_TILT MOVWF CONTA_PAN MOVWF CONTA_TILT MOVWF PASOS_PAN MOVWF PASOS_TILT CALL DEMORA CLRF PUERTO CLRF PORTB CLRWDT PAGESEL POSICION_CERO LCALL POSICION_CERO ;BUSQUEDA DE LOS CEROS DE CADA EJE ;************************************************************************************************* ;##################### PULSO DE ARRANQUE O SINCRONISMO BREAK #################################### ;************************************************************************************************** ;ESPERA LA LLEGADA DEL PULSO BREAK, QUE TIENE QUE SER DE AL MENOS 88 uS A 1 SEGUNDO, SINO ES ERROR ;ESTE PULSO BAJO DE 88 uS INDICA EL COMIENZO DE LA TRAMA DMX, QUE ES CICLICA BREAK CLRWDT ;------------------------------------------------------------------------------------ MOVLW 0x07 MOVWF CMCON ;PARA EL 16F628, ELIMINO LOS COMPARADORES, TODAS SALIDAS DIGITALES BSF STATUS,RP0 ;BANCO 1 MOVLW B'00000000' ; 8 entradas PARA ASIGNAR UNA DE LAS 255 DIRECCIONES POSIBLES MOVWF TRISB MOVLW B'11111110' ;1 SALIDAS MOVWF TRISA BCF STATUS,RP0 ;BANCO 0 PAGESEL DEMORA2US ;------------------------------------------------------------------------------ ;LEER EL CANAL DMX SETEADO EN LOS DIP SWICH MOVLW .1 ;PORTB,W MOVWF DIPSWICH ;DIRECCION DMX QUE SE ASIGNA EMPLEANDO 8 DIP SWICH (EN BINARIO) INCF DIPSWICH,W MOVWF DIPSWICH_MAS1 ;ES UN VALOR MAS DE LA DIRECCION ASIGNADA INCF DIPSWICH_MAS1,W MOVWF DIPSWICH_MAS2 ;ES DOS VALORES MAS DE LA DIRECCION ASIGNADA MOVLW .80 MOVWF CONTA_T MOVLW .255 ;PARA QUE EMPIECE A CONTAR DESDE EL CANAL CERO MOVWF CHANEL ;--------------------------------------------------------------------------- CONTINUAR DECFSZ DESTELLO2,F ;RETARDOS EN LOS DESTELLOS A LA ESPERA DE SEÑAL DMX GOTO ES_CERO DECFSZ DESTELLO1,F GOTO ES_CERO INCF DESTELLO,F BCF LED ;MIENTRAS ESTA EN CERO APAGO EL LED INDICADOR DE SE¥AL DMX BTFSC DESTELLO,2 ; Y QUEDARA DESTELLANDO LENTO BSF LED ES_CERO BTFSC DMX ;ES LA ENTRADA DMX CERO?, SI SALTAR GOTO BREAK DECFSZ CONTA_T,F ;SI LLEGA A CERO, ES PORQUE EL BREAK DURO POR LO MENOS 88 uS (80) GOTO ES_CERO BTFSS DMX ;ESPERO A QUE TERMINE EL PULSO DE BREAK, POR SI ES MAYOR A 88 US GOTO $-1 ;Y DETERMINO EL COMIENZO DEL PULSO "MARK" QUE ES ALTO (UNO) DE 8 uS MARK ; DURACION DE 8 uS EN ALTO CALL DEMORA2US ;2 uS, VERIFICO A LA MITAD DEL PULSO BTFSS DMX ; MITAD DEL PRIMER PULSO, LEO SI ESTA EN UNO GOTO BREAK ;HAY ERROR CALL DEMORA2US ;FINAL DEL PRIMER PULSO CALL DEMORA2US ;PRIMER MITAD DEL 2DO PULSO BTFSS DMX ; MITAD DEL SEGUNDO PULSO GOTO BREAK ;HAY ERROR PROX ;<---------SINCRONIZACION DEL PULSO DE START ######################################################### INCF CHANEL,F ;SI EL NUMERO DE CANAL ES XX SETEADO CON LOS DIPSWICH ; VER EL VALOR DE DATA, Y ACTUAR BTFSC DMX ;ME QUEDO ESPERANDO LOS 2uS FINALES DE MARK GOTO $-1 ;HASTA QUE APAREZCA EL PULSO BAJO DE START ;AL DETECTAR EL BAJO DE STAR, ME ;CALL DEMORA2US ;DESPLAZO A LA MITAD DEL PRIMER BIT NOP CLRWDT NOP MOVLW .8 MOVWF CONTABIT ;CADA BIT DURA 4 uS START ;CAIGO EN LA MITAD DEL PULSO START, QUE TIENE QUE SER BAJO BSF LED CLRF DATOS BTFSC DMX ;SI ES BAJO, ESTA CORRECTO, SI ES UNO, ES ERROR, ASI QUE ESPERO LA PROXIMA SECUENCIA GOTO BREAK NOP CLRWDT NOP OTRO CALL DEMORA2US ; CALL DEMORA2US ; MITAD DEL BIT 0 NOP NOP CLRWDT NOP RRF DATOS,F BCF DATOS,7 BTFSC DMX BSF DATOS,7 DECFSZ CONTABIT,F GOTO OTRO ; CALL DEMORA2US CLRWDT ;STOP ;DOS BIT DE STOP EN ALTO, SOLO DETECTO EL PRIMERO Y PROCESO LA INFO ; BTFSS DMX ;MIRO EN LA MITAD DEL PRIMER BIT DE STOP EN ALTO (A LOS 38 uS) ; GOTO BREAK ;HAY ERROR ;-----------------PRIMER CANAL - DATOS DEL CANAL MOTOR PAP PAN CANAL1 MOVF CHANEL,W XORWF DIPSWICH,W BTFSS STATUS,Z GOTO SIGUIENTE ;TOMO EL DATO DMX PARA EL CONTROL DE PAN ;NOP ;NOP ;NOP MOVF DATOS,W ;cambio de variable, de dato lo paso a PASOS MOVWF PASOS_PAN ;PORTB GOTO PROX ;-----------------SEGUNDO CANAL ------- DATOS DEL CONTROL DE TILT SIGUIENTE MOVF CHANEL,W ;VERIFICO EN PRIMER LUGAR, XORWF DIPSWICH_MAS1,W ;SI LA CUENTA LLEGO A 26 (MAQUINA DE HUMO BTFSS STATUS,Z ;SI ES IGUAL, SALTA, SINO VA AL PROXIMO GOTO SIGUIENTE3 ;NOP ;NOP ;NOP MOVF DATOS,W MOVWF PASOS_TILT GOTO PROX ;-----------------TERCER CANAL SIGUIENTE3 MOVF CHANEL,W ;VERIFICO EN PRIMER LUGAR, XORWF DIPSWICH_MAS2,W ;SI LA CUENTA LLEGO A 26 (MAQUINA DE HUMO BTFSS STATUS,Z ;SI ES IGUAL, SALTA, SINO VA AL PROXIMO GOTO PROX ;NO ES NINGUNO DE LOS 3 VALORES, SIGO ESPERANDO AL CANAL CORRESPONDIENTE MOVF DATOS,W MOVWF VELOCIDAD ;RETARDOS EN LOS AVANCES DE LOS MOTORES DE PAN Y TILT GOTO COMPARAR ;**************************************************************************************************** ;******** posicionamiento de LOS MOTORES********************************************************** ;**************************************************************************************************** ;>>>>>>>>>>> MOTOR DE PAN <<<<<<<<<<<<<<<<<<<< COMPARAR ;VERIFICA SI LLEGO AL LUGAR PARA DETENERSE, O TIENE QUE GIRAR A DERECHA O IZQUIERDA ; Comparar CLRF STATUS MOVF PASOS_PAN,W ;VALOR LEIDO EN DATOS POR DMX XORWF CONTA_PASOS_PAN,W ;y lo compara con la CONTA_PASOS_PAN QUE ES EL VALOR DE POSICION ACTUAL BTFSS STATUS,Z ;¨ Son iguales ? GOTO NOT_EQ1 ;PASOS ES DISTINTO A CUENTA_PASOS, TIENE QUE CALCULAR PARA DONDE GIRAR GOTO EQ1 ;PASOS ES IGUAL A CUENTA_PASOS, TIENE QUE DETENER MOTOR EQ1 ;NO SE REALIZA NINGUNA VARIACION EN LOS DELAY PATRONES ; CLRF COMPENSAR ;NO HAY VARIACION DE TIEMPOS, Y DETENER EL MOTOR GOTO COMPARAR2 ;BREAK ;IR A DETECTAR EL COMIENZO DE LA PROXIMA TRAMA DMX NOT_EQ1 MOVF PASOS_PAN, W SUBWF CONTA_PASOS_PAN,W ;F-W GUARDO RESULTADO EN W BTFSS STATUS, C GOTO GIRO_DERECHA1 GOTO GIRO_IZQUIERDA1 GIRO_DERECHA1 INCF CONTA_PASOS_PAN,F INCF CONTA_PAN,F ;CONTADOR DE TABLA DE SECUENCIA PARA EL PAP MOVLW .255 ;ESTE ERA EL VALOR DEL TEMPORIZADOR MOVWF COMPENSAR MOVF CONTA_PASOS_PAN,W SUBWF PASOS_PAN,W MOVWF COMPENSAR ; PROPORCIONAL AL RETARDO, MAS LEJOS, MENOS TIEMPO GOTO COMPARAR2 ;NDP GIRO_IZQUIERDA1 DECF CONTA_PASOS_PAN,F DECF CONTA_PAN,F ;CONTADOR DE TABLA DE SECUENCIA PARA EL PAP MOVLW .255 ;ESTE ERA EL VALOR DEL TEMPORIZADOR MOVWF RESTO MOVF PASOS_PAN,W SUBWF CONTA_PASOS_PAN,W SUBWF RESTO,W MOVWF COMPENSAR ;VALOR PROPORCIONAL AL RETARDO, MAS CERCA, MAS TIEMPO GOTO COMPARAR2 ;NDP ;*********************************************************************************************** ;################ POSICIONAMIENTO DEL MOTOR DE TILT ########################################## ;*********************************************************************************************** COMPARAR2 ;VERIFICA SI LLEGO AL LUGAR PARA DETENERSE, O TIENE QUE GIRAR A DERECHA O IZQUIERDA ; Comparar CLRF STATUS MOVF PASOS_TILT,W ; XORWF CONTA_PASOS_TILT,W ;y lo compara con la CONTA_PASOS QUE ES EL VALOR DE POSICION ACTUAL BTFSS STATUS,Z ;¨ Son iguales ? GOTO NOT_EQ2 ;PASOS ES DISTINTO A CUENTA_PASOS, TIENE QUE CALCULAR PARA DONDE GIRAR GOTO EQ2 ;PASOS ES IGUAL A CUENTA_PASOS, TIENE QUE DETENER MOTOR EQ2 ;NO SE REALIZA NINGUNA VARIACION EN LOS DELAY PATRONES ; CLRF COMPENSAR ;NO HAY VARIACION DE TIEMPOS, Y DETENER EL MOTOR ; GOTO BREAK ;IR A DETECTAR EL COMIENZO DE LA PROXIMA TRAMA DMX GOTO NDP NOT_EQ2 MOVF PASOS_TILT, W SUBWF CONTA_PASOS_TILT,W ;F-W GUARDO RESULTADO EN W BTFSS STATUS, C GOTO GIRO_DERECHA2 GOTO GIRO_IZQUIERDA2 GIRO_DERECHA2 INCF CONTA_PASOS_TILT,F INCF CONTA_TILT,F ;CONTADOR DE TABLA DE SECUENCIA PARA EL PAP MOVLW .255 ;ESTE ERA EL VALOR DEL TEMPORIZADOR MOVWF COMPENSAR MOVF CONTA_PASOS_TILT,W SUBWF PASOS_TILT,W MOVWF COMPENSAR ; PROPORCIONAL AL RETARDO, MAS LEJOS, MENOS TIEMPO GOTO NDP GIRO_IZQUIERDA2 DECF CONTA_PASOS_TILT,F ; DECF CONTA_TILT,F ;CONTADOR DE TABLA DE SECUENCIA PARA EL PAP MOVLW .255 ;ESTE ERA EL VALOR DEL TEMPORIZADOR MOVWF RESTO MOVF PASOS_TILT,W SUBWF CONTA_PASOS_TILT,W SUBWF RESTO,W MOVWF COMPENSAR ;VALOR PROPORCIONAL AL RETARDO, MAS CERCA, MAS TIEMPO GOTO NDP ;************************************************************************************************ NDP MOVF CONTA_PAN,W PAGESEL TABLA_PAN LCALL TABLA_PAN ;DEMORA PROPORCIONAL A LA DIFERENCIA ENTRE PASOS, MAS PASOS MENOS DEMORA, ESTA MAS LEJOS... MOVWF PUERTO MOVF CONTA_TILT,W PAGESEL TABLA_TILT LCALL TABLA_TILT ANDWF PUERTO,W ;UNO AMBAS SALIDA DE TABLA PARA SALIR POR EL PUERTO B MOVWF PORTB ; MOVF VELOCIDAD,W ;PASO EL DATO DE VELOCIDAD LEIDO EN EN TERCER CANAL ; MOVWF COMPENSAR ;AL CONTADOR DE DEMORAS COMPENSAR ; CALL DEMORA GOTO BREAK ;GOTO COMPARAR ;;********************************************************************************************* DELAY CALL DEMORA ;RETARDO ENTRA PASOS, VARIABLE SEGUN LA DIFERENCIA DE PASOS DECFSZ COMPENSAR,F ;A MAS PASOS, MENOS DEMORA, AL ESTAR MAS CERCA, INCREMENTA LA DEMORA GOTO DELAY ;PARA QUE EL MOTOR SE ACERQUE DE FORM MAS SUAVE RETURN DEMORA MOVLW .2 MOVWF LOOP1 OTRO2 NOP CLRWDT DECFSZ LOOP1,F GOTO OTRO2 RETURN ;################################################################################################# ORG 100H POSICION_CERO ;EN EL ENCENDIDO, AMBOS EJES GIRAN HASTA ENCONTRAR EL FIN DE CARRERA RESPECTIVO ; Y COLOCAR EN CERO LOS CONTADORES CRRESPONDIENTES MOVLW .255 MOVWF CONTA_PASOS_TILT MOVWF CONTA_PASOS_PAN MOVWF POSICION BUSCAR_CERO ; GIRO_IZQUIERDA DEL MOTOR DE TILT, EN BUSQUEDA DE LLEGAR AL FIN DE CARRERA, PARA SU POSICION DE CERO BTFSS FC_TILT ;ESTA TOCANDO EL FIN DE CARRERA DE TILT GOTO $+3 DECF CONTA_PASOS_TILT,F ; DECF CONTA_TILT,F ;CONTADOR DE TABLA DE SECUENCIA PARA EL PAP BTFSS FC_PAN ;ESTA TOCANDO EL FIN DE CARRERA DE PAN GOTO $+3 DECF CONTA_PASOS_PAN,F ; DECF CONTA_PAN,F ;CONTADOR DE TABLA DE SECUENCIA PARA EL PAP MOVF CONTA_PAN,W PAGESEL TABLA_PAN LCALL TABLA_PAN MOVWF PUERTO MOVF CONTA_TILT,W PAGESEL TABLA_TILT LCALL TABLA_TILT ANDWF PUERTO,W ;UNO AMBAS SALIDA DE TABLA PARA SALIR POR EL PUERTO B MOVWF PORTB PAGESEL DELAY2 LCALL DELAY2 LCALL DELAY2 DECFSZ POSICION,F GOTO BUSCAR_CERO ;REPITE ESTE LOOP UN MAXIMO DE 255 VECES, PARA ASEGURARNOS SI ESTAN EN EL LADO OPUESTO CLRF CONTA_PASOS_PAN CLRF CONTA_PASOS_TILT ; INCF CONTA_PASOS_TILT,F ;ME ASEGURO QU TOMEN EL VALOR UNO ; INCF CONTA_PASOS_PAN,F RETURN ;************************************************************************************************ DELAY2 MOVLW .150 MOVWF LOOP3 MOVLW .100 MOVWF LOOP1 OTRO22 NOP NOP NOP NOP NOP NOP CLRWDT DECFSZ LOOP1,F GOTO OTRO22 DECFSZ LOOP3,F GOTO OTRO22-2 INCF DESTELLO,F BCF LED BTFSC DESTELLO,2 ; DESTELLO DEL LED INDICADOR DMX, EN ESTE CASO, INDICA QUE SE ESTA POSICIONANDO A CERO BSF LED RETURN END
EL Circuito impreso
(http://www.todopic.com.ar/foros/index.php?action=dlattach;topic=21800.0;attach=6934)
El proyecto terminado y funcionando, plaqueta
(http://www.todopic.com.ar/foros/index.php?action=dlattach;topic=21800.0;attach=6936)
Hola Norberto :P
Ya lo tengo funcionando en los dos canales tuve que compilar nuevamente el codigo en asm a hex ya que el problema era el hex que estaba adjntado en la paguina ya que solo funcionaba el canal 1.
en cuanto a la direccion de dmx tambien hice pruebas cambiando el valor del canal y funciona correctamente,
La velocidad de los motores es muy buena como la de tu video.
solo tengo una duda mas como puedo modificar el programa para motores de impresora de 48 pasos ya que es un por el momento solo tengo 1 de 200 pasos y muchos de impresora.
Solo me resta empezar a armar el gabinete y colocar un espejo. cuando lo tenga listo subo fotografías.
muchas gracias por tu apoyo :lol: :lol:
saludos
Bom dia Caro Amigo !
Estou com mesmo problema que vc estava é que fiz este magnifico projeto e utilizei este arquivo Hex acima e só funcionou um motor tentei gerar outro arquivo hex
porem não sei utilizar o assembler teria como postar o seu arquivo Hex para poder baixar? estou muito ancioso para ver funcionando, :lol: por favor me ajudem!!!!
Grato !
Naldo Santos.
Hola Norberto :P
Ya lo tengo funcionando en los dos canales tuve que compilar nuevamente el codigo en asm a hex ya que el problema era el hex que estaba adjntado en la paguina ya que solo funcionaba el canal 1.
en cuanto a la direccion de dmx tambien hice pruebas cambiando el valor del canal y funciona correctamente,
La velocidad de los motores es muy buena como la de tu video.
solo tengo una duda mas como puedo modificar el programa para motores de impresora de 48 pasos ya que es un por el momento solo tengo 1 de 200 pasos y muchos de impresora.
Solo me resta empezar a armar el gabinete y colocar un espejo. cuando lo tenga listo subo fotografías.
muchas gracias por tu apoyo :lol: :lol:
saludos
Bom dia Caro Amigo !
Estou com mesmo problema que vc estava é que fiz este magnifico projeto e utilizei este arquivo Hex acima e só funcionou um motor tentei gerar outro arquivo hex
porem não sei utilizar o assembler teria como postar o seu arquivo Hex para poder baixar? estou muito ancioso para ver funcionando, :lol: por favor me ajudem!!!!
Grato !
Naldo Santos.
Hola Norberto :P
Ya lo tengo funcionando en los dos canales tuve que compilar nuevamente el codigo en asm a hex ya que el problema era el hex que estaba adjntado en la paguina ya que solo funcionaba el canal 1.
en cuanto a la direccion de dmx tambien hice pruebas cambiando el valor del canal y funciona correctamente,
La velocidad de los motores es muy buena como la de tu video.
solo tengo una duda mas como puedo modificar el programa para motores de impresora de 48 pasos ya que es un por el momento solo tengo 1 de 200 pasos y muchos de impresora.
Solo me resta empezar a armar el gabinete y colocar un espejo. cuando lo tenga listo subo fotografías.
muchas gracias por tu apoyo :lol: :lol:
saludos
Bom dia Caro Amigo !
Estou com mesmo problema que vc estava é que fiz este magnifico projeto e utilizei este arquivo Hex acima e só funcionou um motor tentei gerar outro arquivo hex
porem não sei utilizar o assembler teria como postar o seu arquivo Hex para poder baixar? estou muito ancioso para ver funcionando, :lol: por favor me ajudem!!!!
Grato !
Naldo Santos.
Obrigado caro amigo! compilei o hex que me enviaste e funcionou os dois motores,porem estou usando motores bipolar de 1.8graus e 200 passos por revolução e ficou muito lento a velocidade ,pergunto em que local no codigo posso alterar a velocidade dos motores?
teria como?
grato e no aguardo.
Naldo Santos.
Hola desde cochabamba; muy bueno tu proyecto "receptor dmx para dos motores" Ya lo tengo funcionando de maravilla pero tengo una duda como puedo reemplazar el pic16f628 por un pic16f877 u otro pic para aumentar mas motores, lo intente pero no quiere compilar (creo que es el MCLRE de la cabecera); te agradecere mucho si me colaboras. un saludo espero tu pronta respuesta
Buenas tardes desde España, muy buen trabajo Nonberto, estoy interesado saber si has pueto el pulsador para la direcion de dmx no lo he visto en ningun lado
muchas gracias y saludo al foro
Saludos a tod@s. Necesito que me ayudéis. He montado el circuito pero al darle señal dmx el motor da como saltos y no gira. Espero que haya alguien todavía en este foro. gracias.trata de invertir los dos punta de bobina (una de cada una) y contame
Hola Amigos!, les presento este proyecto, que ya está en funcionamiento :-/ :mrgreen:
Continuando con el codigo receptor DMX, luego de verificar el funcionamiento para un motor (empleando 4 leds) agregué para comandar en forma individual, un par de motores, empleo para exitarlos, 2 ULM2003
(http://www.todopic.com.ar/foros/index.php?action=dlattach;topic=21800.0;attach=6932)Código: ASM
;***************************************************************** ;receptor dmx - decodifica 3 canales - dos motores pap y velocidad ; Norberto Pellegrini - Todopic Electronica ;***************************************************************** ;24/12/06 12:09a.m. HAY QUE EMPLEAR EL MICRO A 20 MHZ ; verificacion de tiempos y compensacion con NOP de las tramas ;***************************************************************** list p=16f628 #include p16f628.inc ERRORLEVEL -302, -307 ;(NO FIGURAN LOS ERRORES DE CAMBIO DE PAGINA) CBLOCK H'20' ;32 decimal H'0C' ;ASIGNACION DE REGISTRO DE USO GENERAL CONTA_T ;TIEMPO DEL BREAK, DE 88 uS CONTABIT ;8 BIT DE DATOS CHANEL ;CONTADOR DE CANALES LEIDOS POR EL RECEPTOR DIPSWICH ;seteos de direccion DIPSWICH_MAS1 ;DIRECCION MAS UNO O SIGUIENTE DIPSWICH_MAS2 ;DIRECCION MAS DOS DATOS ;BYTE DE RECEPCION RS485 DE DMX POSICION PASOS_PAN PASOS_TILT CONTA_PASOS_PAN CONTA_PASOS_TILT CONTA_PAN ;CONTADOR DE TABLA DE PASOS DEL MOTOR CONTA_TILT ;CONTADOR DE LA TABLA DEL SEGUNDO MOTOR DESTELLO DESTELLO1 ;SON LOS CONTADORES PARA PRODUCIR EL DESTELLO2 ;DESTELLO DEL LED INDICADOR DE FALTA DE SEÑAL DMX VELOCIDAD COMPENSAR ;TIEMPO A COMPENSAR EN LOS DELAY PARA REDUCIR LA VELOCIDAD AL ESTAR MAS CERCA DE LA POSICION RESTO RETARDO PUERTO ; BYTE AUXILIAR PARA FORMAR EL AND DE LAS SALIDAS AL PUERTO B LOOP1 LOOP2 LOOP3 ENDC #DEFINE DMX PORTA,3 ; en el prototipo era 4 #DEFINE FC_PAN PORTA,1 #DEFINE FC_TILT PORTA,2 #DEFINE LED PORTA,0 __CONFIG _HS_OSC & _WDT_ON & _PWRTE_ON & _CP_OFF & _BODEN_ON & _LVP_OFF & _MCLRE_OFF ; osc 20 mhz ;********************************************************************** RESET org 00h ;el vector de reset es la dirección 00 goto INICIO ;se salta al inicio del programa ;********************************************************************** org 05h ;*************** SUBRUTINA DE RETARDO DE 2 Us ************** ;------------------------------------------------------------- DEMORA2US ; ES EN REALIDAD DE 1.8 uS PARA COMPENZAR NOP ;1 uS NOP CLRWDT NOP NOP ;1 uS RETURN ;********************************************************************************** ;################################################################################## ;********************************************************************************** ;TABLA DE POSICIONAMIENTO DE LOS MEDIO PASOS DEL MOTOR PAP DE PANORAMICO TABLA_PAN ADDWF PCL,F GOTO CORREGIR1 RETLW B'11110001' ;LOS 4 BIT DE MAYOR PESO ESTAN EN UNO PARA HACER BUNA AND ENTRE TABLAS RETLW B'11110011' RETLW B'11110010' RETLW B'11110110' RETLW B'11110100' RETLW B'11111100' RETLW B'11111000' ULTIMO RETLW B'11111001' MOVLW .1 ;LIMITE MAXIMO DE LA TABLA MOVWF CONTA_PAN GOTO TABLA_PAN+2 ;--------------------------------------------------------------------------------------------- CORREGIR1 ;SI ERA CERO, LO PASO AL VALOR 8 DE LA TABLA (LIMITE MINIMO DE LA TABLA) MOVLW .8 MOVWF CONTA_PAN GOTO ULTIMO ;************************************************************************************************ ;################################################################################################ ;************************************************************************************************ ;TABLA DE POSICIONAMIENTO DE LOS MEDIO PASOS DEL MOTOR PAP DE TILT TABLA_TILT ADDWF PCL,F GOTO CORREGIR2 RETLW B'00011111' ;LOS 4 BIT DE MENOR PESO SON 1 PARA HACER UNA AND ENTRE LAS TABLAS RETLW B'00111111' RETLW B'00101111' RETLW B'01101111' RETLW B'01001111' RETLW B'11001111' RETLW B'10001111' ULTIMO2 RETLW B'10011111' MOVLW .1 ;LIMITE MAXIMO DE LA TABLA MOVWF CONTA_TILT GOTO TABLA_TILT+2 ;--------------------------------------------------------------------------------------------- CORREGIR2 ;SI ERA CERO, LO PASO AL VALOR 8 DE LA TABLA (LIMITE MINIMO DE LA TABLA) MOVLW .8 MOVWF CONTA_TILT GOTO ULTIMO2 ;************************************************************************************************ ;############################ PROGRAMA PRINCIPAL ############################################## ;************************************************************************************************ INICIO MOVLW 0x07 MOVWF CMCON ;PARA EL 16F628, ELIMINO LOS COMPARADORES, TODAS SALIDAS DIGITALES BSF STATUS,RP0 ;BANCO 1 MOVLW B'00000000' ; 8 TODAS SALIDAS PARA CONTROLAR 2 MOTORES PAP MOVWF TRISB MOVLW B'11111110' ;1 SALIDAS MOVWF TRISA BCF STATUS,RP0 ;BANCO 0 CLRF TMR0 ; MOVLW B'11111111' CLRF PORTB ;coloco en cero las salidas CLRF PORTA CLRF DATOS CLRF CHANEL BCF LED MOVLW .1 MOVWF CONTA_PASOS_PAN MOVWF CONTA_PASOS_TILT MOVWF CONTA_PAN MOVWF CONTA_TILT MOVWF PASOS_PAN MOVWF PASOS_TILT CALL DEMORA CLRF PUERTO CLRF PORTB CLRWDT PAGESEL POSICION_CERO LCALL POSICION_CERO ;BUSQUEDA DE LOS CEROS DE CADA EJE ;************************************************************************************************* ;##################### PULSO DE ARRANQUE O SINCRONISMO BREAK #################################### ;************************************************************************************************** ;ESPERA LA LLEGADA DEL PULSO BREAK, QUE TIENE QUE SER DE AL MENOS 88 uS A 1 SEGUNDO, SINO ES ERROR ;ESTE PULSO BAJO DE 88 uS INDICA EL COMIENZO DE LA TRAMA DMX, QUE ES CICLICA BREAK CLRWDT ;------------------------------------------------------------------------------------ MOVLW 0x07 MOVWF CMCON ;PARA EL 16F628, ELIMINO LOS COMPARADORES, TODAS SALIDAS DIGITALES BSF STATUS,RP0 ;BANCO 1 MOVLW B'00000000' ; 8 entradas PARA ASIGNAR UNA DE LAS 255 DIRECCIONES POSIBLES MOVWF TRISB MOVLW B'11111110' ;1 SALIDAS MOVWF TRISA BCF STATUS,RP0 ;BANCO 0 PAGESEL DEMORA2US ;------------------------------------------------------------------------------ ;LEER EL CANAL DMX SETEADO EN LOS DIP SWICH MOVLW .1 ;PORTB,W MOVWF DIPSWICH ;DIRECCION DMX QUE SE ASIGNA EMPLEANDO 8 DIP SWICH (EN BINARIO) INCF DIPSWICH,W MOVWF DIPSWICH_MAS1 ;ES UN VALOR MAS DE LA DIRECCION ASIGNADA INCF DIPSWICH_MAS1,W MOVWF DIPSWICH_MAS2 ;ES DOS VALORES MAS DE LA DIRECCION ASIGNADA MOVLW .80 MOVWF CONTA_T MOVLW .255 ;PARA QUE EMPIECE A CONTAR DESDE EL CANAL CERO MOVWF CHANEL ;--------------------------------------------------------------------------- CONTINUAR DECFSZ DESTELLO2,F ;RETARDOS EN LOS DESTELLOS A LA ESPERA DE SEÑAL DMX GOTO ES_CERO DECFSZ DESTELLO1,F GOTO ES_CERO INCF DESTELLO,F BCF LED ;MIENTRAS ESTA EN CERO APAGO EL LED INDICADOR DE SE¥AL DMX BTFSC DESTELLO,2 ; Y QUEDARA DESTELLANDO LENTO BSF LED ES_CERO BTFSC DMX ;ES LA ENTRADA DMX CERO?, SI SALTAR GOTO BREAK DECFSZ CONTA_T,F ;SI LLEGA A CERO, ES PORQUE EL BREAK DURO POR LO MENOS 88 uS (80) GOTO ES_CERO BTFSS DMX ;ESPERO A QUE TERMINE EL PULSO DE BREAK, POR SI ES MAYOR A 88 US GOTO $-1 ;Y DETERMINO EL COMIENZO DEL PULSO "MARK" QUE ES ALTO (UNO) DE 8 uS MARK ; DURACION DE 8 uS EN ALTO CALL DEMORA2US ;2 uS, VERIFICO A LA MITAD DEL PULSO BTFSS DMX ; MITAD DEL PRIMER PULSO, LEO SI ESTA EN UNO GOTO BREAK ;HAY ERROR CALL DEMORA2US ;FINAL DEL PRIMER PULSO CALL DEMORA2US ;PRIMER MITAD DEL 2DO PULSO BTFSS DMX ; MITAD DEL SEGUNDO PULSO GOTO BREAK ;HAY ERROR PROX ;<---------SINCRONIZACION DEL PULSO DE START ######################################################### INCF CHANEL,F ;SI EL NUMERO DE CANAL ES XX SETEADO CON LOS DIPSWICH ; VER EL VALOR DE DATA, Y ACTUAR BTFSC DMX ;ME QUEDO ESPERANDO LOS 2uS FINALES DE MARK GOTO $-1 ;HASTA QUE APAREZCA EL PULSO BAJO DE START ;AL DETECTAR EL BAJO DE STAR, ME ;CALL DEMORA2US ;DESPLAZO A LA MITAD DEL PRIMER BIT NOP CLRWDT NOP MOVLW .8 MOVWF CONTABIT ;CADA BIT DURA 4 uS START ;CAIGO EN LA MITAD DEL PULSO START, QUE TIENE QUE SER BAJO BSF LED CLRF DATOS BTFSC DMX ;SI ES BAJO, ESTA CORRECTO, SI ES UNO, ES ERROR, ASI QUE ESPERO LA PROXIMA SECUENCIA GOTO BREAK NOP CLRWDT NOP OTRO CALL DEMORA2US ; CALL DEMORA2US ; MITAD DEL BIT 0 NOP NOP CLRWDT NOP RRF DATOS,F BCF DATOS,7 BTFSC DMX BSF DATOS,7 DECFSZ CONTABIT,F GOTO OTRO ; CALL DEMORA2US CLRWDT ;STOP ;DOS BIT DE STOP EN ALTO, SOLO DETECTO EL PRIMERO Y PROCESO LA INFO ; BTFSS DMX ;MIRO EN LA MITAD DEL PRIMER BIT DE STOP EN ALTO (A LOS 38 uS) ; GOTO BREAK ;HAY ERROR ;-----------------PRIMER CANAL - DATOS DEL CANAL MOTOR PAP PAN CANAL1 MOVF CHANEL,W XORWF DIPSWICH,W BTFSS STATUS,Z GOTO SIGUIENTE ;TOMO EL DATO DMX PARA EL CONTROL DE PAN ;NOP ;NOP ;NOP MOVF DATOS,W ;cambio de variable, de dato lo paso a PASOS MOVWF PASOS_PAN ;PORTB GOTO PROX ;-----------------SEGUNDO CANAL ------- DATOS DEL CONTROL DE TILT SIGUIENTE MOVF CHANEL,W ;VERIFICO EN PRIMER LUGAR, XORWF DIPSWICH_MAS1,W ;SI LA CUENTA LLEGO A 26 (MAQUINA DE HUMO BTFSS STATUS,Z ;SI ES IGUAL, SALTA, SINO VA AL PROXIMO GOTO SIGUIENTE3 ;NOP ;NOP ;NOP MOVF DATOS,W MOVWF PASOS_TILT GOTO PROX ;-----------------TERCER CANAL SIGUIENTE3 MOVF CHANEL,W ;VERIFICO EN PRIMER LUGAR, XORWF DIPSWICH_MAS2,W ;SI LA CUENTA LLEGO A 26 (MAQUINA DE HUMO BTFSS STATUS,Z ;SI ES IGUAL, SALTA, SINO VA AL PROXIMO GOTO PROX ;NO ES NINGUNO DE LOS 3 VALORES, SIGO ESPERANDO AL CANAL CORRESPONDIENTE MOVF DATOS,W MOVWF VELOCIDAD ;RETARDOS EN LOS AVANCES DE LOS MOTORES DE PAN Y TILT GOTO COMPARAR ;**************************************************************************************************** ;******** posicionamiento de LOS MOTORES********************************************************** ;**************************************************************************************************** ;>>>>>>>>>>> MOTOR DE PAN <<<<<<<<<<<<<<<<<<<< COMPARAR ;VERIFICA SI LLEGO AL LUGAR PARA DETENERSE, O TIENE QUE GIRAR A DERECHA O IZQUIERDA ; Comparar CLRF STATUS MOVF PASOS_PAN,W ;VALOR LEIDO EN DATOS POR DMX XORWF CONTA_PASOS_PAN,W ;y lo compara con la CONTA_PASOS_PAN QUE ES EL VALOR DE POSICION ACTUAL BTFSS STATUS,Z ;¨ Son iguales ? GOTO NOT_EQ1 ;PASOS ES DISTINTO A CUENTA_PASOS, TIENE QUE CALCULAR PARA DONDE GIRAR GOTO EQ1 ;PASOS ES IGUAL A CUENTA_PASOS, TIENE QUE DETENER MOTOR EQ1 ;NO SE REALIZA NINGUNA VARIACION EN LOS DELAY PATRONES ; CLRF COMPENSAR ;NO HAY VARIACION DE TIEMPOS, Y DETENER EL MOTOR GOTO COMPARAR2 ;BREAK ;IR A DETECTAR EL COMIENZO DE LA PROXIMA TRAMA DMX NOT_EQ1 MOVF PASOS_PAN, W SUBWF CONTA_PASOS_PAN,W ;F-W GUARDO RESULTADO EN W BTFSS STATUS, C GOTO GIRO_DERECHA1 GOTO GIRO_IZQUIERDA1 GIRO_DERECHA1 INCF CONTA_PASOS_PAN,F INCF CONTA_PAN,F ;CONTADOR DE TABLA DE SECUENCIA PARA EL PAP MOVLW .255 ;ESTE ERA EL VALOR DEL TEMPORIZADOR MOVWF COMPENSAR MOVF CONTA_PASOS_PAN,W SUBWF PASOS_PAN,W MOVWF COMPENSAR ; PROPORCIONAL AL RETARDO, MAS LEJOS, MENOS TIEMPO GOTO COMPARAR2 ;NDP GIRO_IZQUIERDA1 DECF CONTA_PASOS_PAN,F DECF CONTA_PAN,F ;CONTADOR DE TABLA DE SECUENCIA PARA EL PAP MOVLW .255 ;ESTE ERA EL VALOR DEL TEMPORIZADOR MOVWF RESTO MOVF PASOS_PAN,W SUBWF CONTA_PASOS_PAN,W SUBWF RESTO,W MOVWF COMPENSAR ;VALOR PROPORCIONAL AL RETARDO, MAS CERCA, MAS TIEMPO GOTO COMPARAR2 ;NDP ;*********************************************************************************************** ;################ POSICIONAMIENTO DEL MOTOR DE TILT ########################################## ;*********************************************************************************************** COMPARAR2 ;VERIFICA SI LLEGO AL LUGAR PARA DETENERSE, O TIENE QUE GIRAR A DERECHA O IZQUIERDA ; Comparar CLRF STATUS MOVF PASOS_TILT,W ; XORWF CONTA_PASOS_TILT,W ;y lo compara con la CONTA_PASOS QUE ES EL VALOR DE POSICION ACTUAL BTFSS STATUS,Z ;¨ Son iguales ? GOTO NOT_EQ2 ;PASOS ES DISTINTO A CUENTA_PASOS, TIENE QUE CALCULAR PARA DONDE GIRAR GOTO EQ2 ;PASOS ES IGUAL A CUENTA_PASOS, TIENE QUE DETENER MOTOR EQ2 ;NO SE REALIZA NINGUNA VARIACION EN LOS DELAY PATRONES ; CLRF COMPENSAR ;NO HAY VARIACION DE TIEMPOS, Y DETENER EL MOTOR ; GOTO BREAK ;IR A DETECTAR EL COMIENZO DE LA PROXIMA TRAMA DMX GOTO NDP NOT_EQ2 MOVF PASOS_TILT, W SUBWF CONTA_PASOS_TILT,W ;F-W GUARDO RESULTADO EN W BTFSS STATUS, C GOTO GIRO_DERECHA2 GOTO GIRO_IZQUIERDA2 GIRO_DERECHA2 INCF CONTA_PASOS_TILT,F INCF CONTA_TILT,F ;CONTADOR DE TABLA DE SECUENCIA PARA EL PAP MOVLW .255 ;ESTE ERA EL VALOR DEL TEMPORIZADOR MOVWF COMPENSAR MOVF CONTA_PASOS_TILT,W SUBWF PASOS_TILT,W MOVWF COMPENSAR ; PROPORCIONAL AL RETARDO, MAS LEJOS, MENOS TIEMPO GOTO NDP GIRO_IZQUIERDA2 DECF CONTA_PASOS_TILT,F ; DECF CONTA_TILT,F ;CONTADOR DE TABLA DE SECUENCIA PARA EL PAP MOVLW .255 ;ESTE ERA EL VALOR DEL TEMPORIZADOR MOVWF RESTO MOVF PASOS_TILT,W SUBWF CONTA_PASOS_TILT,W SUBWF RESTO,W MOVWF COMPENSAR ;VALOR PROPORCIONAL AL RETARDO, MAS CERCA, MAS TIEMPO GOTO NDP ;************************************************************************************************ NDP MOVF CONTA_PAN,W PAGESEL TABLA_PAN LCALL TABLA_PAN ;DEMORA PROPORCIONAL A LA DIFERENCIA ENTRE PASOS, MAS PASOS MENOS DEMORA, ESTA MAS LEJOS... MOVWF PUERTO MOVF CONTA_TILT,W PAGESEL TABLA_TILT LCALL TABLA_TILT ANDWF PUERTO,W ;UNO AMBAS SALIDA DE TABLA PARA SALIR POR EL PUERTO B MOVWF PORTB ; MOVF VELOCIDAD,W ;PASO EL DATO DE VELOCIDAD LEIDO EN EN TERCER CANAL ; MOVWF COMPENSAR ;AL CONTADOR DE DEMORAS COMPENSAR ; CALL DEMORA GOTO BREAK ;GOTO COMPARAR ;;********************************************************************************************* DELAY CALL DEMORA ;RETARDO ENTRA PASOS, VARIABLE SEGUN LA DIFERENCIA DE PASOS DECFSZ COMPENSAR,F ;A MAS PASOS, MENOS DEMORA, AL ESTAR MAS CERCA, INCREMENTA LA DEMORA GOTO DELAY ;PARA QUE EL MOTOR SE ACERQUE DE FORM MAS SUAVE RETURN DEMORA MOVLW .2 MOVWF LOOP1 OTRO2 NOP CLRWDT DECFSZ LOOP1,F GOTO OTRO2 RETURN ;################################################################################################# ORG 100H POSICION_CERO ;EN EL ENCENDIDO, AMBOS EJES GIRAN HASTA ENCONTRAR EL FIN DE CARRERA RESPECTIVO ; Y COLOCAR EN CERO LOS CONTADORES CRRESPONDIENTES MOVLW .255 MOVWF CONTA_PASOS_TILT MOVWF CONTA_PASOS_PAN MOVWF POSICION BUSCAR_CERO ; GIRO_IZQUIERDA DEL MOTOR DE TILT, EN BUSQUEDA DE LLEGAR AL FIN DE CARRERA, PARA SU POSICION DE CERO BTFSS FC_TILT ;ESTA TOCANDO EL FIN DE CARRERA DE TILT GOTO $+3 DECF CONTA_PASOS_TILT,F ; DECF CONTA_TILT,F ;CONTADOR DE TABLA DE SECUENCIA PARA EL PAP BTFSS FC_PAN ;ESTA TOCANDO EL FIN DE CARRERA DE PAN GOTO $+3 DECF CONTA_PASOS_PAN,F ; DECF CONTA_PAN,F ;CONTADOR DE TABLA DE SECUENCIA PARA EL PAP MOVF CONTA_PAN,W PAGESEL TABLA_PAN LCALL TABLA_PAN MOVWF PUERTO MOVF CONTA_TILT,W PAGESEL TABLA_TILT LCALL TABLA_TILT ANDWF PUERTO,W ;UNO AMBAS SALIDA DE TABLA PARA SALIR POR EL PUERTO B MOVWF PORTB PAGESEL DELAY2 LCALL DELAY2 LCALL DELAY2 DECFSZ POSICION,F GOTO BUSCAR_CERO ;REPITE ESTE LOOP UN MAXIMO DE 255 VECES, PARA ASEGURARNOS SI ESTAN EN EL LADO OPUESTO CLRF CONTA_PASOS_PAN CLRF CONTA_PASOS_TILT ; INCF CONTA_PASOS_TILT,F ;ME ASEGURO QU TOMEN EL VALOR UNO ; INCF CONTA_PASOS_PAN,F RETURN ;************************************************************************************************ DELAY2 MOVLW .150 MOVWF LOOP3 MOVLW .100 MOVWF LOOP1 OTRO22 NOP NOP NOP NOP NOP NOP CLRWDT DECFSZ LOOP1,F GOTO OTRO22 DECFSZ LOOP3,F GOTO OTRO22-2 INCF DESTELLO,F BCF LED BTFSC DESTELLO,2 ; DESTELLO DEL LED INDICADOR DMX, EN ESTE CASO, INDICA QUE SE ESTA POSICIONANDO A CERO BSF LED RETURN END
EL Circuito impreso
(http://www.todopic.com.ar/foros/index.php?action=dlattach;topic=21800.0;attach=6934)
El proyecto terminado y funcionando, plaqueta
(http://www.todopic.com.ar/foros/index.php?action=dlattach;topic=21800.0;attach=6936)
:D :D
Aqui el esquematico :D
(http://www.todopic.com.ar/foros/index.php?action=dlattach;topic=21800.0;attach=6941)
y ademas los pines de los integrados, para no renegar en la busqueda :mrgreen:
Gracias locodelafonola por tu respuesta, en cuanto puedo lo probaré. No se si tu has realizado este proyecto, porque tengo algunas dudas mas. En el esquema vienen piezas que luego no las veo en la foto del proyecto terminado. Otras de la foto no coinciden con las piezas del esquema. Y lo mas difícil para mi, parece que el archivo hex está mal y hay que compilarlo otra vez, y de eso no tengo ni idea. Si me puedes resolver alguna de mis dudas te lo agradecería. Gracias.
Saludos a todos los forer@s. Necesito realizar este proyecto. Lo he montado todo, el motor 1 salta un paso adelante y otro atras, no se porque pasa esto. el motor 2 no hace absolutamente nada. He leido que el archivo hex publicado estaba mal. Rogaría que alguien que haya hecho este proyecto ultimamente pudiera poner el archivo hex en perfecto estado. Por favor no se como hacerlo funcionar, necesito mucha ayuda. Gracias a tod@s.
:D :D Ok Nocturno... aqui un par de pequeños videos de como està funcionando... en especial, como responde al cambio de giro de acuerdo a la señal dmx, ademas, como regresa siempre a la posicion inicial
Un gran abrazo!
Norberto
pd: tengo que corregir un par de cositas en el codigo... :D
hola estoy queriendo hacer algo similar pero con un pic18f26k22 y en c, tengo problemas con la lectura dmx por la uart, el resto no me es un problema, si alguien me da una mano se lo agradeceria, saludos