Tag Archive: Mecatrónica


Como os dije en la entrada anterior hemos empezado a construir nuestro propio brazo robótica.

Para ello en primer lugar observamos el diseño del brazo que venden como kit de montaje, (el que controlábamos en el video anterior) vimos sus movilidad, sus limitaciones, su fuerza, su velocidad… Con respecto a la movilidad es un brazo bastante flexible, tiene cinco articulaciones, permite llegar a todos los puntos de diferentes formas. Uno de los grandes incovenientes es que es bastante lento, como está hecho con motores DC y reductoras para conseguir algo de precisión tiene muy poca velocidad, y no lo puedes controlar con exactitud, no hace dos movimientos iguales. También la fuerza era un punto a mejorar, a pesar de que los motores no estuviesen muy allá está hecho de plástico y por lo tanto limitado a coger objetos ligeros.

Una vez estudiado los puntos a mejorar del brazo procedimos a hacer un diseño para tener una idea de los materiales que ibamos a necesitar, su precio, electrónica, motores…  El diseño lo hicimos en CAD os dejo aquí el plano.

Brazo robotico-Model

El brazo está diseñado para fabricarse con perfiles en U de aluminio, y motorizado con Servomotores en las articulaciones bajas y microServos en las articulaciones más altas. Una vez terminado la parte del diseño llegó la hora de ir a comprar, los perfiles de aluminio U son fáciles de encontrar en almacenes de bricolaje al igual que la tornillería, los servos lo teníamos de otros proyectos y la garra la compramos en libelium.

En el siguiente post seguiremos contando cómo avanza el proyecto.

Buenas, desde hace un mes nos hemos metido más a fondo en el tema de la mecatrónica, y que mejor forma de hacerlo que controlando el brazo robótico que compramos hace ya un tiempo, para controlarlo hemos usado nuestra placa focusduino, basada en arduino.

A pesar de que este brazo está hecho con motores DC y la estructura es de plástico nos ha motivado a seguir avanzando un poco más en esto de los brazos robóticos, con lo que nos hemos propuesto construirnos nuesto propio brazo robótico, ya que en las tiendas lo mejor que podemos encontrar es este y controlado por un software que tiene que estar enchufado al ordenador y solo es compatible con el OS de Sr Gates.

 

 

Pronto os iremos contando los avances con nuestro brazo.

Buenas, una de las cosas más impactantes de la domótica es llegar a casa dar una palmada y encender la luz, pues bien, eso lo podríamos hacer con alguno de los micrófonos que venden en dealextreme para arduino por unos cuantos dolares, pero si vuestra paciencia no es capaz de esperar a hacerse viejo y queréis saber cómo hacerlo sin usar ninguna placa de micrófono os explico brevemente qué tenéis que usar.

No sé si sabréis que un altavoz no es más que una membrana que al llegarle una señal por el cable la hace vibrar a una frecuencia determinada, pues si lo hacéis a la inversa, es decir, mandáis una frecuencia por el aire a la membrana, ésta a su vez se excita y manda por el cable una señal, esa pequeña señal la podéis amplificar y leerla con Arduino.

Para amplificar esa señal existen numerosos circuitos, esta vez he usado un amplificador operacional u741 que añadiéndole un par de resistencias y polarizándolo con +15v, gnd y -15v  podéis hacer que amplifique la señal por la constante que queráis (entre 1 y 1 millón) Os dejo el esquema para que le echéis un vistazo.

esquema741

Teniendo el circuito amplificador listo, leemos la señal analógica con Arduino, usando el programa que viene en el compilador como ejemplo de AnalogReadSerial vemos la entrada que tenemos, y cómo varía al dar una palmada o golpear la mesa, ponemos. Escribimos en nuestro programa que cuando el sonido llegue a un punto determinado se enciende un led, o active el relé para encender la luz.

Os dejo por aquí el video, esta vez no enciendo la lámpara sino que enciendo un led del laboratorio.

Otro de los proyectos que he hecho durante este curso ha sido el disparador de fotos por ultrasonido, con este «aparatito» podemos cerrar el obturador de una cámara mediante un movimiento. Es bastante útil ya que podemos accionar la cámara a parte de con un sensor ultrasonido con cualquier otra aplicación para Arduino (sensor de luz, Xbee, Ethernet…).

Os dejo el video para que veais el funcionamiento.

Para interactuar desde Arduino con la cámara hemos usado un emisor IR el cual actúa como mando para la cámara, a partir de ahí ya podemos usar cualquier cosa para controlarla, desde un pulsador para hacer un mando económico, hasta la ethernet shield para realizar fotos desde cualquier parte del mundo.

Os dejo un enlace con las librerías para controlar diferentes cámaras a través del IR y con el código de prueba.

FocusBot

Tras haber dejado de lado un poco el blog, os subo los proyectos que he estado haciendo durante el curso, no he hecho todos los que me hubiese gustado por falta de tiempo.

En esta entrada os voy a mostrar FocusBot, hecho desde Iniciativa Focus en la Universidad de Málaga, este robot quizás sea el más inteligente o más bien el menos tonto de los que he hecho hasta ahora, es capaz de avanzar por una habitación con obstáculos esquivándolos en un 90 % de los casos, este porcentaje de éxito se podría aumentar con facilidad mejorando la «visión», es decir, eliminando los ángulos muertos, esto lo haríamos añadiéndole un tercer sensor de ultrasonido.

Como siempre hemos usado una placa Arduino Focusduino (placa arduino con contrador de motores), dos sensores ultrasonidos y una base robótica con dos motores.

Os dejo el video.

También he hecho una librería para los sensores de ultrasonido para aligerar así el código, la podréis descargar junto con el programa del robot como ejemplo:

Descargar librería y código aquí.

Mecatrónica

Ahora que comienza el curso es buen momento para explicar qué es, o para qué sirve lo que llamamos MECÁTRONICA. Esta nueva disciplina viene de la combinación de distintas ramas de la ingeniería como son: la ingeniería mecánica, ingeniería electrónica, ingeniería de control e ingeniería informática. Esta combinación forman lo que es la ingeniería mecatrónica, una especialidad reciente que surge ante la necesidad tecnológica a la que vamos orientados.

Este término fue acuñado por  la empresa japonesa Yaskawa Electric Co en 1969, y años más tarde permite el libre uso de este término. La mecatrónica nace para autimatizar la maquinaría existente, y hacer así los procesos más agiles y confiables, con esta nueva rama se pretende conseguir también la armonización de los componentes mecánicos de un sistema y los electrónicos lo cual ha sido siempre bastante complejo.

Un ingeniero en Mecatrónica es un profesional con amplio conocimiento práctico y multidisciplinario capaz de integrar y desarrollar sistemas automatizados que involucren tecnologías de varios campos de la ingeniería. Este especialista entiende sobre el funcionamiento de los componentes mecánicos, eléctricos, electrónicos y computacionales de los procesos industriales; y que tiene como referencia el desarrollo sostenible.

Para estudiar esta profesión cada día va siendo más accesible, aunque aún no se ha extendido a numerosas universidades, pese a que en EE.UU. lleva ya tiempo existiendo esta especialización, aquí en España para ser ingeniero en mecatrónica tenías que hacer ingeniería industrial o informática y una vez terminada realizar un máster. Hoy día contamos en Andalucía (Sevilla y Málaga) con Ingeniería electrónica, robótica y mecatrónica, una nueva carrera que ha apecido gracias al proyecto de Andalucía Tech.

MiniSegway arduino

Tras los proyectos de domótica realizados, me atraía la idea de hacer un robot un poco más dinámico y menos aburrido que hacer subir y bajar la persiana. Desde que vi un Segway quedé fascinado por el funcionamiento, la suavidad y el manejo tan simple que tenía, a la vez que combinaba una tecnología compleja para permanecer en equilibrio. Con los avances tecnológicos que ha habido en el siglo XX, parece mentira que hasta el siglo XXI (alrededor del 2000 o 2001) no se haya inventado este medio de transporte individual. Hoy en día es usado en las grandes industrias para que los empleados se desplacen de un lugar a otro, también lo usan los agentes de seguridad en aeropuertos, en zonas peatonales… Así que me propuse hacer un segway, o más bien, un minisegway con lo que tenía por casa, el controlador sería como no nuestra placa arduino, con el controlador de motores,  como acelerómetro usaríamos el del mando nunchuck de la wii, un par de motores y listo, sólo quedaría la programación, que no es poco. Así que monté todo el chasis instalé todos los componentes y me puse manos a la obra con el código. En primer lugar probé un código simple, que leyese el ángulo del acelerómetro y si pasase del punto de equilibrio hacia un lado o hacia otro andase adelante o hacia atrás, dependiendo. Evidentemente no fue así de fácil, tenía que tener en cuenta la aceleración, conforme se fuese cayendo fuera acelerando para contrarrestar la caída, así que tras varios intentos fallidos hice el siguiente código:

// Miguel Angel Torres de la Camara, matc2068@gmail.com, openmechatronics.wordpress.com
//Robotica, mecatronica libre: Segway

#include <Servo.h>

#include <CursoArduino.h>

#include <WiiNChuck.h>

#include <Wire.h>

WiiNChuck chuck;
//acelerometros
int accx;
int accy;
int e = 95; //angulo de equilibrio
void setup(){
Wire.begin();
inicializa();
chuck.begin();
Serial.begin(9600);
}
void aceleraMotor(){ //funcion de aceleracion del motor
int x = 15;
if (accy < 40 && accy > 140){ // si el angulo que sale es < 40 o > 140 acelera mas
x = 2*x;
}
else{
x = 2*x;
}
if (accy < e){  //conforme caiga hacia la izquierda retrocede
retrocede(-((accy-e)-x));
}
else if (accy > e){ //conforme caiga a la derecha avanza
avanza((accy-90)+x);
}
}

void loop(){
chuck.update();
//acelerometros
accx=chuck.AccelX();
accy=((chuck.AccelY()) – 385); // al restar 385 el valor minimo pasa a ser 0, y el maximo 180

Serial.print(»  Acc X: «); //imprime acelerometro eje x
Serial.print(accx);
Serial.print(»  Acc Y: «); //imprime acelerometro eje y
Serial.print(accy);

Serial.println();     //salto de linea
delay(10);

//control de motores
int der = 180; //angulo maximo
int izq = 0; //angulo minimo
if (accy > izq && accy < der){ //si se sale de ese rango, o sea si vuelca, para
aceleraMotor();
}

else {
para();
}
}

Pues aunque en la teoría debía funcionar, en la práctica permanece en pie pocos segundos, así que si alguien sabe cómo se puede solucionar le invito a que modifique el código. Como pista os puedo dar que hay que usar un sistema PID.