Uso de servomotores con Arduino - Servo SG90
Introducción
En este tutorial se explicará el funcionamiento y características de un servomotor, Servo SG90, así como la conexión con la placa Arduino y su utilización.
Librería servo de Arduino
El control de servos en Arduino es muy fácil porque hay disponible una librería completa para el control de los servomotores. La documentación completa se encuentra en su página oficial: Servo Library.
Funciones principales
attach(pin, min, max)
: Vincula la variable Servo a un pin.write(grados)
: Hace girar el eje del servo un número de grados según se le indique (0º a 180º).writeMicroseconds(tiempo)
: Indica la anchura de pulso (en microsegundos) al servo.read()
: Lee la posición actual del servo y devuelve un valor entre 0 y 180.attached()
: Verifica si la variable servo está unida al pin indicado.detach()
: Desvincula la variable servo del pin indicado.
Esquema para su montaje
El servo dispone de 3 cables: dos para su alimentación (GND y VCC) y uno de señal (Sig).
Es recomendable utilizar una fuente de alimentación externa, ya que Arduino puede proporcionar corriente suficiente para un servo pequeño como el SG90, pero no dispone de la suficiente energía para actuar con un servo grande o varios servos pequeños.
Material necesario:
- Placa Arduino UNO o similar.
- Servo SG90.
- Cables.
Para el control del servo, conectamos el cable amarillo (señal) al pin 2.
Código para girar el motor de 0º a 180º
#include "Servo.h" // Librería para poder controlar el servo
Servo servoMotor; // Crea un objeto servo llamado servoMotor
void setup(){
// Asociamos el servo a la patilla 2 del Arduino
servoMotor.attach(2);
}
void loop(){
// Desplazamos a la posición 0º
servoMotor.write(0);
delay(1000);
// Desplazamos a la posición 180º
servoMotor.write(180);
delay(1000);
}
Girando grado a grado nuestro servomotor
#include "Servo.h"
Servo servoMotor;
void setup(){
servoMotor.attach(2);
}
void loop(){
for(int pos = 0; pos <= 180; pos++){
servoMotor.write(pos);
delay(15);
}
for(int pos = 180; pos >= 0; pos--){
servoMotor.write(pos);
delay(15);
}
}
Control de un servomotor a través de un potenciómetro
#include "Servo.h"
Servo servoMotor;
int potPin = A0; // Pin analógico donde conectamos el potenciómetro
void setup(){
servoMotor.attach(2);
}
void loop(){
int val = analogRead(potPin); // Lee el valor del potenciómetro (0-1023)
val = map(val, 0, 1023, 0, 180); // Mapea el valor a un rango de 0 a 180
servoMotor.write(val); // Mueve el servo a la posición correspondiente
delay(15);
}
Conclusiones
Sistema de archivos BTRFS verificado.