Documentos de Académico
Documentos de Profesional
Documentos de Cultura
receptor DMX y control de dos motores PAP a 1/2 paso (Ledo 11514 veces)
todopic
DMX - otra ms! receptor DMX y control de dos motores PAP a 1/2 paso
Hola Amigos!, les presento este proyecto, que ya est en funcionamiento 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
;*****************************************************************
;*****************************************************************
;*****************************************************************
list p=16f628
#include p16f628.inc
ERRORLEVEL -302, -307 ;(NO FIGURAN LOS ERRORES DE CAMBIO DE PAGINA)
PASOS_PAN
PASOS_TILT
CONTA_PASOS_PAN
CONTA_PASOS_TILT
DESTELLO
VELOCIDAD
RESTO
RETARDO
LOOP1
LOOP2
LOOP3
ENDC
; osc 20 mhz
;**********************************************************************
;**********************************************************************
org 05h
;*************** SUBRUTINA DE RETARDO DE 2 Us **************
;-------------------------------------------------------------
NOP ;1 uS
NOP
CLRWDT
NOP
NOP ;1 uS
RETURN
;********************************************************************************
**
;################################################################################
##
;********************************************************************************
**
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'
MOVWF CONTA_PAN
GOTO TABLA_PAN+2
;---------------------------------------------------------------------------------------------
MOVLW .8
MOVWF CONTA_PAN
GOTO ULTIMO
;********************************************************************************
****************
;################################################################################
################
;********************************************************************************
****************
;TABLA DE POSICIONAMIENTO DE LOS MEDIO PASOS DEL MOTOR PAP DE TILT
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'
MOVWF CONTA_TILT
GOTO TABLA_TILT+2
;---------------------------------------------------------------------------------------------
MOVLW .8
MOVWF CONTA_TILT
GOTO ULTIMO2
;********************************************************************************
****************
;********************************************************************************
****************
INICIO
MOVLW 0x07
MOVWF TRISB
MOVWF TRISA
CLRF TMR0
; MOVLW B'11111111'
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
;********************************************************************************
*****************
;********************************************************************************
******************
;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 TRISB
MOVWF TRISA
BCF STATUS,RP0 ;BANCO 0
PAGESEL DEMORA2US
;------------------------------------------------------------------------------
MOVLW .1 ;PORTB,W
INCF DIPSWICH,W
INCF DIPSWICH_MAS1,W
MOVLW .80
MOVWF CONTA_T
MOVWF CHANEL
;---------------------------------------------------------------------------
CONTINUAR
GOTO ES_CERO
DECFSZ DESTELLO1,F
GOTO ES_CERO
INCF DESTELLO,F
ES_CERO
GOTO BREAK
DECFSZ CONTA_T,F ;SI LLEGA A CERO, ES PORQUE EL BREAK DURO POR LO MENOS 88
uS (80)
GOTO ES_CERO
INCF CHANEL,F
;SI EL NUMERO DE CANAL
ES XX SETEADO CON LOS DIPSWICH
NOP
CLRWDT
NOP
MOVLW .8
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
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)
CANAL1
MOVF CHANEL,W
XORWF DIPSWICH,W
BTFSS STATUS,Z
GOTO SIGUIENTE
;TOMO EL DATO DMX PARA EL CONTROL
DE PAN
;NOP
;NOP
;NOP
GOTO PROX
SIGUIENTE
GOTO SIGUIENTE3
;NOP
;NOP
;NOP
MOVF DATOS,W
MOVWF PASOS_TILT
GOTO PROX
;-----------------TERCER CANAL
SIGUIENTE3
MOVF DATOS,W
GOTO COMPARAR
;********************************************************************************
********************
;********************************************************************************
********************
;>>>>>>>>>>> MOTOR DE PAN <<<<<<<<<<<<<<<<<<<<
COMPARAR ;VERIFICA SI LLEGO AL LUGAR PARA DETENERSE, O TIENE QUE GIRAR A DERECHA
O IZQUIERDA
; Comparar
CLRF STATUS
NOT_EQ1
MOVF PASOS_PAN, W
BTFSS STATUS, C
GOTO GIRO_DERECHA1
GOTO GIRO_IZQUIERDA1
GIRO_DERECHA1
INCF CONTA_PASOS_PAN,F
MOVWF COMPENSAR
MOVF CONTA_PASOS_PAN,W
SUBWF PASOS_PAN,W
GIRO_IZQUIERDA1
DECF CONTA_PASOS_PAN,F
MOVF PASOS_PAN,W
SUBWF CONTA_PASOS_PAN,W
SUBWF RESTO,W
;********************************************************************************
***************
;********************************************************************************
***************
COMPARAR2 ;VERIFICA SI LLEGO AL LUGAR PARA DETENERSE, O TIENE QUE GIRAR A DERECHA
O IZQUIERDA
; Comparar
CLRF STATUS
MOVF PASOS_TILT,W ;
NOT_EQ2
MOVF PASOS_TILT, W
BTFSS STATUS, C
GOTO GIRO_DERECHA2
GOTO GIRO_IZQUIERDA2
GIRO_DERECHA2
INCF CONTA_PASOS_TILT,F
MOVF CONTA_PASOS_TILT,W
SUBWF PASOS_TILT,W
GOTO NDP
GIRO_IZQUIERDA2
DECF CONTA_PASOS_TILT,F ;
MOVWF RESTO
MOVF PASOS_TILT,W
SUBWF CONTA_PASOS_TILT,W
SUBWF RESTO,W
GOTO NDP
;********************************************************************************
****************
PAGESEL TABLA_PAN
LCALL TABLA_PAN
MOVWF PUERTO
MOVF CONTA_TILT,W
PAGESEL TABLA_TILT
LCALL TABLA_TILT
MOVWF PORTB
; CALL DEMORA
;;*******************************************************************************
**************
RETURN
DEMORA
MOVLW .2
MOVWF LOOP1
OTRO2 NOP
CLRWDT
DECFSZ LOOP1,F
GOTO OTRO2
RETURN
;################################################################################
#################
ORG 100H
MOVLW .255
MOVWF CONTA_PASOS_TILT
MOVWF CONTA_PASOS_PAN
MOVWF POSICION
BUSCAR_CERO
GOTO $+3
DECF CONTA_PASOS_TILT,F ;
GOTO $+3
DECF CONTA_PASOS_PAN,F ;
MOVF CONTA_PAN,W
PAGESEL TABLA_PAN
LCALL TABLA_PAN
MOVWF PUERTO
MOVF CONTA_TILT,W
PAGESEL TABLA_TILT
LCALL TABLA_TILT
ANDWFPUERTO,W ;UNO AMBAS SALIDA DE TABLA PARA SALIR POR EL PUERTO B
MOVWF PORTB
PAGESEL DELAY2
LCALL DELAY2
LCALL DELAY2
DECFSZ POSICION,F
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