MicroMouse Robot con Arduino Mega 2560

Buenas tardes.

Tengo en mente un proyecto que me gustaría llevar a cabo, y es el de hacer un micromouse robot como este:

http://www.geek.com/articles/chips/min7-micromouse-robot-solves-maze-in-3-921-seconds-20111122/

Pero necesito las opiniones de los usuarios de este foro, ya que lo he visitado varias veces y me ha gustado lo que he leído, y cada vez que he preguntado me han respondido con coherencia y rapidez.

Por ejemplo, ya se que la velocidad del Arduino Mega 2560 es de 16Mhz y el de la web que he puesto es de 20, así que no aspiro a hacer un recorrido de un laberinto en 4 segundos, pero en 20 me valdría! :grin: Luego, las piezas que lo componen... podrían funcionar bien en la Arduino? porque al no ser servo, sino de continua, pues hay que enviar mas o menos unos y ceros, pulsos, para que vayan a más velocidad o menos... una explicación muy pobre pero en mi cabeza está más clara... si alguien puede explicarme como hacerlo con Arduino mega, código de ejemplo... estaría muy agradecido. Y por último.. donde comprar esas piezas, motores de alta velocidad, 3 sensores de proximidad infrarrojos para Arduino, la Arduino Mega que ya la tengo... no se que más necesitaría... la alimentación es muy importante, porque en otros proyectos... 2 servos, un ultrasonido y la Arduino Mega no me ha sido suficiente con 6v ni 9v... he tenido que alimentar los dos servos con 6v y la arduino y el sensor con 9v y la verdad que la velocidad dejaba que desear...

Bueno, muchas gracias por adelantado...

Un Saludo!!!

Me he estado informando y algunas cosas he sacado en claro, pero vamos... que sigo con dudas. Por favor, opiniones, consejos, tiendas... Gracias!!! =(

www.pololu.com www.sparkfun.com

En la primera más o menos podrás conseguir todo.

"Por ejemplo, ya se que la velocidad del Arduino Mega 2560 es de 16Mhz y el de la web que he puesto es de 20, así que no aspiro a hacer un recorrido de un laberinto en 4 segundos, pero en 20 me valdría! "

Aunque el de la foto funcionase a 4 MHz haría el mismo recorrido igual, la diferencia es que ese microcontrolador que él usa es de 32 bits (si no me equivoco) y el arduino de 8, por lo que cambian bastantes más cosas que la velocidad del reloj.

La piezas que necesitas son un microcontrolador, un puente en H, encoders, sensores, y probablemente un dc-dc para tener la tensión de los motores fija, a no ser que uses motores con encoders integrados no podrás cerrar el loop de la velocidad con encoders caseros. Los motores que usan ahí diría que son faulhaber1717, entre los 200 y 300 euros cada motor.

http://www.jmnlab.com/robotzero/robotzerov.html mirate esto, se detalla la contrucción de un robot velocista desde cero, hablando de los componentes principales donde se explica la electrónica, más o menos los componentes principales son los mismos que los del laberinto.

Concursos de laberinto no suele haber en España, por lo que si quieres participar vete pensando en hacer seguidores de línea velocistas o sumo.

Y llegar a hacer los robots como el que has puesto en la foto es muy complejo, hacen falta muchos medios y conocimiento.

Saludos.

Muchas gracias JMN por tu respuesta! Me ha ayudado algo en lo que a estrategia de montaje se refiere! :)

Me has dejao loco con los 300 euros de los motores... Jajaja! La verdad es que tenía pensado otros más baratos! Como no me interesa participar en ningún lado, las piezas tampoco es que quiera yo que sean la leche! He estado mirando motores de alta velocidad de continua que no llegan a 20€, y como no pretendo que pese mucho el robot, con dos es suficiente! He visto estas piezas:

· http://www.pololu.com/catalog/product/71 · http://www.pololu.com/catalog/product/2140 · http://www.pololu.com/catalog/product/114/faqs · http://www.pololu.com/catalog/product/1598 · http://www.pololu.com/catalog/product/1137 · http://www.pololu.com/catalog/product/136 · http://www.pololu.com/catalog/product/1127/specs · http://www.pololu.com/catalog/product/957/specs · http://www.pololu.com/catalog/product/1698 (Que ya tengo)

Luego, lo del encoder no me ha quedao claro. De todas formas, he podido coger un motor de continua y a través de un transistor, controlar la velocidad subiendo o bajando el número de "1's o 0's" Que no pensaba que necesitara algo más para controlar los motores. Y la web, aunque no la he visto aun en profundidad, tiene muy buena pinta, así que me la miraré a fondo!

Muchas gracias de nuevo!!! Me ha servido de ayuda tu comentario!!! ;)

Los motores que van bien para robots pequeños de pololu son estos: http://www.pololu.com/catalog/category/60

Dependiendo de la velocidad que quieras y del consumo eliges uno u otro, en resultado/precio son los que mejor salen.

No conozco muy bien la prueba del laberinto, pero creo que se ha de poder saber cuanto se gira, para que el robot gire 90 grados, etc.. para ello es necesario añadir encoders, o incluso algunos usan motores paso a paso.

Saludos.

Muchas gracias... :) Los he mirado y me llaman la atención bastante, la verdad!!! Pero claro, sigo teniendo la duda de si voy a poder hacer algo parecido, con una velocidad decente en mi robot con los materiales que tengo!

Si es el primer robot que haces es mejor que vayas paso a paso, no tengas la idea de hacer algo que corra si no de aprender a usar los componentes principales, un robot puede ser todo lo complicado que quieras, y el de la foto lo es y mucho.

Si es el primero paso a paso y hacer algo que se mueva y funcione.

:) Confiaba en que responderías! xD

Pues la verdad es que no es el primer robot que hago, ahora mismo no tengo un vídeo de la versión final, pero tengo uno de la versión 0.3...

http://www.youtube.com/watch?v=8b-3MQeUha0&feature=related

Como puedes ver aun no está montado del todo, aunque en la actualidad lo está, ese vídeo es de hace un mes. Uso dos servos y un sensor de ultrasonido. Y aunque se ha vuelto a desfasar la velocidad de los motores, me funciona bastante bien. Ahora estoy esperando que me llegue un servo de 180 para el sensor y que me gire en el sentido contrario del obstáculo y un par de sensores IR para que no se caiga si se encuentra un escalón. Pero no tiene mayor dificultad! La única dificultad que puedo encontrar es en el montaje y la batería... que soy de software no de tecnología y no estoy experimentado en el hardware y sus compatibilidades. Pero por eso precisamente hago estos miiiiiiiiiiiniproyectos, porque me gusta aprender así.

Para montar el microbot, lo que necesito es saber si la placa me va a responder bien, y si pueden ser compatibles las piezas. No pretendo imitar la inteligencia del Micromouse Robot que puse como ejemplo, solo su estructura, y cuando aprenda, que ahora no tengo mucho tiempo, la programación necesaria de grafos para ejecutar el recorrido de un laberinto, casa, recorrido al azar... pues ya tener montado lo físico y poder así hacer pruebas con la programación.

Por cierto, JMN, sabes como hacer con Arduino, el código para controlar por pulsos un motor de continua?

Muchas gracias ;)

Para controlar un motor se usa una señal PWM, no sé si te refieres a esta señal, hay varias formas de control de un motor mediante una señal pwm, la más sencilla es hacer que la velocidad del motor sea función del ancho del pulso de la señal, es decir si la señal está más tiempo a uno que a cero el motor va más rápido.

Para hacer una señal pwm con un arduino es la función analoglwrite() creo recordar, no he usado arduino nada más que una tarde para verlo, por lo que aquí te lo diran mejor.

El problema es que la frecuencia de la señal PWM de Arduino es del orden de centenas de herz, no se si 500 Hz?

Los motores baratos o de juguete, por su contrucción, no dan un par constante durante todo el giro del rotor, es decir el par que hace depende de la posición de éste, una forma de solucionarlo es aumentar la frecuencia de pwm al orden de varios KHz, 10-20 KHz suele estar bien, por lo que ya tienes que tocar las funciones de arduino para modificar la frecuencia o ver que frecuencia te da.

Resumiendo, controlaras bastante mejor un motor barato con una frecuencia de varios KHz que a Hz.

Te dejo un par de entradas sobre el tema que pusé en el blog:

una sobre cómo hacer el driver y cómo funciona un motor: http://webdelcire.com/wordpress/archives/1269

y otra de generar la señal pwm para controlar el driver: http://webdelcire.com/wordpress/archives/1346

Es el mismo microcontrolador que usan los arduinos, pero tocando directamente los registros del micro para configurarlo en lugar de usar las librerias de arduino.

La estructura del micromouse que has puesto en la foto probablemente sea una maravilla, ahí han hecho todo el análisis de masas e inercial, por lo que todo está muy bien colocado, es un nivel muy alto el que tienen los japoneses en estas cosas.

Si quieres aprender la electrónica empieza por mirarte los motores de corriente continua y como controlarlos, que es lo primero, y paso a paso, luego los sensores, etc..

Hola Roy, he visitado tu post porque me gusta todo lo referente a robots DIY arduino, y después de ver tu robot y leer tus comentarios referente a precios de motores, no he dejado de pensar en el primer robot que hice, casi todo con piezas recicladas, tal vez te ayude ver como lo fabriqué para extraer alguna idea, y por lo de correr no tendrás problemas, porque corre que se las pela, eso que comentas sobre la diferencia en Mhz de los pics dudo mucho que afecte a la gestión tan simple que han de realizar, creo que están muy infrautilizados, así que no te preocupes por tan poca diferencia. Te llamo la atención de que además de los motores con su respectivas reductoras son recicladas de lectores cd´s sino que además la batería es de un móbil, así como casi todo lo demás,como las ruedas , que son de una impresora reciclada, osea , que me ha salido por "cuatro duros", te dejo la URL por si quieres visitarla,saludos.

https://sites.google.com/site/arduinoreciclar/robot-arduino

Buenas!

Pues nada he visitado los enlaces que me habéis mandado... la verdad es que he terminado bastante contento con lo que he visto.

JMN, los dos artículos están bastante bien. Me los he guardado para leerlos detenidamente. He cogido tres motores que he encontrado en una lectora. El de giro de DVD, el que desplaza el láser y el que abre y cierra la bandeja. Practicaré con ellos, ya que con arduino nunca lo he probado.

Terraguea45, me ha encantado tu página y tu "cortocircuito", el Número 5. :) La he leído y me gusta bastante tus métodos de reciclaje. Como has leído en el párrafo anterior he reciclado un DVD que le habían reventado 3 condensadores y he cogido los 3 motores que comento. Aunque tu dices que coges 2 de apertura de bandeja. Bueno... yo practicaré con estos tres y cuando pueda, por Ebay me pillo dos más en condiciones por un par de euros y los implemento a mi proyectiyo. ;) Muchas gracias a ti también.

Por cierto, sabéis que transistor usar con la arduino y el motor de apertura de la lectora???

Roy, no acabo de entender tu pregunta...¿cual es el motor de apertura de la lectora? es el que a través de una reductora abre y cierra la bandeja del cd. Por eso no te precipites a la hora de desmontar la lectora de cd´s, de no sacar los motores deprisa, entiende la función de cada uno de ellos en su entorno y aprovecha la infraestructura creada, en el caso de la reductora recorta con una amoladora tipo dremel todo el conjunto entero, y que quede por un igual a las fotos que cuelgo en mi web, repasalo un poco y lo identificarás enseguida, los demás motores también es importante que los dejes integrados en sus chasis, por ejemplo, de nada te sirve el motor Paso a Paso de una disketera o lector cd-dvd de 4 hilos ( que gestiona el movimiento del diodo laser ,para leer datos ) fuera de su chasis, ya que el eje del motor se alinea respecto al bobinado ayudado por el chasis, fuera del chasis pierde su alineamiento y funciona mal, mejor dicho, no funciona.( gestionar motores PaP + arduino con ic uln2003 ) Respecto a tu pregunta sobre el transistor , me imagino que te refieres a que IC ( circuito integrado ) usar para gestionar los motores dc ?, hay mucha documentación sobre arduino+ l293d , pero te recomiendo que uses el sn754410 ( 1A) o el l298n que se calienta mucho menos puede gestionar hasta 4A ( incorpora disipador de calor )a diferencia del l293d que sólo admite 600mA y se calienta de mala manera. Saludos y espero haberte ayudado un poco.

No, verás! Precisamente con el motor de una lectora de dvd, no se qué motor exactamente, hice pruebas con otra placa Arduino pero modificada, sin bootloader (la tenia que programar con un AVR Dragon el Atmega328P, programando directamente el micro sin usar ninguna librería) y para poder usar el motor usábamos un transistor por el tema de los miliAmperios. El motor no estaba en ningún chasis y cumplía perfectamente su función... más ceros mas lento, menos ceros menos lento! Así podíamos ver en el osciloscopio perfectamente cómo variaba el ancho del pulso. Entonces, cuando pregunto que transistor usar es porque se que no debo enchufar de manera directa el motor a la placa, por lo menos para que funcione mejor que sin el transistor, aunque no se si es que le puede pasar algo al motor y/o a la placa, así que ni lo he probado. Entonces mi pregunta, más concreta podría ser:

Tengo tres motores de una lectora de dvd. Uno que abre la bandeja del DVD, otro que desplaza el láser y otro que hace girar el DVD. Quiero probar alguno de ellos. Como he hecho una practica con algo parecido que he comentado en el párrafo anterior, se que tengo que usar un transistor y quisiera saber por qué tengo que usar uno, que pasa si no lo uso y para poder practicar, qué transistor usar. :)

Muchas gracias por tu respuesta Terraguea45, he podido leer un par de conceptos interesantes los cuales poder investigar y aprender algo más. ;)

Un Saludo.

Cualquier transistor que aguante la instensidad del motor con el eje parado te vale, para controlarlo como quieres un NPN bipolar o un mosfet de canal n de enriquecimiento. Tienes que fijarte en la tensión máxima que soportan y en la intensidad que puede pasar.

Pero mejor que un transistor usa un puente en H como te dicen, te permitirá controlar el motor en velocidad y sentido mientras que con el transistor sólo puedes controlarlo en velocidad. Es mejor usar un puente en H de mosfets que uno de bipolares como el l298/l293 ya que su caída de tensión suele ser menor.

Buenas.

He estado mirando la practica que comenté que hice y he descubierto el transistor que usaba con el motor de apertura de bandeja de una lectora de dvd, es el c547b, es exactamente el motor con el que pretendo trabajar. Pero haré lo que me has recomendado JMN, intentaré hacer eso del puente H, porqu eme interesa que gire en varios sentidos.

Iré comentando como va la cosa. Gracias.

Hola Terraguea45!! Una pregunta. En el primer enlace que me has pegado he visto que tienes un chip de puente en H y circuito de protección, como condensadores, etc etc.. me podrías indicar en un papel o algo por el estilo esa circuito? Es que no tengo mucha idea de esa profundidad y quería investigar para que es cada cosa y poder hacerlo yo.

Muchas gracias.

que tal señores les comento ya tengo el codigo en arduino un amigo me ha ayudado en esto pero tengo varios problemas al momento de compilar. no se si alguien de ustedes me pueden ayudar mi correo manky666@hotmail.com