Está en la página 1de 7

Nelson David Muñoz C. Politecnico CJIC http://mecatronica.jimdo.

com/ 1

TUTORIAL III – V2 (PaP)

OBJETIVOS

• Conocer el manejo de los motores paso a paso.


• Reforzar conceptos sobre el manejo de puertos I/O.
• Realizar lecturas de puertos y toma de decisiones basadas en estas.

INTRODUCCIÓN

Los motores paso a paso (PAP) son motores muy utilizados en labores donde
se requiere precisión más que torque. Su uso es muy extendido en unidades de
computadora (discos duros, disqueteras, CDrom, etc) y en aplicaciones
robóticas donde no se pretenda mover grandes cargas. El control de motores
PAP con microcontroladores es muy utilizado y fácil de implementar, para ello
solo se necesita generar una secuencia sencilla.

Los microcontroladores como tal no están diseñados para suministrar grandes


cantidades de potencia a cargas como motores, sus pines están diseñados
para entregar pequeñas cantidades de corriente ya que estos son interfaces a
circuitos digitales de baja potencia. Es por ello que se requiere una interfaz que
permita suministrar potencia al motor, en esta práctica usaremos el circuito
integrado ULN 2803 el cual permite manejar motores PAP de relativamente
bajo consumo, para motores más grandes es necesario el uso de transistores
discretos (Darlington, TIP).

Los motores PaP pueden ser Monofásicos o Bifásicos según su diseño y


conexión, de modo que pueden tener 5, 6 y 8 cables exteriores para su
conexión.

La razón de ser de tales opciones de cables exteriores es la siguiente: los PaP


tienen 4 bobinas internas de 2 terminales cada una. Son en total 8 cables, que
se pueden asociar de cierta manera para que se pueda dar una secuencia de
movimiento. Así, todos los cables B se pueden conectar a Tierra y se alimenta
con V+ por los terminales A de cada bobina. También se puede por ejemplo
conectar todos los terminales A a V+ y activar el movimiento conectando
secuencialmente los B a tierra.

Identificar los terminales A y B de un PaP es fácil, y depende del número de


Cables externos del motor:

8 cables implican que al multímetro una pareja de


cables mostrara una resistencia de 5 a 10Ω que
corresponde a una de 4 bobinas y cada uno de
los cables de esa pareja resistencia infinita con
las otras bobinas ya que no están conectadas.

Nelson David Muñoz C. Politecnico CJIC http://mecatronica.jimdo.com/ 1


Nelson David Muñoz C. Politecnico CJIC http://mecatronica.jimdo.com/ 2

6 cables implica que hay 2 cables que son


comunes cada uno a dos bobinas, como si se
conectaran por ejemplo 2 terminales A de dos
bobinas y dos terminales A de las otras dos
bobinas.

Entonces para ese par especial de cables al


multímetro, cada uno mostrará de 5 a 10Ω de
resistencia con otros dos cables que, para el
ejemplo, corresponden a los B de las dos
bobinas a los que están conectados.

5 cables se consigue al unir los cables Aa y Ab


mostrados en la figura para 6 cables. Esto
simplifica mas las cosas ya que conectando tal
terminal A a V+ ponemos los terminales B a tierra
para activar los pasos. O lo contrario, A a tierra y
activamos por líneas B con pulsos de V+.

Con el multímetro la resistencia entre A y el resto


de cables es diferente de 0, por lo que es de fácil
localización.

Una vez dicho esto se pueden enunciar las secuencias de pulsos que mueven
correctamente los motores PaP (Asumiendo que la activación se hace
enviando pulsos de V+ a los terminales B)

SECUENCIAS A SER GENERADAS:

En esta práctica manejaremos tres tipos de secuencia para el movimiento de


un motor PaP. La secuencia normal, la secuencia wave drive y la secuencia de
medio paso. Se busca que por medio de swiches en pines de entrada del
microcontrolador se controle cual de las secuencias va a ser ejecutada.

Las secuencias serian las siguientes, el motor se supone conectado de tal


forma que al accionar los siguientes pines se garantiza movimiento continuo en
una dirección.

Secuencia normal: Secuencia wave drive:


RD0 RD1 RD2 RD3 RD0 RD1 RD2 RD3
1 1 0 0 1 0 0 0
0 1 1 0 0 1 0 0
0 0 1 1 0 0 1 0
1 0 0 1 0 0 0 1
Y se repite. Y se repite.

Nelson David Muñoz C. Politecnico CJIC http://mecatronica.jimdo.com/ 2


Nelson David Muñoz C. Politecnico CJIC http://mecatronica.jimdo.com/ 3

Secuencia de medio paso:


RD0 RD1 RD2 RD3
1 0 0 0
1 1 0 0
0 1 0 0
0 1 1 0
0 0 1 0
0 0 1 1
0 0 0 1
1 0 0 1
Y se repite.

En los pines RA0 y RA1 estará conectado dos swiches de modo que se
seleccione la secuencia a ser ejecutada de la siguiente manera:

RA0 RA1 Secuencia


0 0 Ninguna (todos los pines en cero)
0 1 Normal
1 0 Wave Drive
1 1 Medio paso

Recuérdese introducir entre cada paso de la secuencia un retardo de


aproximadamente 100ms, este retardo será el responsable de controlar la
velocidad del motor, a mayor retardo el motor se moverá mas lentamente, un
retardo demasiado pequeño puede ocasionar que el motor no se mueva y
tienda a oscilar.

La generación de las secuencias se puede realizar fácilmente como se vio en la


primera parte de este tutorial, para la selección de la secuencia se pueden
utilizar la instrucción if .. else como se explica a continuación:

LA INSTRUCCIÓN IF … ELSE:

La instrucción if (si condicional) se utiliza para preguntar, su sintaxis es la


siguiente:

Sintaxis: if(condición)
{ ;Instrucciones a ejecutar
;solo si la condición es verdadera
}

También existe la opción de ejecutar la instrucción if acompañada de la


instrucción else (si no) de esta manera:

Sintaxis: if(condición)
{
; Instrucciones a ejecutar
; solo si la condición es verdadera

Nelson David Muñoz C. Politecnico CJIC http://mecatronica.jimdo.com/ 3


Nelson David Muñoz C. Politecnico CJIC http://mecatronica.jimdo.com/ 4

}
else
{
; Instrucciones a ejecutar
; solo si la condición es falsa
}

Si dentro del if o del else se requiere colocar solo una instrucción se pueden
obviar las llaves.

Para definir la condición se hace uso de los siguientes operadores relacionales


y de igualdad de C :

== Igualdad < Menor que <= Menor o igual


!= Diferente > Mayor que >= Mayor o igual

También es necesario comprender los operadores lógicos:

&& Y lógico & Y para expresiones binarias


|| O lógico | O para expresiones binarias
^ XOR para expresiones binarias

Ejemplos:

if (RB7==1)
{
RD0=1;
}
else
{
RD0=0;
}

En este fragmento de código se pregunta por el pin RB7 si está en 1 se pone


en uno el pin RD0, si es cero se pone en cero el pin RD0.

If ((RB7==1)&&(RB6==1))
{
RD0=1;
}
else
{
RD0=0;
}

En este código se pregunta si ambos (RB7 y RB6) son 1, en cuyo caso se


pondrá en uno RD0, en caso contrario (alguno de ellos es cero o ambos) RD0
se pondrá en cero.

Nelson David Muñoz C. Politecnico CJIC http://mecatronica.jimdo.com/ 4


Nelson David Muñoz C. Politecnico CJIC http://mecatronica.jimdo.com/ 5

CÓDIGO DE EJEMPLO:

A continuación se ilustra un código que realiza lo planteado, se da como


ejemplo pero se espera que cada persona desarrolle su propio código.

El diagrama de flujo (algoritmo) seria algo así, recuérdese, hay muchas formas
de resolver el mismo problema.

Inicio

Configurar puertos

Es
RA0=0??

Es Es
RA1=0?? RA1=0??

No Secuencia Secuencia Secuencia


secuencia Normal. Wave drive medio paso

#include <pic.h>
#include "delay.h"
#include "delay.c"

void main (void)


{
//Configuración de puertos
TRISD=0b11110000;
ADCON1=6; //Para poder usar PORTA
TRISA=0b11111111; //PORTA son entradas opcional
TRISB=0b00111111; //RB7-RB6 salidas
//Ciclo infinito con el programa
while(1)
{
//Selección de la secuencia a ejecutar

Nelson David Muñoz C. Politecnico CJIC http://mecatronica.jimdo.com/ 5


Nelson David Muñoz C. Politecnico CJIC http://mecatronica.jimdo.com/ 6

if((RA0==0))
{
if(RA1==0) //00, no hay secuencia
{PORTB=0;//apaga los leds
PORTD=0;
}
else //01, secuencia normal
{ PORTB=0b01000000; //enciende led por el pin RB6
PORTD=0b00001100;
DelayMs(20);
PORTD=0b00000110;
DelayMs(20);
PORTD=0b00000011;
DelayMs(20);
PORTD=0b00001001;
DelayMs(20);
}
}
else //Si no, osea RA0=1;
{ if(RA1==0) //10, secuencia wave drive
{PORTB=0b10000000;//enciende led por el pin RB7
PORTD=0b00001000;
DelayMs(80);
PORTD=0b00000100;
DelayMs(80);
PORTD=0b00000010;
DelayMs(80);
PORTD=0b00000001;
DelayMs(80);
}
else //11, secuencia medio paso
{ PORTB=0b11000000;//enciende led de pines RB6 y RB7
PORTD=0b00001000;
DelayMs(150);
PORTD=0b00001100;
DelayMs(150);
PORTD=0b00000100;
DelayMs(150);
PORTD=0b00000110;
DelayMs(150);
PORTD=0b00000010;
DelayMs(150);
PORTD=0b00000011;
DelayMs(150);
PORTD=0b00000001;
DelayMs(150);
PORTD=0b00001001;
DelayMs(150);
}
}
}
}

NOTA IMPORTANTE: Cuando se trabaja con motores suelen aparecer


problemas de interferencia en la fuente de alimentación, estos problemas
debido a la conmutación de los motores pueden causar el reseteo del
microcontrolador.

Nelson David Muñoz C. Politecnico CJIC http://mecatronica.jimdo.com/ 6


Nelson David Muñoz C. Politecnico CJIC http://mecatronica.jimdo.com/ 7

Para solucionar esto se deben colocar condensadores de bypass (entre Vcc y


GND) bastante grandes (100uF en adelante). Así no se esté trabajando con
motores es recomendable conectar condensadores de bypass tanto cerámicos
como electrolíticos cerca de cada circuito integrado (incluyendo obviamente los
microcontroladores). Además, a la hora de diseñar circuitos impresos se debe
tener en cuenta ciertas normas para evitar la interferencia como son: planos de
tierra, desacople de tierras, tamaño de las líneas de alimentación, etc.

ESQUEMA DE CONEXIONES

Nelson David Muñoz C. Politecnico CJIC http://mecatronica.jimdo.com/ 7

También podría gustarte