bclose

LOS SERVOMOTORES

Controlando la posición de un servo

Objetivos

 

 

    • Conocer los servomotores o servos.
    • Ver en qué se diferencian de un motor normal.
    • Aprender a manejarlos con un potenciómetro y con un joystick.

 

Material requerido.

Imagen de Arduino UNO

Arduino Uno o compatible y con el firmware para S4A cargado.

Un PC con el entorno S4A correctamente instalado y configurado.

Protoboardconexiones Una Protoboard mas  cables.
componenteUn Joystick.
potenciómetro keyesUn potenciómetro de 10KΩ.
ComponenteUn servo con sus horns, esas pequeñas piezas de plástico que se ponen en el eje.

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:

diagrama eléctrico servo potenciómetro protoboard servo potenciómetro

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:

angulo servo scratch
 
  • Si variamos el ángulo veremos como el servo se mueve hasta alcanzar la nueva posición (recordad que el valor tiene que estar entre 0 y 180º). 

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:

scratch servo entrada analógica

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:

relacion entrada analógica ángulo servo

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.

scratch control angulo servo

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º.

setup servo joystick scratch

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).

controlar servo con joystick scratch

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:

 
  • Hemos aprendido qué son y cómo funcionan los servos.
  • Sabemos controlarlos con un potenciómetro o un joystick, y podremos usar uno u otro en función de lo que necesitemos para nuestros proyectos.
  • Hemos adaptado una entrada analógica para transformarla en una salida valor que vaya de 0 a 180º.
 
 
 

(2) Comments

  • Hola:
    Muy bueno todo, me es de gran utilidad. Con este código tuve un problema, S4A me da este error al ejecutarlo: Float(object)>>>error: y otro datos que no puedo copiar y pegar acá.
    Alguna sugerencia? Gracias.

    • Hola Luciano! Había un error en el programa y lo hemos vuelto a subir corregido. Así a modo de breve explicación, el fallo dice que hay un valor float (con decimales) que no le gusta mucho al programa. Para solucionarlo le hemos puesto un bloque para redondear el resultado de la operación a partir de la cual sacamos el ángulo. Muchas gracias por el aviso! Un saludote.

Give a Reply

WordPress Anti-Spam by WP-SpamShield