ARDUINO: CONTROLAR UN SERVOMOTOR

Existe una gran variedad de servomotores en el mercado, éstos tienen una característica principal que es la capacidad de controlar con precisión la posición de su eje.

Si quieres conocer más sobre los tipos de servomotores de hobby, sus características y partes que lo conforman, así como el tipo de sistema de control, te recomiendo visitar el siguiente enlace  #/#/#/#/#/#/#/#/#/#/#URL#/#/#/#//#/#/#/#/

Para este ejemplo vamos a utilizar un servomotor de hobby o RC ya que son más pequeños en tamaño, se debe considerar que en los sermovotores de tipo industrial el sensor de retroalimentación de posición suele ser un decodificador de alta precisión, mientras que en los servomotores de hobby el sensor de posición suele ser un potenciómetro.

¿Cómo es posible controlar un servomotor?

El sensor del que disponen los servomotores ya sea tipo industrial o de hobby es utilizado para detectar la posición y por ello es utilizado como un comparador. Resumiendo en pocas palabras, la posición real capturada por estos dispositivos se devuelve al detector de errores en donde es comparada con la posición objetivo y de acuerdo al error obtenido se corrige la posición real del motor por medio del controlador para que coincida con la posición objetivo.

Control de servomotores

Para el control de los servomotores vamos a utilizar el modelo MG996R (Se puede utilizar cualquier modelo de servomotor ya sea MG90, MG90S, etcétera).

NOTA: Es muy importante considerar el voltaje de alimentación del servomotor, así como la corriente de funcionamiento y la corriente de pérdida.

Para el montaje del circuito vamos a emplear una fuente externa para alimentar nuestro servomotor y evitar de esta manera algún pico de corriente que pueda causar algún daño a nuestra tarjeta Arduino.

-Esquema de montaje-

El servomotor dispone de tres cables, dos cables de alimentación (GND y Vcc) y un cable para la señal (Sig). Normalmente los servomotores tienen la siguiente combinación de colores de cables:

·         Marrón (GND), rojo (Vcc) y naranja (Sig).

·         Negro (GND), rojo (Vcc) y blanco (Sig).

[IMAGEN]

Como se muestra en el esquema de conexión, debemos conectar el pin digital de nuestra tarjeta Arduino al servomotor, así como conectar los cables negativo y positivo a la fuente de alimentación externa. Es importante conectar las tierras en un sólo punto o nodo, ya que si no se conectan las tierras de esta manera podemos generar una tierra flotante.

 

 

 

 

 

Código de control del servomotor

A continuación, presentamos dos formas de realizar el control de un servomotor, para poder hacerlo funcionar y manipularlo.

--Primer código de control del servomotor--

El código es muy sencillo, únicamente debemos definir el pin al que se conecta el servomotor como salida, y en la sección de bucle generar pulsos con la duración y frecuencia especificadas.

[Código]

Después de realizar pruebas con nuestros servomotores se obtienen los valores de pulsos correspondientes ya que es variable para cada servomotor. Las pruebas se llevan a cabo para obtener la duración en milisegundos correspondiente a 0 grados, 90 grados y 180 grados.

--Segundo código de control del servomotor—

Una forma más conveniente para el control de nuestro servomotor es utilizando la librería Servo de Arduino.

[Código]

Para esta forma de control únicamente debemos incluir la librería de Arduino, definir nuestro servomotor y utilizar la función attach(), definir el pin de conexión de nuestro servomotor así como los valores mínimo y máximo de la duración de los pulsos.

Utilizamos la función write para indicarle a nuestro servomotor a que posición debe de ir.

NOTA: Puedes utilizar otros códigos para el funcionamiento y manipulación del servomotor, al final te mostramos los ejemplos de código.

Consumo de corriente

También se debe de considerar hacer pruebas con un multímetro y medir el consumo de corriente de nuestro servomotor, se recomienda debido a que los servomotores que utilizamos normalmente no son originales sino una réplica más económica y obviamente tiene un peor rendimiento.

Esquema de conexión empleando el multímetro.

[Imagen]

Tabla de valores obtenidos con diferentes servomotores:

[Imagen]

Otros códigos de programación para el control del servomotor

[Códigos]


Erick MéndezArduino, servomotor, motor