domingo, 12 de abril de 2015

Haz y programa un robot

Estudié Electrónica, y siempre me fascino la robótica, tuve la suerte de poder realizar algún curso sobre Robótica (básico), y también de trabajar en entornos industriales, donde habitualmente estoy en contacto con Robots, en este post voy a intentar exponer lo que sé sobre el tema de la robótica. Mi idea y objetivo es que con ayuda de esta página, casi todos podáis construir un Robot. Y..¿quien sabe? ¿Estaremos creando a un nuevo Jhonny nº5? también los animo a que me mandés sugerencias, dudas, y mejoras para que este post ayude a todo aquel que tenga el capricho (como lo tuve yo) de Hacer un Robot. No lo pensés dos veces en mandarme un MP, que da no molesta. 

He dividido el post en cuatro secciones, lo que he intentado es, agrupar por un lado toda la parte electronica, la parte de sensores y motores, y finalmente la programacion, para que finalmente seamos capaces de crear nuestro Robot. 



MiniCursoElectronica - Aqui trato de explicar a grandes rasgos cada uno de los componentes que vamos a utilizar para la construcción del Robot, no se si todos tenés conocimientos electrónicos, pero si no es así, tenés esta sección para que sepas que estamos utilizando y porque. 



ELECTRONICA 

En princio no se quien va a visitar mi post, pero esta claro que para construir un robot, se necesitan unos conocimientos mínimos en electrónica, no hace falta decir que por lo menos hay que conocer los componentes básicos que van a intervenir en nuestra placa controladora, soldar, conectar, polarizar y chequear. En esta sección, voy a tratar de transmitir esos conocimientos, explicando brevemente cuales son, para que sirven, y cuando se usan cada unos de los componentes que vamos a usar, por favor si alguien no entiende o cree necesaria una explicación mas detallada, avisarme para extenderme mas (es un justo precio a pagar ¿no les parece? el resto es gratis ;P) 
Si no tienes conocimientos de electrónica, te aconsejo que ojees esta sección detalladamente antes de usar los componentes, esto te hará mejorar y comprender el rendimiento y funcionamiento de tu Robot. Quiero aclarar que esta sección no esta dedicada a convertiros en electrónicos, (Un buen electrónico necesita años de experiencia) ni nada de eso, tan solo se trata de que se sepan algunos conceptos básicos para que podáis construir y desarrollar su propio Robot, lo justo para que no se limiten a "copiar" si no que con ayuda del ingenio y conocimientos de cada uno puedan crear/modificar su propio proyecto. 



La base en la que os aconsejo trabajar, para fabricar o hacer pruebas con la placa de control de vuestro Robot, es el típico entrenador que se usa en electrónica, se trata de una especie de pastilla o placa de plástico perforada, que esta dividida en 4 sectores (recuadros en verde) que NO están conectados entre si. Estos "sectores" se dividen en columnas, (la marco en rojo) que SI están conectadas entre sus agujeros, es difícil explicar esto con palabras, pero si os hacéis de uno, y después de hacer varias pruebas, seguro que entenderéis su funcionamiento. La ventaja de usar este entrenador son muchas, pero para mi la principal es que no se necesita experiencia con el soldador, además para hacer pruebas y prototipos, esta opción es la mejor, ya que puedes hacer todo tipo de cambios rápidamente, conectar, desconectar, cambiar componentes etc.. casi de inmediato y sin miedo de si romperás o desperdiciaras componentes si aplicas demasiado calor. una vez probado el circuito y si os interesa podréis construir una placa permanente para vuestro Robot. Por supuesto este material podéis encontrarlo en cualquier tienda especializada de electrónica. 



Programación - Esta sección trata sobre el Lenguaje de Programación que vamos a usar, así como las instrucciones básicas del propio lenguaje. 



Programación 



Hola, quizás esta sección sea la mas importante de este post, ya que de la Programación dependerá directamente el comportamiento de nuestro Robot, una buena Lógica de Programación influirá directamente en la funcionalidad del 'bicho', aqui iré poniendo todo lo necesario para dar esa 'inteligencia' a nuestro Robot, desde un mini curso de ensamblador, como compilar nuestro programa (compilar es pasar de nuestro código 'entendible' por nosotros a código máquina que es el que entiende el microControlador, los famosos ceros y unos 000101100110000

) y por ultimo como transferirlo al microcontrolador. Para realizar esto ultimo necesitaremos un programador de PIC. 

El lenguaje de Programación que usaremos será Ensamblador. El lenguaje ensamblador es un tipo de lenguaje de bajo nivel utilizado para escribir programas informáticos, y constituye la representación más directa del código máquina específico para cada arquitectura de computadoras legible por un programador. 

Fue usado principalmente en los inicios del desarrollo de software, cuando aún no se contaba con los potentes lenguajes de alto nivel. 

Actualmente se utiliza con frecuencia en ambientes académicos y de investigación, especialmente cuando se requiere la manipulación directa de hardware, se pretenden altos rendimientos o un uso de recursos controlado y reducido. Muchos dispositivos programables (como los micro controladores) aun cuentan con el ensamblador como la única manera de ser manipulados. 




Caracteristicas del Ensamblador 


* El código escrito en lenguaje ensamblador posee una cierta dificultad de ser entendido directamente por un ser humano ya que su estructura se acerca más bien al lenguaje máquina, es decir, lenguaje de bajo nivel. 

* El lenguaje ensamblador es difícilmente portable, es decir, un código escrito para un microprocesador, suele necesitar ser modificado, muchas veces en su totalidad para poder ser usado en otra máquina distinta, aun con el mismo microprocesador. 
Los programas hechos en lenguaje ensamblador son generalmente más rápidos y consumen menos recursos del sistema (memoria RAM y ROM). Al programar cuidadosamente en lenguaje ensamblador se pueden crear programas que se ejecutan más rápidamente y ocupan menos espacio que con lenguajes de alto nivel. 

* Con el lenguaje ensamblador se tiene un control muy preciso de las tareas realizadas por un microprocesador por lo que se pueden crear segmentos de código difíciles de programar en un lenguaje de alto nivel. 

* También se puede controlar el tiempo en que tarda una rutina en ejecutarse, e impedir que se interrumpa durante su ejecución. 



Sensores-Actuadores - Esta es la parte donde usaremos los alicates!!, aqui hago referencia a los sensores y Motores que se usan habitualmente en este tipo de Robot. 



Sensores y Actuadores 

Este será nuestro Taller, y para mi, la parte mas divertida y emocionante, Aquí vamos a ver los diferentes tipos de sensores y actuadores que podemos usar para nuestro Robot, como y cuando usarlos, cual es el patillaje de los sensores / motores y como polarizarlos en nuestro Robot. Esta parte es en la que cada uno de nosotros marcara la diferencia con el resto, ya que aqui entra la creatividad de cada uno combinada con la combinación de cada sensor y actuador, seremos capaces de crear un Robot diferente al resto capaz de realizar lo que nosotros queramos y programemos. 



Personalmente este truco me fue de gran utilidad, lo encontré por casualidad hace muchos años en una web que estaba en ingles, de hecho gracias a esto simplifique muchísimo la placa de control que tiene mi Robot, ya que no me hizo falta ningún circuito adicional de potencia para gobernar los motores, (normalmente es necesario un complejo circuito compuesto de transistores de potencia para gobernar los motores convencionales) a mi me bastó con generar 'pulsos' para mover el motor, y esto lo hago directamente desde el micro controlador (pero bueno no adelantemos acontecimientos, esto se ve en otras secciones de la web), como decía, estos servos son fáciles de encontrar, es muy posible que tengais un juguete viejo, tipo coche, avión o barco teledirigido, pues bien, si ese es tu caso ¡¡felicidades!! Como mínimo ya tienes 2 servos!! mas que suficiente para que puedas hacer tu Robot. También dejo un testeador de servos por si quieres ir mas allá y hacer experimentos y/o pruebas con el puerto paralelo de tu PC para controlar esos servos. (como 
adelante antes, dependiendo de la frecuencia del 'pulso', lo que interpreta el servo es dirección, velocidad y hasta la posición!!, es una gozada. 

Todos los sensores que he utilizado, se pueden encontrar en cualquier tienda de electrónica, estos sensores se pueden clasificar en: Sensores Ópticos, Sensores Mecánicos y Proximidad, estos últimos son un poco mas complejos y requieren unos circuitos adicionales . 

Bueno, para empezar creo que esta bien, los dejo que navegen tranquilos y que analicen la circuiteria de cada uno de estos sensores y como ya he dicho antes, se aceptan sugerencias! a ver si entre todos hacemos un post en condiciones. 



EXTRA 



Modificar un Servo para convertirlo en un servomotor para nuestro Robot 

Hoy en día no es difícil encontrar motores para nuestro Robot, a un precio razonable, tenemos varias soluciones, pero a mi personalmente la mejor es esta. Los motivos son muchos, la principal, que controlando el pulso que le enviamos al servo, podemos hacer que varié la velocidad, sentido o incluso posicionarlo en una posición que nos interese (en grados). 

Esta clase de servos podés comprarlos directamente en una tienda de aeromodelismo o simplemente podés destripar su viejo coche a control remoto. ustedes mismos!! 

La idea inicial es modificar el servo para que pueda girar 360º , no se si sabés que esta clase de servos poseen un movimiento limitado de unos 180º. Después de este procedimiento vamos a conseguir girar 360º!! La idea parece buena ¿eh? bueno empezamos y pongamos la en practica. 

No se preocupen si los suyos no son iguales, depende del fabricante, los soportes y algunas piezas interiores cambian, pero el proceso sigue siendo el mismo, con maña se hace. 

Hay que quitar los 4 tornillos de la tapa superior, para poder quitar las dos tapas y tener acceso a la reductora y circuito del servo el servo mas o menos tendrá este aspecto (esta foto es de un servo Futaba) 





Después hay que desmontar la reductora para poder sacar el circuito con el motor para ello solo basta con tirar hacia arriba de las ruedecillas hasta sacarlas como se ve en la figura. 





Después se tiene que quitar la tuerquecilla que sujeta el potenciómetro con la caja y se "empuja" con mucho cuidado por la parte superior y se tira de la parte inferior hasta sacar todo el mecanismo de la caja.(yo empujaba el eje del motor hacia abajo) 





El siguiente paso es el mas complicado porque hay que sustituir el potenciómetro por dos resistencias de 2K2 o 3K3 pero conservando el potenciómetro porque este es el eje de salida, ahora explicare lo que hice yo con el potenciómetro, un invento chiniwini casero. 



Izquierda servo no modificado // derecha: servo modificado 



También la rueda de salida se tine que modificar, hay que limar la leva para que no haga tope con los otros piñones y ruedas. 



Izquierda: sin modificar // derecha: modificado 



Después se monta todo otra vez con la peculiaridad de que...¿como se pone la rueda de salida si ya no esta el potenciómetro que hacia como eje?, pos muy fácil pensé yo, jajaja yo coji el potenciómetro y lo desmonte (quite las pestañas que sujetan la carcasa y abrí el potenciómetro en dos mitades) vi una pieza de plástico que impedía que girara el eje, la queme con el soldador un poco y lo justo para que pudiera girar, y la monté en la carcasa del servo (solo la mitad de arriba) teniendo cuidado en que no tocase con las resistencias que quedan justo abajo. 



Listo!! ya tenemos un servomotor reciclado GRATIS!! 



Ejemplos: 


Este se trata de un robot rastreador, este Robot es capaz de seguir una línea negra sobre una superficie reflectante, creo que para comenzar, si no tenés experiencia es un buen proyecto, fácil de construir, programar y no excesivamente caro.Este proyecto esta basado en la idea de que en ciertas fabricas, hay robots que siguen una línea negra, blanca o magnética a lo largo de la fabrica. Estos sistemas también los he visto en parques temáticos como en “Terra Mitica” en una atracción llamada “El Minotauro” que consiste en una atracción que transportaba personas siguiendo una línea magnética, como veis las aplicaciones de este principio son infinitas, realmente estamos lo que estamos construyendo es una maquina real aplicada a una miniatura ¿no es fantastico?. 

Kikebot1 responde a ese principio, además y para complicarlo un poco, esta dotado de un sistema que detecta obstáculos y con un brazo los aparta de su camino. 

Este sistema esta controlado por un uC PIC16F84, que controla 3 sensores Opticos y 3 motores tipo servos de modelismo modificados para que puedan moverse 360º. 

Cuando el sensor esta sobre blanco este le manda un 0 lógico al PIC. 
Cuando el sensor esta sobre Negro este le manda un 1 lógico al PIC. 

Esto es así por el 40106 que es un inversor y que además adapta las señales de los sensores a nivel TTL para que el uC no tenga problemas. Sin el 40106 la señal seria justo al revés blanco=1 negro=0. 

Con respecto al control de los motores he tenido que estudiar las señales de estos servos hasta ver que con un tren de pulsos de 1000 a 1500 uS el servo gira hacia delante y con un tren de pulsos desde los 1600 a 2000 uS gira hacia detrás. Con este margen se puede controlar también la velocidad de estos. 



Esta es la placa de control, perdonar que no sea bonita, pero al tratarse de un prototipo no cuide el detalle del diseño de la placa. 



Los sensores están montados uno al lado del otro según se ve en la imagen, dependerá del grueso de la línea k queramos seguir. (deben quedar dentro de la línea) Estos sensores son 2 CNY-70. tienen 4 patillas, 2 son alimentación +5V. y las otras dos son cátodo del diodo y emisor del foto transisto. 



El chasis ha sido construido con un Mecano, es muy practico, ya que con pocos medios puedes fabricar casi cualquier forma.

No hay comentarios:

Publicar un comentario