Desde 1994 en la Red. La pagina de los aficionados a la electronica, informatica y otras curiosidades de la vida. No dudes en visitarnos.
Ahora 1 visitas.| 2540890 Visitas (desde Dic. 2011), hoy: 587 Visitas 902 Pag. Vistas , ultimos 36 dias: 21663 Visitas. 77104 Pag. Vistas. Tu IP: 100.26.182.28
Que ando curioseando:
AutosuficienciaCosas de casaElectronicaEn InternetInformáticaMundo MisticoSin categoríaSociedadTe lo recomiendo

Control de servo motor con PIC 16F84 y LabView

servo_pic16f84tini[1]Control

Descripción

Este Proyecto es un primer paso hacia la Robótica , el diseño busca controlar un servomotor por medio de un PC.

El control se a logrado por medio de un microcontrolador PIC16F84 , el cual proporciona las señales necesarias para producir una  deflección en el servo de 0 a 120 grados aprox , con una resolución de 255 pasos .

servo[1]

 

El microcontrolador se comunica con el PC por medio del bus de control del puerto paralelo , el software encargado de la comunicación es nuestro viejo programa send to pic16f84 elaborado en LabView hace un par de meses.

 

Circuito

 

servo_pic16f84cir[1]

 

Programa para el PIC

;Recepción serial de datos
;Por Carlos Fernando Jiménez
;Bucaramanga Jueves 19 de Julio del 2000

PUERTAB EQU 0×06
PUERTAA EQU 0×05
ESTADO EQU 0×03
OPT EQU 0×01
INTCO EQU 0x0B
org 0
goto INICIO
org 4
goto interr
;****** inicio configuración de la interrupción*****
INICIO bcf ESTADO,5 ;BANCO0
sbuff EQU 0x0C ;REGISTRO QUE RECIBE LOS DATOS SERIALES
contador EQU 0x0E
W1 EQU 0X1B
w2 equ 0x1c
movlw b’10110000′�
iorwf INTCO ;interrupción RB0/INT activa
movlw b’11110101′ ;configuración del puerto
andwf PUERTAB,1 ;RB1 salida (‘ya puedes enviar los datos’ en alto)
movlw b’00000101′
iorwf PUERTAB,1 ;RB0 y RB2 entrada(‘voy a enviarte datos!’ en bajo interrupción) y dato listo en alto
bcf ESTADO,5 ;BANCO0
bcf PUERTAB,1
bcf PUERTAB,3 ;*****fin de la configuración******
bsf ESTADO,5 ;BANCO1
movlw 0×00
movwf PUERTAA
BSF ESTADO,5 ;BANCO1
movlw b’10010010′ ;DIVISION 1-8
movwf OPT
movlw 0X7F
movwf sbuff
bcf ESTADO,5 ;BANCO0
MAIN 

;temporizacion para el servo

;Tiempo para la reflexión min 1 max 2 ms
movfw sbuff ;127-255
movwf OPT ;cargamos el timer
movlw 0x1f
movwf PUERTAA ;Señal arriba
movlw 1
movwf W1
espera10 btfsc W1,0
goto espera10

;Mínimo tiempo 10 ms de descanso
movlw 0×06
movwf w2
buc
movlw 0×00
movwf OPT ;cargamos el timer
movlw 0×00
movwf PUERTAA ;CAE LA SEÑAL DE CONTROL
movlw 1
movwf W1
espera11 btfsc W1,0
goto espera11
decfsz w2
goto buc

goto MAIN

interr btfss INTCO,1 ;Identificación de la interrupción
goto timer
goto serial

serial movlw 0×00 ;***** Rutina de recepción de datos*****
movlw 0×00
movwf PUERTAA
movwf INTCO ;incapacita TODAS las interrupciones
movlw 8 ;los 8 bits a recibir
movwf contador ;registro que lleva la cuenta de los bits llegados
movlw 0×00
movwf sbuff ;pone sbuff en cero
espera1 bsf PUERTAB,3
btfss PUERTAB,2 ;espera que el bit de sincronía se ponga en 1
goto espera1�
movlw b’1′
andwf PUERTAB,0 ;mascara del datos dato queda en w
iorwf sbuff,1
rlf sbuff
bcf PUERTAB,3 ;bit adentro
bucle btfsc PUERTAB,2 ;espera que el bit de sincronía vuelva a 0
goto bucle
decfsz contador,1
goto salto
goto fin
salto goto espera1
movlw 0
MOVWF W1
fin movlw b’10110000′ ;rehabilitación de TODAS LAS interrupciones
movwf INTCO

RETFIE

timer
movlw 0×00
movfw INTCO
movlw b’10110000′
movwf INTCO
movlw 0
MOVWF W1
RETFIE

END

Fuente: http://usuarios.lycos.es/charlytospage/servomotor.htm

Escribe un comentario

Tu comentario