Objetivos
Material requerido.
Tienda España | ||
---|---|---|
Arduino Uno o compatible y con el firmware para S4A cargado. |
|
|
Una Protoboard mas cables. | ||
Un Joystick. | ||
Un potenciómetro de 10KΩ. | ||
Un servo con sus horns, esas pequeñas piezas de plástico que se ponen en el eje. |
Objetivos
QUÉ ES UN SERVOMOTOR
Los motores de corriente continua que hemos manejado hasta ahora giran continuamente a una velocidad determinada, que depende de una señal de control.
Un servomotor, o simplemente servo, no gira de forma continua, sino que lo que hacemos es controlar su posición.
Con esta capacidad de moverse un ángulo concreto y mantenerse ahí podemos crear toda clase de movimientos de una forma controlada; por ejemplo en brazos robóticos, coches de radiocontrol o timones de barcos y aviones.
Normalmente el ángulo de giro de un servo no es de 360º, sino de 180º (aunque también los hay) y son de corriente continua.
Tienen 3 hilos de conexión, 5V (rojo), GND (negro o marrón) y Control (amarillo o blanco). La señal de control se la daremos conectándolo a una de las salidas analógicas de nuestra placa Arduino.
SERVO Y POTENCIÓMETRO
En este apartado vamos a controlar el movimiento del servo utilizando un potenciómetro, de la misma forma que lo hemos utilizado en otras sesiones.
Normalmente el servo viene con diferentes hélices que podemos acoplarle en función del objeto con el que vaya a interactuar o de lo que queramos conseguir. Lo primero que tenemos que hacer es atornillar cualquiera de las hélices que tengamos en el eje de giro para poder observar bien el giro.
S4A tiene tres pines reservados para ayudarnos a manejar servos. Son los pines 4, 7 y 8. Teniendo eso en cuenta, el esquema eléctrico y el montaje en la protoboard son muy sencillos:
Para controlar esos pines especiales usaremos un nuevo tipo de bloques de la categoría “Movimiento” llamados “motor … ángulo …”. Este bloque posiciona el servo en el ángulo que le indiquemos. Podéis probarlo de manera muy sencilla con este pequeño programa:
Como lo que queremos en que el ángulo varíe en función de la posición del potenciómetro tenemos que modificar un poco el programa:
Aquí tendremos el mismo problema que ya nos ha surgido más veces. Como la entrada analógica tiene un rango de 0 a 1023 y el ángulo de 0 a 180º, la mayoría del movimiento del potenciómetro no tendrá ningún efecto.
Para aprovechar todo el giro del potenciómetro vamos a adaptar los valores de la entrada analógica a los grados que puede girar el servo de la siguiente forma:
De esta forma cuando en la entrada conectada al potenciómetro tengamos 0 el ángulo será 0º y cuando esté en el máximo 1023 será 180º, y podremos aprovechar todo el rango de movimiento del potenciómetro.
Podéis descargar el programa completo aquí: servo-pot.
SERVO Y JOYSTICK
Lo que vamos a hacer con el joystick es sumar o restar grados al ángulo de la posición del servo en vez de calcular directamente el ángulo. En cristiano, al mover el joystick el servo girará en una u otra dirección y mantendrá esa posición cuando lo soltemos.
El esquema eléctrico y el montaje en la protoboard son muy sencillos, simplemente cambiaremos el potenciómetro por el josytick (ya hemos visto como conectarlo en las sesiones 19 y 20). Yo voy a utilizar el eje X del joystick.
Lo primero que vamos a hacer es crear una variable “ángulo” y fijar la posición inicial del servo a, por ejemplo, 90º.
De la misma forma que hicimos en la sesión 19, crearemos dos estructuras condicionales para saber si el joystick se ha movido hacia un lado o hacia el otro, y sumaremos o restaremos al ángulo anterior un número de grados (mayor cuanto más rápido queramos que se mueva).
Podéis descargar el programa completo aquí: Servo Joystick.
Si queréis seguir jugando con el servo, podéis tratar de hacer que el movimiento del joystick sea analógico como hemos hecho en las sesiones anteriores, o que al apretar el botón del joystick el servo se mueva a una posición determinada.
RESUMEN DE LA SESIÓN
En esta sesión hemos aprendido varias cosas importantes:
<