Está en la página 1de 8

Control de servomotores

Objetivo:
Aprender sobre la aplicación de algunas funciones básicas de la biblioteca auxiliar de Matlab Simulink para
observar el funcionamiento y control de servomotores.

Introducción
El servomotor es un dispositivo electromecánico que consiste en un motor eléctrico, un juego de engranes y una tarjeta de
control, todo dentro de una carcasa de plástico. Un servo tiene la capacidad de ser controlado en posición. Es capaz de
ubicarse en cualquier posición dentro de un rango de operación generalmente de 180º pero puede ser fácilmente modificado
para tener un giro libre de 360º. Los servos se suelen utilizar en robótica, automática y modelismo (vehículos por radio-
control, RC) debido a su gran precisión en el posicionamiento.

Figura 1. Servomotor industrial

Los servomotores funcionan por medio de modulación de ancho de pulso (PWM) Todos los servos disponen de
tres cables, dos para alimentación Vcc y Gnd (4.8 a 6 [V]) y un tercero para aplicar el tren de pulsos de control,
que hace que el circuito de control diferencial interno ponga el servo en la posición indicada.

La frecuencia usada para mandar la secuencia de pulsos al servomotor es de 50 Hz esto significa que cada ciclo
dura 20 ms, Las duraciones de cada pulso se interpretan como comandos de posicionamiento del motor, mientras
que los espacios entre cada pulso son despreciados.

Figura 2. Respuesta a diferentes anchos de pulso PWM

Dado que existen algunas pequeñas diferencias entre las distintas marcas de servos, en la tabla 1 están indicados
las características técnicas de varias marcas que comercializan este producto.
Tabla 1. Características de servomotores de diferentes marcas

Partes de un servomotor
En general, los servos suelen estar compuestos por 4 elementos fundamentales:

a. Motor de corriente continua (DC)


Es el elemento que le brinda movilidad al servo. Cuando se aplica un potencial a sus dos terminales, este motor
gira en un sentido a su velocidad máxima. Si el voltaje aplicado sus dos terminales es inverso, el sentido de giro
también se invierte.

b. Engranajes reductores
Tren de engranajes que se encarga de reducir la alta velocidad de giro del motor para acrecentar su capacidad de
torque (o par-motor).

c. Sensor de desplazamiento
Suele ser un potenciómetro colocado en el eje de salida del servo que se utiliza para conocer la posición angular
del motor.

d. Circuito de control
Es una placa electrónica que implementa una estrategia de control de la posición por realimentación. Para ello,
este circuito compara la señal de entrada de referencia (posición deseada) con la posición actual medida por el
potenciómetro. La diferencia entre la posición actual y la deseada es amplificada y utilizada para mover el
motor en la dirección necesaria para reducir el error.

Figura 3. Partes de un servomotor


Clasificación de servomotores según el tipo de señal.
Existen dos tipos de servos: analógicos y digitales. Ambos tipos de servos son iguales a nivel de usuario: tienen
la misma estructura (motor DC, engranajes reductores, potenciómetro y placa de control) y se controlan con las
mismas señales PWM. La principal diferencia entre ellos radica en la adición de un microprocesador en el
circuito de control de los servos digitales [3]. Este microprocesador se encarga de procesar la señal PWM de
entrada y de controlar el motor mediante pulsos con una frecuencia 10 veces superior a los servos analógicos.

Clasificación según el tipo de movimiento

Motores rotativos

Motores lineales

Motores Angulares

Ejercicio 1. Control de servomotor con Matlab.


Este ejemplo muestra cómo usar el paquete de soporte MATLAB® para hardware Arduino® para controlar un
servomotor.

1. Conecte un servo motor como se muestra en la figura.


Figura 4. Conexión de un servomotor a la tarjeta Arduino

2. Crear objeto servo y calibrar el motor

a = arduino ();

O bien, puede especificarlo explícitamente al crear el objeto arduino.

a = arduino ('com22', 'uno', 'Libraries', 'Servo');


s = servo (a, '4')
s =
Servo with properties:
Pins: D4
MinPulseDuration: 5.44e-04 (s)
MaxPulseDuration: 2.40e-03 (s)

3. Verifique los valores del rango de ancho de pulso de la hoja de datos del servo motor para calibrar el motor
para que gire en el rango esperado. Este ejemplo usa 700 10-6 y 2300 10-6 para que el motor se mueva
de 0 a 180 grados.

clear s;
s = servo(a,'4','MinPulseDuration',700*10^-6,'MaxPulseDuration',2300*10^-6)
s =
Servo with properties:
Pins: D4
MinPulseDuration: 7.00e-04 (s)
MaxPulseDuration: 2.30e-03 (s)

4. Cambie la posición del eje del servomotor de 0 (mínimo) a 1 (máximo) con incrementos de 0,2, es decir, 36
grados. Visualice la posición actual cada vez que cambie la posición.

for angulo = 0: 0.2: 1


writePosition (s, angulo);
current_pos = readPosition (s);
current_pos = current_pos * 180;
fprintf ('La posición actual del motor es % d grados \ n', current_pos);
pause (2);
end

La posición actual del motor es 0 grados


La posición actual del motor es de 36 grados
La posición actual del motor es de 72 grados
La posición actual del motor es de 108 grados
La posición actual del motor es de 144 grados
La posición actual del motor es de 180 grados

Ejercicio 2. Control de servomotor con Simulink


El paquete de soporte de Simulink para hardware Arduino permite crear y ejecutar modelos Simulink® en la
placa Arduino. Se incluye una biblioteca de bloques Simulink para configurar y acceder a sensores, actuadores e
interfaces de comunicación Arduino.

En un servomotor estándar, la posición del eje puede ajustarse con precisión, generalmente entre 0 y 180
grados. Los servomotores se utilizan en muchas aplicaciones y productos industriales, militares y de consumo.
Para ejecutar este ejemplo, se requiere el siguiente hardware:

 Placa Arduino soportada


 cable USB
 Servomotor estándar
 Potenciómetro
 Célula fotoeléctrica CdS
 Resistencia de 10 kOhm
 Alambres de tablero
 Tablilla de conexiones pequeña (recomendado)

Tarea 1: configurar el modelo para el hardware Arduino admitido


En esta tarea, configurará el modelo para la placa Arduino.

1. Crear el modelo Simulink que se muestra en la siguiente figura (abrir desde el prompt del espacio de trabajo
de Matlab: openExample('arduino/ServoControlExample')

Figura 5. Calibración de un servo con Simulink


2. Haga clic en Simulation> Model Configuration Parameters para abrir el cuadro de diálogo Parámetros de
configuración.

3. Seleccione el panel Implementación de hardware y seleccione su hardware Arduino requerido de la lista de


parámetros de la placa de Hardware. No cambie ninguna otra configuración.

4. Haga clic en Aceptar.

Tarea 2: Conexión del servomotor a la tarjeta arduino


Conecte el servomotor como se muestra en la figura.

Figura 6. Conexión del servomotor a arduino

1. Conecte el cable de alimentación (generalmente rojo) al pin de 5V.


2. Conecte el cable de tierra (generalmente negro) al pin de tierra.
3. Conecte el cable de señal (generalmente naranja) al pin digital
4. Consulte la asignación de pines en los bloques Arduino en la documentación para conocer los números de
pin admitidos

Para correr este modelo en el hardware independientemente de Simulink presione el botón “Deploy to hardware”
en la barra de herramientas del editor

Tarea 3 - Establecer la posición del servomotor a través de una fuente interna


En esta tarea, se configurará la posición del eje del servomotor con una fuente interna. El ángulo del eje variará
entre 0 y 180 grados, arriba y abajo.

1. Abra el modelo Servo Control.


2. Observe el bloque de escritura servo estándar. El bloque establece el nuevo ángulo del eje del servomotor
cada 0.01 segundos.
3. En su modelo Simulink, haga clic en Simulación> Parámetros de configuración del modelo para abrir el
cuadro de diálogo Parámetros de configuración.
4. Seleccione el panel Implementación de hardware y seleccione su hardware Arduino requerido de la lista de
parámetros de la placa de Hardware. No cambie ninguna otra configuración.
5. En su modelo Simulink, haga clic en el botón Implementar en hardware en la barra de herramientas.
6. Cuando el modelo comience a funcionar en la placa Arduino, observe la posición del eje del motor
barriendo entre 0 y 180 grados.
Ejercicio 3. Control de la posición del servomotor a través de un potenciómetro
Conecte los terminales del potenciómetro externo a los pines de 5 V y GND en su placa Arduino. Conecte el
terminal del medio al pin de entrada analógica 0. A medida que gira el potenciómetro, su resistencia cambia.

Como resultado, la tensión en el pin de entrada analógica también cambia. Su tarea es establecer el ángulo del
servomotor proporcional a este voltaje.

Figura 7. Control de un servomotor a través de un potenciómetro.

1. En MATLAB®, seleccione INICIO> Nuevo> Modelo Simulink.


2. Ingrese al LibraryBrowser en el indicador MATLAB®. Esto abre el navegador de la biblioteca Simulink.
3. En el navegador de la biblioteca Simulink, vaya al paquete de soporte de Simulink para hardware Arduino>
Común.
4. Arrastre el bloque de Entrada analógica al modelo. Haga doble clic en el bloque y establezca el número de
Pin en 0 y el tiempo de muestra en 0.01 segundos.
5. Arrastre el bloque de escritura servo estándar al modelo. Haga doble clic en el bloque y establezca el
número Pin en 4.
6. Conecte los bloques de entrada analógica y servo estándar.
7. En la biblioteca Simulink Math Operations, arrastre el bloque Gain al modelo y suéltelo en la línea que
conecta la entrada analógica y el bloque Servo Write estándar. Haga doble clic en el bloque de ganancia y
establezca su valor en 0.1760 (desplazamiento máximo del servomotor en grados dividido por la resolución
digital de entrada analógica, es decir, 180/1023).
8. En su modelo Simulink, haga clic en Simulación> Parámetros de configuración del modelo para abrir el
cuadro de diálogo Parámetros de configuración.
9. Seleccione el panel Implementación de hardware y seleccione su hardware Arduino requerido de la lista de
parámetros de la placa de Hardware. No cambie ninguna otra configuración.
10. Haga clic en Aceptar.
11. En su modelo Simulink, haga clic en el botón Implementar en hardware en la barra de herramientas. El
modelo ahora se implementará en el hardware Arduino.
12. Cuando el modelo comience a funcionar en la placa Arduino, observe que el eje del motor esté barriendo
entre 0 y 180 grados.

Si tiene problemas para crear el modelo como se describe arriba, puede usar el modelo Servo Control.
Ejercicio 4. Control de la posición del servomotor a través de una fotocelda
En esta tarea, creará un modelo que establece la posición del servomotor según la intensidad de luz detectada
por una fotocélula. En una habitación oscura, el eje del motor debe colocarse a 0 grados, mientras que en una
habitación brillante debe colocarse a 180 grados.

Use una fotocélula y una resistencia en lugar del potenciómetro que usó en la Tarea 4. Conecte un extremo de la
fotocélula al pin de 5V en la placa Arduino. Luego, conecte un extremo de la resistencia al pin GND en la placa.
Conecte los otros extremos de la fotocélula y la resistencia entre sí y luego a la entrada analógica pin 0 en la
placa.

Figura 8. Control de un servomotor a través de una fotocelda

El modelo será similar al utilizado en la Tarea 4.


Otras cosas para probar
Experimente con otros bloques en la biblioteca de bloques Arduino. Por ejemplo:

 Use el bloque de entrada digital para ajustar la posición del eje del motor dependiendo de la señal o señales
de control externo.
 Use el bloque Servo Lectura Estándar para leer la posición del eje del motor y compararlo con la posición
deseada

También podría gustarte