Como siempre las respuestas de Marcelo son sumamente completas.
Yo me atrevería a agregar que para la dirección se puede tambien utilizar un servomotor, que se controla con una sencilla rutina de PWM.
Hola! Saludos a todos! Les cuento que soy nuevo en esto y estoy realizando mi primer proyecto con PIC (16F628A). Mi idea es manejar un servo motor por medio de pwm...Hasta ahoro no eh tenido mucho exito... lo que hice es:
Código:
#INCLUDE <P16F628A.INC>
__CONFIG _CP_OFF & _WDT_OFF & _BODEN_ON & _PWRTE_ON & _INTOSC_OSC_NOCLKOUT & _DATA_CP_OFF & _LVP_OFF & _MCLRE_ON
ERRORLEVEL -302
ORG 0x00
GOTO INICIO
INICIO
BANKSEL TRISB
CLRF TRISB
MOVLW 0XFF
MOVWF TRISA
BANKSEL PORTB
CLRF PORTB
BSF PORTB,0
BSF PORTB,2
BCF PORTB,1
BANKSEL TRISB
MOVLW B'00001000'
MOVWF TRISB ; PIN CCP1 COMO ENTRADA
MOVLW 0xFF ;VALOR SALE DE ECUACION
MOVWF PR2 ;PERIODO PWM
BANKSEL CCP1CON
MOVLW B'00111111' ; -- BITS MENOS SIGNF. RESOL.
MOVWF CCP1CON ;MODO PWM
MOVLW B'11111111' ;CICLO DE TRABAJO
MOVWF CCPR1L ;CICLO DE TRABAJO
BANKSEL PIR1
BCF PIR1,1 ;CERO BAND. DE INTERRUP.
BSF T2CON,0 ;ESCALADOR 1:16
BSF T2CON,1 ;ESCALADOR 1:16
BSF T2CON,2 ;INICIO TEMP.
HERE
BTFSS PIR1,TMR2IF ;DESB. TIMER
GOTO HERE
BANKSEL TRISB
CLRF TRISB ;PUERTO B COMO SALIDA
AQUI GOTO AQUI
END
Lo simule en el Proteus y lo unico que hace es llevar el servomotor hasta un extremo.
Espero puedan ayudarme! Estare muy agradecido!
Saludos a todos!
PD: Hay una parte al principio del programa que pone a "1" y "0" un par de salidas. Ignorarla.
Emanuel
Última edición por un moderador: