En la lección del curso de Arduino sobre controlar el movimiento de servos con un potenciómetro vimos cómo podíamos variar la orientación de un servo. En este caso utilizaremos servos de rotación continua en los que en vez de la orientación controlaremos la velocidad y sentido de giro.
Para perderle el miedo te propongo repetir el ejemplo de dicha lección (puedes repetirlo tal cual, sustituyendo el servo por el de rotación continua) y ver cómo se comporta con este tipo de servo al mover el potenciómetro. En este caso en vez de enviar un ángulo entre 0 y 180 grados lo que estaremos enviando será la velocidad y sentido siendo:
- 0: máxima velocidad de giro en un sentido.
- Entre 0 y 90: mismo sentido pero la velocidad se reduce conforme nos acercamos a 90
- 90: servo parado.
- Entre 90 y 180: la velocidad aumenta conforme nos acercamos al valor 180, gira en el sentido opuesto
- 180: máxima velocidad de giro en el sentido contrario.
¿Lo has probado? A lo mejor no lo habrás notado, pero es posible que el servo no esté comportándose como debiera. Los servos llevan dentro un potenciómetro, que es el encargado de que las órdenes que enviamos se ejecuten correctamente, pero puede no estar bien calibrado. No te preocupes, calibrarlo es muy sencillo.
¡A calibrar el servo!
Vas a necesitar el siguiente material para hacer la calibración:
- Plaza Zum Core, placa Arduino o Compatible.
- Servo.
- Destornillador de estrella.
Si ya lo tienes todo a mano y bien colocado en la mesa podemos empezar.
- Vamos a mandar la orden de que se mantenga el servo parado, es decir, vamos a mandar el valor 90. Para el código que te adjunto hemos conectado el servo en el pin digital 10.
1 2 3 4 5 6 7 8 9 10 11 12 |
#include Servo miServo; //variable para controlar el servo void setup() { miServo.attach(10); } void loop() { miServo.write(90); //manda el servo la orden de parar } |
- Una vez cargado el código comprueba qué ocurre. ¿Se mueve? Si se mueve (¡debería quedarse quieto como le hemos ordenado!) es que está mal calibrado, todas las órdenes que enviemos tendrán un comportamiento desfasado (*). Para calibrarlo necesitarás introducir el destornillador de estrella en el agujero que da acceso al potenciómetro. En la mayoría de los casos éste se encuentra situado en el mismo lado por donde salen los cables. Gíralo poco a poco hasta que el servo permanezca quieto. Girarlo en uno de los sentidos lo frenará y en el otro acelerará, tenlo en cuenta.
¿Has conseguido pararlo? Ya tenemos el servo bien educado, a partir de ahora se comportará como debe.
Generando movimiento: el Enrollacables
Como hemos explicado, este componente nos va a permitir generar movimiento, ¡las posibilidades son infinitas! A nosotros se nos ha ocurrido a modo de ejemplo utilizar un servo y un pulsador para hacer nuestro propio “enrollacables”. ¡Se acabaron los cables desordenados! Es muy sencillo, necesitarás:
- Plaza Zum Core, placa Arduino o Compatible.
- Servo bien calibrado.
- Pulsador.
- Rollo sobre el que se recoge el cable.
Nosotros hemos conectado el servo en el pin digital número 6, y el pulsador en el pin número 3, pero puedes modificarlo.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
#include Servo miServo; int pinPulsador = 3; void setup() { pinMode(pinPulsador, INPUT); miServo.attach(6); } void loop() { while (digitalRead(pinPulsador) == 1) miServo.write(10); miServo.write(90); } |
Nosotros nos lo hemos montado con un cilindro que hemos impreso en 3D, te adjuntamos el diseño para que lo descargues, lo modifiques y lo imprimas. Si no tienes impresora o prefieres no imprimirlo, lo puedes replicar muy fácilmente con un rollo como los de papel de cocina o baño.
Si quieres puedes ampliar el enrollacables variando la velocidad con el potenciómetro (o sentido de giro) o introduciendo otros componentes.
Un servo de rotación continua sirve para muchas otras cosas, desde hacer subir o bajar un ascensor, a mover las ruedas de nuestros robots. ¡Piensa en la de cosas que se pueden hacer con un motor con control de velocidad! En lecciones posteriores veremos otras posibilidades.