Beruflich Dokumente
Kultur Dokumente
CONTROL DE POSICIN
MATERIAS:
SENSORES
INGENIERA DE CONTROL II
PRESENTA:
AGUILAR GALLEGOS ANDRS
CRUZ MORENO ENRIQUE MARCELINO
LPEZ CASTAEDA ADRIANA
PEALOZA VILLALFAN EDUARDO
SOLS CAMACHO AARN
SOTO SNCHEZ MARIO ANDRS
VALDOVINOS CAAS VCTOR HUGO
VILLANUEVA CALDERN JUAN MANUEL
PROFESOR:
ING. ESCAMILLA SOZA JORGE
Av. Melchor Ocampo # 2555, Col. Cuarto Sector, C.P. 60950, Cd. Lzaro Crdenas,
Michoacn,
Telfono (753) 53 7 19 77, 53 2 10 40, 53 7 53 91, 53 7 53 92 Direccin Ext. 109 ,
Fax. 108
e-mail: direccion@itlac.mx Internet: www.itlazarocardenas.edu.mx.
INDICE
INTRODUCCIN.............................................................................................................3
OBJETIVO GENERAL.....................................................................................................4
OBJETIVOS ESPECFICOS............................................................................................4
MARCO TERICO.......................................................................................................... 5
MOTOR PASO A PASO................................................................................................5
ESTRUCTURA FSICA Y CARACTERSTICAS.......................................................5
CONEXIONES.........................................................................................................7
PROTOBOARD............................................................................................................ 9
ARDUINO..................................................................................................................... 9
POTENCIOMETRO....................................................................................................10
JOYSTICK.................................................................................................................. 11
MDULO BLUETOOTH HC-05..................................................................................11
FUNCIONAMIENTO DE LA IMPRESIN 3D.............................................................13
TECNOLOGAS DE LA IMPRESIN 3D................................................................14
MODELADO POR DEPOSICIN FUNDIDA (FDM)...............................................15
DESARROLLO............................................................................................................... 16
DISEO DE PIEZAS MECNICAS 3D......................................................................16
CONTROL DE POSICIN POR MEDIO DE JOYSTICK............................................17
CONTROL DE POSICIN POR MEDIO DE POTENCIMETRO..............................19
APP INVENTOR.....................................................................................................21
CONCLUSIN............................................................................................................... 24
PROGRAMA.................................................................................................................. 25
PROGRAMA CONTROL DE POSICIN POR MEDIO DE JOYSTICK......................25
PROGRAMA CONTROL DE POSICIN POR MEDIO DE POTENCIMETRO........30
PLANOS........................................................................................................................ 37
INTRODUCCIN
En el Campo del control hay un mercado muy amplio y creciente da a da, las
aplicaciones tienden a ser innumerables.
Debido a que las pequeas, medianas y grandes industrias requieren sistemas de
produccin ms eficientes, surge la necesidad de implementar sistemas de
control.
3
OBJETIVO GENERAL
OBJETIVOS ESPECFICOS
4
MARCO TERICO
La ventaja fundamental que poseen los motores PAP con respecto a otros tipos
de motores es que no necesitan en principio un sistema de realimentacin para
controlar la velocidad o posicin del motor. Los driver de los motores paso a
paso tienen bsicamente 2 entradas; una de direccin (DIR) con la que le
indicamos en qu sentido queremos que gire el motor y otra de reloj (CLK) por la
cual introduciremos un pulso por cada paso que queramos que del motor, esto
nos permite controlar de una forma muy sencilla la posicin y la velocidad del
motor ya que si introducimos por la entrada de CLK, una seal cuadrada de
200Hz y estamos controlando un motor de 200 pasos/ revolucin ( 1,8 ), el
motor girar a 1 vuelta por segundo. Del mismo modo si en vez de controlar
velocidad queremos controlar posicin, si al mismo motor, le introducimos por el
driver 200 pulsos sabremos que ha girado una vuelta. De todas formas hay que
tener muy en cuenta que los motores PAP son muy sensibles a las variaciones
de carga y que una variacin fuerte en el par que tiene que realizar el motor,
puede producir que este pierda el paso y por tanto que, al no tener
realimentacin, pierda la posicin real del motor (esta es la razn por la que al
principio de esta prrafo puse en principio. Si un fallo en la posicin del motor
puede tener consecuencias graves no tendremos ms remedio que poner
realimentacin o irnos a un sistema de posicionamiento implementado con otro
tipo de motor).
5
figura inferior podemos ver, en la vista frontal, que el estator est formado de 8
polos magnticos con 5 dientes cada uno y una bobina en cada uno de esos
polos. En la vista lateral podemos observar que el rotor est formado por un
imn permanente que posee una tapa en cada extremo con 50 dientes cada una
(no se representan los dientes en el dibujo), estando una de estas tapas
polarizada como N y la otra como S, adems el tamao de los dientes es el
mismo que el del estator pero estn desfasados de tal manera que el diente en
una de las tapas coincide en el otro extremo con un hueco. Los dientes del
estator tienen todos tamaos similares pero estn desfasados 1,8 entre los
polos.
Angulo de paso (Step angle): Nos dice el ngulo que gira el eje del motor en
cada paso. Los valores ms habituales son 0,9,1,8, 7,5 y 15.
Precisin del paso (Step angle accuracy): Nos indica el porcentaje de error
entre la posicin real del eje y la posicin terica que tendra que tener.
Par de detencin (Detent torque): Los motor es PAP genera, sin alimentacin,
un par debido al imn permanente del motor que es mximo entre dos pasos.
El valor dado es el valor mximo de este.
Par de mantenimiento: Este nos indica el par mximo que podremos obtener
del motor. El par depende de su construccin interna, la forma de los dientes
6
y de la intensidad de campo del imn permanente. Aproximadamente la
grfica de la funcin que relaciona el par con el ngulo girado se parece a
una funcin seno (figura 2), en donde el pico de la funcin, punto donde la
intensidad es igual a la nominal, sera el par de mantenimiento. La grafica ha
de entenderse como que el motor est en una posicin estable cuando se
encuentra en el cruce de la funcin del par con el eje X (por ejemplo en el
origen), si intentamos forzar el eje a desplazarse en un sentido u otro el par
del motor se opondr a este movimiento haciendo que el eje vuelva a su
posicin de reposo.
El motor posee un par de friccin interno que se opone al movimiento del motor
que al sumarse al par de la carga externa generan un par (ver lnea punteada de
figura 2) que al restarse al par del motor produce unas zonas muertas en las que
el par es nulo (figura 3). La anchura de estas zonas determina el error de
posicin del paso y la precisin en la posicin del eje de salida, adems de limita
el ngulo ms pequeo de giro del motor en modo microstepping.
CONEXIONES
Los motores PAP disponen internamente de 2 bobinas A y B que a su vez estn
divididas en otras dos bobinas. Segn el cableado de estas bobinas
externamente tenemos 6 u 8 hilos. En las figuras siguientes se representa como
se conectan las bobinas segn su configuracin y nmero de hilos:
7
FIGURA 4.- Distintas conexiones para motor paso a paso.
La mayora de los PAP llevan 8 hilos ya que, como se aprecia en las figuras
superiores, permite las tres configuraciones de bobinas posibles.
1. Unipolar: En esta configuracin cada una de las dos bobinas que forman
las bobinas A y B son excitadas independientemente, de tal forma que si
queremos magnetizar el polo A como S meteremos en A corriente positiva
y dejaremos A sin conectar y si lo queremos como N meteremos corriente
en A y dejaremos A sin conectar. A este tipo de conexin se le suele
llamar 4 fases-unipolar. En esta forma de conexin solo una de las
bobinas del par, se activa cada vez, con lo que las prdidas en forma de
calor disminuyen y podemos llevar la intensidad nominal al mximo
permitido, que es valor que se da en las especificaciones del fabricante.
Debido a que solo se activan dos bobinas de N espiras, el flujo total a
travs del motor ser aproximadamente.
2. Bipolar Serie: En esta configuracin, las dos bobinas que forman las
bobinas A y B se conectan en serie pudiendo alimentar cada hilo de tres
formas diferentes; a Vcc, a GND o desconectada, esto se realiza con dos
transistores en configuracin de medio puente. Debido a que las dos
8
bobinas llevan corriente, la disipacin de corriente es mayor y por tanto
tenemos que reducir la intensidad mxima que circula por la bobina.
Siendo I la intensidad nominal unipolar, la intensidad para conexin
bipolar ser:
PROTOBOARD
ARDUINO
9
cargador de arranque (bootloader) que es ejecutado en la placa.4 El
microcontrolador de la placa se programa mediante un computador.
POTENCIOMETRO
10
FIGURA 8.- Simbologa y esquema del Potencimetro.
JOYSTICK
Consta de una palanca con una rtula en un extremo, que permite efectuar
rotaciones. La orientacin de la palanca es detectada por dos medidores
angulares perpendiculares, siendo enviada esta informacin al ordenador. Un
programa adecuado convertir los ngulos de orientacin de la palanca en
desplazamientos del cursor sobre la misma.
El mdulo HC-05 tiene dos modos de funcionar Maestro y Esclavo. Esto significa
que no solo trabaja en la funcin esclavo que sera esperando ordenes que le
puedes enviar desde un PC o desde un Smartphone, como es este el caso, sino
que tambin puede actuar como maestro y ser l quien se conecta a otro
dispositivo Bluetooth, pudiendo as crear una conexin bidireccional punto a
punto entre dos mdulos permitiendo transferir y recibir informacin.
11
FIGURA 9.- Mdulo Bluetooth HC-05.
KEY: Este pin se puede conectar a cualquier otro pin da la placa Arduino,
siempre y cuando este tenga salida digital. El pin KEY se debe activar a nivel
alto cuando queremos entrar en el modo de configuracin del mdulo
Bluetooth, una vez que hayamos entrado en este modo podremos cambiar
sus parmetros con los comandos AT que luego explicaremos.
RXD: Pin por donde se recibirn los datos que nos lleguen desde la placa
Arduino. Este pin tiene que ir preciso cableado hasta el pin 1 TX de la placa
Arduino que es por donde se trasmiten todos los datos que van por el puerto
Serie o, en el caso de haber creado un puerto Serie virtual con otros dos
pines de la placa, tendra que ir al que hayamos escogido como pin de TX.
TXD: Pin por donde se trasmitirn datos desde el mdulo Bluetooth hacia la
placa Arduino. Este pin tiene que ir preciso conectado al pin 0 RX de Arduino
o, en el caso de haber creado un puerto Serie virtual con otros dos pines de
la placa Arduino, al pin que hayamos escogido como pin de RX.
12
FUNCIONAMIENTO DE LA IMPRESIN 3D
13
TECNOLOGAS DE LA IMPRESIN 3D
Existe una gran diversidad de mtodos disponibles para la impresin 3D. Sus
principales diferencias se encuentran en la forma en la que se usan las
diferentes capas para crear piezas. Algunos mtodos como el modelado por
deposicin fundida (FDM) o el sinterizado selectivo por lser (SLS) utilizan
fundido o ablandamiento del material para producir las capas, mientras que otros
depositan materiales lquidos que son tratados con diferentes tecnologas.
Cada mtodo tiene sus propias ventajas e inconvenientes, por lo que algunas
compaas ofrecen alternativas entre polvos y polmeros como materias
primeras, segn cules sean las necesidades del cliente. Generalmente las
consideraciones principales a tener en cuenta a la hora de elegir una impresora
son: la velocidad, el coste del prototipo impreso, el coste de la mquina, la
eleccin y el coste de los materiales de trabajo y la capacidad que estos ofrecen
para elegir el color.
14
MODELADO POR DEPOSICIN FUNDIDA (FDM)
Consiste en depositar polmero fundido sobre una base plana, capa a capa. El
material, que inicialmente se encuentra en estado slido almacenado en rollos,
se funde y es expulsado por una boquilla en minsculos hilos que se van
solidificando conforme van tomando la forma de cada capa.
15
DESARROLLO
16
FIGURA 13.- Pieza tres, llamado "base de motor".
17
aplique movimiento de izquierda a derecha y el motor M2 realizara el mismo
movimiento con la diferencia de que este desplazamiento es vertical.
Las seales analgicas que recibe la tarjeta controladora Arduino por parte de
los potencimetros, son ledos de la siguiente manera;
Estas seales son ledas a travs del serial plot, que contiene el software de
programacin Arduino.
18
pin 2, pin 3, pin 4 & pin 5.
Est integrado por un controlador el cual es alimentado por 5V, tiene una
terminal GND y tiene dos pines de entrada.
Motor M2 contiene cuatro pines declaradas como salidas, los cuales son:
pin 10, pin 11, pin12 & pin 13.
Sensores de posicin contiene una conexin para GND, Vcc y una seal
analgica, las cuales son a2 & a3.
El joystick contiene una conexin para GND, Vcc y una seal analgica, las
cuales son a0 & a1.
19
Variables dentro de la programacin Arduino
Motor a pasos.
Las variables declaradas como salidas para M1 de 2-5 y M2 de 10-13.
Sensores de posicin (Potencimetros).
La variables declaradas para el control de los dos potencimetros que
controlan la posicin son; pot1 & pot2.
Potencimetros.
Las variables declaradas, para el control del potencimetro son; pot3 & pot4.
Debido que el elemento potencimetro est compuesto por dos
potencimetros, se registran dos salidas.
Las seales analgicas que recibe la tarjeta controladora Arduino por parte de
los potencimetros, son ledos de la siguiente manera;
Estas seales son ledas a travs del serial plot, que contiene el software de
programacin Arduino.
20
Motor M2 contiene cuatro pines declaradas como salidas, los cuales son:
pin 10, pin 11, pin12 & pin 13.
Sensores de posicin contiene una conexin para GND, Vcc y una seal
analgica, las cuales son a2 & a3.
El joystick contiene una conexin para GND, Vcc y una seal analgica, las
cuales son a0 & a1.
APP INVENTOR
Android es un sistema operativo gratuito que utiliza muchos telfonos mviles
actuales (smartphone), est basado en LINUX. Android pertenece a Google.
Android se puede programar fcilmente y realizar programas de frmulas
matemticas, juegos, ubicacin en los mapas de Google, mover un robot
mediante bluetooth.
Para programar el control de los motores a pasos por medio del HC-05 se
necesit un ordenador y conexin a Internet.
Los programas se realizan mediante bloques, que son unas especies de piezas
de rompecabezas. El programa creado est formado por sentencias,
condiciones, bucles, variables y eventos.
Botn de bluetooth.- Que permite establecer la comunicacin con la tarjeta de
bluetooth.
21
FIGURA 16.- Parte uno de la estructura de la apk en APP INVENTOR.
22
FIGURA 18.- Emulador de la aplicacin.
23
CONCLUSIN
24
PROGRAMA
void setup()
{
Serial.begin(9600); // inicializamos el puerto serie a 9600 baudios
pinMode(5, OUTPUT); // Pin 5 conectar a IN4 M1
pinMode(4, OUTPUT); // Pin 4 conectar a IN3 M1
pinMode(3, OUTPUT); // Pin 3 conectar a IN2 M1
pinMode(2, OUTPUT); // Pin 2 conectar a IN1 M1
pinMode(13, OUTPUT); // Pin 13 conectar a IN4 M2
pinMode(12, OUTPUT); // Pin 12 conectar a IN3 M2
pinMode(11, OUTPUT); // Pin 11 conectar a IN2 M2
pinMode(10, OUTPUT); // Pin 10 conectar a IN1 M2
}
void loop()
{
a = analogRead(pot1); // Lee el potenciometro 1
b = analogRead(pot2); // Lee el potenciometro 2
c = analogRead(pot3); // Lee el potenciometro 3
d = analogRead(pot4); // Lee el potenciometro 4
25
an = map(a, 0, 1023, -5, 5); // Convierte el valor analogico de 0 a 1023, y los pasa a
velocidad
bn = map(b, 0, 1023, -5, 5); // Convierte el valor analogico de 0 a 1023, y los pasa a
velocidad
cn = map(c, 0, 1023, -5, 275); // Convierte el valor analogico de 0 a 1023, y los pasa a
velocidad
dn = map(d, 0, 1023, 0, 280); // Convierte el valor analogico de 0 a 1023, y los pasa a
velocidad
dato_rx = an;
dato_rx1 = bn;
if (dato_rx > 0)
{
dato = 1;
}
else
{
dato = 0;
}
if (dato_rx < 0)
{
dato = -1;
}
if (cn <=180)
{
while (dato>numero_pasos) // Giro hacia la izquierda en grados
{
26
paso_izq();
numero_pasos = numero_pasos + 1;
}
}
if (cn >= 0)
{
while (dato<numero_pasos) // Giro hacia la derecha en grados
{
paso_der();
numero_pasos = numero_pasos - 1;
}
}
numero_pasos = 0;
if (dato_rx1 > 0)
{
dato1 = 1;
}
else
{
dato1 = 0;
}
if (dato_rx1 < 0)
{
dato1 = -1;
}
if (dn >= 1)
{
while (dato1 < numero_pasos1) // Giro hacia la derecha en grados
{
paso_der1();
numero_pasos1 = numero_pasos1 - 1;
27
}
}
numero_pasos1 = 0;
28
digitalWrite(3, HIGH);
digitalWrite(2, HIGH);
delay(retardo1 - (5 * dato_rx));
digitalWrite(5, HIGH);
digitalWrite(4, LOW);
digitalWrite(3, LOW);
digitalWrite(2, HIGH);
delay(retardo1 - (5 * dato_rx));
}
29
digitalWrite(11, LOW);
digitalWrite(10, LOW);
delay(retardo1 - (5 * dato_rx1));
digitalWrite(13, LOW);
digitalWrite(12, HIGH);
digitalWrite(11, HIGH);
digitalWrite(10, LOW);
delay(retardo1 - (5 * dato_rx1));
digitalWrite(13, LOW);
digitalWrite(12, LOW);
digitalWrite(11, HIGH);
digitalWrite(10, HIGH);
delay(retardo1 - (5 * dato_rx1));
digitalWrite(13, HIGH);
digitalWrite(12, LOW);
digitalWrite(11, LOW);
digitalWrite(10, HIGH);
delay(retardo1 - (5 * dato_rx1));
}
30
int an;
int bn;
int cn;
int dn;
int dato;
int dato1;
int dato_x;
int dato_x1;
int a;
int b;
void setup()
{
Serial.begin(9600); // inicializamos el puerto serie a 9600 baudios
pinMode(5, OUTPUT); // Pin 5 conectar a IN4
pinMode(4, OUTPUT); // Pin 4 conectar a IN3
pinMode(3, OUTPUT); // Pin 3 conectar a IN2
pinMode(2, OUTPUT); // Pin 2 conectar a IN1
pinMode(13, OUTPUT); // Pin 13 conectar a IN4 M2
pinMode(12, OUTPUT); // Pin 12 conectar a IN3 M2
pinMode(11, OUTPUT); // Pin 11 conectar a IN2 M2
pinMode(10, OUTPUT); // Pin 10 conectar a IN1 M2
}
void loop()
{
a = analogRead(pot1); // Lee el potenciometro 3
b = analogRead(pot2); // Lee el potenciometro 4
c = analogRead(pot3); // Lee el potenciometro 3
d = analogRead(pot4); // Lee el potenciometro 4
anx = an;
bnx = bn;
cnx = cn;
dnx = dn;
31
Serial.println(" Grados A"); // Agrega al valor "Grados" y se hace la diferencia entre
uno y otro
Serial.print(bnx); // Muestra el valor
Serial.println(" Grados B"); // Agrega al valor "Grados" y se hace la diferencia entre
uno y otro
Serial.print(cnx); // Muestra el valor
Serial.println(" Grados C"); // Agrega al valor "Grados" y se hace la diferencia entre
uno y otro
Serial.print(dnx); // Muestra el valor
Serial.println(" Grados D"); // Agrega al valor "Grados" y se hace la diferencia entre
uno y otro
delay(retardo);
if (dato = 0)
{
numero_pasos = 0;
}
if (dato1 = 0)
{
numero_pasos1 = 0;
}
Motor_1();
Motor_2();
32
digitalWrite(2, LOW);
delay(retardo);
digitalWrite(5, HIGH);
digitalWrite(4, HIGH);
digitalWrite(3, LOW);
digitalWrite(2, LOW);
delay(retardo);
digitalWrite(5, HIGH);
digitalWrite(4, LOW);
digitalWrite(3, LOW);
digitalWrite(2, HIGH);
delay(retardo);
}
33
void Motor_1()
{
if (cnx <= 179)
{
if (dato_rx>numero_pasos)
{
paso_izq();
numero_pasos = numero_pasos + 1;
}
}
if (cnx >= 1)
{
if (dato_rx<numero_pasos) // Giro hacia la derecha en grados
{
paso_der();
numero_pasos = numero_pasos - 1;
}
}
}
void Motor_2()
{
if (dnx <= 179)
{
if (dato_rx1>numero_pasos1)
{
paso_izq1();
numero_pasos1 = numero_pasos1 + 1;
}
}
if (dnx >= 1)
{
if (dato_rx1<numero_pasos1) // Giro hacia la derecha en grados
{
paso_der1();
numero_pasos1 = numero_pasos1 - 1;
}
}
}
34
digitalWrite(11, HIGH);
digitalWrite(10, HIGH);
delay(retardo);
digitalWrite(13, LOW);
digitalWrite(12, HIGH);
digitalWrite(11, HIGH);
digitalWrite(10, LOW);
delay(retardo);
digitalWrite(13, HIGH);
digitalWrite(12, HIGH);
digitalWrite(11, LOW);
digitalWrite(10, LOW);
delay(retardo);
digitalWrite(13, HIGH);
digitalWrite(12, LOW);
digitalWrite(11, LOW);
digitalWrite(10, HIGH);
delay(retardo);
}
35
digitalWrite(13, LOW);
digitalWrite(12, LOW);
digitalWrite(11, LOW);
digitalWrite(10, LOW);
}
36
PLANOS
37
38
39
40
41