You are on page 1of 8

UNIVERSIDAD FRANCISCO DE PAULA SANTANDER

INGENIERÍA ELECTRÓNICA
MICROCONTROLADORES
GRUA CONTROLADA POR UN PIC 16F877

Iván Ernesto Zambrano López Jorge Humberto Oviedo Rodríguez Darwin Carreño Niño
ivan_zambrano@hotmail.com jhortwo@hotmail.com darwin_c_82@hotmail.com

RESUMEN propósitos múltiples. El Joystick visto desde el


punto de vista electrónico, no es más que un par de
En este proyecto se diseñó y construyó una grúa resistencias variables las cuales toman un rango de
semiautomática que es operada a través de un valores de 0 a 156KΩ dependiendo la posición en
joystick. El sistema emplea tres motores paso a que se encuentre la palanca, y además dos
paso para generar el movimiento en los ejes X, Y y pulsadores normalmente abiertos.
Z, posee como dispositivo de control un PIC
16f877, el cual genera la secuencia de los motores Para mayor precisión, el Joystick que utilizamos en
y el sentido de giro de estos de acuerdo a las este proyecto en particular, consta además con dos
señales que envía el joystick. El movimiento en los switches deslizables que permiten al usuario
ejes X y Y se puede realizar individualmente o calibrar la sensibilidad en cualquier dirección de
simultaneo. Para el movimiento en Z, se emplean ambos ejes.
los pulsadores del joystick y cuando se genera este
movimiento se inhabilita el movimiento en los otros En vista de nuestras necesidades para el proyecto,
ejes. se agrego un circuito externo muy sencillo que nos
permite tener una variación de voltaje de 0 a 4
DESARROLLO voltios por cada eje, de acuerdo a los movimientos
impuestos por la palanca del Joystick; además el
El Joystick circuito necesario para que un pulsador
normalmente abierto, conmute una salida entre 0 y
El Joystick es un sencillo dispositivo de interfaz con 5 voltios. Los circuitos anteriormente mencionados
el humano que posee una palanca, la cual puede se muestran a continuación en las siguientes
moverse hacia todas las direcciones posibles en un figuras:
plano de dos dimensiones y dos botones de

BTN_1
Key = Space
VCC R2 VCC
R1 156kOhm 50% EJE_X BOTON_1
Key = a
33kohm
5V 5V
R5
1.0kohm

BTN_2
Key = Space
VCC
VCC R4 BOTON_2
R3 156kOhm 50% EJE_Y
Key = a
33kohm 5V
5V
R6
1.0kohm

Ing. Gabriel Sánchez Suárez


gabrielsanchezsuarez@hotmail.com
UNIVERSIDAD FRANCISCO DE PAULA SANTANDER
INGENIERÍA ELECTRÓNICA
MICROCONTROLADORES
GRUA CONTROLADA POR UN PIC 16F877

Iván Ernesto Zambrano López Jorge Humberto Oviedo Rodríguez Darwin Carreño Niño
ivan_zambrano@hotmail.com jhortwo@hotmail.com darwin_c_82@hotmail.com

Control del Sistema ‘0’ no hay movimiento hacia adelante en Y


Bit 3 => ‘1’ movimiento hacia atrás en Y
El sistema emplea como elemento de mando un ‘0’ no hay movimiento hacia atrás en Y
joystick, este genera cuatro señales que son
adquiridas por el PIC, dos de estas señales son El código en el microcontrolador que se encarga del
voltajes análogos que varían en un rango de 0 a 4 control del sistema funciona de la siguiente manera:
voltios de acuerdo a la manipulación del joystick, e
indican el movimiento en X y Y, las otras dos son Primero se lee el estado de los pulsadores en los
digitales (pulsadores), que indican el movimiento en dos pines menos significativos del puerto D, si
z. alguno fue oprimido se deshabilitan los latchs de las
secuencias para los motores X y Y, y se genera el
Debido a que el cambio de voltaje es muy rápido al movimiento en Z, si ninguno fue oprimido se toma
movimiento del joystick, para el control del sistema la señal análoga que indica el movimiento en X y se
se tuvieron en cuenta las siguientes condiciones: convierte en un valor digital, una vez terminada la
conversión de la señal, se verifica este valor para
Vx > 3v el movimiento se realiza hacia la derecha determinar si se debe realizar movimiento en X y el
en X. sentido; dependiendo de este resultado se cargan
Vx < 1v el movimiento se realiza hacia la izquierda los bits 0 y 1 de la palabra de control con sus
en X. respectivos valores. Después se toma la señal
Para 1v<Vx<3v no se realiza movimiento en X. análoga que indica el movimiento en Y, al igual que
en la de X, esta también se convierte en un código
Vy > 3v el movimiento se realiza hacia la derecha digital, cuando termina la conversión se verifica
en Y. este valor para determinar si se debe realizar
Vy < 1v el movimiento se realiza hacia la izquierda movimiento en Y y el sentido, para posteriormente
en Y. cargar los bits 2 y 3 de la palabra de control con sus
Para 1v<Vy<3v no se realiza movimiento en Y. correspondientes valores de acuerdo a las
condiciones anteriormente nombradas.
Donde Vx es el voltaje que genera el joystick Una vez que la palabra de control ha sido cargada
cuando se mueve la palanca de derecha a con la información del movimiento que envió el
izquierda o viceversa y Vy es el voltaje que genera joystick, el siguiente paso que se realiza es leer del
el joystick cuando se mueve de adelante hacia puerto D el estado de los finales de carrera para
atrás o viceversa. determinar si en alguno de los extremos de la grúa
(X o Y), ya no se puede mover mas y evitar forzar
Para la adquisición de las señales análogas se los motores. Se realiza una AND lógica entre este
utilizó el puerto A, el cual contiene las entradas dato y la palabra de control debido a que si el fin de
para 8 conversores A/D ó 8 entradas digitales de carrera es presionado en el sistema, este envía un
acuerdo a como se programe. En este proyecto cero lógico y al realizar la AND con su bit
este puerto se programó para que los 2 pines correspondiente en la palabra de control lo coloca a
menos significativos sean entradas para las señales cero, con lo que se elimina el movimiento en este
análogas (Vx y Vy) y el resto digitales. sentido y el resultado final es almacenado en la
palabra de control.
Para el control del sistema se creo una palabra o
byte de control, cuyos cuatro bit menos Cuando la palabra de control contiene la
significativos indican en que eje se va realizar información completa del estado de las variables
movimiento y el sentido, de la siguiente manera: del sistema, se verifica cuales de los cuatro bits
están en ‘1’, para habilitar los latch de los ejes
Bit 0 => ‘1’ movimiento a la derecha en X donde se va a realizar movimiento y ejecutar la
‘0’ no hay movimiento a la derecha en X subrutina correspondiente que genera la secuencia
Bit 1 => ‘1’ movimiento a la izquierda en X de los motores, al terminar de generarse la
‘0’ no hay movimiento a la izquierda en X secuencia de los motores, se repite este proceso de
Bit 2 => ‘1’ movimiento hacia adelante en Y manera indefinida.

Ing. Gabriel Sánchez Suárez


gabrielsanchezsuarez@hotmail.com
UNIVERSIDAD FRANCISCO DE PAULA SANTANDER
INGENIERÍA ELECTRÓNICA
MICROCONTROLADORES
GRUA CONTROLADA POR UN PIC 16F877

Iván Ernesto Zambrano López Jorge Humberto Oviedo Rodríguez Darwin Carreño Niño
ivan_zambrano@hotmail.com jhortwo@hotmail.com darwin_c_82@hotmail.com
BTFSC PORTD,1 ;Verifica si se oprimió el pulsador
; de ascender en Z
Para generar la secuencia de los motores se utiliza GOTO EJEZI
el puerto B del microcontrolador, en los cuatro bits MOVLW B'01000001' ; frecuencia de conversión del A/D de X
MOVWF ADCON0 ; igual a Fosc/8 Y CANAL 0 como
menos significativos se genera la secuencia del ; entrada
motor que realiza el movimiento en Y, en los más
CALL ESPERA ; retardo necesario para tomar la
significativos se genera la secuencia tanto del ; muestra
motor de X como de Z, pero cuando se debe
realizar movimiento en Z se deshabilita el latch de X BSF ADCON0,2 ;empezar conversión en X
WAIT
o viceversa. De esta forma se puede generar BTFSC ADCON0,2 ;cuando sea ‘0’ indica fin de conversión
movimiento simultaneo en los ejes X y Y, pero no GOTO WAIT
CALL MOVIM ; salta a subrutina que verifica el
en Z. ; resultado de la conversión
RRF CONTROL,1 ; rotar a la derecha para seguir llenado
; Control
A continuación se presenta el codigo ASM RRF CONTROL,1
programado en el PIC para el control del sistema. MOVLW B'01001001' ; Fosc/8 Y CANAL 1
MOVWF ADCON0
CALL ESPERA
Programa en MPLAB BSF ADCON0,2 ;empezar conversión en y
WAIT1
list p=16F877 BTFSC ADCON0,2
GOTO WAIT1
ORG 0H CALL MOVIM
GOTO PRINCIPAL SWAPF PORTD,W
ANDWF CONTROL,1
ADCON0 EQU 1FH ; declaración de registros BTFSS CONTROL,0 ;pregunto si en el canal1 a/d>4
ADCON1 EQU 9FH GOTO DIR
PORTA EQU 05H BTFSS CONTROL,2 ;pregunto si en el canal2 a/d>4
TRISA EQU 85H GOTO DIR2
ESTATUS EQU 03H GOTO EJEXYDD
PORTB EQU 06H DIR
TRISB EQU 86H BTFSS CONTROL,1 ;pregunto si en el canal1 a/d<1
PORTC EQU 07H GOTO DIR1
TRISC EQU 87H BTFSS CONTROL,2 ;pregunto si en el canal2 a/d>4
PORTD EQU 08H GOTO DIR3
TRISD EQU 88H GOTO EJEXYID
ADRESH EQU 1EH DIR2
ADRESL EQU 9EH BTFSS CONTROL,3 ;pregunto si en el canal2 a/d<1
DELAY1 EQU 21H GOTO EJEXD
DELAY2 EQU 22H GOTO EJEXYDI
CONTROL EQU 23H DIR3
CONTA0 EQU 24H BTFSS CONTROL,3 ;pregunto si en el canal2 a/d<1
GOTO EJEXI
PRINCIPAL GOTO EJEXYII
BCF ESTATUS,6 DIR1
BSF ESTATUS,5 ;selecciono el banco 1 BTFSS CONTROL,2 ;pregunto si en el canal2 a/d>4
MOVLW 0X03 GOTO DIR4
MOVWF TRISA GOTO EJEYD
MOVLW 0X00 DIR4
MOVWF TRISB ; inicialización del puerto B como salida BTFSS CONTROL,3
; para las secuencias de los motores. GOTO DIR5
MOVWF TRISC ; inicialización del puerto C como salida GOTO EJEYI
; para control de los latch de los DIR5
MOVLW 0XFF ; motores. MOVLW 0XC0
MOVWF TRISD ; inicialización del puerto D como MOVWF PORTC
; entrada MOVLW 0X00
; para leer pulsadores y finales de MOVWF PORTB
; carrera. MOVLW 0X00
MOVLW B'10000100' ; Justifica el ADRESH a la derecha y MOVWF PORTC
;declara 2 canales análogos en el GOTO INICIO
;puerto A, además VDD y VSS Como
; referencias. EJEXYDD
MOVLW 0XC0
MOVWF ADCON1 MOVWF PORTC ; habilita latches de X y Y
BCF ESTATUS,5 ;selecciono el banco 0 GOTO MXYDD ; secuencia X y Y der.
CLRF ADCON0
INICIO CLRF CONTROL EJEXYDI
BTFSC PORTD,0 ;Verifica si se oprimió el pulsador MOVLW 0XC0
;de descender en Z MOVWF PORTC ; habilita latches de X y Y
GOTO EJEZD GOTO MXYDI ; secuencia X der. y Y izq.

Ing. Gabriel Sánchez Suárez


gabrielsanchezsuarez@hotmail.com
UNIVERSIDAD FRANCISCO DE PAULA SANTANDER
INGENIERÍA ELECTRÓNICA
MICROCONTROLADORES
GRUA CONTROLADA POR UN PIC 16F877

Iván Ernesto Zambrano López Jorge Humberto Oviedo Rodríguez Darwin Carreño Niño
ivan_zambrano@hotmail.com jhortwo@hotmail.com darwin_c_82@hotmail.com
MOVLW 0X3C ;BINARIO 00111100
MOVWF PORTB
EJEXYID CALL RETARDO ;RETRASO
MOVLW 0XC0 GOTO INICIO
MOVWF PORTC ; habilita latches de X y Y
GOTO MXYID ; secuencia X izq. y Y der. En esta subrutina se genera la secuencia para el movimiento a la
izquierda en X y hacia la derecha en Y.
EJEXYII
MOVLW 0XC0 MXYID
MOVWF PORTC ; habilita latches de X y Y MOVLW 0X99 ;BINARIO 10011001
GOTO MXYII ; secuencia X y Y izq. MOVWF PORTB
CALL RETARDO ;RETRASO
MOVLW 0X3C ;BINARIO 00111100
EJEXD MOVWF PORTB
MOVLW 0X40 CALL RETARDO ;RETRASO
MOVWF PORTC ; habilita latches de X y Y MOVLW 0X66 ;BINARIO 01100110
GOTO MXYDD ; secuencia X y Y der. MOVWF PORTB
CALL RETARDO ;RETRASO
EJEXI MOVLW 0XC3 ;BINARIO 11000011
MOVLW 0X40 MOVWF PORTB
MOVWF PORTC ; habilita latch de X CALL RETARDO ;RETRASO
GOTO MXYII ; secuencia X izq. GOTO INICIO

EJEYD En esta subrutina se genera la secuencia para el movimiento en X y Y


MOVLW 0X80 hacia la izquierda simultáneamente.
MOVWF PORTC ; habilita latch de Y
GOTO MXYDD ; secuencia Y der. MXYII
MOVLW 0X99 ;BINARIO 10011001
EJEYI MOVWF PORTB
MOVLW 0X80 CALL RETARDO ;RETRASO
MOVWF PORTC ; habilita latches de Y MOVLW 0X33 ;BINARIO 00110011
GOTO MXYII ; secuencia Y izq. MOVWF PORTB
CALL RETARDO ;RETRASO
EJEZD MOVLW 0X66 ;BINARIO 01100110
MOVLW 0X20 MOVWF PORTB
MOVWF PORTC ; habilita latch de Z CALL RETARDO ;RETRASO
GOTO MXYDD ; secuencia X y Y der. MOVLW 0XCC ;BINARIO 11001100
MOVWF PORTB
EJEZI CALL RETARDO ;RETRASO
MOVLW 0X20 GOTO INICIO
MOVWF PORTC ; habilita latch de Z
GOTO MXYII ; secuencia X y Y izq. Subrutina que genera el retardo necesario para que los motores
respondan a los cambios en los valores de la secuencia y poder romper la
En esta subrutina se genera la secuencia para el movimiento en X y Y inercia de este.
hacia la derecha simultáneamente.
RETARDO
MXYDD MOVLW 0X09
MOVLW 0X99 ; BINARIO 10011001 MOVWF DELAY1
MOVWF PORTB RETARDO1
CALL RETARDO ; RETRASO MOVLW 0XFF
MOVLW 0XCC ; BINARIO 11001100 MOVWF DELAY2
MOVWF PORTB RETARDO2
CALL RETARDO ; RETRASO DECFSZ DELAY2,1
MOVLW 0X66 ; BINARIO 01100110 GOTO RETARDO2
MOVWF PORTB DECFSZ DELAY1,1
CALL RETARDO ; RETRASO GOTO RETARDO1
MOVLW 0X33 ; BINARIO 00110011 RETURN
MOVWF PORTB
CALL RETARDO ; RETRASO Subrutina que se encarga de verificar el resultado de la conversión A/D de
GOTO INICIO los voltajes Vx y Vy, para determinar el sentido del movimiento en los ejes
(si lo hay), y colocar los ‘1’ en los respectivos bits de la palabra de control.
En esta subrutina se genera la secuencia para el movimiento a la derecha MOVIM
en X y hacia la izquierda en Y. BCF ESTATUS,2
BSF ESTATUS,0
MXYDI MOVLW 0X03
MOVLW 0X99 ; BINARIO 10011001 SUBWF ADRESH,0
MOVWF PORTB BTFSC ESTATUS,2 ;si es ‘1’, se mueve a la derecha
CALL RETARDO ;RETRASO GOTO FIN
MOVLW 0XC3 ;BINARIO 11000011
MOVWF PORTB BSF ESTATUS,0
CALL RETARDO ;RETRASO BSF ESTATUS,5
MOVLW 0X66 ;BINARIO 01100110 MOVLW 0X66
MOVWF PORTB SUBWF ADRESL,0 ;si es ‘0’, se mueve a la izquierda
CALL RETARDO ;RETRASO BCF ESTATUS,5

Ing. Gabriel Sánchez Suárez


gabrielsanchezsuarez@hotmail.com
UNIVERSIDAD FRANCISCO DE PAULA SANTANDER
INGENIERÍA ELECTRÓNICA
MICROCONTROLADORES
GRUA CONTROLADA POR UN PIC 16F877

Iván Ernesto Zambrano López Jorge Humberto Oviedo Rodríguez Darwin Carreño Niño
ivan_zambrano@hotmail.com jhortwo@hotmail.com darwin_c_82@hotmail.com
BTFSC ESTATUS,0 ;si es ‘1’, se mueve a la izquierda Subrutina que genera un retardo de aproximadamente 60us necesario
GOTO FIN1 para realizar la adquisición del la muestra en la conversión A/D.
BSF CONTROL,3 ;CONTROL=00001000 ESPERA
GOTO FIN1 MOVLW 0x05
FIN MOVWF CONTA0
BSF CONTROL,2 ;CONTROL=00000100 RET1
FIN1 DECFSZ CONTA0,1
BCF ESTATUS,5 GOTO RET1
RETURN RETURN

END

(a) Vista completa del proyecto

Ing. Gabriel Sánchez Suárez


gabrielsanchezsuarez@hotmail.com
UNIVERSIDAD FRANCISCO DE PAULA SANTANDER
INGENIERÍA ELECTRÓNICA
MICROCONTROLADORES
GRUA CONTROLADA POR UN PIC 16F877

Iván Ernesto Zambrano López Jorge Humberto Oviedo Rodríguez Darwin Carreño Niño
ivan_zambrano@hotmail.com jhortwo@hotmail.com darwin_c_82@hotmail.com

(b) Operación por medio del joystick

(c) Cicuito completo: Control y Potencia

Ing. Gabriel Sánchez Suárez


gabrielsanchezsuarez@hotmail.com
UNIVERSIDAD FRANCISCO DE PAULA SANTANDER
INGENIERÍA ELECTRÓNICA
MICROCONTROLADORES
GRUA CONTROLADA POR UN PIC 16F877

Iván Ernesto Zambrano López Jorge Humberto Oviedo Rodríguez Darwin Carreño Niño
ivan_zambrano@hotmail.com jhortwo@hotmail.com darwin_c_82@hotmail.com
V1
16V
+V

D4 MotorZ
Q4 DIODE
4
TIP122 B
3

2
A
1

D3
Q3 DIODE
U1 TIP122
74LS373
OE E
D7 Q7
D6 Q6
D5 Q5
D4 Q4
D3 Q3
D2 Q2
D1 Q1
D0 Q0 D2
DIODE

Q2
TIP122

D1
DIODE

Q1
TIP122

V2
12V
+V

D7 MotorX
Q7 DIODE
4
TIP122 B
3

2
A
V6 1
R3 5V
33k +V D8
Q8 DIODE
U2 TIP122
74LS373
156k 40% P16F877 OE E
R1 D7 Q7
D6 Q6
R4 D5 Q5
D4 Q4
33k D3 Q3
D2 Q2
C1 R2 D1 Q1
33pF D0 Q0 D6
156k 40% DIODE
V5
XTAL1 5V
C2 4.000MHZ Q6
33pF +V TIP122
S1
+V

V4 R5 D5
S2 1k DIODE
5V
S3
Q5
R6 S4 TIP122
1k
S5

S6
V3
16V
+V

D11 MotorY
Q11 DIODE
4
TIP122 B
3

2
A
1

D12
Q12 DIODE
U3 TIP122
74LS373
OE E
D7 Q7
D6 Q6
D5 Q5
D4 Q4
D3 Q3
D2 Q2
D1 Q1
D0 Q0 D10
DIODE

Q10
TIP122

D9
DIODE

Q9
TIP122

(d) Diagrama Circuital Completo

Ing. Gabriel Sánchez Suárez


gabrielsanchezsuarez@hotmail.com
UNIVERSIDAD FRANCISCO DE PAULA SANTANDER
INGENIERÍA ELECTRÓNICA
MICROCONTROLADORES
GRUA CONTROLADA POR UN PIC 16F877

Iván Ernesto Zambrano López Jorge Humberto Oviedo Rodríguez Darwin Carreño Niño
ivan_zambrano@hotmail.com jhortwo@hotmail.com darwin_c_82@hotmail.com

CONCLUSIONES que aumente la complejidad también se encuentran


PIC más avanzados que se adaptan a estas
El Joystick es un dispositivo muy versátil a la hora características.
de implementar control de movimientos, debido a
que su uso es muy sencillo para cualquier tipo de En el control de motores paso a paso es muy
usuario, el montaje de circuiteria externa es muy común el empleo de microcontroladores por la
sencillo y tiene un bajo costo. Los potenciómetros sencillez del sistema que se quiere y la poca
internos del Joystick varían muy sensiblemente en robustes que representan, en comparación, por
respuesta a los movimientos impuestos por la ejemplo con el empleo de un PC. Utilizar latches
palanca, lo que impide tener una variedad de datos (74HC373) minimiza el empleo de recursos del
exactos obtenidos con el conversor para propósitos microcontrolador o dispositivo de control para
de variación de velocidad, pero se pueden aplicaciones con motores PAP en donde los datos
diferenciar bien la dirección de los movimientos. enviados son los mismos para todos los motores.

Una de las grandes ventajas de los BIBLIOGRAFIA


microcontroladores PIC sobre los demás, es debido
a que posee módulos de aplicaciones específica http://www.ctv.es/pckits/tpjoysticke.html
como son los conversores A/D y el generador http://www.epanorama.net/documents/joystick/pc_jo
PWM, reducen hardware externo cuando se emplea ystick.html
en un sistema con lo que se reduce tamaño en el http://www.epanorama.net/documents/joystick/pc_ci
circuito y por ende costos en el proyecto. rcuits.html
www.microchip.com
La familia de microcontroladores PIC es una de las • MPLAB IDE v6.xx Quick Start Guide
más versátiles en el mercado, debido a que • MPLAB IDE v5.xx Quick Start Guide
• PIC16F87X Data Sheet
contiene una gama muy variada de dispositivos que • Application Development MPLAB IDE
varían en tamaño y complejidad con lo que se
pueden emplear en sistemas sencillos y a medida

Ing. Gabriel Sánchez Suárez


gabrielsanchezsuarez@hotmail.com

You might also like