viernes, 4 de abril de 2014

"...y sin embargo, se mueve" - Los Servos


Hace unos días estuvimos realizando los primeros talleres de robótica en el Colegio de Arantxa (C.E.I.P San Sebastián de El Boalo) y a la hora de probar los maravillosos robots que habían montado los ingenieros del futuro nos encontramos con algunos problemas: robots que giraban sobre una rueda, otros que no andaban, etc. 

 ¡¡¡Chicos, tenemos que llevar los robots averiados a boxes!!!







Solucionados los problemas típicos, cables mal conectados, ruedas no apretadas, etc. Nos quedó un problema, y el fallo fue mío ya que yo lo sabía y no realicé el ajuste de los servos.

Así que me dije, esto hay que contarlo en nuestro blog. Además, no habíamos hablado ni una línea de este componente tan importante a la hora de montar nuestros "robotijos".


Pero antes, empecemos por el principio, que para eso somos blog de y para "principiantes".


Que es un servoMotor?

Un servomotor es un componente que en su interior está compuesto por un pequeño motor DC (corriente continua), un sistema reductor a base de engranajes, un potenciómetro y placa para realizar un control electrónico de la posición de la cabeza del motor. O sea, un motor del que podemos conocer la posición actual del motor y además, mediante una señal podemos indicarle la posición (o ángulo) en la que deseamos que se posicione.



En este video podéis verlo por dentro y como funciona.

Tipos de servos

No voy hablar aquí de todos los tipos de servomotores existentes en el mundo mundial (:-) solo de aquellos tipos que podemos o que son más frecuentes que utilicemos en nuestros proyectos robóticos (cuando fabrique el robot explorador de Júpiter ya me estudiaré otros tipos).

Los servos que generalmente vamos a utilizar en nuestros proyectos robóticos los voy a clasificar de dos formas: según su campo de actuación (esto me ha quedado muy técnico) o sea, según su posibilidad de giro y según su tamaño.

Según su posibilidad de giro, podemos encontrar servos que pueden girar 180º (estos son los más normales y por tanto los más baratos) y servos de 360º de giro. 


Según su tamaño, nos encontramos los sevos estándar y los mini o micro servos






Funcionamiento

Los servos de 180º de giro, funcionan de forma que podemos saber y controlar la posición (ángulo) en que se encuentra el eje del motor. Realmente, este control se hace mediante señales PWM que son pulsos eléctricos y que dependiendo de su duración indican al servo el ángulo en que deseamos que se posicione.

Ahora es cuando dejáis de leer y os vais a ver Bob Esponja con vuestros hijos, porque en este blog no hay quien se entere de nada. :-)

No os preocupéis, arduino dispone de librerías para manejar los servos y solo tenemos que indicar el ángulo que queremos . Tan fácil como:

servo.write(90);

En los servos de 360º de giro, no podemos saber en que ángulo se encuentra el servo, por lo que la señal de entrada, en lugar de indicarle en que posición debe situarse lo que le indica es el sentido y velocidad de rotación. 

Y después de todo esto, vamos a ver como podemos utilizarlo para hacer "bailar" a nuestros robots.

Veamos ahora como giran los servos en función de los ángulos que le enviamos desde la placa:






Si tenemos en cuenta que cuando le enviamos un ángulo de 90º, lo que queremos es que el motor se pare, según el diagrama de la izquierda, cualquier ángulo menor comprendido entre 90º y 0 provoca un giro del servo en el sentido contrario a las agujas del reloj y si está comprendido entre 90-180º el giro se produce en el sentido de las agujas del reloj.







Sabiendo esto, ya podemos intuir que grados debemos mandarle al servo para que vaya hacia delante o hacia atrás. Pero ¡ojo!, hay que tener en cuenta que al tener dos servos (uno por rueda) estos se encuentran posicionados como en un espejo uno respecto al otro, por lo que si queremos que el robot vaya hacia adelante al servo de la izquierda deberemos mandarle un ángulo de 0º (o menor de 90º) sin embargo, al servo de la derecha deberemos mandarle un ángulo de 180º (o mayor de 90).

Seguro que os he liado un poco. Mirar la siguiente ilustración para ver si vemos más claro.






Ajuste de servos

Ya vamos llegando al tema por el que nos hemos metido en este lio, que no es otro que el ajuste de servos, bueno lo que yo llamo ajuste de servos también se puede llamar poner a cero el servo o alinearlo.

En que consiste, pues que a veces el servo no se para cuando nosotros queremos, o sea que cuando le mandamos un ángulo de 90º, no detiene el movimiento del eje, por lo que no va a responder según nuestras expectativas.

Para solucionarlo, en el caso de los servos de rotación continua disponen de un orificio en la parte frontal donde podemos introducir un destornillador y ajustarlo hasta que se detenga.

El siguiente código lo podéis utilizar para ajustar el servo, ya que está mandando el angulo 90 (parada) continuamente.

/*
/-- Servo a Cero
/-- Autor: Jose Luis Villarejo
*/
#include <Servo.h>
Servo servoMain; // Define nuestro Servo

void setup()
{
   servoMain.attach(10); // servo en el pin digital 10
   Serial.begin(9600);
}

void loop()
{
  servoMain.write(90);
  delay(2000); 

}

Trucaje de servos

Cuando hablábamos de los tipos de servos, os comenté que los servos mas comunes y más baratos son los servos de 180º de giro. Pues bien, no quería acabar este post sin comentar que es posible trucar un servo de 180º para convertirlo en uno de 360. En la web podéis encontrar muchas páginas de como hacerlo, yo os dejo un video donde está muy bien explicado. 

Es una experiencia "interesante" en esta entrada, podéis ver como nos fue a nosotros la primera vez. Solo estropeamos un par de ellos, ahora los hacemos como churros (je, je)






El truco está en cortar las patillas del potenciómetro en lugar de desoldarlo como se dice en el video y soldamos las resistencias en los trocitos de patillas que hemos dejado.


No os pongo ningún programa mas, ya que podéis ver el funcionamiento de los servos en cualquier programa de las ya publicadas: siguelineas, sigueluz, etc...

Y esto es todo. Como siempre, pedir disculpas si he cometido o dicho alguna barbaridad y no dudéis en rectificarme.

No hay comentarios:

Publicar un comentario