Inicio » Electronica » Arduino » Servo

Servo

Aprende a utilizar un Servo. El robot DYOR utiliza los servos SG90 o TS90M para controlar el movimiento de sus pinzas o patas. Principio de funcionamiento, diagramas de conexión y ejemplo de programación con Facilino y Arduino o procesadores ESP.

¿Cómo funciona un Servo?

Un servo es un motor de corriente continua (CC) que dispone de la electrónica necesaria para posicionar el eje de giro mediante la generación de una señal de posición de pulso modulada (PPM). La gran mayoría de los servos utilizan un estándar en el que el periodo de la señal es de 20ms y se pueden mover desde su posición mínima con un ancho de pulso (típicamente de 0.5ms) hasta su posición máxima (típicamente de 2.5ms), pasando por su posición intermedia (normalmente son 1.5ms).

La especificación de la señal PPM a generar para su control viene del ámbito del radio control (RC), por este motivo, los controladores de motores sin escobillas (electronic speed control o ESC) típicamente utilizados en los drones también se controlan con señales PPM como la de los servos. En realidad la señal PPM, es una señal PWM (modulada por pulsos) con una frecuencia de 50Hz para el control de posición. Normalmente, el servomotor permite controlar la posición de un eje ya que dispone de un potenciómetro interno que permite realimentar dicha posición. Están además limitados mecánicamente con un tope, siendo 180º el máximo ángulo de giro de un servo. Existen modelos de servo que tienen otros ángulos de giro, con lo que es conveniente mirar las especificaciones del fabricante en cada caso.

Conexión de un Servo

Los servos suelen utilizar un conector de 3 pines y dependiendo del tipo de fabricante existen diferentes variaciones en el conector y los colores empleados (la gran mayoría son compatibles entre ellos). Este es el tipo de conexión que utilizan los servos del robot DYOR y que se conecta directamente a la placa de expansión I/O de Arduino Nano.

Si por algún motivo nos equivocamos en la polaridad, al colocar el conector al revés, no se dañará ni el Servo ni el Arduino.

Control de un Servo

Para conectar un Servo a la placa de expansión de Arduino Nano debemos conectarlo a cualquiera de los pines digitales, mientras que para las placas ESP, es preferible utilizar los pines PWM.

Aquí podéis descargar el fichero Fritzing:

En Arduino un Servo se controla indicándole a la posición que queremos que se mueva, normalmente entre 0º y 180º. La posición 90º es justo en medio. En el siguiente ejemplo, se controlar un servo conectado al pin PWM 3 de Arduino Nano de forma que alternativamente se posiciona a 45º y a 135º.

A la hora de querer controlar un servo, es importante tener dos aspectos en consideración. Desde un punto de vista eléctrico, la señal de Servo de al menos 20ms entre dos comandos de movimiento consecutivos, con lo que al menos deberíamos esperar ese tiempo para ejecutar la siguiente instrucción de movimiento. Desde un punto de vista mecánico, el motor tarda un tiempo en alcanzar la configuración deseada que puede llegar a ser del orden del segundo, por tanto, si dos comandos de movimiento consecutivos están alternando entre dos posiciones distintas de forma que al  servo servo no le da tiempo a alcanzar ni una ni otra, lo esperable es que esté en una zona intermedia con un comportamiento indefinido.

Aquí podéis descargar el fichero Facilino: