martes, 2 de diciembre de 2014

Robot Velocista de Competencia - Parte I : MATERIALES

  Robot Velocistas "mini fk-bot", Ganador de los concursos de robotica: IV  Untelstronics, Intercon y Coneimera


En esta serie de  post voy a presentar la elaboración y  programación de un robot velocista para competiciones.
Esta basado en un "Arduino" , "Sensores QTR 8RC Pololu", "Driver drv8833 Pololu" y "Micromotores Pololu 10:1".
A continuación les presento los materiales completos:


MATERIALES:

-> QTR 8RC (matriz de  8 sensores de la casa Pololu)


Básicamente estos sensores se utilizan en pines digitales, también se pueden utilizar en pines analógicos  pero previamente configurados como digitales.
 Es por ello que estos sensores  son muy versatiles y ademas tienen una   mayor distancia en sensado a comparación de los analógicos). 
La forma de funcionamiento de estos sensores se fundamenta  en base del principio  de  carga y descarga del condensadores que esta en serie con los foto-transistores, cuando esta sobre una superficie blanca  el capacitor tendera a no  retener carga  por lo tanto la salida sera de 0 volts, pero por el contrario, si se encuentra en una superficie oscura (cuerpo oscuro absorbe luz), el foto transistor no saturara,  de esta forma el capacitor retendra carga, produciendo un voltaje positivo. Previamente se tiene que configurar los pines respectivos del microcontrolador como salida mandando un pulso de unos cuantos micro-segundos, y  luego después de mandar el pulso configurarlo como entrada  haciendo una lectura digital,  esto se debe hacer  continuamente en un bucle para obtener datos de sensado.

Es así como se puede saber si se esta en una sobre una superficie blanca o negra. Estos sensores ya cuentan con una librería en arduino que hace todo este procedimiento de forma automática, solo tendremos que declarar los pines que utilizaremos y haremos los llamados a las respectivas funciones de calibrados,  funciones de lectura de sensores y lecturas de posición que es lo que nos interesa para el algoritmode de control de robot velocista.

 .
-> ARDUINO (nano, mini pro, micro, uno, mega, lo que sea :3)

Bueno en teoría se podria utilizar cualquier arduino, pero lo recomendable para un robot velocista de competencias (que por lo general son muy livianos) es  utilizar un  arduino nano o mini pro. En mi caso utilice el arduino nano ya que me permitia  cargar el programa directamente  desde el usb,  pero en el caso del mini pro se necesita un convertido usb serial aparte para cargar el programa, pero la ventaja del mini pro es que es mucho mas pequeño y liviano que el arduino nano.
Una recomendación que les podría dar es que pueden utilizar los pines  ademas los analógicos (A0, A1, A2, A3, A4, A5) del arduino para las lecturas de los sensores, ya que estos no cuentan con módulos extras como el que traen los pines digitales como , pwm, interrupción, de comunicación serial , spi, etc.

Nota:
En el caso del  pines analógico A6 y A7 del arduino nano o minipro, no es posible configurarse como pines digitale, pues según el datasheet estos pines solo son  bypasses analógico, por lo que solo es posible utilizarse para lecturas analógicas.


->  Micro Metal Gearmotor (motores con reductora de la casa  Pololu)

Este es elemento principal y critico que determinara las características de nuestro robot velocista, ya que de el dependerá el desempeño del robot, se debe considerar que tipo de reducción, consumo y torque que  posee. por lo general se utilizan los " High Power" o "HP" con reducciones de 10:1 y   30:1.
 La reducción se refiere a cuantas vueltas dará el motor para que los engranajes produzcan una vuelta a la salida del  eje. se le suelen llamar a los engranajes como reductoras, pues ovbiamente  reducen la velocidad a la salida del motor. La ventaja que  conlleva tener una reductora  es que al  reducir las revoluciones del motor, se convertirá en una mayor torque, o lo vulgarmente decimos "fuerza".Es decir, un motor de reducción 10:1  utilizará engranajes que  reducen 10 vueltas del motor en un 1 produciendo un torque  relativamente mayor, por ejemplo:
Un motor de reducción 10:1 tendrá mucha mas velocidad que un motor 30:1, pero  poseerá menor torque que el motor 30:1. 

He aquí el dilema , Que tipo de motor utilizar?.  Pues  si tienes un robot que te va a salir un poco pesado, es decir que este por 200 a 400 gramos, que es mucho para un robot velocista de competencia, pues puedes utilizar los motores 30:1. Pero en cambio si tienes un robot liviano de unos 100 gramos, pues puedes utilizar uno de reducción 10:1. 

Lo anterior fue una parte de lo que debemos tener en cuenta para el motor del robot, Ahora esta el consumo de los motores. Pololu, empresa de venta de articulos para robotica, posee 3 tipos de motores,  estan los de consumo: High Power o HP, Medium Power MP y los Low Power LP.

Los HP tienen consumos de corriente de 120mA libre  a 1600 mA en paro  obteniendo mayores revoluciones por minuto  10:1 -> 3000 rpm,   30:1 -> 1000 rpm.

Los MP tienen consumos de  40mA libre a 700mA en paro obteniendo revoluciones relativamente altas 10:1 -> 2200 rpm,  30:1 -> 730 rpm

Los LP tienen consumos de  40mA libre a 360mA en paro obteniendo revoluciones bajas pero a  menor consumo  10:1 -> 1300 rpm,  30:1 -> 440 rpm 

En el caso de mi robot ,  utilizo motores 10:1 MP 2200 rpm , elegi estos tienen revoluciones altas y el consumo del motor no es tan alto por lo que no tengo problemas con el  agotamiento de baterías.

-> Driver de motor 
Hasta la fecha no existe un microcontrolador que sea capas de entregar mas de 100mA, por lo que el driver de motor seguirá siendo una opción obligatoria. Los driver que se pueden utilizar  son los siguientes:
TB6612FNG. Este driver posee 2 canales (para dos motores) es capaz de entregar 1 amperio continuo de corriente y 3 A pico por canal. soporta hasta los 13 Voltios y va bien con los motores HP.



DRV8833. Este driver es de 2 canales  y entrega una corriente de 1.2 A  continuos y 2 A pico por cada canal soporta hasta 10.8 Voltios y es el que yo utilizo :3, este driver es simple de utilizar, cuenta con los pines necesarios para el control de cada motor, a un pin lo puedes usar  para dar  para el sentido de giro al motor  y al otro para el pwm, cumple su proposito muy  bien, lo utilizo para motores MP.
La recomendación que puedo dar aquí es que para tener un mejor control de los motores, es mejor utilizar una configuración inversa de pwm para el control del motor ....... investiguen :D


->  Solarbotics RW2 (llantitas)


Estas llantas son lo mejorcito que tiene pololu, no es lo ideal pero se pueden conseguir otras opciones, esto ya depende de cada uno, así que para empezar estas llantitas van bien, pero repito no son lo ideal. 
Estas llantitas se acoplan bien a los micro motores de pololu asi que no hay mucho problema hasta aqui.

Llantas de caucho silicon.  Existe tambien esta mejor opcion en cuanto a llantas, tienen un mejor agarre que las anteriores y el rendimiento en velocidad del robot se ve incrementado en un 40 % , se suelen hacer a medida e inclusive se pueden mandar a hacer al color que uno guste. los aros son hechos de nylon, por lo que el peso es muy liviano y cae ideal para los robots velocistas



Nota: este tipo de llantitas yo las fabrico, si deseas adquirirlas puedes enviarme un mensaje a mi correo : marko.antonio.1.16.92@gmail.com , siempre estoy pendiente del correo por lo que te respondere instantaneamente. Se hacen envios nacionales e internacionales.


->Baterias

Las baterias de lipo son siempre la mejor opción, lo recomendable es que sean de 7.4 voltios, ya que nuestros micromotores funcionan a ese voltaje. Un aspecto importante también es la capacidad A/h (amperios hora que es capas de entregar la bateria antes de agotarce), Yo me tome la molestia de medir la corriente que consume en funcionamiento el circuito de control del robot (arduino, sensores, leds, etc) y estos consumen alrededor de 100 mA- 150 mA y los motores con carga consumes 200 mA- 400 mA ( es decir si promediamos el consumo del robot en funcionamiento normal, este estaría cosumiendo algo mas de 400 mA, por lo que lo ideal seria contar con una bateria que suministre almenos una hora de funcionamiento. Este seria el caso de una bateria de 500mAh. Como nuestro robot consume alrededor de 400 mAh, esta batería nos brindara un poco mas de una hora de funcionamiento antes de que este completamente descargada. 
Pero por supuesto siempre esta la opción de comprar una batería que tenga mayor capacidad como los de 1000mA y los de 1500mAh, pero sabemos que a mayor capacidad, mayor tamaño y peso, produciendo un mayor consumo de los motores, por lo tanto siempre hay q buscar un equilibrio.

-> BALL CASTER 3/8  (Pololu)


La  ball caster son también parte fundamental de el robot, es el tercer punto de apoyo  del robot por lo tanto no debe ocacionar mucho rozamiento en la superficie, hay quienes utilizan 1 ball caster y otros que utilizan hasta 2 esto ya depende del criterio de cada uno, es recomendable siempre utilizar materiales livianos, por lo que las ball caster de plástico son una buena opcion.


->BRAKETS  (Pololu)

Sirven para unir los motores con el chasis del robot, estos brackets son estandarizados para los motores pololu.

->CAPACITORES (filtro)
En esta parte quiero hacer énfasis. Todo lo que nos enseñaron acerca de circuitos elctricos (ley de ohm, kirchof, mallas, fuentes, nodos, etc)    se debería cumplir en "teoría". Pero en  realidad  no siempre es así  T.T .  Intervienen otros factores como los físicos, químicos, y hasta emocionales . Los materiales que compramos como resistencias, baterías, capacitares, estaño para soldar, rpm del motor, leds , etc, tienen valores aproximados. o mejor dicho, nos venden valores con porcentajes de error. En el caso de una resistencia, si pedimos que nos den una resistencia de 1000 ohm, puede que nos den una de valor de 996 ohm o 1007 ohm.   

A lo que voy es que hay factores que van a afectar al desempeño del robot, Algunos le dicen "ley de Murphy": - Todo lo que pueda salir mal, ocurrirá.
Uno de estos factores es el ruido eléctrico. Este es el principal factor que afecta a la mayoría de artefactos electrónicos en especial a los microcontroladores, y arduino  no se salva de esto. El ruido electrico es generalmente inducido por los  motores, haciendo que haya un mal funcionamiento del microntrolador ( reinicios, hace cosas extrañas, apagado intempestivo, y en el peor de los casos  quemado del chip).


Una las soluciones mas baratas que hay es simplemente poner un capacitores de "tantalio" de codigo 104 (0,1uF) y 103 (0.01 uF) en paralelo con la alimentación, El capacitor  de tantalio tiene propiedades fisicas-electricas que  hacen que sea capas de absorber (filtrar) el ruido eléctrico , cuestan un poco mas que los capacitares cerámicos, pero créanme, vale la pena. Lo recomendable es poner en la alimentacion del motor y en la alimentacion de 5v lo mas cerca del arduino.

Otro factor que influye en el mal funcionamiento es lo que se llama voltajes pico. Si se lo que estas pensando, los motores. Pues si, los motores producen los voltajes pico o caídas bruscas de tensión. Ya comente anteriormente que los motores tienen un consumo mínimo  y máximo de corriente, estos cambios de consumo de corriente hacen que el voltaje fluctúe. solo hace falta que nuestro voltaje caiga de 5 v hasta los 3 v en unos cuantos micro segundos para que nuestro arduino se reinicie o hagas cosas extrañas. 
La solucion? pues  otra ves un capacitor, pero esta ves de uno electrolítico de una  capacidad mayor, un valor empirico que funcione bien es uno de 470 uf a 1000 uf, a mayor capacidad, mayor energía almacenara el capacitor Y de que nos sirve esto?. Pues si se produce una bajada brusca de tensión, el capacitor actuara como un fuente de energia adicional, proporcionando energía al circuito de manera temporal mientra se produce la caída de tensión por ese pequeño instante, manteniendo así constante la alimentacion del circuito, en poco palabras va funcionar como un amortiguador ( como el de los autos). lo ideal es poner en paralelo al la alimentacion del driver y otro en paralelo ala alimentacion del de 5 volts del arduino.

-> PCB-CHASIS: 
Para disminuir el peso, la misma placa del robot es el chasis. Sobre el los demas comoponentes electronicos se sueldan, es importante que la placa este hecha de un buen material que garantice que no se vaya a quebrar o doblar con facilidad. Usar el PCB como chasis trae muchas ventajas como el saber que componentes estan fucnionando correctamente, tambien de poder verificar si esta funcionando correctamente la electronica del robot y porsupeusto esta que en caso de que se haya malogrado un componente, este se puede reemplazar rápidamente simplemente desoldando  y sustituyendo por otro con suma facilidad. Es importante tambien que la placa se doble, cosa que asi se reduce el tamaño del circuito considerablemente

pcb-chasis roboto velocista
pcb-chasis roboot velocista

->LEDS : 
->PULSADORES
->RESISTENCIAS
->SWITCH 
->POTENCIOMETRO


Adicionales que podrían agregarse al robot:

-> ENCODERS
Magnetic Encoder Pair Kit for Micro Metal Gearmotors, 12 CPR, 2.7-18v
Una buena opción es la utilización de encoders, ya que se tendría un mayor control del robot, veríamos a que velocidad vamos, si estamos en una curva o linea recta, y asi tener una mayor ventaja y sacar el jugo alas partes rectas y curvas,  para utilizar estos encoders  se debe tener micromotores con con un shaft mas largo ( pololu tiene algunos motores con shaft alargado y son algo mas caros que los normales).
Si quieres utilizar encoder, se debe realizar un programa adicional para capturar los pulsos que da el encoder y convertiralo en una medida que sea cuantificable como velocidad angular, velocidad media. desplazamiento total (odometria). 
En esta serie de  post no se realizara un acapite sobre como utilzar los encoder para robots velocistas, pues la intención es hacerlo lo mas entendible y didactico posible,  en lo que respecta a la programación, es un poco mas complejo hacerlo fucionar en el algoritmo PID basico  , pero vale!, el cielo es el y si quieres utilizarlo pues no te limites y usalos.  













"Si te sirvió de algo la informacion de la pagina, podrías invitarme un café y ayudarme a seguir manteniendo  en pie este sitio. Solo cuesta  $1 USD y me ayudarías  enormemente a seguir publicando estos contenidos". 


Siguiente post  >>> Utilizando libreria qtr sensors

56 comentarios:

muy buen blog pero no explica como...o en q orden soldar las piezas....tampoco pone para q sirve los encoder.....es decir el su modelo no tien encoder xq poner en los materiales enccoder si no los utiliza?

Q más amigo, muchas gracias x este aporte, me sirvieron tus acotaciones acerca de los capacitores de tantalio. Me podrías facilitar un correo al q t pueda enviar un par de imágenes y me des tu opinión. Gracias de antemano. Un saludo desde Venezuela.

Hola, excelente!
Oye puedo sustituir el DRV8833 por un L293D?

Hola, excelente!
Oye puedo sustituir el DRV8833 por un L293D?

si se puede, en realidad la mayoria de drivers tienen la misma estructura, pero en el caso del dr8833 no viene incluido los pines enable de cada canal como el que lo tiene el l293D, asi que simplemente no uses los pines enable del l293d y lo demas es lo mismo. saludos!

amigo para poder armarlo tendrías fotos de como quedaría y el chasis de que material esta hecho

Muy buen trabajo, tengo una pregunta.
Puedo reemplazar el arduino por el Baby Orangutan. Cual seria la diferencia.
Gracias

El chasis es la misma placa del robot. Solo que esa esa placa es con el diseño que ves.

Si no me equivoco el baby orangután incluye un driver y lo puedes programar en con el ide arduino. Tendrías que tener en cuenta los pines si lo quieres reemplazar

amigo Buenas Tarde, es un excelente post. pero tengo un roblema te comento, utilice el drv8833 y motores hp 10:1 y hp 30:1 con una bateria de 3.88 Volts con 3200 mA adicionandole un boost xl6009 para alcanzar hasta los 9 volts para los motores.
al encender el arduino, calibrar, y presionando el botton de arranque se reinicia. a que se debera muchas gracias

Hola yahiir, el problema que tienes con los reinicios deben ser por el ruido que el booster produce, agregarle un condensador en paralelo a la alimentación y a la salida del booster de unos 220 a 470 UF . ten en cuenta también la cantidad de corriente q puede suministrar el booster, si el circuito demanda mucho puede que tenga una caída considerable de tensión y eso provoca tambien reinicios

no tendras el diseño del seguidor para hacerlo en pcb?

Este comentario ha sido eliminado por el autor.

Disculpa no tendras los pasos a segir para montarlo

Hola Este blogg es genial, gracias por poner toda esta información valiosa me has ayudado enormemente.

Hola, tu artículo está muy bien, y lo e leído con detalle; ahora tengo una duda ¿ Alguna vez haz tenido problemas de reset del arduino nano por falta de energía ? o por exceso de consumo de corriente de los motores ? tengo mi seguidor de linea y de repente comenzó con ese problema, supuse que era el arduino así que lo cambie por otro y funcionó un poco, pero después continuó igual, luego cambié los motores por unos low power ( los primeros eran 10:1 hp ) y funcionó sin problemas.
no sé que hacer, uso una batería de 3.7v 1000mA y un booster para subir el voltaje a 6.5v.
¿7.4v no es mucho para esos motores pololu?

el problema es tu booster, generalmente no logran suministrar una corriente alta, producen mucho ruido, y debido a los picos que producen los motores el voltaje es muy erratico. si usas booster elevalo a mas voltaje

Este comentario ha sido eliminado por el autor.

Hola, amigo tu seguidor velocista esta muy interesante, estoy haciendo algo similar me podrias ayudar con el esquema en proteus. Mi correo es joshe-p@hotmail.com.
muchas gracias por la informacion.

hola amigo como estas muy interesante tu velocista, tal vez m podrias ayudar con las pistas diseñadas en proteus, osea el chasis este es mi correo : jeancarlosjumbo@hotmail.com

Oye para ponerme en contacto contigo para el chasis ?

Hola amigo, estoy interesado en el proyecto pero sera que me podria colaborar con el chasis, muchas gracias mi correo es alferez_13@hotmail.com te agradesco

Amigo te envio un correo checalo o mandamelo el mio es claudio010111@gmail.com

pregunta soy medio nuevo en esto pero en el tutorial se da la opcion de usar el dvr8833 el TB6612FNG y hasta el l293d, ahora mi duda es que los pines de entrada en el dvr8833 que son usados en el esquema con arduino en todos puedes utilizarlos como PWM, mientras que en el TB6612FNG solo hay dos pines PWM y las entradas del TB6612FNG no especifican para usarlas como PWM como seria la conexion para el TB6612FNG, no afecta si usamos los pines de entrada señalados en el esquema del TB6612FNG sin que sean PWM?

compañero lo del tema de reemplazar el driver al L293D como sería la programacion en la parte void motores??

no se si llamarlo problema porque mi carrito sigue la linea bien solo en curvas muy cerradas se sale de la linea pero al prenderlo y calibrarlo el carro arranca pero siguiendo la linea con los sensores de la orilla en lugar que con los de enmedio a que se debe? o es normal?

Amigo me gustaria saber como emplear la informacion de los enconders para optimizar el control de la velocidad, me podrias dar una orientación?

Que tal, mi pregunta es acerca de cual fue el material con el cual hiciste el chasis

AMIGO BUENAS NOCHES SOY UN ESTUDIANTE DE MECATRONICA AFICIONADO X LA ROBOTICA Y M GUSTARIA Q M AYUDES CON EL ESQUEMA DE LA PLACA PARA EL SEGUIDOR DE LINEA SI NO ES MUCHA MOLESTIA DE ANTE MANO MUCHAS GRACIAS MI CORREO ES zapata_a95@hotmail.com GRACIAS.......

buenas tardes amigo sera posible de poder pasarme el PCB de la tarjeta ya que estoy haciendo un tesis de investigación de los diferentes modelos y aplicación que conllevan los robot velocista seria muy util para mi desarrollo con el arduino y poderlo aplicar en mi tesis ya que nos varios ejemplos que tengo que presentar mucas gracias por su atencion mi correo es ucchiasasuke.ag5@gmail.com

que pena se me fue mal el correo espero pronta respuesta gracias

buenas tardes amigo sera posible de poder pasarme el PCB de la tarjeta ya que estoy haciendo un tesis de investigación de los diferentes modelos y aplicación que conllevan los robot velocista seria muy util para mi desarrollo con el arduino y poderlo aplicar en mi tesis ya que nos varios ejemplos que tengo que presentar muchas gracias por su atencion mi correo es ucchihasasuke.ag5@gmail.com

ya lo termine y quedo SEVERO, de lujo tu post todo muy bien explicado y claro, enseñaste muchas cosas nuevas ;D (Y)

Disculpa no tendras los pasos a segir para montarlo. micromotor

exelente post y desde ya muchisimas gracias por compartir toda esta informacion con tantos aficionados y estudiantes que nos encanta la electronica y la programacion, solo tengo una pregunta, se puede usar otra placa de sensores, es decir, hacer una propia con los tcrt5000? andaria igual? pregunto porque la placa que usas la incluyes en el codigo con una libreria, seria lo mismo armando otra placa? es decir, la libreria solo habilita como entrada o salida los puertos que van a la placa de sensores? muchas gracias, espero tu respuesta, esta genial el post

adonde esta el archivo de pcb para poder imprimirlo y hacerlo

hola amigos, usds saben donde comprar el velocista seguidor de linea por favor

Holaaa. Excelente trabajo. Pero me podrían facilitar o decir como optengo la librería del driver que utilizaron. Porfavor.

Me podrias proporcionar como va el circuito con sus componentes por favor

Hola amigo, me guta mucho tu proyecto y me gustaría llevarlo a cabo, quería saber si m podrías ayudar con la placa pcb para el chasis del robot, este es mi correo teca_A05@hotmail.com espero puedas ayudarme, gracias.

en cuanto dinero $$...sale hacer este robot velocista??

Hola amigo me podrias enviar el diseño en PCB (eagle o proteus) acmasautomation@gmail.com
gracia!

Hola amigo me podrias enviar el diseño en PCB ( proteus) nelsoncastillo811@hotmail.com, me guta mucho tu proyecto y me gustaría llevarlo a cabo, gracias

Me gusto mucho tu proyecto y me gustaría poder hacerlo,Me podrías mandar el diseño en PCB a djkidbasz@gmail.com,

Muy bueno el artículo. ¿Me podrías enviar el diseño de la PCB a enlopa@yahoo.es?

BUENAS Q TAL ME PUEDEN PASAR EL DISEÑO A MI CORREO PORFAVOR orlando.gaspar.alba.oga@gmail.com

Este comentario ha sido eliminado por el autor.

Saludos

Amigo cual es el peso aproximado de este robot?
Gracias

amigo los capaciradores de que valores son !

muy buena la idea de los capacitores de tantalio; me gusto el vlog

Hola amigo. me gusto mucho tu proyecto, estoy aprendiendo poco a poco, para mejorar cada vez más en los seguidores de linea. si no es un inconveniente para vos de enviarme tu diseño para analizarlo y comprender lo mejor, yo tengo uno pero es muy básico. pero me a servido para las competencias... mi correo: willmartin4k@gmail.com.
si no puedes entiendo gracias con tal por compartir esta información.
gracia!

es a doble cara la pista disculpe?

Este comentario ha sido eliminado por el autor.

Velamen: Me vela y me la pela

Hola, quisiera saber si hay manera que me pases el documento de eagle por mail, será posible??? val.eira@hotmail.com

Hola quisiera saber si me podias facilitar el documento eagle, pagaria por el, gracias.

hola una pregunta me podrias facilitar con el pcb porfavor a este correo cococho805@gmail.com

Publicar un comentario