Visual Basic para Excel

Servomotor

Un servomotor o servo es un motor eléctrico que puede ser controlado tanto en velocidad como en posición.

Características MICRO SG90:

  • Consumo de corriente a 6V : 200 mA
  • Voltaje de operación: 4.8V ~ 6.0V
  • Velocidad de trabajo: 0.07sec/60 grado (4,8V)
  • Velocidad de trabajo: 0.09sec/60 grado (6V)
  • Velocidad a 6 V : 130 RPM
  • Par de salida: 1 Kg-cm( 18 oz/in) (4,8V)
  • Par de salida: 1.5 kg-cm(21 oz/in) (6V)
  • Peso: 9 gr

Materiales

  • 1  Arduino UNO Rev3
  • 1  Servo - MICRO SG90
  • Cables de conexión

Montaje

  • Cable rojo a 5V o 6V (centro) con fuente de alimentación 1 amperio o más
  • Cable amarillo (señal) a pin Digital (2) (izquierdo)
  • Cable marrón o negro a GND (derecho)

Sketch

Librería Servo.h

#include   // incluido en el ID arduino
// Crea un objeto de control para el servo
Servo miServo;// se puede crear 12 objetos servo

Giros básicos

#include
 
Servo myservo;

const int pinServo = 9;

void setup()
{
  miServo.attach(pinServo); // asigna el pin 2 para el servo
}
 
void loop() {
  // 20 ms frecuencia en que trabajan los servos
  // la ubicación inicia con 0 grados desde la izquierda
 
  // envía 1 ms y espera 19 ms
  // pulso de 1 ms equivale a 0 grados
  miServo.write(0);
  delay(500);
 
  miServo.write(45); // pulso de 1ms
  delay(500);
 
  // envía 1.5 ms y espera 18.5 ms
  // pulso de 1.5 ms equivale a 90 grados
  miServo.write(90); // pulso de 1ms
  delay(500);
 
  // envía 2 ms y espera 18 ms
  // pulso de 2 ms equivale a 180 grados
  miServo.write(180); // pulso de 2ms
  delay(500);
}

Calibración del Servo

// calibración del servo
// no son fijos los valores 1 ms para 0 grados y 2 ms para 180 grados
// giros básicos 0, 45, 90 y 180 grados

#include
 
Servo miServo;
// la lectura real de la librería es en microsegundos um de manera que el rango es
// entre 1000 um (1 ms) y 2000 um (2 ms)

const int pulsoMin = 650;   // gira a 0 grados
const int pulsoMax = 2550;  // gira a 180 grados

// se recomienda iniciar en pulsoMin = 1000 y pulsoMax = 2000
// se cambia los valores (balancea) y verificando en el servo el giro real

void setup() {
  // se agrega a la función attach los parámteros pinMin y pinMax
  miServo.attach(pinServo, pulsoMin, pulsoMax);
}
void loop() {
  miServo.write(0);
  delay(500);
  miServo.write(45);
  delay(500);
  miServo.write(90);
  delay(500);
  miServo.write(180);
  delay(500);
}

Ejercicios de Aplicación

  1. Controla la velocidad del servo [ver sitio]
  2. Girar el servo de 0 a 180 grados y de 180 a 0 grados utilizando un potenciómetro.
  3. Controlar giros izquierda derecha utilizando pulsadores, cuando no reciba señal de los pulsadores apuntará a la derecha (dirección de un carro)
  4. Ubicar un puntero utilizando 2 servomotores
  5. Ubicar una pantalla según la luz que reciba, utilizando 2 servomotores.