|
















‹ m1OÃ0…÷üŠ#C7|mÙÊÕH4ATj!ƒM|àHvm9†(ÿ¾Iº2¾÷¾Ó{GwÕûA}65¼ªó šçÓñ å=â±V/ˆ•ªnÉV¬ë·Rd³w’,k3‰ÜeÇòa½søc
'¯/|Én$¼…áÓW0ã|¿‘ÿ°“[P”Ê2˜ÐþúÉ«{ðJlâï}isŽ;ÄaDN]F¸±
½hƒê̾µ:¹1‡>ê^iKi91¡–‚0Îc–SáüFqïݹ
| |
Control de servo motor con
PIC 16F84 y LabView

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 .

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

Clic sobre la imagen para
ampliarla
Programa para el PIC
;Recepción serial de datos
;Por Carlos Fernando Jiménez
;Bucaramanga Jueves 19 de Julio del 2000
PUERTAB EQU 0x06
PUERTAA EQU 0x05
ESTADO EQU 0x03
OPT EQU 0x01
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 0x00
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 0x06
movwf w2
buc
movlw 0x00
movwf OPT ;cargamos el timer
movlw 0x00
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 0x00 ;***** Rutina de recepción de datos*****
movlw 0x00
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 0x00
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 0x00
movfw INTCO
movlw b'10110000'
movwf INTCO
movlw 0
MOVWF W1
RETFIE
END
Programa para el PC
El la sección de
LabView
Mucha suerte!

| |

|