Control de Motor Servo: Unha Guía Completa
Aprendizaxes clave:
Control de Motor Servo Definido: O control do motor servo permite a manipulación precisa da posición, velocidade e aceleración do motor mediante senales electrónicas.
Mecanismo de Retroalimentación: O sistema de retroalimentación, xeralmente un potenciómetro ou un codificador, asegura que a saída do motor coincida precisamente coa entrada de control.
Senal PWM: A modulación por anchura de pulso (PWM) é crucial para estabelecer a posición do servo variando a duración dos pulsos eléctricos.
Arduino e Motores Servo: Utilizar unha placa Arduino é un modo popular e eficaz de programar e controlar motores servo con unha configuración mínima de hardware.
Aplicacións de Motores Servo: Os motores servo son esenciais para proxectos que requiren un control posicional preciso, como a robótica e os sistemas automatizados.
Un motor servo é un motor deseñado para alta precisión e exactitude na rotación. Difere dun motor DC típico pola súa capacidade de manter unha posición específica en lugar de girar continuamente. Esta característica fai que os motores servo sexan ideais para a robótica, a automatización e os proxectos de afición.
Este artigo explica como funciona o control do motor servo, os diferentes tipos de motores servo e varios métodos e dispositivos de control. Tamén proporciona exemplos de aplicacións e proxectos de motores servo.
Que é un Motor Servo?
Un motor servo defínese como un actuador que permite un control preciso da posición (ángulo), velocidade e aceleración. Un motor servo típico consiste en tres compoñentes principais: un motor DC, un circuito de control e un dispositivo de retroalimentación.
O motor DC alimenta o servo e conectase a engranaxes que reducen a velocidade e aumentan o par no eixo de saída.

O eixo de saída é a parte do servo que gira e move a carga.
O circuito de control é responsable de recibir e procesar as senales de entrada dun controlador externo. Estas senales indican ao servo a posición, velocidade ou dirección á que debe moverse. O circuito de control tamén envía enerxía ao motor DC para impulsalo.
O dispositivo de retroalimentación é xeralmente un potenciómetro ou un codificador que mide a posición actual do eixo de saída.

O dispositivo de retroalimentación transmite datos de posición de volta ao circuito de control, que entón axusta a enerxía do motor DC para alinear a posición real coa posición desexada da senal de entrada.
O bucle de retroalimentación entre o circuito de control e o dispositivo de retroalimentación asegura que o servo poida moverse e manter calquera posición dentro do seu rango de movemento de xeito preciso.
Como Controlar un Motor Servo?
Os motores servo controlanse enviando unha senal PWM (modulación por anchura de pulso) á liña de senal do servo. A PWM é unha técnica que comuta unha senal rapidamente para crear pulsos de anchuras variables. A anchura dos pulsos determina a posición do eixo de saída.
Por exemplo, cando envías unha senal PWM cunha anchura de pulso de 1,5 milisegundos (ms), o servo moverase á posición neutra (90 graos).

Cando envías unha senal PWM cunha anchura de pulso de 1 ms, o servo moverase á posición mínima (0 graos). Cando envías unha senal PWM cunha anchura de pulso de 2 ms, o servo moverase á posición máxima (180 graos).
A senal PWM ten unha frecuencia de 50 Hz, o que significa que se repite cada 20 ms. A anchura do pulso pode variar de 1 ms a 2 ms neste período.
Hai moitas formas de xerar e enviar senales PWM a motores servo. Algúns dos métodos máis comúns son:
Utilizando unha placa Arduino ou outro microcontrolador
Utilizando un potenciómetro ou outro sensor analóxico
Utilizando un joystick ou outro dispositivo de entrada dixital
Utilizando un controlador ou driver de servo dedicado
Nas seguintes seccións, exploraremos cada un destes métodos con máis detalle e veremos algúns exemplos de como funcionan.
Controlar un Motor Servo con Arduino
Arduino é unha das plataformas máis populares para controlar motores servo. As placas Arduino teñen salidas PWM incorporadas que poden utilizarse para enviar senales a servos. Arduino tamén ten unha biblioteca Servo que facilita escribir código para o control de servos.
Para controlar un motor servo con Arduino, necesitarás:
Unha placa Arduino (como Arduino UNO)
Un motor servo estándar (como SG90)
Cables saltadores
Un protoboard (opcional)
O cable vermello do servo conecta a 5V na placa Arduino. O cable negro do servo conecta a GND na placa Arduino. O cable branco do servo conecta ao pin 9 na placa Arduino.
Para programar a placa Arduino, necesitarás utilizar o IDE de Arduino (en liña ou offline). Podes usar un dos exemplos da biblioteca Servo ou escribir o teu propio código.
O seguinte código mostra como varrer un motor servo de un lado a outro a través de 180 graos utilizando un bucle for:
#include <Servo.h> // Incluír biblioteca Servo
Servo myservo; // Crear obxecto Servo
int pos = 0; // Variable para a posición
void setup() {
myservo.attach(9); // Adjuntar obxecto Servo ao pin 9
}
void loop() {
for (pos = 0; pos <= 180; pos += 1) { // Bucle de 0 a 180 graos
myservo.write(pos); // Escribir posición ao obxecto Servo
delay(15); // Agardar 15 ms
}
for (pos = 180; pos >= 0; pos -= 1) { // Bucle de 180 a 0 graos
myservo.write(pos); // Escribir posición ao obxecto Servo
delay(15); // Agardar 15 ms
}
}
Este código utiliza dous bucles para incrementar e decrementar a variable de posición de 0 a 180 graos e viceversa. Despois, escribe este valor ao obxecto Servo usando myservo.write(pos). Tamén engade un retardo de 15 ms entre cada paso para desacelerar o movemento.
Sube este código á túa placa Arduino utilizando o botón Upload do IDE, e observa como o teu motor servo varre suavemente de un lado a outro.
Controlar un Motor Servo con Potenciómetro
Un potenciómetro é un sensor analóxico que pode variar a súa resistencia dependendo de cantísimo gires o seu botón. Podes usar un potenciómetro como dispositivo de entrada para controlar un motor servo.
Para controlar un motor servo con un potenciómetro, necesitarás:
Unha placa Arduino (como Arduino UNO)
Un motor servo estándar (como SG90)
Un potenciómetro (10k Ohms)
Cables saltadores
Un protoboard
O diagrama de conexión para conectar un potenciómetro e un motor servo a unha placa Arduino amósase a continuación:
O cable vermello do potenciómetro conecta a 5V na placa Arduino. O cable negro do potenciómetro conecta a GND na placa Arduino. O cable verde do potenciómetro conecta ao pin A0 na placa Arduino.
O cable vermello do servo conecta a 5V noutra fila do protoboard. O cable negro do servo conecta GND noutra fila do protoboard. O cable branco do servo conecta ao pin D9 noutra fila do protoboard.
Para programar a túa placa Arduino, necesitarás usar o mesmo código que no exemplo anterior pero cambiar algunhas liñas:
#include <Servo.h> // Incluír biblioteca Servo
Servo myservo; // Crear obxecto Servo
int potpin = A0; // Pin conectado ao potenciómetro
int val = 0; // Variable para ler o valor do potenciómetro
void setup() {
myservo.attach(9); // Adjuntar obxecto Servo ao pin D9
}
void loop() {
val = analogRead(potpin); // Ler valor do potenciómetro (0 -1023)
val = map(val,0,1023,0,180); // Mapear rango de valor (0 -180)
myservo.write(val); // Escribir valor mapeado ao obxecto Servo
delay(15); // Agardar 15 ms
}
Este código usa a función analogRead(potpin) para ler o valor do potenciómetro conectado ao pin A0. Despois, usa a función map(val,0,1023,0,180) para mapear o rango de valor de 0 -1023 a 0 -180 graos. Despois, escribe o valor mapeado ao obxecto Servo usando a función myservo.write(val). Tamén engade un retardo, como no exemplo anterior.
Podes subir este código á túa placa Arduino utilizando o botón Upload do IDE. Deberías ver o teu motor servo movéndose segundo a posición do botón do potenciómetro.
Controlar un Motor Servo con Joystick
Un joystick é un dispositivo de entrada dixital que pode detectar a dirección e a magnitude do movemento ao longo de dous eixes. Podes usar un joystick para controlar un motor servo mapeando o eixe x do joystick ao ángulo do servo.
Para controlar un motor servo con un joystick, necesitarás o seguinte:
Unha placa Arduino (como Arduino UNO)
Un motor servo estándar (como SG90)
Un módulo joystick (como KY-023)
Cables saltadores
Un protoboard
O diagrama de conexión para conectar un módulo joystick e un motor servo a unha placa Arduino amósase a continuación:
!https://www.makerguides.com/wp-content/uploads/2019/01/Servo-motor-control-with-Arduino-and-joystick-wiring-diagram.png
O cable vermello do módulo joystick conecta a 5V na placa Arduino. O cable negro do módulo joystick conecta a GND na placa Arduino. O cable verde do módulo joystick conecta ao pin A0 na placa Arduino.
O cable vermello do servo conecta a 5V noutra fila do protoboard. O cable negro do servo conecta GND noutra fila do protoboard. O cable branco do servo conecta ao pin D9 noutra fila do protoboard.
Para programar a túa placa Arduino, necesitarás usar o mesmo código que no exemplo anterior pero cambiar algunhas liñas:
#include <Servo.h> // Incluír biblioteca Servo
Servo myservo; // Crear obxecto Servo
int joyX = A0; // Pin conectado ao eixe x do joystick
int val = 0; // Variable para ler o valor do joystick
void setup() {
myservo.attach(9); // Adjuntar obxecto Servo ao pin 9
}
void loop() {
val = analogRead(joyX); // Ler valor do eixe x do joystick (0 - 1023)
val = map(val, 0, 1023, 0, 180); // Mapear rango de valor (0 - 180)
myservo.write(val); // Escribir valor mapeado ao obxecto Servo
delay(15); // Agardar 15 ms
}
Este código usa a función analogRead(joyX) para ler o valor do eixe x do joystick conectado ao pin A0. Despois, usa a función map(val, 0, 1023, 0, 180) para mapear o rango de valor de 0 – 1023 a 0 – 180 graos. Despois, escribe este valor ao obxecto Servo usando a función myservo.write(val). Tamén engade un retardo de 15 ms entre cada paso.
Podes subir este código á túa placa Arduino utilizando o botón Upload do IDE. Deberías ver o teu motor servo movéndose segundo a posición do joystick.