Vous êtes sur la page 1sur 21

INSTITUTO TECNOLGICO DE CANCN

INGENIERIA EN MECATRNICA

ASIGNATURA:
Microcontroladores.

Proyecto final: carrito anlogo y autnomo.

ALUMNO:
Loeza Lopez Doncan Bruno Ayrton
Facio Chuc Karina Alejandra

Caballero Meja Luis Humberto

CONTENIDO

INTRODUCCION

MATERIALES

2.1

Costo de materiales

DESARROLLO

3.1

Elaboracion de la carcasa

3.2

Componentes

3.3

Conexiones fsicas

3.4

Programacion del Arduino

4
4.1

CONCLUSION
Referencias

INTRODUCCION
De un tiempo para ac, los proyectos escolares han incluido mucha ms tecnologa,
vemos que ahora hay competencias a nivel estatal e incluso a nivel nacional, por lo que
los participantes deben tener conocimientos mucho ms all que los bsicos sobre
electrnica y computacin.
Dado a la gran acogida que ha tenido el software libre Arduino, y por sus bajos costos,
los estudios de electrnica e introducirse a ello prcticamente est al alcance de
cualquier interesado.
Aprovechando que el curso involucra el uso de microcontroladores y programacin,
iniciaremos un proyecto que tratara sobre la construccin y programacin de un carrito
que cuente con un joystick como los de los controles de videojuegos- para moverlo y
que, con solo activar un switch, se maneje de forma independiente y su movimiento sea
basado en obstculos que encuentre en su camino.

MATERIALES

Arduino MEGA.
Carcasa de plstico.
1 LED ultra brillante de 3mm.
1 Juego de 8 pilas recargables.
2 switch.
4 motorreductores con llanta.
Soldadura de estao.
Cautn.
Taladro.
Caladora.
Cables tipo Dupont (H-H, M-H, M-M).
Cables.
Joystick.
MotorShield de Adafruit.
Terminales.
1 Ultrasnico HCSR04
Tornillos con tuerca.
Headers.
Caimanes.
Resistencia de 10 k.

Lista de precios aproximados de los materiales.

LED ultra brillante blanco de 3mm = $4 c/u


Arduino MEGA = $350.
Carcasa de plstico = Reciclado.
Pilas Recargables = $140 c/par

Cables tipo Dupont = $40 c/set


Ultrasnico HCSR04 = $40
Switch = $9
Joystick = $ 40
Motorreductor con llanta = $ 70 c/u
Terminales = $ 5 c/u
MotorShield de Adafruit = $120
Headers = $20

DESARROLLO
Elaboracin de la carcasa.
Lo primero que se plane hacer es la carcasa donde iran los motores y que tambin
sera el cuerpo del carrito, por lo que se pens en varias opciones para eso:
-

Fabricarlo con acrlico transparente.


Comprar en lnea uno prefabricado.
Elaborarlo con madera delgada.

Se analizaron todas las opciones, 1) el acrlico no es tan sencillo para trabajar, por lo
que tomara mucho tiempo y no quedara exactamente como queramos, 2) comprarlo
en lnea sonaba factible, ya que cuentan con agujeros para los tornillos y nos
ahorraramos mucho tiempo, pero al revisar los precios nos encontramos con el
elevado precio y 3) la madera era ms fcil de manejar, se contaba con las
herramientas, pero era ms frgil que las opciones anteriores.
Por lo que se opt por la 3era opcin, as que nos dispusimos a buscar madera para
empezar a planear el diseo, y en eso estbamos cuando nos encontramos un
refrigerador viejo y por simple curiosidad nos pusimos a revisarlo, encontrando un
pedazo de plstico rgido que, con unos cuantos arreglos, podra servir para nuestro
propsito, as que suspendimos nuestra bsqueda y planeamos un diseo donde se
acoplase nuestro recin hallazgo. Despus de pensar, necesitaba los siguientes
arreglos:
1. Reducir su tamao, ya que era demasiado largo como para sernos til, ya que
podra causar conflictos de peso/potencia.
2. Cambiar su forma, porque los laterales eran curvos, y como ah se colocaran los
motorreductores con sus llantas, tena que ser planos.
3. Perforaciones, donde se colocaran los tornillos que sujetara el Arduino, los
motorreductores con su gua y su eje.
As que empezamos por reducir el tamao, ya que media ms de medio metro y eso es
demasiado peso y tambin afectara la potencia de los motorreductores, por lo que se
utiliz la caladora para acortarlo a unos 28cm aproximadamente, suficientes para
colocar los motores, que las llantas no estn muy cerca y un espacio de sobra para
evitar lastimar los componentes.
Despus, se deba cambiar su forma, y esto era lo ms complejo, ya que el plstico es
rgido y con un anchura de 3mm de grosor, por lo que si se trataba de doblar con
fuerza, se rompera o se quebrara, as que se investig como doblar el plstico y se
encontr que calentndolo, por lo que se intent con agua caliente pero dado por el

grosor, no funciono, as que se le aplico calor directamente en el lugar donde se quera


doblar con ayuda de un encendedor.
Por ltimo, deban hacerse perforaciones (la carcasa ya tena varias ranuras perfectas
para el diseo) para colocar los ejes de los motorreductores, sus guas y tornillos para
fijarlos, as que con el uso de un taladro, se hicieron unos agujeros. Cabe mencionar
que, dado que no contbamos con manera de alinear los motores de manera perfecta,
se hicieron ms grandes los agujeros de los ejes por si deban moverse y as fijarse.
Tambin se sobrepuso el Arduino por debajo de la carcasa, ya que quedaba oculto y
as no habra problemas de espacio, se marc donde deberan ir los tornillos y se
hicieron los respectivos agujeros.
Se verifico que la altura del carrito sea la adecuada para evitar el roce de los
componentes principales con el suelo o algn objeto que pueda haber. Al igual que las
llantas, se pusieron a una altura adecuada para que tenga suficiente contacto con el
suelo y no quede demasiado saltado para evitar cualquier dao si se llega a chocar.

Componentes.
A continuacin, se incluye una tabla que contiene cada componente elegido, sus
especificaciones y la razn del porque se ha seleccionado:
Componente
Motorreductor
con llanta.

Especificaciones
kg
Torque = 4.5 cm
RPM = 100

Rev
min

Razn
No necesitamos tanta
velocidad pero si mucha
potencia, por lo que al ser

a 6V sin carga.

Voltaje de alimentacin = 5V a 9V.


Corriente = 60 mA a 6V sin carga.

un motorreductor,

podemos obtenerlo.
Se controla con un simple
puente H, en este caso, el

MotorShield.
Precio bajo.

Joystick

Voltaje de alimentacin = 5V.


Pines = Eje X, Eje Y, VCC, Ground,

De fcil manejo.
Tamao reducido.

Este tipo de LED funciona

Switch.

LED ultra

Tamao = 3mm.

brillante.

Color = verde.

perfectamente con 5

Corriente = 10mA.

voltios (ya que es el voltaje

Voltaje =5V.

que arroja Arduino en

Brillo = 6000 a 9000 mcd

todos sus pines) por lo que


no necesitamos una

Switch
Tipo = 1 polo 2 tiros.

resistencia para protegerlo.


Al manejar solo dos tipos
de funcionamiento
(anlogo y autnomo), un
switch de 2 tiros es ms

Ultrasnico.

Voltaje de funcionamiento = 5V.

Seal de salida = Seal de frecuencia

perfecto para hacer

elctrica.
Angulo del sensor = 15
Deteccin de distancia = 2 - 450cm
Cables
Dupont.

que suficiente.
El ultrasnico funciona

autnomo el carrito.
Es de fcil manejo.
Precio bajo.

Ya que viene con distintos

Tipo de conector = Macho macho,

conectores, nos ahorramos

macho hembra y hembra hembra.

mucho tiempo en

Largo = 20cm. c/u.

conexiones.
Al ser multicolor, no hay

Rango de corriente = 3A.

Rango de voltaje = 250V.

problemas de confusin a

Rango de temperatura = -25 C - 85

la hora de conectar.
Caben perfectamente en

C
Multicolor

los headers de los

componentes.

Arduino

Voltaje de operacin = 5V.

MEGA

Pines digitales = 54.

versin pequea, pero este

Pines analgicos = 16.

cuenta con muchos ms

Amperaje por cada pin = 20mA.

pines para distribuir las

Memoria flash = 256 KB.

conexiones.

Pudo haberse usado la

Velocidad de reloj = 16 MHz.


Medidas = 101.52 x 53.3 mm.
MotorShield

Peso = 37 g.
4 puentes H, con proteccin de

de Adafruit.

apagado trmico.

especificaciones, sirve

Diodos internos de proteccin de

para manejar 4 motores a

contragolpe.

distinta velocidad, para

Funciona con motores de 4.5 a 25 V.

controlar los giros del

Hasta 4 motores tipo DC

carrito.
Tiene pines para

bidireccionales con seleccin

individual de velocidad.

alimentacin externa, por

Conectores de bloque con terminales.

lo que se puede introducir

Reset

ms voltaje para mejor

Bloque terminal de 2 pines y puente

eficiencia de los motores.


Tienes terminales con su

para conectar la alimentacin externa,

nomenclatura para los

al igual para separar suministros de


Bateras

Como lo mencionan las

seal lgica y motor.


Voltaje de salida = 9.6V.

motores.

Al tener 4 motores, el

Voltaje de entrada = 12V

consumo es elevado, por

Corriente de entrada = 200mA.

lo que una batera de 9V

Tipo = Recargables.

sera insuficiente, as que


se opt por conseguir un
paquete de bateras
recargables para poder

hacer pruebas.

Conexiones fsicas.
No se pueden ilustrar completamente todas las conexiones, ya que los programas son
limitados y no contienen todos los componentes, por lo que se explicaran sin incluir una
ilustracin.

En esta imagen, se muestra como se conect el joystick y el switch que nos servir
para cambiar de funcin anlogo a autnomo y viceversa. Dado que el joystick cuenta
con 4 pines, dos de ellos debern ser conectados en pines analgicos ya que son los
ejes X y Y que nos servirn para controlar el carrito y los otros dos pines son de
alimentacin y tierra, por lo que no hay complejidad de conexin, solo es cuestin de
recordar en que pines se han conectado para su programacin. Como es obvio que no
es nada

como

estar

centmetros del carrito, se

consigui un cable de

aproximadamente 2 metros para que se pueda controlar sin necesidad de estar tan
cerca. El LED se coloc al frente del carrito y solo enciende cuando se cambie a modo
autnomo para indicar cuando va hacia adelante y cuando har la accin de evadir.

En la siguiente imagen, se muestra como debe ir conectado los motores a la


MotorShield de Adafruit; como vemos, no es igual al fsico, pero las conexiones son
similares, es cuestin de conectarlos y cuando se programe, verificar que todos los
motores giren del mismo lado y si no lo hace, solo cambiar de lugar los cables de cada
motor. Esa es la ventaja de estos motorreductores, como son de corriente directa, con
cambiar la polaridad cambiara el giro del motor. Solo hay que recordar en qu lugar se
conecta cada motor porque estos tienen un numero en la MotorShield para su futura
programacin que consistir en otorgarle diferentes velocidades a cada uno para
realizar los giros.

Lo que falta es conectar el ultrasnico; consta de 4 pines, alimentacin y tierra, y dos


pines especiales que se llaman Trigger y Echo, y con eso es cmo funciona el sensor,
ya que manda una seal de sonido y calcula distancia porque divide el tiempo que
tarda en regresar la seal entre la velocidad del sonido. As que hay que conectar esos
dos pines en dos entradas digitales, en este caso, Trigger ser conectado en el pin 40 y
Echo en el pin 38, as no habr confusiones ya que aprovechamos los pines que tiene
el MEGA para distribuirlos de manera adecuada.
Por ltimo se le debe conectar la fuente de alimentacin, y aqu fue el reto ms
importante de la parte fsica, ya que las bateras normales no tienen mucho amperaje, y
al ser un carrito de 4 motores ms el ultrasnico y el joystick, consume demasiado y

10

tiende a gastar las bateras en lapsos cortos de tiempo. Por lo que optamos por
bateras recargables, y son sumamente costosas, aproximadamente $160 el par en
cualquier tienda electrnica, igual pensamos en una Batera tipo Lipo, que contienen
mucho amperaje y cierto voltaje, pero solo se encuentran en tiendas on-line y el envo
es tardado y mucho ms costoso, as que al igual que la carcasa, reciclamos un
paquete de bateras recargables de un viejo carrito a control remoto, el nico problema
es que ya no retienen la carga normalmente y deben recargarse constantemente.

Programacin del Arduino.


Mas que la parte fsica, la programacin es la parte interesante del proyecto, ya que
aparte de controlar los motores, debemos hacer que el carrito reaccione a las rdenes
que reciba del joystick, y ms an, que se vuelva autnomo con solo apretar un switch.
Lo primero que vamos a hacer, es declarar las libreras a utilizar, es nuestro caso, es la
del MotorShield y la del ultrasnico.

Despus, declararemos las variables que necesitamos para controlar los datos, o sea,
4 variables para los motores (una variable por cada motor), 2 variables para los ejes del
joystick (el eje x y l y para controlar los movimientos), dos variables para la velocidad
de los motores (para que no haya variaciones) que en este caso ser de 170 y otro de
45, variables para controlar el encendido del LED, el switch de cambio de modo, la
distancia del ultrasnico, otro ms para leer el estado del switch como una entrada
digital y por ultimo usamos el comando Ultrasonic name (Trigger, Echo) para declarar
los pines que recibirn la informacin recogida por el ultrasnico y le llamaremos
Ultrasonido para evitar confusiones.

11

Seguimos con las declaraciones del Void Setup, aqu declararemos que los motores
son salidas, al igual que incluiremos el comando Serial.begin(####) para visualizar el
comportamiento del programa y del Arduino en la pantalla de la computadora,
terminamos por declarar la variable del LED como salida y la del switch como entrada.
Para que como entrada? Porque cuando dejemos pasar un voltaje, el pin lo lea como
una entrada digital y dar paso a una accin, y viceversa cuando no reciba voltaje.

Continuamos con el Void loop, aqu es donde se desarrollaran las rdenes del carrito
en funcin de la seal que mandemos desde el joystick o reciba desde el ultrasnico.
Antes de escribir algo aqu, primero debemos visualizar todo los comportamientos de
los sensores, as que primero declaramos las variables asignadas a los ejes como una
entrada analgica con el comando analogRead (##).

12

Despus le daremos un valor a la variable de la distancia con el comando


name.Ranging(##) donde name es la variable asignada al ultrasnico y ## es el
tipo de unidades que manejara, en este caso, centmetros.
Ahora hay que declarar el valor que reciba el pin del switch como una entrada digital,
es decir, como si fuese 0 o 1, sin variaciones, por lo que usaremos la variable on para
hacerlo. Con el comando digitalRead(name) haremos lo mismo que con los ejes,
pero en esta ocasin ser la variable correspondiente al switch y lo almacenaremos en
on para utilizarla despus
Habiendo declarado el ultrasnico y el switch, con el comando Serial.print(##);
imprimiremos en la pantalla lo que queramos ver, en nuestro caso, escribiremos
posicin x = y agregaremos la variable que corresponde al eje X y haremos lo mismo
con el otro eje, la distancia del ultrasnico y el estado del switch con la variable on.

Antes de continuar con el Void loop, primero declararemos unas funciones que nos
servirn para facilitar la lectura de datos, as en lugar de escribir por cada opcin todo
una gran lista de comandos, podemos declarar una funcin, insertar los comandos que
realicen esa accin y cada vez que la necesitemos, mandarla a llamar con un simple
nombre. Cabe destacar que estas funciones van despus del loop, e iniciaran de la
misma manera, con la palabra Void seguido del nombre del comando y los signos ( ),
se agregan imgenes para hacer referencia a lo escrito.

13

Vemos que hay varias funciones, y todas incluyen algo llamado SetVel (#,#,#,#); y su
funcin consiste en darle un valor de velocidad a cada motor, del primero al cuarto en
orden ascendente, as ya no tenemos que declarar cada velocidad en cada funcin, y
funciona de la siguiente manera.

14

Primero, lo declaramos como una funcin, por lo que utilizamos la palabra Void,
seguido del nombre elegido, luego unos parntesis y dentro de ellos declaramos
ah mismo 4 variables, de v1 a v4, que servirn para indicar que cada variable

debe ser un nmero y corresponde a cada motor.


Declaramos la velocidad de los motores con el comando name.setSpeed(##);
donde name llevara el nombre del motor que deseamos elegir y en el parntesis
el nmero que decidamos, pero utilizaremos las variables declaradas para
indicar que, cada vez que escribamos el comando SetVel(#,#,#,#) corresponder
a las velocidades requeridas.

Con esto, nos ahorramos el tedioso trabajo de declarar velocidades en cada funcin.

Tambin hay dos funciones llamadas UltrasonicoRetroceso y UltrasonicoAdelante


Para qu sirven estas funciones? Sirven para especificar qu har en el modo
autnomo (se explicara ms adelante).
Despus de haber declarado las funciones, regresaremos al loop para continuar con el
control del carrito.
El joystick es, bsicamente, dos potencimetros (uno del eje vertical y otro del
horizontal) por lo que al conectarlos en entradas analgicas, leeremos el valor de
ambos potencimetros. Sabiendo esto, al conectar el joystick al Arduino y mandando a
imprimir la pantalla, veremos que nos da unos valores, por lo que utilizaremos la
funcin Paro() para indicar que cuando el joystick se encuentre en esta posicin, el
carrito simplemente se quedara quieto dado que la funcin correspondiente a esa frase
dice que los motores deben dejar de funcionar cada vez que se llame esa funcin. As
que declararemos un if() para controlar este proceso, donde se muestra los operadores

15

<, >, &&, == que significan menor que, mayor que, and e igual a respectivamente. Los
acomodaremos de forma que no intervengan otros valores, o sea, limitaremos los
rangos para evitar falseos. Tambin se le agrega la orden on==LOW para indicar que
cuando el switch que controla el modo este apagado, funcionara con el joystick, de lo
contrario, no ser vlido y se hace esto con el fin de evitar entorpecer las acciones del
carrito. Declararemos tambin un breve retraso para que el Arduino no funcione de
manera tan apresurada.

Continuaremos con las dems direcciones del joystick, ayudndonos de la impresin


en pantalla para visualizar los valores que arroja y as limitar los rangos.

16

Ahora viene lo ms complicado, hacer que pase de un modo a otro. Lograremos esto
primero decidiendo los parmetros requeridos para cambiar de modo, as que
decidiremos que, cuando el carrito se encuentre parado y el switch deje pasar una
corriente hacia el pin del mismo, comenzara a funcionar el modo autnomo, por lo que
las otras funciones quedaran invalidadas dado que el pin on estar en HIGH.
Qu

queremos

que

haga

en

el

modo

autnomo?

Sencillo,

que

avance

indefinidamente y cuando sense que hay un obstculo a una distancia menor a la


establecida, retroceda cierto tiempo y gire a la izquierda para despus continuar
avanzando y que mientras tanto, no indique que est haciendo por medio de un LED,
cuando avance este parpadeando y cuando retroceda y gire este parpadeando. Cmo
lo programamos? Despus de declarar los parmetros para entrar al modo autnomo,
usaremos un if() para establecer las dos situaciones en las que podra encontrarse el
carrito, 1) a una distancia muy cercana a un obstculo y 2) no haya ningn obstculo
cercano.
Para la primera situacin, declararemos una distancia, en este caso, de 40 cm, as que
si se encuentra a una distancia mayor a 40 cm de cualquier obstculo, el carrito deber
avanzar. Pero no olvidemos el LED, que deber estar parpadeando mientras el carrito
este avanzando, por lo que en la funcin UltrasonicoAdelante() se declar todos los
parmetros, que este el LED parpadeando y avance al mismo tiempo hasta encontrar
un obstculo.
En la segunda situacin, el carrito deber estar echar reversa y girar a la izquierda,
indicando que, mientras est realizando esta funcin, el LED se mantendr encendido
hasta que cambie al otro estado, por lo que esto deber declararse en el if() y no en la
funcin como en el caso anterior, dado que es un factor exterior, porque en la funcin
UltrasonicoRetroceso() solo debe contener constantes.
Tambin se le agrega un Serial.print para visualizar que funcione correctamente el
programa y que el modo autnomo este trabajando de manera ptima, sensando y
realizando las acciones que marca nuestro objetivo.

17

18

CONCLUSIONES
Al momento de probarse, el modo analgico controlado por joystick funciona a la
perfeccin, solo que a veces se desconectaba un cable y dependiendo de cul era,
dejaba de funcionar correctamente, debido a que los cables Dupont es solo para
simulaciones, no sirven para un proyecto completo dado que son muy largos.
Otra cosa es que el modulo ultrasnico no es del todo fiable, ya que en numerosas
ocasiones dejaba de sensar y provocaba que el carrito se chocara de frente contra los
obstculos, se tuvo que cambiar por otro ya que al parecer vino fallado, pero aun as
tambin el Angulo le afecta, un poco ms angulado y no cumple su objetivo.
Las soldaduras de los cables con los motores igual hay que reforzarlas, ya que un par
de puntos se desoldaron con el movimiento y transportacin del carrito hacia que
terminaran por ceder.

19

REFERENCIAS

https://www.arduino.cc/en/Main/ArduinoBoardMega2560
https://www.arduino.cc/en/Tutorial/JoyStick
https://github.com/adafruit/Fritzing-Library

20

Vous aimerez peut-être aussi