Vous êtes sur la page 1sur 18

Control de un motor a pasos bipolar, PIC18F4550 ASM

Introduccin
En varios sistemas electrnicos nos encontramos con una parte mecnica que
transmite algn movimiento por palancas, levas, poleas, ejes de rotacin, entre
otras, todas ellas obtienen, en primera instancia, el movimiento de algn motor.
Existen diferentes tipos de motores, sin embargo para sistemas como: DVDs,
Grabadoras, Quemadores de discos, Impresoras, etc; se necesita un mejor control
de las vueltas que realiza el motor, de esta manera los motores a pasos resultan ser
los ms convenientes.
De igual manera disponemos de motores a pasos unipolares o bipolares, cada uno
de ellos tiene una combinacin a sus entradas que determina su posicin. Para
controlar la secuencia de estas combinaciones podemos utilizar un PIC.

Objetivo

Manipular un motor a pasos bipolar en dos direcciones


mediante dos botones.

Objetivos especficos

Identificar las caractersticas del PIC18F4550.


Manejar el software MPLAB para crear un proyecto y simular su

funcionamiento.
Realizar un programa en lenguaje ensamblador para controlar el sentido de

giro de un motor a pasos bipolar mediante dos botones pulsadores; un pulsador


ubicado en RD0 controla el sentido de giro hacia la derecha, mientras que el
otro ubicado en RD1 lo hace hacia la izquierda. El motor slo avanza un paso
cada vez que se presiona uno de los dos botones, si se presionan ambos o no se
presiona ninguno el motor no deber avanzar.
Realizar la simulacin del cdigo en MPLAB.
Armar el circuito en ISIS Proteus y simularlo.
Programar el microcontrolador mediante el software Pickit2.
Armar el circuito fsico y realizar pruebas

Marco Terico

En el siguiente grfico se muestran los puertos disponibles en el PIC18F4550, sus


ubicaciones y las posibles funciones de cada pin.

A continuacin se muestra el diagrama de Bloques de dicho


microcontrolador.

Y por ltimo una tabla con funciones para su programacin.

Hemos mencionado que un micro controlador puede ser considerado como una
computadora, pues posee una ALU (Unidad de Aritmtica y Lgica), registros,
buses y unidad de control, es decir tiene una CPU (Unidad Central de
Procesamiento).
La mayora de los dispositivos de lgica secuencial, entre ellos los CPU, son de
naturaleza sncrona. Es decir, estn diseados y operan en funcin de una seal de
sincronizacin. Esta seal, conocida como seal de reloj, usualmente toma la forma
de una onda cuadrada peridica. Calculando el tiempo mximo en que las seales
elctricas pueden moverse en las varias bifurcaciones de los muchos circuitos de un
CPU, los diseadores pueden seleccionar un perodo apropiado para la seal de
reloj.
Para el correcto funcionamiento del micro controlador debemos definir la
frecuencia del oscilador pues determinar los ciclos de instruccin; podemos
utilizar un oscilador interno o externo, sin embargo es recomendable utilizar un
oscilador de cristal externo para evitar un mal funcionamiento frente a las
variaciones de temperatura dentro del micro controlador.
A continuacin mostramos la tabla del registro de configuracin del oscilador

Podemos ver que por default tiene cargado el valor: 0100 X000 que de acuerdo con
los valores de la tabla anterior corresponderan a la siguiente configuracin:

0 | El dispositivo entra en reposo/bajo consumo cuando se ejecuta la


instruccin Sleep.
100 | Frecuencia del oscilador interno: 1MHz
X | Depende del estado del bit IESO
0 | INTOSC La frecuencia del Oscilador Interno no es estable
00 | Oscilador primario, externo

Aunque el microcontrolador est configurado por defecto con 1MHz es necesario


especificarlo en la palabra de configuracin.
Para estas prcticas se utilizar una frecuencia de 4MHz y, como no es necesario
precisin en el tiempo, no pondremos ningn oscilador externo, de esta manera el
valor a cargar ser el siguiente:

0 110 0 0 00 => 0110 0000 => 0x60

Motor pas a paso bipolar


Un motor a pasos es capaz de moverse ciertos grados cada vez que se le aplique un
pulso y se mueva un paso, este paso puede variar desde 90 hasta 1.8.
Estos motores poseen la ventaja de poder quedar enclavados en una sla posicin o
bien totalmente libres; si una o ms de sus bobinas esta energizada el motor
permanecer en la posicin correspondiente, o bien, si no hay flujo de corriente en
las bobinas el eje del motor estar libre.
Estos motores estn constituidos normalmente por un rotor sobre el que van
aplicados distintos imanes permanentes y por un cierto nmero de bobinas
excitadoras en su estator.
Para controlar un motor a pasos es necesario conocer su funcionamiento, disear la
etapa de potencia (transistores, diodos) y un circuito digital para la etapa de control
(Circuitos TTL, Microcontrolador PIC).

Existen 2 tipos de motores a pasos:


1.
Unipolares
2.
Bipolares
Ambos son controlados mediante una secuencia de activacin especfica, pero se
diferencian en el modo en que estn conectadas sus bobinas. Debido a que se usar
un motor a pasos bipolar se caracterizar a continuacin.

Motor Bipolar
En este tipo de motores las bobinas del estator se conectar en serie formando
solamente dos grupos, que se montan sobre dos estatores. De acuerdo a la (Figura
5) se observa que de este motor salen cuatro hilos que se conectan al circuito de
control que realiza la funcin de cuatro interruptores electrnicos dobles, que nos
permiten variar la polaridad de alimentacn de las bobinas.
Con la activacin y desactivacin adecuada de dichos interruptores dobles,
podemos obtener las secuencias adecuadas para que el motor pueda girar en un
sentido o en otro.

Secuencia para manejar motores paso a paso Bipolares


Los motores a pasos Bipolares generalmente tienen 4 cables de salida. Se
caracterizan por tener dos bobinas independientes que al ser excitadas posicionan
el eje del motor en cierta posicin, estos motores necesitan la inversin de la
corriente que circula en sus bobinas en una secuencia determinada; Cada inversin
de la polaridad provoca el movimiento del eje en un paso, cuyo sentido de giro est
determinado por la secuencia siguiente.

Motor Unipolar
Estos motores suelen tener 6 o 7 cables de salida, dependiendo de sus conexiones
internas. Este tipo se caracteriza por ser ms simple de controlar. En la (Figura 7)
podemos apreciar un ejemplo de conexionado para controlar un motor a pasos
unipolar mediante el uso de un ULN2803, el cual es un array de 8 transistores tipo
darlington capaz de manejar cargas de hasta 500mA. Las entradas de activacin (A,
B, C y D) pueden ser activadas por un micro controlador.

Secuencia para manejar motores paso a paso


Unipolares
Existen tres secuencias posibles para este tipo de motores, todas las secuencias
comienzan nuevamente por el paso 1 una vez alcanza el paso final (4 u 8).
Secuencia normal: La descrita en la tabla de la.
Secuencia del tipo Wave drive: Slo activa una bobina a la vez.
Secuencia del tipo medio paso: Activa una bobina y despus dos.

Para invertir el sentido de giro, simplemente se debe ejecutar las secuencias en


modo inverso.

Clculos
Dado que se configur el oscilador interno del microcontrolador a 4MHz, se tiene:

Ciclo de reloj:

Ciclo de instruccin:

Para limitar la corriente del pin de Reset y el botn pulsador a 0.5mA, utilizar una
resistencia de 10k:

Se emplea un retardo de 200 ms para verificar la secuencia de pulsos de los

botones, tomando en cuenta que es un tiempo considerable para pulsar y soltar


un botn. Por lo tanto se crean 2 variables quedando definidas de la siguiente
manera:
Contar 1: 256
Contar 2: 256
El contador 1 se encuentra dentro del ciclo de conteo del contador 2. Tomando en
cuenta que se necesitan 3 ciclos de instruccin 3 us para la ejecucin de cada
sustraccin al contador 1. La frmula queda como sigue:

En el archivo retardo.inc escribiremos el siguiente cdigo:


1: #define Conta
2:cblock
3: Conta1

4: Conta2
5: conta3
6: endc
7:
8: retardo200ms
9: clrf Conta1
10: clrf Conta1
11: Repeat
12: decfsz Conta1, F

;Salta cuando Conta1 llega a 0

13: bra Repeat

;Salta a Repeat para Decrementar Conta1

14:
15: decfsz Conta2, F
16:
17:

bra Repeat

;Salta cuando Conta2 llega a 0


;Salta a Repeat

18: Return

Se guardan los cambios y se continua editando el archivo


fuente como sigue:
; ********************************************************
; Desarrollo de Microcontroladores y DSPS
; Control de un Motor a pasos Bipolar
; Prctica 3
;
; Fecha: 15/06/2012
; Notas: Control de un motor a pasos bipolar mediante
;
dos botones que controlan su direccin
;
; Autor: ek
; ************************************************************
LIST P = 18F4550
INCLUDE <P18F4550.INC>
;************************************************************
CONFIG FOSC = HS ;INTOSC_XT no disponible para simulacin, usar HS
CONFIG PWRT = ON
CONFIG BOR = OFF
CONFIG WDT = OFF
CONFIG MCLRE = ON
CONFIG PBADEN = OFF
CONFIG LVP = OFF
CONFIG DEBUG = OFF
CONFIG XINST = OFF
; CODE ******************************************************
cblock
SecuenC ;Indice de la Secuencia
endc
ORG 0x00

;Iniciar el programa en el registro 0x00

movlw 0x62
;Palabra de congiguracin del OSC Interno
movwf OSCCON ;Configurar OSCC2ON <- W
clrf PORTD
clrf PORTB

;Borra posibles valores en PORTD


;Borra posibles valores en PORTB

movlw 0x03
;Configurar RD0 y RD1 como entradas
movwf TRISD
;TRISD <- W
clrf TRISB
;Configurar PORTD como salida
clrf SecuenC ;Estado de Posicin a 0x00

INICIO
movf SecuenC, W
call MotorPosition
movwf PORTB
call Retardo200ms
ButtonRight
;Verificar Botn Derecho
btfss PORTD, 0 ;Verificar RB0 == 1, R == ON
bra ButtonLeft ;RB0 == 0, R == OFF
btfsc PORTD, 1 ;Verificar RB1 == 0, L == OFF
bra INICIO
;Ambos estn Presionados
bra MoveRight
;Entradas RB0 == 1, RB1 == 0
ButtonLeft
;Verificar Botn Izquierdo
btfss PORTD, 1 ;R == OFF ahora Verificar RB1 == 0, L == ON
bra INICIO
;Ambos estn Sueltos
bra MoveLeft
MoveRight
movf SecuenC,
xorlw 0x06
btfss STATUS,
bra Continue1
clrf SecuenC
bra INICIO
Continue1
incf SecuenC,
incf SecuenC,
bra INICIO
MoveLeft
movf SecuenC,
xorlw 0x00
btfss STATUS,
bra Continue2
movlw 0x06
movwf SecuenC
bra INICIO
Continue2
decf SecuenC,
decf SecuenC,
bra INICIO

;Aumentar indice para la tabla


W
;Verificar el indice Max
Z ;Salta si Z == 1, SecuenC = Indice Max

F
F

W ;SecuenC -> W
;Comprobar si W == 0
Z ;Salta si Z == 1, SecuenC = Indice Min
;Secuence =/= 0
;Rotar hasta Indice Max
;Asignar Indice Max -> SecuenC

F
F

MotorPosition
addwf PCL, F
retlw 0x0A
;0000 1010
retlw 0x09
;0000 1001
retlw 0x05
;0000 0101
retlw 0x06
;0000 0110

include "Retardo.inc"

;Agregar librera Retardo.inc

END ;Fin de Programa

Simulacin en proteus
Se construy en ISIS Proteus el diagrama elctrico de la siguiente manera y se
verific que el motor responda como se esperaba al presionar los pulsadores que
controlan el sentido de giro del mismo. El motor siempre se mueve slo un paso si
se presiona slo una vez, el sentido depende del botn presionado.
Si el botn se mantiene presionado el motor seguir girando en el sentido
correspondiente hasta que se suelte, y si ambos se encuentran en el mismo estado
el motor no har nada.

Control de un motor a pasos bipolar, PIC18F4550 ASM


Preciado Lpez Kevin Ulises
Profesora: Lluvia Cristina Cabrera Valdez
Grupo: 508
#Kevinsinguapenonin;)
#Saludos profe jajaja n.n
#saquelaspizas8)
#esbroma(8