Sie sind auf Seite 1von 8

D

REPORTE PRACTICA 4
LABORATORIO DE M&M

FACULTAD DE ESTUDIOS SUPERIORES ARAGON


UNIVERSIDAD NACIONAL AUTONOMA DE MEXICO

REYES RAMIREZ EDGAR A.


Descripción
En esta práctica se presentará al alumno el análisis y diseño del control de velocidad y
sentido de un motor a pasos.
Objetivos
El objetivo de esta práctica es el análisis de un algoritmo para diseñar ciclos anidados
que nos permitirán generar subrutinas de retardo de una duración determinada.
Material y equipo de laboratorio
*Protoboard *PIC16f887 *Dipswitch de 8 interruptores *8 resistencias de 1K
*Circuito L293D *Un motor a pasos unipolar *Cable calibre 22 o 24 de distinto color
Introducción

Un motor paso a paso es un dispositivo electromecánico que convierte una serie de


pulsos eléctricos en desplazamientos angulares, lo que significa que es capaz de girar una
cantidad de grados (paso o medio paso) dependiendo de sus entradas de control.

Los motores paso a paso son ideales para la construcción de mecanismos en donde se
requieren movimientos muy precisos. La característica principal de estos motores es el
hecho de poder moverlos un paso a la vez por cada pulso que se le aplique. Este paso
puede variar desde 90° hasta pequeños movimientos de 1.8°, Es por eso que ese tipo de
motores son muy utilizados, ya que pueden moverse a deseo del usuario según la
secuencia que se les indique a través de un microcontrolador.

Subrutina
Cuando se crea un programa, partiendo del modelo de trabajo Top-down, éste
se divide en secciones más pequeñas, de tal forma que pueda quedar modular, y
fácilmente descrito para el usuario. Cada una de las tareas que se vayan a realizar se
pueden implementar en rutinas pequeñas o subrutinas, que luego se pueden usar
(llamar, call) desde el programa principal para realizar toda la aplicación. Se
puede llamar a subrutinas desde el programa principal, o estando en una subrutina, con
lo cual se realiza un anidamiento de subrutinas anidamiento de subrutinas.
SALTOS EN FUNCIÓN DE UN BIT SALTOS EN FUNCIÓN DE UN BIT
Si la prueba (test) de un bit en un registro es verdadera, se realiza el salto. La prueba
sobre el bit puede ser: clear (0) o set (1); hay dos instrucciones, una para cada opción
“btfsc…” y “btfss…”.
Saltos en función de un registro saltos en función de un registro
Estos saltos ocurren porque el registro llega al valor de cero, por decremento
o incremento del registro con las instrucciones “decfsz...” e “incfsz ...”.
decfsz f,d (decrement f, skip if zero) :Disminuye en una unidad el contenido del
registro (f), almacena el resultado según (d).
incfsz f,d (increment f, skip if zero) :Incrementa en una unidad el contenido del
registro (f), almacena el resultado según (d).
Directivas
Las directivas son comandos especiales que tiene el programa MPLAB
MPLABMPLAB MPLAB para ayudar al ensamble y la compilación, tales como:
definir el microcontrolador, asignar los bits de configuración, definir bloques de
memoria RAM RAMRAM RAM y definir datos de tablas tablastablas tablas,
entre otros.
Algunos ejemplos de directivas empleadas en un programa son:
• Definición de constantes:
#define _write_ctrl b'10100000' ; byte de control para escritura
#define _read_ctrl b'10100001' ; byte de control para lectura

A menudo es necesario que nuestros programas usen demoras o retardos, por


ejemplo, si deseamos hacer parpadear un led cada segundo evidentemente
necesitaremos usar un retardo de 1s. Los retardos son prácticamente omnipresentes
en nuestros programas. Y hay dos formas de hacerlos:
-Por software
-Por TMR0
Retardo por Software
Los retardos por Software consisten en que el pic se quede “enciclado” durante un
tiempo. Es
decir, es necesario usar uno o varios contadores que deberán ser decrementados,
cuando
dichos contadores lleguen a 0 habrá concluido el retardo.
El diagrama anterior como a una variable CONTA_1
se le asigna un numero n, posteriormente esta variable se
decrementa y se pregunta si ha llegado a 0, si no ha llegado a
0 entonces se vuelve a decrementar, y asi sucesivamente hasta
que llegue a 0 en cuyo caso es el FIN del retardo. El
programa se quedo “perdiendo el tiempo” encilado
dando vueltas nveces.
Veamos la traducción a ensamblador, para esto
consideremos que n=100.
Inicio_retardo ;etiqueta para dar nombre al retardo
movlw d’100’ ; W 100
movwf CONTA_1 ; CONTA_1 W
decfsz CONTA_1,F ; CONTA_1 CONTA_1 -1 y salta si ya llego a 0
goto $-.1 ;NO ha llegado a 0, entonces vuelve a decrementar
------ -------- ;SI llego a 0 entonces FIN del retardo,sigue el programa
En este punto se explicó el concepto de un retardo por software, sin embargo surge
una duda obvia e importante: ¿Cómo calculo eltiempo que durará un
retardo?,observemos esta parte del código ensamblador:
decfsz CONTA_1,F ; CONTA_1 CONTA_1 -1 y salta si ya llego a 0
goto $-.1 ;NO ha llegado a 0, entonces vuelve a decrementar
Nótese que esta parte es la que se ejecutanveces hasta que CONTA_1 llega a 0, asi que
solo debemos saber cuánto tardan en ejecutarse estas dos instrucciones, luego lo
multiplicamos por n y el resultado es el tiempo que dura el retardo. La
instrucción decfsz dura 1us y la instrucción goto dura 2us, asi que entre ambas
duran 3uS, asi pues el retardo durará:
Retardo = 3uS x n si n= 100 entonces Retardo = 300uS
Desarrollo
De la manera expuesta se procedió con la codificación del programa, como primer
parte configuramos el bito de encendido y/o apagado:
BTFSS PORTB,7 APAGADO
MOVLW B'00000000'
GOTO APAGADO MOVWF PORTD
GOTO ENCENDIDO GOTO MAIN

Donde el bit correspondiente alENCENDIDO


encendido o apagado es el bit 7 el cual se estará
BTFSS PORTB,6
monitoreando en cada momento. El bit encargado
GOTO GIROI del control de giro es el bit 6 que al
GOTO GIRODconstantemente.
igual que el anterior estaremos monitoreando
GIROI MOVWF VARPORTB BTFSS PORTB,7
BTFSS PORTB,7 MOVF VARPORTB,F
GOTO MAIN GOTO MAIN
BTFSS STATUS,Z GOTO SALTO4
GOTO SALTO1 GOTO DOS
GOTO GIROI SALTO4
SALTO1 DOS
BTFSC PORTB,6 BTFSC PORTB,6
MOVF PORTB,W
GOTO GIROD ANDLW B'00001111'
GOTO GIROD
MOVLW B'00000001' ADDLW B'00000001' MOVLW B'00001000'
BTFSC PORTB,6 MOVWF VARPORTB BTFSC PORTB,6
GOTO GIROD CALL RETARDO GOTO GIROD
MOVWF PORTD
MOVWF PORTD
MOVF PORTB,W BTFSS PORTB,7 MOVF PORTB,W
ANDLW B'00001111' GOTO MAIN ANDLW B'00001111'
MOVWF VARPORTB GOTO SALTO3 MOVWF VARPORTB
MOVF VARPORTB,F
BTFSS STATUS,Z MOVF VARPORTB,F
SALTO3 BTFSS STATUS,Z
GOTO UNO BTFSC PORTB,6
GOTO GIROI GOTO CUATRO
GOTO GIROD GOTO GIROI
UNO MOVLW B'00000100'
MOVF PORTB,W CUATRO
BTFSC PORTB,6
ANDLW B'00001111' GOTO GIROD
MOVF PORTB,W
ADDLW B'00000001' MOVWF PORTD ANDLW B'00001111'
MOVWF VARPORTB ADDLW B'00000001'
CALL RETARDO MOVF PORTB,W MOVWF VARPORTB
ANDLW B'00001111' CALL RETARDO
MOVWF VARPORTB GOTO MAIN
BTFSS PORTB,7 MOVF VARPORTB,F
GOTO MAIN BTFSS STATUS,Z
GOTO SALTO2 GOTO TRES
SALTO2
GOTO GIROI
BTFSC PORTB,6
GOTO GIROD TRES
MOVLW B'00000010' MOVF PORTB,W
BTFSC PORTB,6 ANDLW B'00001111'
GOTO GIROD ADDLW B'00000001'
MOVWF PORTD MOVWF VARPORTB
MOVF PORTB,W CALL RETARDO
ANDLW B'00001111'
En esta parte de código se muestra el proceso del corrimiento de cada bit minitoreando
en cada proceso el bit de sentido y el bit de giro además del bit de encendido.El
mismo proceso re realizo para cuando gira de manera opuesta donde el único cambio
existente fue el corrimiento de los bits de velocidad

Para retardo usamos una subrrutina con un bucle anidado para generar retardos
aproximados de 1 seg y decrementicos a partir de este

RETARDO

P3 MOVLW D'100'
MOVWF CONTA2
P2 MOVLW ’D250’
MOVWF CONTA1

P1 DECFSZ CONTA1,F
GOTO P1
DECFSZ CONTA2,F
GOTO P2
DECFSZ VARPORTB,F
GOTO P3

RETURN

END
El la subrutina se observan 3 variables donde una de las importantes es la variable
“VARPORTB” la cual toma el valor de los 4 bit de velocidad

Algunas simulaciones en proteus

Debido a una tarea previamente realizada en la clase de teoría que consistía en un


contador mediante interrupciones en los flancos de bajada usando el atmega329p, se
decidió implementarlo como control de velocidades para el motor y así evitar las
transiciones de una velocidad a otra que generaba el uso de un dipswich .

Una vez comprobado el correcto funcionamiento en el simulador se procedió a la


implementación en el circuito real ;
Conclusión: Esta práctica fue muy interesante ya que una pare fundamental para entender la
velocidad de trabajo del microprocesador, ya que el manejo de intervalos de tiempo es de suma
importancia en los procesos de control de algunos equipos.

Además de poder usar una palabra de 6 bits para controlar funciones totalmente diferentes entre
las más importantes 16 niveles de velocidad en un bus de 4bits que controlaran directamente al
motor

Das könnte Ihnen auch gefallen