Sie sind auf Seite 1von 41

Direccin General de Educacin Superior Tecnolgica

Tecnolgico Nacional de Mxico

INSTITUTO TECNOLGICO DE LZARO CRDENAS

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

Cd. y Puerto de Lzaro Crdenas, Mich., Noviembre de 2017.

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.

En este proyecto implementamos el control de posicin. Estos tipos de sistemas,


es de importancia que los dispositivos que actan como elementos integradores
del mismo, ofrezcan un nivel de seguridad que permita garantizar el desarrollo
completo del proceso en ejecucin en industrias. Esta es la razn por la cual se
deben utilizar la placa Arduino con ayuda de alguno de los controladores el
indicar posicin de cada uno de los motores a pasos.

En la actualidad, existe la posibilidad de que ciertos sistemas especficos puedan


controlar y/o efectuar el manejo de manera mecnica (potencimetro y joystick)
y de manera inalmbrica (controlador va bluetooth).

Los beneficios obtenidos por el usuario de estos sistemas de control automtico


inalmbrico son: Confort (comandar sistemas o artefactos desde cualquier lugar
por medio de un control o en forma automtica), seguridad (crear situaciones de
simulacin de personas dentro de una propiedad) y el ahorro de tiempo
(simplificando las tareas diarias.).

Sumado a todo esto necesita una programacin de procesos por medio de


rdenes consecutivas y que se pueden trabajar desde un software libre como lo
es el Arduino en todas sus presentaciones.

3
OBJETIVO GENERAL

Realizar el control de posicin de dos motores a pasos por medio de tres


diferentes controladores (potencimetro, joystick y controlador va bluetooth).

OBJETIVOS ESPECFICOS

Realizar el control de un motor a pasos por medio de potencimetro.

Realizar el control de un motor a pasos por medio de Joystick.

Realizar el control de un motor a pasos por medio de un controlador va


bluetooth.

4
MARCO TERICO

Es una de las fases ms importantes de un trabajo de investigacin, consiste en


desarrollar la teora que va a fundamentar el proyecto con base al planteamiento
del problema que se ha realizado.
En esta seccin el marco terico abarca las definiciones y conceptos necesarios
para comprender el desarrollo del proyecto de las materias de Sensores y
Procesadores & Ingeniera DE Control II.

MOTOR PASO A PASO

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).

ESTRUCTURA FSICA Y CARACTERSTICAS


El principio de funcionamiento de los motores paso a paso se basa en lo
siguiente; cuando una barra de hierro o acero se suspende (es libre de rotar)
dentro de un campo magntico, esta se alinea con el campo de manera que la
reluctancia total del circuito sea la mnima posible. Si cambiamos la direccin del
campo la barra girar con un determinado par.

Vamos a describir la estructura interna y la forma de funcionar de los motores de


1,8 de paso hbridos de imn permanente, que son los ms utilizados. En la

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.

Si pensamos en una configuracin bipolar, los polos 1, 3, 5 y 7 son para la


bobina A y los polos 2, 4, 6 y 8 para la bobina B. Cuando la bobina A tiene
corriente positiva 1 y 5 se convierten en polos S y 3 y 7 en polos N. En estas
condiciones los dientes en la terminal N del rotor son atrados por los polos 1 y 5
mientras que los dientes en le terminal S son atrados por los dientes en los
polos 3 y 7 (los polos que se repelen se quedan en los huecos).

FIGURA 1.- Estructura interna motor a pasos.

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.

FIGURA 2.- Grfica de la funcin par-ngulo.

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.

FIGURA 3.- Grfica de la funcin par-ngulo, con par nulo.

Cuando al motor lo hacemos girar, debido a la forma senoidal del par de


mantenimiento (h), tendremos que el par de funcionamiento del motor, vendr
dado por la frmula:

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.

Las bobinas se pueden configurar para trabajar de tres formas diferentes:

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

Una placa de pruebas (en ingls: protoboard o breadboard) es un tablero con


orificios que se encuentran conectados elctricamente entre s de manera
interna, habitualmente siguiendo patrones de lneas, en el cual se pueden
insertar componentes electrnicos y cables para el armado y prototipado de
circuitos electrnicos y sistemas similares.

Est hecho de dos materiales, un aislante, generalmente un plstico, y un


conductor que conecta los diversos orificios entre s. Uno de sus usos
principales es la creacin y comprobacin de prototipos de circuitos electrnicos
antes de llegar a la impresin mecnica del circuito en sistemas de produccin
comercial.

FIGURA 5.- Protoboart.

ARDUINO

Es una compaa de hardware libre y una comunidad tecnolgica que disea y


manufactura placas de desarrollo de hardware, compuestas por
Microcontroladores, elementos pasivos y activos.

Arduino se enfoca en acercar y facilitar el uso de la electrnica y programacin


de sistemas embebidos en proyectos multidisciplinarios. Toda la plataforma,
incluyendo sus componentes de hardware (esquemticos) y Software, son
liberados con licencia de cdigo abierto que permite libertad de acceso a ellos.
El software consiste en un entorno de desarrollo (IDE) basado en el entorno de
processing y lenguaje de programacin basado en Wiring, as como en el

9
cargador de arranque (bootloader) que es ejecutado en la placa.4 El
microcontrolador de la placa se programa mediante un computador.

FIGURA 6.- Ventana principal del Software Arduino.

POTENCIOMETRO

Un potencimetro es uno de los dos usos que posee la resistencia o resistor


variable mecnica (con cursor y de al menos tres terminales). Conectando los
terminales extremos a la diferencia de potencial a regular (control de tensin), se
obtiene entre el terminal central (cursor) y uno de los extremos una fraccin de la
diferencia de potencial total, se comporta como un divisor de tensin o voltaje.

Segn la potencia que disipe en su funcionamiento, como regulador de tensin,


as debe ser la potencia de la resistencia variable mecnica a utilizar.

FIGURA 7.- Potencimetro.

A continuacin se muestra la simbologa y el esquema del potencimetro.

10
FIGURA 8.- Simbologa y esquema del Potencimetro.

JOYSTICK

Un joystick (Del ingls Joy=alegra, Stick=palo) o palanca de mando es un


dispositivo de control de dos o tres ejes que se usa en computadoras o
videoconsolas, pero tambin en transbordadores espaciales, aviones de caza o
gras portuarias.

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.

MDULO BLUETOOTH HC-05

El modulo Bluetooth HC-05 es uno de los dispositivos ms populares usados


para aadirle la funcionalidad de la comunicacin Bluetooth a proyectos con
Arduino o micro-controladores. Se trata de dispositivos relativamente
econmicos y que se adquieren en un formato que se permite insertarlo en una
protoboard directamente y cablearlo a cualquier microcontrolador sin necesidad
de soldaduras.

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.

El HC-05 dispone de 6 pines de conexin. El modulo se encajara en una placa


protoboard y desde ah se cableara hasta los pines correspondientes de la placa
Arduino.
Las conexiones son las siguientes:

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.

5.0: Pin de alimentacin a 5 voltios del mdulo Bluetooth. Ir conectado al pin


5V de la placa Arduino.

3.3: Pin de alimentacin a 3.3 voltios. Ir conectado al pin 3.3V de la placa


Arduino. El HC-05 se puede alimentar con cualquiera de estas dos tensiones.

GND: Pin de masa del mdulo HC-05.

12
FUNCIONAMIENTO DE LA IMPRESIN 3D

En el proceso que va desde la fase de preparacin del modelo hasta la de


fabricacin del prototipo, bastante largo y complejo, participan muchas partes
diferentes que deben interactuar y trabajar juntas fluidamente:

1. Modelacin digital. Crear un modelo 3D de la idea que se tiene en


mente un alter ego digital del objeto que se quiere hacer. Para ello se
utiliza un software, a menudo llamado CAD (Diseo Asistido por
Computadora).

2. Exportacin. Generar un archivo en el formato correcto (por lo general


STL) que contenga toda la informacin geomtrica necesaria para
representar el modelo digital.

3. Rebanado. Convertir el modelo digital (tcnicamente una representacin


tridimensional se una superficie hermtica, subdividida en una malla
triangular) en una lista de comandos que la impresora 3D pueda entender
y ejecutar, generalmente llamados cdigos g/g-code.

4. Conexin. Dar la lista de instrucciones a la impresora, ya sea a travs de


una conexin USB a un PC o copiado al archivo en una tarjeta de
memoria que puede ser ledo directamente por la propia impresora.

5. Impresin. Preparar la impresora 3D y comenzar la impresin. Esperar el


resultado.

6. Acabado. Quitar5 de la plataforma de impresin (cama) el objeto recin


creado y eliminar las partes adicionales.

Los dos primeros pasos pueden realizarse a travs de un acceso directo:


simplemente descargando un modelo digital de Internet (por ejemplo, desde
Thingiverse1). Si el modelo no ha sido diseado cuidadosamente, puede salir
con algunos defectos, por lo que hay que tratar de corregirlos con software
(correccin de malla).

Con el fin de obtener resultados exitosos, es necesario destacar otros aspectos


como la eleccin de la impresora 3D, su calibracin adecuada y configuracin, el
tipo y calidad del material y el tipo de superficie que cubre la plataforma de
impresin.

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.

En la siguiente tabla se resumen las principales tecnologas disponibles:

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.

En la actualidad, los tres procesos de fabricacin aditiva ms comunes son los


que se describen a continuacin:

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.

FIGURA 10.- Proceso de Modelado por deposicin fundida (FDM).

15
DESARROLLO

La prctica es un sistema (can) al cual se le controla la posicin en sus dos


articulaciones por medio de motores elctricos. Para generar el movimiento
rotacional se utiliz un dispositivo electromecnico llamado Motor a pasos.
Para controlar el movimiento gradual de cada uno de estos elementos se utilizan
distintos mtodos; Control por potencimetro, control por joystick y control por
bluetooth.
Debido a la manera en que se estructuro el proyecto el desarrollo se divide en
cuatro partes en donde se profundiza en el diseo de las piezas y los tres
diferentes mtodos de control.

DISEO DE PIEZAS MECNICAS 3D

Se crea un modelo 3D de la idea que se tiene en mente que cumpla la funcin


prevista del proyecto. Para ello se utiliza el programa de diseo y modelado
llamado SOLIDWORKS.

Este trabajo se conform con tres piezas.

FIGURA 11.- Pieza uno, llamado "can".

FIGURA 12.- Pieza dos, llamado "base de caon".

16
FIGURA 13.- Pieza tres, llamado "base de motor".

Las piezas se realizaron tomando en consideracin el tamao del motor y la


carga que pueden soportar, por lo cual se decidi crear las piezas en impresora
3D con material PLA. (Para mayor informacin revisar los planos que se
encuentran en anexos.)
El segundo paso, terminado el modelado 3D, es necesario generar un archivo en
el formato STL, donde se contiene toda la informacin geomtrica necesaria
para representar el modelo digital. Obtenido el modelo se convierte en una lista
de comandos que la impresora 3D entienda y ejecute, estos cdigos se llaman
cdigos g. Con todo listo se imprimen las piezas.

FIGURA 14.- Ensamble de las piezas.

CONTROL DE POSICIN POR MEDIO DE JOYSTICK

El objetivo del control de posicin a travs del joystick, es establecer un control


sobre los motores a pasos, esto se logra con la aplicacin de programacin de la
tarjeta Arduino Leonardo. Una vez declaradas las variables de programacin, el
joystick ser capaz de desplazar el motor M1 un rango de 0 a 180, cuando se

17
aplique movimiento de izquierda a derecha y el motor M2 realizara el mismo
movimiento con la diferencia de que este desplazamiento es vertical.

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.
Joystick.
Las variables declaradas, para el control del joystick son; pot3 & pot4. Debido
que el elemento joystick est compuesto por dos potencimetros, se
registran dos salidas.

Para activar el motor M1 de izquierda a derecha, el cual se encuentra ubicado


en la base del can se necesita generar un movimiento igual en el joystick, esta
tarea es realizada por la variable pot3, cuya nica funcin y a diferencia de la
variable pot4 es generar el movimiento horizontal.
El motor M2 para producir un movimiento vertical necesita la seal de pot4, el
cual est relacionado con el movimiento fsico en el joystick en izquierda1 a
derecha1.

Las seales analgicas que recibe la tarjeta controladora Arduino por parte de
los potencimetros, son ledos de la siguiente manera;

La letra a, para el pot1.


La letra b, para el por2.
La letra c, para el pot3.
La letra d, para el pot4.

Estas seales son ledas a travs del serial plot, que contiene el software de
programacin Arduino.

Los pines de conexin de la tarjeta controladora Arduino, son las siguientes:


Motor M1 contiene cuatro pines declaradas como salidas, los cuales son:

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.

FIGURA 15.- Can controlado por joystick.

La programacin completa se encuentra en los anexos llamados programacin.

CONTROL DE POSICIN POR MEDIO DE POTENCIMETRO

El objetivo del control de posicin a travs del potencimetro, es establecer un


control sobre los motores a pasos, esto se logra con la aplicacin de
programacin de la tarjeta Arduino Leonardo. Una vez declaradas las variables
de programacin, el potencimetro ser capaz de desplazar el motor M1 un
rango de 0 a 180, cuando se aplique movimiento de izquierda a derecha y el
motor M2 realizara el mismo movimiento con la diferencia de que este
desplazamiento es vertical.

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.

Para activar el motor M1 de izquierda a derecha, el cual se encuentra ubicado


en la base del can se necesita generar un movimiento igual en el
potencimetro, esta tarea es realizada por la variable pot3, cuya nica funcin y
a diferencia de la variable pot4 es generar el movimiento horizontal.
El motor M2 para producir un movimiento vertical necesita la seal de pot4, el
cual est relacionado con el movimiento fsico en el potencimetro en izquierda1
a derecha1.

Las seales analgicas que recibe la tarjeta controladora Arduino por parte de
los potencimetros, son ledos de la siguiente manera;

La letra a, para el pot1.


La letra b, para el por2.
La letra c, para el pot3.
La letra d, para el pot4.

Estas seales son ledas a travs del serial plot, que contiene el software de
programacin Arduino.

Los pines de conexin de la tarjeta controladora Arduino, son las siguientes:


Motor M1 contiene cuatro pines declaradas como salidas, los cuales son:
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.

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.

Slider. muestra el valor que se indica de forma manual rangos de 0 a 180.


M1.- selecciona el motor 1 para controlarlo.
M2.- selecciona el motor 2 para controlarlo.
N.- neutro, desactiva el control de cualquiera de los dos motores.
180.- enva el comando para colocar el motor a 180 C
90.- enva el comando para colocar el motor a 90 C
0.- enva el comando para colocar el motor a 0 C
Flecha izquierda.- gira un grado a la izquierda
Flecha derecha.- gira un grado a la derecha.

21
FIGURA 16.- Parte uno de la estructura de la apk en APP INVENTOR.

En el primer ramal se busca los dispositivos de bluetooth disponibles, En el


segundo ramal: establece comunicacin con el dispositivo.
Los otros tienen su nombre. Cada uno enva una seal via bluetooh al arduino
en forma de texto para posteriormente programar una funcin.

El deslizador o slider, lee el valor de posicin que se coloca con el dedo,


despus enva por bluetooth al arduino el VALOR que est leyendo.

FIGURA 17.- Parte dos de la estructura de la apk en APP INVENTOR.

En el ordenador se realiz el programa y se prob en un emulador instalado en


el mismo ordenador.

22
FIGURA 18.- Emulador de la aplicacin.

Finalizado la aplicacin y seguidamente instalada en un dispositivo Android se


prueba la aplicacin para ver su funcionalidad y utilizarlo.

23
CONCLUSIN

Para la consecucin de este objetivo ha sido necesaria la adquisicin y uso de la


placa micro-controlada programable Arduino como herramienta didctica que,
gracias a su versatilidad y fcil instalacin, est experimentando una amplia
difusin y con su utilizacin se logran los objetivos deseados y uno se da cuenta
de la forma en cmo se puede controlar la posicin de un motor a pasos
unipolar. Este proyecto se elabora de una forma sencilla, pero con el se puede
poner en marcha proyectos mayores, como el control de posicin en un proceso
industrial.

Se disea un controlador que asegure confiabilidad en trminos de error y


garantice movimientos confiables en el proyecto, obteniendo resultados
satisfactorios.

El controlador va bluetooth permite comunicar la placa Arduino con el dispositivo


mvil de una forma simple, rpida y con mucha precisin, sin necesidad de
instrumentos mecnicos que necesiten.

La programacin en el sistema de desarrollo Arduino consiste en un cdigo


donde apoyndonos en el controlador (potencimetro, joystick o controlador va
bluetooth) se mide el movimiento en grados en el motor a pasos. La tarjeta de
desarrollo Arduino hace que el controlador mande una seal (tipo anloga o
digital) al motor para producir un movimiento.

Esta prctica es importante y valiosa; gracias a ella se logra identificar errores


que pueden servir para la puesta en marcha en proyectos ms avanzados y de
mejor elaboracin; estos errores traen consecuencias mayores y sirviendo para
fortalecer los conocimientos.

24
PROGRAMA

PROGRAMA CONTROL DE POSICIN POR MEDIO DE JOYSTICK

int retardo1 = 30; // Tiempo de retardo en milisegundos (Velocidad del Motor)


int dato_rx; // valor recibido en grados
int dato_rx1;
int dato;
int dato1;
int numero_pasos = 0; // Valor en grados donde se encuentra el motor
int numero_pasos1 = 0;
int pot1 = 0;
int pot2 = 1;
int pot3 = 2;
int pot4 = 3;
int a;
int b;
int c;
int d;
int an;
int bn;
int cn;
int dn;
int retardo;

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

Serial.print(dato_rx); // Muestra el valor


Serial.println(" Velocidad A"); // Agrega al valor "Velocidad" y se hace la diferencia
entre uno y otro
Serial.print(dato_rx1); // Muestra el valor
Serial.println(" Velocidad B"); // Agrega al valor "Velocidad" y se hace la diferencia
entre uno y otro

Serial.print(cn); // Muestra el valor


Serial.println(" Grados A"); // Agrega al valor "Grados" y se hace la diferencia entre
uno y otro
Serial.print(dn); // Muestra el valor
Serial.println(" Grados B"); // Agrega al valor "Grados" y se hace la diferencia entre
uno y otro

delay(retardo1 - 25); // Tiempo de espera de retardo

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;

apagado(); // Apagado del Motor para que no se caliente

if (dato_rx1 > 0)
{
dato1 = 1;
}
else
{
dato1 = 0;
}

if (dato_rx1 < 0)
{
dato1 = -1;
}

if (dn <= 179)


{
while (dato1 > numero_pasos1) // Giro hacia la izquierda en grados
{
paso_izq1();
numero_pasos1 = numero_pasos1 + 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;

apagado1(); // Apagado del Motor para que no se caliente


///////////////////// Fin del Loop ///////////////////////////
}

void paso_der() // Pasos a la derecha


{
digitalWrite(5, LOW);
digitalWrite(4, LOW);
digitalWrite(3, HIGH);
digitalWrite(2, HIGH);
delay(retardo1 + (5 * dato_rx));
digitalWrite(5, LOW);
digitalWrite(4, HIGH);
digitalWrite(3, HIGH);
digitalWrite(2, LOW);
delay(retardo1 + (5 * dato_rx));
digitalWrite(5, HIGH);
digitalWrite(4, HIGH);
digitalWrite(3, LOW);
digitalWrite(2, LOW);
delay(retardo1 + (5 * dato_rx));
digitalWrite(5, HIGH);
digitalWrite(4, LOW);
digitalWrite(3, LOW);
digitalWrite(2, HIGH);
delay(retardo1 + (5 * dato_rx));
}

void paso_izq() // Pasos a la izquierda


{
digitalWrite(5, HIGH);
digitalWrite(4, HIGH);
digitalWrite(3, LOW);
digitalWrite(2, LOW);
delay(retardo1 - (5 * dato_rx));
digitalWrite(5, LOW);
digitalWrite(4, HIGH);
digitalWrite(3, HIGH);
digitalWrite(2, LOW);
delay(retardo1 - (5 * dato_rx));
digitalWrite(5, LOW);
digitalWrite(4, LOW);

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));
}

void apagado() // Apagado del Motor


{
digitalWrite(5, LOW);
digitalWrite(4, LOW);
digitalWrite(3, LOW);
digitalWrite(2, LOW);
}

void paso_der1() // Pasos a la derecha1


{
digitalWrite(13, LOW);
digitalWrite(12, LOW);
digitalWrite(11, HIGH);
digitalWrite(10, HIGH);
delay(retardo1 + (5 * dato_rx1));
digitalWrite(13, LOW);
digitalWrite(12, HIGH);
digitalWrite(11, HIGH);
digitalWrite(10, LOW);
delay(retardo1 + (5 * dato_rx1));
digitalWrite(13, HIGH);
digitalWrite(12, HIGH);
digitalWrite(11, LOW);
digitalWrite(10, LOW);
delay(retardo1 + (5 * dato_rx1));
digitalWrite(13, HIGH);
digitalWrite(12, LOW);
digitalWrite(11, LOW);
digitalWrite(10, HIGH);
delay(retardo1 + (5 * dato_rx1));
}

void paso_izq1() // Pasos a la izquierda


{
digitalWrite(13, HIGH);
digitalWrite(12, HIGH);

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));
}

void apagado1() // Apagado del Motor


{
digitalWrite(13, LOW);
digitalWrite(12, LOW);
digitalWrite(11, LOW);
digitalWrite(10, LOW);
}

PROGRAMA CONTROL DE POSICIN POR MEDIO DE POTENCIMETRO

int retardo=10; // Tiempo de retardo en milisegundos (Velocidad del Motor)


int dato_rx; // valor recibido en grados
int numero_pasos = 0; // Valor en grados donde se encuentra el motor 1
int dato_rx1; // valor recibido en grados
int numero_pasos1 = 0; // Valor en grados donde se encuentra el motor 2
String leeCadena; // Almacena la cadena de datos recibida
int pot1 = 0;
int pot2 = 1;
int pot3 = 2;
int pot4 = 3;
int c;
int anx;
int bnx;
int cnx;
int dnx;
int d;

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

an = map(a, 0, 1023, 0, 280); // Convierte el valor analogico de 0 a 1023, y los pasa a


velocidad
bn = map(b, 0, 1023, 0, 280); // Convierte el valor analogico de 0 a 1023, y los pasa a
velocidad
cn = map(c, 0, 1023, 0, 280); // 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

anx = an;
bnx = bn;
cnx = cn;
dnx = dn;

Serial.print(anx); // Muestra el valor

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);

dato = anx - cnx;


dato_rx = (dato * 1.4222222222); // Ajuste de 512 vueltas a los 360 grados
dato1 = bnx - dnx;
dato_rx1 = (dato1 * 1.4222222222); // Ajuste de 512 vueltas a los 360 grados

if (dato = 0)
{
numero_pasos = 0;
}
if (dato1 = 0)
{
numero_pasos1 = 0;
}

Motor_1();

Motor_2();

leeCadena = ""; // Inicializamos la cadena de caracteres recibidos


apagado(); // Apagado del Motor para que no se caliente
apagado1(); // Apagado del Motor para que no se caliente
} ///////////////////// Fin del Loop ///////////////////////////

void paso_der() // Pasos a la derecha


{
digitalWrite(5, LOW);
digitalWrite(4, LOW);
digitalWrite(3, HIGH);
digitalWrite(2, HIGH);
delay(retardo);
digitalWrite(5, LOW);
digitalWrite(4, HIGH);
digitalWrite(3, HIGH);

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);
}

void paso_izq() // Pasos a la izquierda


{
digitalWrite(5, HIGH);
digitalWrite(4, HIGH);
digitalWrite(3, LOW);
digitalWrite(2, LOW);
delay(retardo);
digitalWrite(5, LOW);
digitalWrite(4, HIGH);
digitalWrite(3, HIGH);
digitalWrite(2, LOW);
delay(retardo);
digitalWrite(5, LOW);
digitalWrite(4, LOW);
digitalWrite(3, HIGH);
digitalWrite(2, HIGH);
delay(retardo);
digitalWrite(5, HIGH);
digitalWrite(4, LOW);
digitalWrite(3, LOW);
digitalWrite(2, HIGH);
delay(retardo);
}

void apagado() // Apagado del Motor


{
digitalWrite(5, LOW);
digitalWrite(4, LOW);
digitalWrite(3, LOW);
digitalWrite(2, LOW);
}

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;
}
}
}

void paso_der1() // Pasos a la derecha1


{
digitalWrite(13, LOW);
digitalWrite(12, LOW);

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);
}

void paso_izq1() // Pasos a la izquierda


{
digitalWrite(13, HIGH);
digitalWrite(12, HIGH);
digitalWrite(11, LOW);
digitalWrite(10, LOW);
delay(retardo);
digitalWrite(13, LOW);
digitalWrite(12, HIGH);
digitalWrite(11, HIGH);
digitalWrite(10, LOW);
delay(retardo);
digitalWrite(13, LOW);
digitalWrite(12, LOW);
digitalWrite(11, HIGH);
digitalWrite(10, HIGH);
delay(retardo);
digitalWrite(13, HIGH);
digitalWrite(12, LOW);
digitalWrite(11, LOW);
digitalWrite(10, HIGH);
delay(retardo);
}

void apagado1() // Apagado del Motor


{

35
digitalWrite(13, LOW);
digitalWrite(12, LOW);
digitalWrite(11, LOW);
digitalWrite(10, LOW);
}

36
PLANOS

37
38
39
40
41

Das könnte Ihnen auch gefallen