Você está na página 1de 11

1

Animales de Nacimiento Arequipeño


Grupo de Estudiantes de Ingenieria Electrónica y de Telecomunicaciones, del curso de
Microcontroladores y Microprocesadores

para los servomotores y enviando señales de alto y bajo para los


Resumen—Bazandonos en el lenguage Assembler, utilizando el motorreductores. El uso de estos motores especificamente
microcontrolador PIC16F84A como centro de instrucciones para ayudarán en funciones distintas dentro del sistema de animales.
el funcionamiento. Se explicará el completo desarrollo para que Se quiere prestar atencion que su trabajo en conjunto aporta
tres animales diferentes tengan movimiento y animacion para la
movimiento definido por tiempos o por intervenciones externas,
representacion en conjunto de un Nacimiento de Jesus.
Usando codigo bazado en interrupciones internas del
lo cual permite que estos trabajen de manera automatica, o dicho
microcontrolador se logra la animacion de estos animales. Tambien de otra forma, sin necesitar permanentemente intervencion del
se usa motores con Servomotores y motoreductores para los tres hombre. Dejando todo el trabajo de manejo en tiempos y
animales (Burro, Vaca y Oveja). resultados al microcontrolador, al cual se le ha pedido tareas de
simple complejidad. No se quiere dar a entender que es de esta
Abstract—Instrucciones desarrolladas en microcontrolador manera limitado el funcionamiento de este componente, sino
para dar movimiento adecuado y de representación natural a tres que buscamos destacar una de sus muchas bondades dentro de
animales. Cada uno con una propia y distintiva acción que
las posibilidades permiten.
armoniza el conjunto.
Como parte de las herramientas que se usa se encuentra el
I. INTRODUCCIÓN software Mplab X IDE propio de Microchip, tambien se usa
como creador de circuitos de placa impresa EAGLE. Para la
E n nuestra cultura peruana, se nos ha inculcado siempre un
sentido de identificacion con nuestras tradiciones y
pensamiento. Tenemos asi muchas celebraciones a lo largo del
introduccion del código Hexadecimal se usa el sistema propio
de Microchip para estos microcontroladores, el Pickit 3.
Finalmente se usa el ambiente apropiado para funcionamiento
año que regrejan nuestra fe, cultura, valores, historia, creencia, del microcontrolador y los motores.
sociedad, identidad y valor própio como Arequipeños. Es así Realizacion del Proyecto
como cercano a una de las más importantes fechas del año, como El proyecto se ha realizado en diferentes etapas de rebicion
es la Navidad y Nacimiento de Jesus. Visto esto, hemos tenido para el codigo en lenguaje Assembler, todo siendo evaludado en
por conveniente desarrollar un Nacimiento animado, en el que el programa ya mencionado de desarrollo. Tras la correcta
se incluirá los distintos personales y ambientacion que nosotros compilacion del programa, se extrae el codigo en hexadecimal
apreciamos por tradicion. para ser usado en el microcontrolador. Para escribir el codigo se
En cuanto al desarrollo de este proyecto, ha sido dividido hace uso del programa Pickit 3 de Microchip, que en conjunto
entre varios desarrolladores. Aquí se desarrollará con un equipo de hardware, transfiere todas las instrucciones
especificamente tres individuos. La animacion de una vaca, un necesarias al microcontrolador. Finalmente el microcontrolador
cordero y un burro, serán los objetivos de este informe. En este se ha colocado en un ambiente adecuado para su
sentido hay muchas formas de simular el movimiento de estos funcionamiento, con un oscilador de 4 Mhz y los demás
animales, pero nos enfocaremos en que los movimientos motores. Todo este proceso se observa en la Figura 1, en el que
guarden armonia con el evento principal que es el nacimiento. cabe recalcar, se ha repetido en varias oportunidades para
Por lo cual los movimientos serviran para enfocar la atencion del comprobar el funcionamiento de las instrucciones escritas.
espectador general en el pecebre, sirviendo los animales para
crear un ambiente propio y cercano a la realidad imaginada del
espectador.
Aplicación de lo Aprendido
En el desarrollo de programas con microcontroladores, se
tiene en cuenta que se tiene multitud de aplicaciones. Estos
microcontroladores han sido estudiados a lo largo del curso
respectivo, dando en primer lugar que hay infinidad de
aplicaciones para este componente electrónico. Se ha decidido
en este caso usarlo para controlar motoreductores y
servomotores, los cuales dotarán de movimiento a las figuras. El Fig. 1.Proceso de Datos en el Circuito Lógico.
microcontrolador tiene un comportamiento diferente con cada
En la siguiente parte se podrá detallar cada material usado
uno de estos motores, usando impulsos de tiempo especifico
2

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.

Este programador se conecta con el microcontrolador


fisicamente por medio de 6 pines. Como se observa en la Figura
4, este será el medio de comunicación entre el software y
hardware que necesitamos en este proyecto. Este programador
es sencillo de usar, ha sido util tanto para escribir en el
microcontrolador como tambien recuperar datos escritos en .hex
con informacion que sea necesaria.

Fig. 2.Área de trabajo en editor Mplab X IDE, en el que se muestra la


correcta construccion del código usado.

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

En el caso de este proyecto, se usara lenguaje Assembler


para las instrucciones de este microcontrolador, aunque se
pudiera tener la opcion de usar Micro C. Esta es otra de las
bondades de este PIC en particular. Como se observa en la
Figura 7, es de tamaño compacto y con dinamismo de puertos
para usarlo.
TABLA I
LISTADO DE INSTRUCCIONES PIC16F84A

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.

Fig. 8. Imagen de Moro Resistor de 5V a 9V.

Estos requieren de un circuito y configuracion necesarios para


su funcionamiento que se ilustra en la Figura 7. Utilizamos dos
displays con dos integrados, un par para representar las
Unidades y el otro par para representar las Decenas.

Fig. 7. Imagen de PIC16F84A de vista lateral superior izquierda.


4

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.

Fig. 9.Imagen de Servomotor Micro Servo SG90.

Estos hacen uso de modulacion por ancho de pulso (PWM)


para que se controle la direccion o posicion del motor de
corriente continua. En la Figura 10 se puede observar el ancho
de banda con la que trabaja los servomotores de este proyecto. Fig. 12. Esquema general de coneccion de Puente H a dos motores.

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

IV. DISEÑO DE CODIGO E IMPLEMENTACION DE CIRCUITOS


El proceso para diseñar el codigo que dará el movimiento a
los animales ha requerido del manejo de interrupciones internas,
debido a su amplio control, nos ha dado la posibilidad de usar el
moto reductor y los servo motores. Se aclara que hay un codigo
diferente para cada tipo de motor, debido a sus diferentes
caracteristicas y tambien considerando el comportamiento de los
animales. Por lo que se tiene tres codigos que se desarrollarán a
continuación.
A. Moto reductor y Faja transportadora con Oveja y Pastor
Se inicia con dos personajes, una oveja junto a su pastor. En
la escena del nacimiento son ambos lo que llegan para
contemprar el evento. Estos dos avanzan haciendo uso de una
faja transportadora, esta a su vez recibe el giro gracias al moto
reductor. Se tiene un límite de tiempo de 5 segundos para que Fig. 14.Oveja y Pastor en Faja transportadora.
el motor giré y traslade al pastor y la oveja cerca del
nacimiento. En la Figura 13 se observa el modelo de la faja en Como se ha mencionado anteriormente, el moto reductor
la que se hizo las pruebas de movimiento, el moto reductor se funciona debido a un circuito integrado puente H, el cual
coloca al costado de manera que ejerce la fuerza suficiente en trabaja con una fuente de energia de 9v de una bateria. En la
la faja. Figura 12 se detalla la conexión que se tiene del motor con el
circuito integrado. Se puede observar tambien este circuito
armado en Protoboard, para las pruebas de funcionamiento, en
la Figura 15 Se ha dispuesto de este protoboard para alojar
tambien el microcontrolador que se conecta al moto reductor.

Fig. 13.Ilustracion de la rueda implemetada con el LED infrarrojo.

El moto reductor tiene la caracteristica de girar 360 grados


en sentido horario y anti-horario. Para aprovechar esta
caracteristica, se tiene que dar polaridad al motor por medio de
Fig. 15. Circuito Armado en Protoboard.
las salidas de la compuerta;para invertir solo se debe cambiar
la polaridad del motor. En este caso usamos los puertos RB6 y La coneccion con el LM7805 permite que se pueda manejar
RB7, que pertenecen al puerto B. De esta forma movemos los los 9 voltios para el motor y al mismo tiempo tener 5 voltios
personajes de un lado a otro como se muestra en la Figura 14. para el microcontrolador, esto nos permite tener ambos
funcionando en la misma placa. Tambien nos facilita usar la
energia de mejor manera, asi se evita dar voltaje inadecuado
para el funcionamiento del microcontrolador. Para este diseño
se ha usado las conecciones como se muestra en la figura 15.
Tambien se detallan las conecciones del motor con los circuitos
integrados que necesita el motor en el circuito topológico de la
Figura 16, con una entrada de 9v y un MOTOR de salida. Vale
comentar que se aprecia el diseño preparado para pasar a placa
impresa.
6

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.

Fig. 17. Vista Superior de Faja Transportadora y su circuito en protoboard.

1) Código en Assembler de Motor

#include P16F84A.inc
__CONFIG _CP_OFF & _WDT_OFF & _PWRTE_ON
& _XT_OSC
Contador1 equ 0x0C
Contador2 equ 0x0D
Led equ 0
Pulsador equ 0

;**** Configuración de puertos ***


Reset org 0x00
goto Inicio
org 0x05 Fig. 18. El burro con movimiento en su cabeza debido a un servomotor.

Inicio El funcionamiento de este es bazado en interrupciones


bsf STATUS,RP0 externas, que por medio de dos pulsadores gira la cabeza 90
movlw b'00000' grados a la izquierda o a la derecha. Si se deja de pulsar,
movwf TRISA automaticamente la cabeza regresa a su lugar original, esto se
movlw b'00000000' puede lograr debido a que el servo motor trabaja en angulos.
movwf TRISB Según la longitud del impulso que recibe se define en que
bcf STATUS,RP0 direccion gira, y tambien se define un punto como referencia
movlw b'00000' original. Esto último es lo que nos permite que la cabeza regrese
movwf PORTA a su posicion original, que es la misma que la posicion original
movlw b'00000000' del servo motor, en otras palabras el angulo de giro es 0 grados
movwf PORTB en funcion al servo motor. En la Figura 19 se puede observar el
circuito topológico, que usa las señales de entrada de cada
bucle pulsador para mandar el resultado al motor MOTOR.
bsf PORTB,4
bcf PORTB,5
7

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

INICIO BTFSS PORTA,PUL1


GOTO AVANCE La disposicion de los circuitos se muestran en la Figura 22, el
cual se integró en otra parte del protoboard para incluir
ZER1 BSF PORTB,0 funcionamiento de ambos circuitos.
CALL TIMEOF_500US
BCF PORTB,0
CALL TIMEOF_15MS
CALL TIMEOF_4MS
CALL TIMEOF_500US

ZER2 BSF PORTB,1


CALL TIMEOF_500US
BCF PORTB,1
CALL TIMEOF_15MS
CALL TIMEOF_4MS
CALL TIMEOF_500US

ZER3 BSF PORTB,2


CALL TIMEOF_500US Fig. 22. Circuitos de microprocesador armado en Protoboard para animacion
BCF PORTB,2 de vaca y burro.
CALL TIMEOF_15MS
CALL TIMEOF_4MS Para la animacion de este animal se ha visto apropiado
CALL TIMEOF_500US manejar otro codigo, de esta manera se puede observar una
manera distinta de medir los tiempos de espera en las
AVANCE BTFSS PORTA,PUL2 interrupciones. Para que este codigo funcione, se ha
GOTO INICIO implementado una librería adicional llamada RETARDOS.INC,
la cual habilita de periodos de tiempo definidos. Esto agiliza la
NOV1 BSF PORTB,0 definicion de tiempo en comparacion con el codigo anterior, en
CALL TIMEOF_1MS el cual se sumaban tiempos obtenidos en etiquetas del mismo
CALL TIMEOF_500US codigo.
BCF PORTB,0 Por lo que el calculo del tiempo en espera puede ser
CALL TIMEOF_16MS aumentado cuando se vea por conveniente. El codigo de esta
CALL TIMEOF_2MS librería se presenta despues del codigo principal de movimiento
CALL TIMEOF_500US de la cabeza de la vaca. Este se integra en el microcontrolador
GOTO INICIO que permitirá el funcionamiento final. Se oberva en la Figura 23
END el circuito armado de los dos microcontroladores.

C. Movimiento de Cabeza Vaca


Este funcionamiento se baza en interrupciones externas del
ciurcito, las cuales tienen la misma base que el circuito anterior
del burro. En esta forma la vaca hace un movimiento de
reverencia, agachando la cabeza. Este movimiento necesita una
disposicion diferente del motor, el cual se colocó de manera
perpendicular a la vaca. En la figura 21 se puede apreciar la
figura de esta vaca con el motor integrado encima de sus patas
delanteras.

Fig. 23. Vista superior de circuito armado para dos PIC16F84A.


Fig. 21. Vaca con servomotor ubicado encima de la zona toraxica.
9

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

; RETARDOS de 0.5 hasta 20 segundos

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

[1] Enrique Palacios, Fernando Remiro y Lucas López, “Microcontrolador


PIC16F84, Desarrollo de Proyectos,” Editorial Alfaomega Ra-Ma, 3ra
Edición, ISBN 978-84-7897-917-2, pp. 169-186.

Você também pode gostar