Documentos de Académico
Documentos de Profesional
Documentos de Cultura
para el funcionamiento de los animales, asi como la descripcion muchas veces no se daba esta conección. Tambien se toma en
de sus caracteristicas usadas. cuenta que en primer lugar debemos verificar la coneccion entre
programa y PIC.
II. MATERIALES
A. Mplab X IDE Microchip
Programa editor de IDE propio de la Empresa Microchip, que
esta destinada a los productos del mismo nombre, que pueden
ser microcontroladores, programadores, escritores de codigo y
otros. Este software será de utilidad primaria para el desarrollo
del proyecto, ya que verificará el correcto funcionamiento del
programa creado y proveerá el código en hexadecimal. Cabe
destacar que este editor cuenta con un amplio soporte de
microcontroladores a los que se le puede crear instrucciones.
Cada parte del código creado se hace en un nuevo proyecto,
al cual se le añaden archivos de extencion .asm como un Source
File. El cual será depurado y evaluado por el programa, hecho
esto, nos devolverá un archivo con el codigo en hexadecimal que
será importante para transmitir las instrucciones al
microcontrolador.
Se muestra una captura de pantalla en la Figura 2, que
muestra el area de trabajo y una pequeña parte del código. Todo
esto es parte del desarrollo inicial del proyecto. El código en si
Fig. 3.Ventana de Interfaz del Pickit 3. En este caso el programa ha
será mostrado más adelante para su completa apreciacion.
reconocido el Programador y el microcontrolador.
B. Programador PICKit 3
Este es un depurador de código própio de la empresa
Michochip. Es de bajó coste y compatible con el Fig. 4. Programador PICKit 3 con cable de coneccion USB 2.0 para
computador.
microcontrolador PIC16F84A, el cual se detallará más adelante.
Tambien es compatible con gran cantidad de microcontroladores
Se debe destacar que este programador se conecta con el
en el mercado, pero que en su mayoria son para desarrollo
microcontrolador por medio de pines. Su orden y detalle de
pequeño. En la Figura 3 se observa la interfaz del programa que
comunicación se observa en la Figura 5. Sin esta comunicación
importará el codigo hexadecimal(.hex) que se obtiene del Mplab
no se lograría transferir todas las instrucciones al
X IDE. Esté será escrito en el microcontrolador una vez sea
microcontrolador. En este caso ha sido de consideración evitar
reconocido por medio de una conexión física con este, esto se
el uso del microcontrolador PIC16F84, el cual no es compatible
logra por medio del programador PICKit 3.
con esta versión de programador. En caso solo se cuente con este
En la Ventana de la Figura 3 se debe tener en cuenta verificar
microcontrolador, se puede usar el PICKit 2, que es una versión
siempre la coneccion entre programa y microcontrolador, ya que
previa al que se usa en este proyecto.
3
Fig. 5.Conecciones entre PICKit 3 y PIC16F84. Aquí se usa solo 5 pines para
el programador.
C. Microcontrolador PIC16F84A
Este componente es el que nos permitirá el funcionamiento
general de este proyecto. Este microcontrolador a 8 bits
pertenece a la empresa Microchip, dentro de la familia de PIC
como Gama Media. Es muy popular en el mercado de trabajo,
estudio y desarrollo por ser sencillo de entender. Cuenta con 18
pines y un conjunto pequeño de instrucciones con las que se
puede trabajar; esto se observa en la Figura 6.
D. Motor Reductor
Es un motor que incluye un sistema de engranajes, estos
incrementan el torque que proporciona al girar. Como se observa
en la Figura 8, es generalmente de color amarillo. Cuenta con
dos conecciones para entrada de energía. La coneccion de estas
Fig. 6.Numeración y detalle de pines del microcontrolador PIC16F84A. Se dará el sentido de giro, y en este sentido el PIC16F84A es
observa los dos puertes disponibles y sus pines respectivos. adecuado ya que nos permite cambiar la direccion a medida que
se den las instrucciones o se invierta el valor de las conecciones
Entre sus caracteristicas, tiene Memoria Flash (1K x 14 a este.
bits), memoria RAM (68 registros x 8 bits), tiene un
temporizador de 8 bits, cuenta con 13 pines en dos puertos que
se detalla en la Figura 6, cuenta con perro guardian, bajo
consumo, instrucciones reducidas a 35 en total (4 de byte, bit,
salto y registros) y es de bajo costo. Las instrucciones se
encuentran detalladas en la Tabla II, que estan separas como se
mencionó anteriormente.
E. Servomotor SG90
Es un motor especial al que se le ha dotado de un sistema de
control(tarjeta electrínoca), un potenciómetro y un conjunto de
engranajes. Este tiene un límite de giro de 180 grados, y aunque
existen otros que permiten giros de hasta 360 grados, este es
sufieciente para la animacion del burro y la vaca. Su reducido
tamaño de 32x32x12mm, como se muestra en la Figura 9, Fig. 11. Puente H de potencia L298N de 16 pines.
permite que se pueda integrar dentro de los animales, haciendo
más agradable a la vista su integracion. Se hará el uso de este circuito integrado para conectar con los
moto reductores, los que haran mover una faja transportadora,
que hara de base para la oveja y su pastor. Como se muestra en
la Figura 12, se hará una coneccion a las salidad del
microcontrolador, de esta manera podremos controlar el tiempo
de avance y detenido para esta parte de animacion.
III. COSTOS
En general, el armado de este grupo de animales es
económico, y se ha procurado además hacer uso de materiales
reciclados o en los que no se ha invertido dinero, por lo que la
ausencia de sus precios en el siguiente cuadro de precios sugiere
que no ha habido costo en ellos. A continuacion se detalla en la
Tabla II los precios del proyecto total:
TABLA II
LISTADO DE COMPONENTES USADOS Y SUS RESPECTIVOS PRECIOS
Fig. 10. Ancho de banda para funcionamiento de servomotor SG90.
Descripcion de Componentes
Tambien se toma en cuenta que este servomotor cuenta con 3 Cantidad Precio Precio
Nombre Unit. Total
entradas. Como se observa tambien en la Figura 9, se distinguen (Soles) (Soles)
en tres colores, alimentacion, tierra y el color naranja para el 2 Protoboards 13,0 26,0
ingreso de las ondas que darán las instrucciones. Este 3 Microcontroladores PIC16F84A 13,0 26,0
componente será tomado como externo en el momento de 4 pulsadores 0,5 2,0
mostrar el circuito topológico detallado, por lo que se 3 Crystal 4 MHz 0,5 1,1
representará con 3 pines a los que será conectado. 6 Condensadores 0,2 1,2
10 Resistencias (2.2k, 10k) 0,1 1,0
F. Puente en H 50 Cables de Conección 0,4 20,0
Es un circuito electrónico que generalmente se usa para emitir 1 Moto Resistor 8,0 8,0
a un motor electrico en DC, en este caso al moto reductor. Se 2 Servo Motor SG90 Micro Servo 10,0 20,0
usa ampliamente en robótica y como convertidores de potencia. 4 Figuras de animales y pastor 5,0 15,0
1 Faja transportadora - -
Como se muestra en la figura 11, se pueden presentar como
6 Diodos 1N4007 0,2 1,2
circuitos integrados. El cual se acompaña de diodos para su 2 Temperas de Colores 1,5 3,0
funcionamiento. TOTAL 124,5
*Todos los precios son Comerciales y pueden variar según su
disponibilidad al momento de la compra.
5
call Retardo_500ms
bcf PORTB,4
bsf PORTB,5
call Retardo_500ms
bsf PORTB,6
bcf PORTB,7
call Retardo_500ms
bcf PORTB,6
bsf PORTB,7
goto bucle
Fig. 16. Circuito Topológico para armado del motor reductor. INCLUDE <RETARDOS.INC>
End
Tambien se tiene el circuito armado junto a la faja
transportadora, que se aprecia en la Figura 17. El motoreductor Aqui nos bazamos en el funcionamiento de los puertos B para
se ha instalado a un costado de la faja y hace girar esta por un que el valor de salida alterne entre 1 y 0. Logrando asi que el
solo lado. El otro extremo de la faja tiene un eje libre para girar motor avance la cantidad de tiempo deseado y luego se quede
cuando el moto reductor inicie movimiento. estatica en el punto de llegada.
B. Movimiento de Cabeza Burro
En el caso del Burro, se le ha dotado de movimiento en la
cabeza, su movimiento es un giro de la cabeza. Esto es posible
debido al servomotor que tiene dentro del torax. El eje de giro
esta sujetado a la cabeza, por lo que junto a un espacio para el
movimiento, el animal hace un gesto de aprecio hacia el
nacimiento. En la Figura 18 se puede observar la disposicion del
motor en relacion al animal.
#include P16F84A.inc
__CONFIG _CP_OFF & _WDT_OFF & _PWRTE_ON
& _XT_OSC
Contador1 equ 0x0C
Contador2 equ 0x0D
Led equ 0
Pulsador equ 0
BSF STATUS,RP0
MOVLW B'00000000'
MOVWF TRISB
MOVLW B'00011'
MOVWF TRISA
MOVLW B'00000001'
MOVWF OPTION_REG
BCF STATUS,RP0
;INICIO DE PROGRAMA
GOTO INICIO
;TIEMPO 0.5 MS
TIME_500US EQU D'248'
TIMEOF_500US MOVLW TIME_500US
Fig. 19. Circuito Topológico con interrupciones externas. MOVWF TMR0
BCF INTCON,T0IF
Como se puede observar en la Figura 18, este es el protoboard TIME_REB BTFSS INTCON,T0IF
que se conecta al servomotor y permite la animacion del burro. GOTO TIME_REB
En el circuito se integra dos pulsadores llamados S1 y S2 que RETURN
giran la cabeza a la izquierda y derecha respectivamente. La ;TIEMPO 1MS
salida de la señal esta dada por el RB0, el cual es la salida propia TIME_1MS EQU D'240'
de las interrupciones externas RB0 que se conecta a la entrada 1 TIMEOF_1MS MOVLW TIME_1MS
del servomotor. La entrada 2 es para el voltaje de alimentacion MOVWF TMR0
y la entrada 3 es para tierra. BCF INTCON,T0IF
TIME_REB2 BTFSS INTCON,T0IF
GOTO TIME_REB2
RETURN
;TIEMPO 2MS
TIME_2MS EQU D'225'
TIMEOF_2MS MOVLW TIME_2MS
MOVWF TMR0
BCF INTCON,T0IF
TIME_REB3 BTFSS INTCON,T0IF
GOTO TIME_REB3
RETURN
;TIEMPO 4MS
TIME_4MS EQU D'193'
Fig. 20. Circuito de microprocesador armado en Protoboard de pruebas. TIMEOF_4MS MOVLW TIME_4MS
MOVWF TMR0
El circuito en protoboard se observa armado en la Figura 20. BCF INTCON,T0IF
Una vez conectado el servomotor con el circuito armado del TIME_REB4 BTFSS INTCON,T0IF
protoboard, se debe considerar el angulo de referencia 0 del GOTO TIME_REB4
servomotor en relacion a la cabeza. Ya que si no coinciden, el RETURN
servomotor podria ejercer fuerza en posicion incorrecta, ;TIMEPO 15 MS
chocando entre el límite de movilidad permitido para la cabeza TIME_15MS EQU D'21'
y el cuerpo. Por eso se hace enfasis en que el angulo 0 del TIMEOF_15MS MOVLW TIME_15MS
servomotor debe ser el mismo en el que el burro esta parado de MOVWF TMR0
forma común. BCF INTCON,T0IF
TIME_REB5 BTFSS INTCON,T0IF
1) Codigo de Movimiento Cabeza de Burro GOTO TIME_REB5
RETURN
__CONFIG _CP_OFF & _WDT_OFF & _PWRTE_ON ;TIEMPO 16 MS
& _XT_OSC TIME_16MS EQU D'6'
TIMEOF_16MS MOVLW TIME_16MS
LIST P=16F84A MOVWF TMR0
INCLUDE <P16F84A.INC> BCF INTCON,T0IF
PUL1 EQU 0 TIME_REB6 BTFSS INTCON,T0IF
PUL2 EQU 1 GOTO TIME_REB6
RETURN
ORG 0 ;MOTOR 1
;CONFIGURACION DE PUERTOS ;0° GRADOS
8
cero
1) Código de Movimiento Cabeza de Vaca movlw d'40'
movwf contador1
list p=16F84A bsf PORTB,1
#include P16F84A.inc call Retardo_1ms
__CONFIG _CP_OFF & _WDT_OFF & _PWRTE_ON bcf PORTB,1
& _XT_OSC call Retardo_10ms
call Retardo_5ms
CBLOCK 0X0C call Retardo_2ms
ENDC call Retardo_2s
decfsz contador1
contador equ 0x0C goto bucle
contador1 equ 0x0D return
Led equ 0
Pulsador equ 0 INCLUDE <RETARDOS.INC>
End
Reset org 0x00
goto inicio 2) Codigo de Libreria RETARDOS.INC
org 0x05
inicio CBLOCK
bsf STATUS,RP0 R_ContA ; Contadores para los retardos.
movlw b'00001' R_ContB
movwf TRISA R_ContC
movlw b'00000000' ENDC
movwf TRISB
bcf STATUS,RP0 ; RETARDOS de 4 hasta 10 microsegundos
btfss PORTA,0
goto bucle Retardo_10micros
goto otro nop
nop
bucle nop
call Retardo_100ms nop
bsf PORTB,0 nop
call noventa Retardo_5micros
bcf PORTB,0 nop
goto inicio Retardo_4micros
return
otro
call Retardo_100ms ; RETARDOS de 20 hasta 500 microsegundos
bsf PORTB,0
call cero Retardo_500micros
bcf PORTB,0 nop
goto inicio movlw d'164'
goto RetardoMicros
noventa Retardo_200micros
movlw d'40' nop
movwf contador movlw d'64'
bsf PORTB,1 goto RetardoMicros
call Retardo_1ms Retardo_100micros
call Retardo_500ms movlw d'31'
bcf PORTB,1 goto RetardoMicros
call Retardo_10ms Retardo_50micros
call Retardo_5ms nop
call Retardo_2ms movlw d'14'
call Retardo_1s goto RetardoMicros
call Retardo_500ms Retardo_20micros
decfsz contador movlw d'5'
goto bucle
return RetardoMicros
movwf R_ContA
10
Rmicros_Bucle Retardo_500ms
decfsz R_ContA,F movlw d'5'
goto Rmicros_Bucle
return Retardo_1Decima
movwf R_ContC
; RETARDOS de 1 ms hasta 200 ms. R1Decima_BucleExterno2
movlw d'100'
Retardo_200ms movwf R_ContB
movlw d'200' R1Decima_BucleExterno
goto Retardos_ms movlw d'249'
Retardo_100ms movwf R_ContA
movlw d'100' R1Decima_BucleInterno
goto Retardos_ms nop
Retardo_50ms decfsz R_ContA,F
movlw d'50' goto R1Decima_BucleInterno
goto Retardos_ms decfsz R_ContB,F
Retardo_20ms goto R1Decima_BucleExterno
movlw d'20' decfsz R_ContC,F
goto Retardos_ms goto R1Decima_BucleExterno2
Retardo_10ms return
movlw d'10'
goto Retardos_ms Estas rutinas se bazan en el previo conocimiento de los usos
Retardo_5ms del cristal de cuarzo de 4 MHz. y de su relacion con los ciclos
movlw d'5' de reloj. Usando esto podemos definir el ciclo de maquina que
goto Retardos_ms se usa, este es 4 MHz multiplicado ¼ Mhz del periodo de reloj
Retardo_2ms resulta en un ciclo maquina. Esto da como base que cada
movlw d'2' instrucción reciba un valor de ciclo maquina que se ejecuta.
goto Retardos_ms Es así como se puede calcular que cada instrucción sumada
Retardo_1ms puede otorgar cierta cantidad de tiempo. Por ejemplo la
movlw d'1' subturina “CALL” tiene una duracion de 2 ciclos maquina, el
“RETURN” de una subturina tiene 2 ciclos maquina y la
Retardos_ms utilizada instrucción “NOP” tiene un ciclo maquina. Estos son
movwf R_ContB instrucciones comunes que nos al momento que las usamos, se
R1ms_BucleExterno saca ventaja del tiempo que usan. Lo cual se ve ampliamente
movlw d'249' explicado en [1], libro del cual se ha obtenido esta librería.
movwf R_ContA
R1ms_BucleInterno V. FUNCIONAMIENTO
nop Ahora que se ha explicado el funcionamiento tanto de los
decfsz R_ContA,F circuitos y del codigo necesario para el funcionamiento de
goto R1ms_BucleInterno estos animales del Nacimiento, podemos obervar en la
decfsz R_ContB,F Figura 24 una vista de la presentacion final de los animales
goto R1ms_BucleExterno junto a sus circuitos.
return
Retardo_20s
movlw d'200'
goto Retardo_1Decima
Retardo_10s
movlw d'100'
goto Retardo_1Decima
Retardo_5s
movlw d'50'
goto Retardo_1Decima
Retardo_2s
movlw d'20' Fig. 24. Faja Transportadora, circuitos en protoboar y animales del
nacimiento.
goto Retardo_1Decima
Retardo_1s
movlw d'10'
goto Retardo_1Decima
11
VI. CONCLUSIONES
Al empezar la programacion de este codigo, se ha visto que
se necesita conocimiento de retardos en la programacion de
código Assembler. Ya que en este tipo de lenguaje no existe Tabla de contenido
una instrucción de tiempo de espera. Asi se comprueba la
velocidad de procesamiento que tiene el microcontrolador. I. INTRODUCCIÓN ..................................................... 1
Por otro lado, se ha encontrado la manera de optimizar el II. MATERIALES ......................................................... 2
codigo haciendo uso de librerias adicionales que simplifican el
A. MPLAB X IDE MICROCHIP ...................................... 2
calculo de tiempos, en este caso la librería RETARDOS.INC
La implementacion de los motores servo y resistor han B. PROGRAMADOR PICKIT 3 ....................................... 2
cumplido un papel diferente para destacar realismo en el C. MICROCONTROLADOR PIC16F84A ......................... 3
momento de la animacion. Por lo que se aprecia el trabajo de D. MOTOR REDUCTOR ................................................. 3
buscar instrumentos que ayuden a lograr un trabajo final E. SERVOMOTOR SG90 ................................................ 4
apropiado. F. PUENTE EN H............................................................ 4
En el desarrollo de los codigos, se ha visto necesario obtener
más microprocesadores de los usados, debido a la necesidad de III. COSTOS .................................................................. 4
sacerlos del socalo del programador y colocarlo en el circuido IV. DISEÑO DE CODIGO E IMPLEMENTACION
del Protoboard; es necesario tener cuidad. Muchos de estos DE CIRCUITOS ............................................................ 5
microcontroladores han quedado inutilizables debido a que sus A. MOTO REDUCTOR Y FAJA TRANSPORTADORA CON
pines se han roto. A este problema se le puede hacer frente
OVEJA Y PASTOR .......................................................... 5
soldando un metal que ocupe el lugar del pin roto, pero no
soluciona del todo. Por lo que en la etapa de desarrollo se ha 1) Código en Assembler de Motor ........................... 6
usado socalos para cada microcontrolador, lo que ha B. MOVIMIENTO DE CABEZA BURRO ........................... 6
disminuido el riesgo de dañar los microcontroladores. 1) Codigo de Movimiento Cabeza de Burro ............ 7
Los servomotores han sido probados de manera que aportan C. MOVIMIENTO DE CABEZA VACA............................. 8
un movimiento más natural a los animales. Esto es lo primero 1) Código de Movimiento Cabeza de Vaca .............. 9
que se podrá notar al hacer funcionar los mecanismos de 2) Codigo de Libreria RETARDOS.INC .................. 9
animacion. Se debe destacar que estos motores tienen fuerza
suficiente para mover las cabezas de los animales. V. FUNCIONAMIENTO ............................................ 10
VI. CONCLUSIONES ................................................. 11
RECONOCIMIENTOS
Se reconoce el trabajo hecho previamente con nuestra RECONOCIMIENTOS .............................................. 11
Docente, Roxana Flores. Por las horas de trabajo y grupos de REFERENCIAS .......................................................... 11
ayuda hecho en conjunto con los compañeros de clase.
REFERENCIAS