Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                

Servomotores

Descargar como docx, pdf o txt
Descargar como docx, pdf o txt
Está en la página 1de 13

Servomotores - cómo configurarlos para

Arduino
- Categorías : Productos

Productos relacionados

Servomotor 9g SG90 Servo

Servomotor 9G SG90 Servo pack 10unds

Servomotor 9g SG90 Servo Giro 360 grados

Servomotor Tipo S3003 Servo Giro 180 Grados

Servomotor Tipo S3003 Servo Giro 90 Grados


Introducción a los servomotores
Un servomotor es un dispositivo alimentado por corriente continua que puede controlar
de modo muy exacto la posición (de 0º a 180º) o la velocidad (en revoluciones por
minuto, rpm, en sentido horario o antihorario). Tienen 3 pines para su conexión:
alimentación (5 V, normalmente), tierra (GND) y el pin de la señal. Por este último, a
través del sistema de control le emitirá la señal PWM que le indicará al servomotor la
posición o la velocidad que debe alcanzar, según el tipo de servomotor usado.

Suelen llevar tener un mecanismo reductor que les proporciona muy buen par y muy
buena precisión ya que ellos mismos realizan de forma interna el control de precisión,
siendo en otros motores necesario de forma externa. Sin embargo, proporcionan menos
velocidad que los motores de corriente continua.

Estas características los hacen ideales para el control de aplicaciones de robótica como
brazos robóticos u orientación de sensores o torretas.

Habitualmente hay 2 tipos:

 Servomotores de rango de giro limitado que son los más usados, cuyo ángulo va
de 0 a 180º.
 Servomotores de rotación continua, los cuales giran 360º y se puede controlar
tanto su giro como su velocidad.

Funccionamiento de los servomotores


Los servos son motores de corriente continua con reductor acoplado para reducir la
velocidad de giro, y mediante electrónica controlar su posición. El control de la posición
se lleva a cabo mediante la transmisión de una señal de pulso modulada (PWM). Para
entenderlo mejor puede consultar el artículo sobre PWM.

En resumen, según el ancho de pulso positivo (duración) que se le envíe al servo, se


determinará una posición. Esta duración es proporcional al ángulo de giro del motor,
siendo dependiendo del modelo:

 Un pulso entre 500-1000 us corresponde con 0º.


 Un pulso de 1500 ms corresponde con 90º (punto neutro).
 Un pulso entre 2000-2500us corresponde con 180º.

Modelos populares de servomotores

SG90
Este es un “micro” servo estándar muy usado en todo tipo de aplicaciones, ya que es
barato y ligero, cuyos engranajes son de plástico.

Las características del servo son:

 Voltaje de funcionamiento: 3,0-7,2V


 Velocidad (4.8V sin carga): 0.12sec/60 degrees
 Fuerza: 1.2kg / 42.3oz(4.8V);1.6 kg / 56.4oz (6.0V)
 Temperatura de trabajo: -30 to +60 grados ºC
 Longitud de cable: aprox. 23cm
 Incluye accesorios de la foto y tornillos
 Dimensiones: 22x11.5x27mm

Disponemos de este servo de ambos tipos:

Servomotor 9G SG90 Servo Giro 360 grados Giro continuo

Servomotor 9g SG90 Servo Giro de 0 a 180º

S3003
Este servomotor es el comúnmente usado de tamaño “grande” y, como el anterior,
también es ampliamente usado en aplicaciones. Muchos componentes como brazos
robóticos o hexápodos vienen preparados para la instalación de este servo. Es perfecto
para proyectos de Arduino, y aeromodelaje.

Las características del servo son:

 Voltaje de operación: 4.8 V a 6 V


 Torque máx..: 4,1kg/cm (6V)
 Velocidad de funcionamiento: 0.23sec/60grados(4.8V), 0.19sec/60grados(6V)
 Radio máx..: 360º
 Rango de temperatura: -20 + 60 C grados
 Peso: 38 g
 Longitud de cable: 26cm
 Dimensiones: 40,5 x39x 20 mm
 Conector del servo: JR
 Fabricación china

Disponemos de este servo de tres tipos:

Servomotor Tipo S3003 Servo Giro 360 Grados Giro continuo

Servomotor Tipo S3003 Servo Giro 180 Grados Amplitud giro 180º

Servomotor Tipo S3003 Servo Giro 90 Grados Amplitud giro 90º

Arduino
Como hemos dicho, estos componentes son muy útiles para muchas aplicaciones, por lo
que son ampliamente usados en proyectos con Arduino debido a su facilidad. Arduino
viene con una librería para su uso llamada “servo.h”, con la cual puedes controlar hasta
12 servos usando Arduino UNO/Nano o incluso hasta 24 usando Arduino MEGA. Los
servos se alimentan con los propios pines de 5V de la placa, y sin carga pueden
funcionar bastantes motores. Nosotros recomendamos alimentar la placa de forma
externa, ya que por USB podría tener más fallos o, alimentar los servos con una fuente
externa que les proporcione una corriente suficiente para que incluso funcionen varios
con carga. Hay que recordar que, si se usa alimentación externa, hay que unir las masas
(GND).

Librería servo de Arduino


El IDE Arduino trae una librería completa para el control de servomotores, la
documentación completa lo encontramos en su página oficial: Servo Library

Expliquemos brevemente las funciones de la librería.

La biblioteca Servo admite hasta 12 motores en la mayoría de las placas Arduino y 48


en el Arduino Mega. En las placas que no sean los de Mega, el uso de la biblioteca
desactiva la funcionalidad PWM en las patillas 9 y 10. En el Arduino Mega, hasta 12
servos pueden ser utilizados sin interferir con la funcionalidad PWM, pero si se usan de
12 a 23 motores desactivará el PWM en los pines 11 y 12.

A continuación se muestran las funciones de la librería Servo:

attach(Pin)

Establece el pin indicado en la variable servo. Ej: servo.attach(3);


attach(Pin,min,max)

Establece el pin indicado en la variable servo, considerando min el ancho de pulso para
la posición 0° y máx. el ancho de pulso para 180°.Ej: servo.attach(3,900,2100);

write(angulo)

Envía la señal correspondiente al servo para que se ubique en el ángulo indicado, ángulo
es un valor entre 0 y 180°. Ej: servo.write(45);

writeMicroseconds(tiempo)

Envía al servo el ancho de pulso=tiempo en microsegundos. Ej:


servo.writeMicroseconds(1500);

read()

Lee la posición actual del servo, devuelve un valor entre 0 y 180. Ej:
angulo=servo.read();

attached(Pin)

Verifica si la variable servo está unido al pin indicado, devuelve true o false. Ej:
if(servo.attached(3));

detach(pin)

Separa la variable Servo del pin indicado. Ej: servo.detach(3);

Ejemplos del código

En el IDE de Arduino viene por defecto dos ejemplos, Knob y Sweep, pero primero
vamos a poner un ejemplo más sencillo y visual para entender su funcionamiento. Abra
un sketch vacío y copie el siguiente código:

// Incluímos la librería para poder controlar el servo


#include
// Declaramos la variable para controlar el servo
Servo myservo;
void setup() {
// Iniciamos el servo para que se asigne su control con el pin 9
myservo.attach(9);
}
void loop() {
// Desplazamos a la posición 0º
myservo.write(0);
// Esperamos 1 segundo
delay(1000);
// Desplazamos a la posición 90º
myservo.write(90);
//Esperamos 1 segundo
delay(1000);
// Desplazamos a la posición 180º
myservo.write(180);
// Esperamos 1 segundo
delay(1000);
}

Con este código observamos que primero el servo hace girar las aspas hacia en sentido
antihorario (CCW, para 0º), después se desplaza hasta los 90º y por último gira en
sentido horario hasta los 180º.

Sweep

Ahora vamos a ver el sketch “Sweep”, cuya traducción es barrido, entonces como su
nombre indica, las aspas del servo irán haciendo un barrido por cada ángulo hasta llegar
al indicado.

Conectamos un servo de giro continuo (360º) a la placa Arduino MEGA.

Para ello, cargamos el Sketch de ejemplo (Archivo>Ejemplos>Servo>Sweep) y


conectamos los componentes del siguiente modo:
El código del sketch es el siguiente:
Podemos observar cómo va incrementando el ángulo de giro cada 15ms un grado cada
vez. Esto se puede ver en los bucles “for” donde el primero va de 0 a 180º, y el segundo
desde los 180 a 0º.

Ahora prueba a aumentar el tiempo, cambiando el 15 por 150 por ejemplo. De este
modo observará más claramente cómo funcionan los servos, donde su giro comienza
lentamente hasta que coge velocidad y luego esta va reduciéndose hasta que llega a la
posición deseada.

Knob

Para el uso del sketch Knob, se necesitará un potenciómetro con el que regularemos la
posición del servo.

Para ello abrimos el sketch correspondiente (Archivo>Ejemplos>Servo>Knob) y


conectamos los componentes del siguiente modo:
El código del sketch es el siguiente:
Lo curioso de este sketch, es que, si usamos un servo de giro continuo, podemos hacer
cambiar el sentido de giro en función del sentido del potenciómetro. De hecho, podemos
ajustar que el sentido de giro coincida, ya que con solo intercambiando la polarización
del pin positivo y negativo del potenciómetro lo modificamos. Además, en un punto
concreto del potenciómetro podemos parar el servo.

Por otro lado, si usamos un servo de 180º, el potenciómetro sirve para guiar el
movimiento de las aspas a la par que lo giras

También podría gustarte