Contenido
– ¿Que es un servomotor?, ¿Como trabaja?, ¿Qué fuerza tienen?
Servomotor capaz de mover normalmente 180 o 360 grados con un torque de fuerza medido en kg por centímetro, y una velocidad dada en segundos 60 grados.
Con un servomotor somos capaces de posicionar el eje del motor y por lo tanto el dispositivo que fijemos al eje en una posición concreta dentro de un ángulo de trabajo.
Los podemos utilizar para realizar funciones que requieren movimientos con cierta precisión o incluso con una alta precisión, por ejemplo en movimientos para articulaciones tipo brazos robóticos, pinzas, movimiento para sensores, etc.
Dentro de la parte mecánica, por ejemplo el de la imagen de arriba, incluye varios engranajes de cobre y dos cojinetes de bolas.
El juego de engranajes tiene un tope para bloquear el servo cuando supera los 180 grados tanto en un sentido como en otro. El tope junto con el potenciómetro marcan el límite de cada posición.
Los servomotores disponen de una placa controladora capaz de transformar la señal digital que recibe, por ejemplo de arduino, y generar el movimiento del servo en la posición indicada. Normalmente el servo en la placa controladora dispone de un potenciómetro para conocer la posición en la que se encuentra.
En la imagen de abajo puedes ver la tarjeta controladora del servomotor, con un convertidor que convierte la señal en pulso eléctrico y un puente H para realizar movimientos en ambos sentidos.
En la siguiente imagen se puede ver la representación de los 0 grados y el pulso eléctrico a que equivale para indicar esa posición.
También tenemos representada la posición de 90 grados y 180 grados, pulsos repetidos a 50 Hz.
En esta imagen vemos indicado el pulso de la señal correspondiente al cable amarillo, utilizado para indicar al servomotor la posición a la que debe moverse.
En ejemplo de secuencia tenemos 1 milisegundo con un pulso de 5 voltios que se repite cada 20 ms, indicando la posición 0 del servomotor.
¿Qué fuerza tienen los servomotores?, ¿Como se mide la fuerza normalmente en un servomotor?
Normalmente la fuerza de estos servomotores la vemos representada como kilogramos de fuerza por centímetro, pero ¿que quiere decir esto?, la siguiente imagen hace referencia a este unidad de medida:
En la imagen de arriba el servomotor tiene una fuerza de 10Kgf/cm, esto quiere decir que el motor tiene fuerza suficiente para mover un objeto de hasta 5 kg siempre y cuando no nos alejemos más de 2 centímetros del eje del motor, como figura en la imagen de arriba.
En la imagen de abajo vemos como se puede calcular la fuerza que tiene un servomotor y los kilogramos que es capaz de mover.
Fíjate que conforme nos alejamos del eje del motor perdemos fuerza, para calcular la fuerza que necesitaremos para nuestros proyectos podemos dividir el peso entre la distancia del punto desde donde se ejerce la fuerza. Normalmente en nuestro caso las medidas son de Kilogramos para el peso y centímetros para la distancia.
– Descripción servo MG995.
Servomotor capaz de mover 180 grados con un torque de unos 10 kg por centímetro, y una velocidad de 0.20 segundos 60 grados.
Un servo más robusto que MG90, capaz de realizar movimientos que requieran más fuerza, también aumentamos el tamaño, que es de 20 x 47.2 mm.
Datos técnicos del MG995.
- Tensión de trabajo es de 5 voltios VDC, con el cable rojo.
- La conexión de tierra o negativo es el cable negro o marrón.
- El cable de color amarillo o blanco lo utilizamos para la señal. Señal digital.
- La fuerza de torque es de 10Kg por centimetro
- La temperatura de trabajo esta entre -30 y 60 grados
- La corriente de trabajo es de 100 mA
- El material de construcción es metal, con un reductor de dientes de cobre y dos cojinetes de bolas.
En la imagen de arriba está indicado el tipo de conexión eléctrica del servomotor con el color correspondiente.
– Descripción servo MG90S
El servomotor MG90S esta compuesto por un conjunto de engranajes con un rodamiento con componentes metálicos.
Es un servo pequeño y ligero con fuerza para mover pequeñas articulaciones o pequeños mecanismos que no requieran de mucha fuerza, como por ejemplo partes de aviones por control remoto, articulaciones robóticas, helicópteros, etc.
Datos técnicos del MG90S
- Capaz de moverse 180 grados.
-
Dimensiones 22.5 x 12 x 35.5 mm aproximadamente.
-
Fuerza de torque 2 kgf·cm aproximadamente.
-
Velocidad de trabajo 0.1 s/60 grados.
-
Tensión de trabajo 5 V
-
Ancho de banda muerta de 5 microsegundos.
-
Peso 14 gramos.
-
Corriente en movimiento es de 90 a 100 mA.
-
Corriente de bloqueo es de 430 a 480 mA.
-
El cojinete es de tipo doble rodamiento de bolas.
– Programación.
Ejemplo de código básico, situando el servomotor en una posición determinada.
#include <Servo.h> Servo servo1; int angulo = 90; void setup() { servo1.attach(3); Serial.begin(9600); } void loop() { servo1.write(angulo); }
Ejemplo de código utilizando la función microsegundos.
#include <Servo.h>
Servo myservo; // create servo object to control a servo
void setup() {
myservo.attach(9); // attaches the servo on pin 9 to the servo object
}
void loop() {
// set the servo to the minimum position (500 microseconds)
myservo.writeMicroseconds(500);
delay(1000); // wait for 1 second
// set the servo to the maximum position (2500 microseconds)
myservo.writeMicroseconds(2500);
delay(1000); // wait for 1 second
}
Código para modificar la frecuencia utilizando visual studio code, esp32 y servo mg996r
#include <Servo.h>
#include «esp32-hal-ledc.h»
Servo servoMotor;
void setup() {
servoMotor.attach(servoPin); // Inicializa el objeto servo
ledcSetup(0, 10000, 10); // Configura el canal 0 del Timer 0 a una frecuencia de 100 Hz (10,000 Hz / 10)
ledcAttachPin(servoPin, 0); // Asigna el pin del servo al canal 0 del Timer 0
}
void loop() {
// Mueve el servo a la posición deseada
servoMotor.write(90);
delay(1000);
servoMotor.write(0);
delay(1000);
}
Código utilizando la librería TimerOne.h
#include <Servo.h>
#include <TimerOne.h>
Servo servoMotor;
void setup() {
servoMotor.attach(servoPin); // Inicializa el objeto servo
Timer1.initialize(10000); // Configura la frecuencia del Timer1 a 100 Hz (10,000 microsegundos)
Timer1.pwm(servoPin, 1500); // Configura la señal PWM del Timer1 en el pin del servo (1500 microsegundos)
}
void loop() {
// Mueve el servo a la posición deseada
servoMotor.write(90);
delay(1000);
servoMotor.write(0);
delay(1000);
}
Deja una respuesta Cancelar la respuesta