¿Qué es y cómo funciona un servomotor?

6
5109
GARD Pro Not Registered

Un servomotor es un tipo especial de motor que permite controlar la posición del eje en un momento dado. Esta diseñado para moverse determinada cantidad de grados y luego mantenerse fijo en una posición.

Creo que todos a muchos de nosotros cuando éramos pequeños nos gustaba jugar con motorcitos de esos de los que traían ciertos juguetes y que funcionaban con un par de baterías. En mi caso muchos de mis juguetes terminaron siendo víctimas de autopsias con el único propósito de extraer el órgano encargado de brindarles vida (movimiento), es decir, el motor.

dc-motors
Motores de juguetes

Creo que cuando nos hablan de motores DC, la mayoría de nosotros piensa en los que se muestran en la imagen. Este tipo de motor tiene la característica de que al invertir la polaridad del motor, este cambia su sentido de giro. Es una de las características más utilizadas en los carritos a control remoto.

Los motores DC como los que se muestran en la imagen tienen la particularidad de que giran sin detenerse. No son capaces de dar determinada cantidad de vueltas o detenerse en una posición fija. Solo giran y giran sin parar, hasta que se interrumpa el suministro de corriente. Esto hace que no sea posible utilizarlos para asuntos de robótica, ya que en este tipo de aplicaciones se necesita movimientos precisos y mantener posiciones fijas. Lo cierto es que este no es el único tipo de  motor DC que existe.

Para la construcción de robots se utilizan motores paso a paso y/o servomotores. Estos se caracterizan por ser permitir un movimiento controlado y por entregar un mayor par de torsión (torque) que un motor DC común. Sobre este tema ya ha escrito el amigo Gustavo Circelli de forma indirecta en su post sobre el acelerómetro MMA7361. Sin embargo, he decidido escribir este post exclusivo sobre el tema. En este artículo daremos un vistazo a lo que son los servomotores, sus usos y principales características y haremos algunas pruebas experimentales sobre consumo de energía.

Definición de servomotor

Un servomotor (o servo) es un tipo especial de motor con características especiales de control de posición. Al hablar de un servomotor se hace referencia a un sistema compuesto por componentes electromecánicos y electrónicos.

servomotor

GARD Pro Not Registered

El motor en el interior de un servomotor es un motor DC común y corriente. El eje del motor se acopla a una caja de engranajes similar a una transmisión. Esto se hace para potenciar el torque del motor y permitir mantener una posición fija cuando se requiera. De forma similar a un automóvil, a menor mayor velocidad, menor torque. El circuito electrónico es el encargado de manejar el movimiento y la posición del motor.

partes_servomotor

La presencia del sistema de engranajes como el que se muestra en la figura hace que cuando movemos el eje motor se sienta una inercia muy superior a la de un motor común y corriente. Observando las imágenes que hemos presentado nos podemos dar cuenta que un servo no es un motor como tal, sino un conjunto de partes (incluyendo un motor) que forman un sistema.

Tipos de servomotores

Existen servomotores para todo tipo de usos. En la industria, la robótica, en el interior de las impresoras, máquinas CNC, etc. Para los efectos de este post nos interesan los servomotores de modelismo, que son los utilizados en prototipos de robótica. No tomaremos en cuenta los servomotores del tipo industrial.

GARD Pro Not Registered
Servomotores de tipo industrial
Servomotores de tipo industrial
servo
Servomotor de modelismo

Los servomotores de modelismo operan a voltajes bajos en corriente directa, típicamente entre 4 y 6 voltios. Los servomotores industriales operan tanto en DC como en AC (monofásico o trifásico). Para mí es un poco difícil escribir sobre este tipo de temas debido a que nunca he tenido la oportunidad de trabajar con un servo industrial. Lo que sé sobre ellos es por lo que he leído o lo habré visto en algún video o seminario. Los servos de modelismo, en cambio, se pueden adquirir a muy bajo costo en Internet y son populares entre los usuarios de Arduino.

Se debe resaltar que, dentro de los diferentes tipos de servomotores, éstos se pueden clasificar según sus características de rotación.

  • Servomotores de rango de giro limitado:  son el tipo más común de servomotor. Permiten una rotación de 180 grados, por lo cual son incapaces de completar una vuelta completa.
  • Servomotores de rotación continua: se caracterizan por ser capaces de girar 360 grados, es decir, una rotación completa. Su funcionamiento es similar al de un motor convencional, pero con las características propias de un servo. Esto quiere decir que podemos controlar su posición y velocidad de giro en un momento dado.

Los servomotores de rango de giro limitado se pueden adecuar para que funcionen como servomotores de rotación continua. Sin embargo, si requerimos un servo de 360 grados es mejor comprar uno que haya sido diseñado para este tipo de uso.

Funcionamiento de un servomotor

Los servomotores poseen tres cables, a diferencia de los motores comunes que sólo tienen dos. Estos tres cables casi siempre tienen los mismos colores, por lo que son fácilmente reconocibles.

servomotor_pinout
Colores comunes de los cables de un servomotor

Los colores dependerán del fabricante, pero difícilmente nos equivocaremos a la hora de reconocer los terminales del un servo.  La necesidad de una señal de control para el funcionamiento de este tipo de motores hace que sea imposible utilizarlos sin un circuito de control adecuado. Esto se debe a que para que el circuito de control interno funcione, es necesaria una señal de control modulada. Para esto se utiliza modulación por ancho de pulsos, es decir, PWM.

servo_block_diagram

El diagrama de bloque del servomotor representa de forma visual el servomotor como un sistema. El circuito electrónico es el encargado de recibir la señal PWM y traducirla en movimiento del Motor DC. El eje del motor DC está acoplado a un potenciómetro, el cual permite formar un divisor de voltaje. El voltaje en la salida del divisor varía en función de la posición del eje del motor DC.

En Panama Hitek ya hemos escrito sobre el funcionamiento de un potenciómetro. En dicho post presentamos una serie de gráficos sobre la variación del voltaje en el divisor de un potenciómetro en función del movimiento de la perilla.

Untitled

De forma similar, cuando el eje del motor modifica la posición del potenciómetro, el voltaje en la terminal central varía. El potenciómetro permite que el circuito de control electrónico pueda retroalimentarse con la posición del motor en un momento dado. Esto, en Teoría de Control se conoce como un sistema de lazo cerrado.

Representación en diagrama de bloques de un sistema de lazo cerrado
Representación en diagrama de bloques de un sistema de lazo cerrado
Los servomotores de rotación continua desacoplan el potenciómetro del eje del motor. Esto impide que el circuito de control pueda leer la posición del eje, por lo cual provoca un movimiento continuo al no ser capaz de cumplir la condición para que el servo se detenga. Los servomotores de rotación continua normalmente pueden girar en un sentido o en otro y detenerse. Podemos modificar la velocidad de giro, pero no podremos lograr, por ejemplo, que el servo se mueva una determinada cantidad de grados y luego se detenga.

Las señales de PWM requeridas para que el circuito de control electrónico son similares para la mayoría de los modelos de servo. Esta señal tiene la forma de una onda cuadrada. Dependiendo del ancho del pulso, el motor adoptará una posición fija.

servo_pwm
Ancho de pulsos para lograr diferentes posiciones en un servomotor (180º, 135º, 90º, 45º y 0º)

Las señales que vemos en la imagen son las que permiten que el eje del motor adquiera determinada posición. Éstas señales deben repetirse en el tiempo para que el motor mantenga una posición fija.

pwm_signals
Ejemplos de trenes de pulsos para las posiciones 180º, 90º y 0º en el eje de un servomotor

La duración del ciclo de trabajo varía entre 15 y 25 milisegundos. Las ondas mostradas en la imagen anterior representan ejemplos de trenes de pulsos con los que se puede mover un servomotor, utilizando un ciclo de trabajo de 20 milisegundos.

Este tren de pulsos puede ser generado por un circuito oscilador (como un 555) o por un microcontrolador. Es decir, con Arduino podemos controlar fácilmente un servomotor. De hecho en Arduino existen las librerías para el control de servos de forma nativa. No es necesario descargarlas.

Consumo de energía

La energía consumida por una carga eléctrica será igual a la potencia (producto del voltaje por la corriente que entra a la carga) multiplicada por el tiempo de uso del motor. Debido a que los servomotores son alimentados entre 4 y 6 voltios, es posible asumir que el voltaje de alimentación es casi constante para la mayoría de los modelos. Lo que no es igual para uno u otro modelo de servomotor es el consumo de corriente. La corriente demandada por un servomotor depende de diferentes parámetros:

  • Fabricante y modelo del servo
  • La inercia acoplada al eje del motor. Esto incluye la inercia del sistema de engranajes y la de la carga que esté acoplada al motor.
  • La velocidad de rotación aplicada al eje del servo

A mayor consumo de corriente, mayor demanda de potencia y por extensión, mayor consumo de energía. Esto es especialmente importante a la hora de controlar este tipo de motores con un microcontrolador. El consumo de corriente de un servo casi siempre es superior a la capacidad máxima del microcontrolador, por lo que se recomienda utilizar fuentes externas.

Los microcontroladores no han sido diseñados para entregar corriente a una carga sino para entregar señales de control. Estas señales de control se utilizan para activar o desactivar transistores (BJT o MOSFET), los cuales han sido especialmente diseñados para manejar grandes corrientes o voltajes.

Para tener una idea del consumo de corriente de un servomotor, he hecho una pequeña prueba experimental con un servo MG996R. Utilizando un cable USB y un medidor de corriente USB, me he propuesto verificar el consumo del servo ante diferentes condiciones de operación.

medidor_de_corriente_usb
Cable USB con medidor de corriente

Las pruebas se han hecho en vacío, es decir, sin carga acoplada al eje del servo. Para movilizar el motor he utilizado el ejemplo Servo/Sweep disponible en el Arduno IDE. El siguiente video muestra los resultados obtenidos para diferentes retrasos en el barrido (25, 20, 15, 10, 5 y 1 milisegundo).

Como podemos observar, en algunos casos el consumo de corriente es mayor que en otros. El medidor USB utilizado permite cuantificar el consumo de potencia instantánea, por lo cual podemos determinar cuánta energía consume el servo.

Algo importante que debemos resaltar de esta experiencia es el hecho de que el consumo para cualquiera de los delay anda por el orden de los 0.3 amperios (300 miliamperes). Eso es mucho más de lo que un pin de Arduino puede entregar (aproximadamente 40 miliamperios en un pin de 5 voltios). Por esta razón alimentamos el motor directamente desde un cargador de celular USB. Esto lo logramos conectando el GND del cargador con el GND del Arduino UNO. De esta forma, alimentamos el motor con el cargador del celular pero lo controlamos desde Arduino, conectando el cable de señal al pin 9.

El propósito de este post ha sido introducir nuestros lectores al concepto de lo que es un servomotor. En los próximos días estaremos escribiendo un poco más sobre este tema como preámbulo a lo que será una serie de posts sobre el tema de robótica, donde los servomotores son una pieza clave.

Esperamos que esta información sea de utilidad para usted. Lo invitamos a expresar cualquier duda u observación en la caja de comentarios.

  • Osqui

    Hola.
    Ante todo muchas gracias por el blog, es estupendo.
    Tengo una pregunta, no obstante: si tanto los servomotores como los motores paso a paso permiten fijar el ángulo de giro del eje del motor, salvando la diferencia de que uno trabaja a 360ª y el otro 180º (y que uno trabaja en base a cierto número de movimientos discretos y el otro en base a una cantidad incremental que puede ser variable), en la práctica, ¿qué los hace diferentes? Es decir, ¿en qué casos es conveniente uno y en qué casos otros? Porque la verdad, no sé distinguir las ventajas o inconvenientes de cada uno si lo único que quiero es decir: “gira hasta aquí y mantente aquí hasta que no te vuelva a decir”. Creo que tengo algún problema de concepto.
    Muchas gracias

    • Antony García González

      Los motores paso a paso son más lentos pero más potentes. Tienen mejor torque pero menor velocidad de giro. Además son más precisos que los servo y por lo tanto, un poco más caros. Todo depende de la precisión que necesites y el torque

    • Osqui

      Hola? 🙁

      • Antony García González

        Hola. Pensé que había respondido hace algunas semanas. Los motores paso a paso pueden moverse libremente en cualquier dirección, sin límites de vueltas. Los servomotores solo se pueden mover 180 grados. Un servo se mueve mucho más rápido que un motor paso a paso, pero este último posee mejor torque y mayor precisión. Los servo poseen una realimentación a través de un potenciómetro que permite saber la posición del eje en cualquier momento, mientras que los servo necesitan un encoder. Los stepper son capaces de moverse pocos grados y mantener una posición fija, mientras que los servo a veces fallan a la hora de moverse, por ejemplo, 2 grados. Todo depende de la situación en la que necesites hacer uso del motor. Si requieres torque y movimientos finos, usa un stepper. Si requieres movimientos rápidos, usa un servo.

        • Osqui

          Oooh, muchas gracias!! Genial, gracias!!

  • Pingback: ¿Qué es y cómo funciona un...()