SIK Experiment Guide for the Arduino 101/Genuino 101 Board (Spanish)
This Tutorial is Retired!
This tutorial covers concepts or technologies that are no longer current. It's still here for you to read and enjoy, but may not be as useful as our newest tutorials.
Experimento 10: Controlar un servomotor
Introducción
Este experimento sirve de presentación del servomotor, un motor inteligente que puede hacer rotar a una ubicación angular específica. Puede programarlo para que gire a una serie de ubicaciones, recorra todo el rango de movimiento y, a continuación, que vuelva a realizar la misma operación.
Elementos necesarios
Necesitará los siguientes elementos:
- 1x placa de pruebas
- 1x placa Arduino 101 o Genuino 101
- 1x servo
- 3 cables puente
¿No tiene el SIK?
Si está realizando este experimento y no dispone del SIK, le sugerimos que use estos elementos:
También necesitará una placa Arduino 101 O Genuino 101.
Lectura sugerida
Antes de continuar con este experimento, le recomendamos que se familiarice con los conceptos en el siguiente tutorial:
Presentación del servomotor
A diferencia del funcionamiento de la mayoría de los motores que giran continuamente, un servomotor puede girar a un ángulo determinado y mantenerse en esa posición hasta que se le indique que gire a un ángulo diferente. Puede controlar el ángulo del servo enviándole un tren de pulsos PWM; la señal de PWM se asigna a un ángulo específico de 0 a 180 grados.
Dentro del servo hay una caja de engranajes conectada a un motor que acciona el eje. También hay un potenciómetro que proporciona información sobre la posición de giro del servo, que a continuación se compara con la señal de PWM entrante. El servo se ajusta en consecuencia para corresponderse con las dos señales.
En este experimento, el servo recibe una alimentación de 5 V a través del cable rojo, está conectado a tierra con el cable negro, y el cable blanco está conectado a un pin GPIO digital en el que puede usar la PWM (9, 6, 5, 3 en la placa 101).
Conexión del hardware
¿Preparado para comenzar a conectar todo? Consulte el diagrama de cableado siguiente para ver cómo está conectado todo.
Componentes polarizados | Preste especial atención a las marcas de los componentes que indican cómo colocarlo en la placa de pruebas. Los componentes polarizados solo se pueden conectar a un circuito en una sola dirección. |
Conecte los 3 cables puente al cabezal de 3 pines en el servo. Esto facilitará conectar el servo a la placa de pruebas.
Diagrama de cableado del experimento
Abrir el boceto
Abra el software IDE de Arduino en su ordenador. La codificación en el lenguaje de Arduino controlará el circuito. Abra el código del circuito 10; para ello, acceda a "101 SIK Guide Code" (Guía de códigos de SIK 101) que ha descargado y guardado en la carpeta "Examples" (Ejemplos) anteriormente.
Para abrir el código vaya a: File > Examples > 101 SIK Guide Code > Circuit_10 (Archivo > Ejemplos > Guía de códigos de SIK 101 > Circuito_10)
También puede copiar y pegar el siguiente código en el IDE de Arduino. Cárguelo y observe lo que ocurre.
language:cpp
/*
SparkFun Inventor's Kit
Example sketch 10
SINGLE SERVO
Sweep a servo back and forth through its full range of motion.
This sketch was written by SparkFun Electronics,
with lots of help from the Arduino community.
This code is completely free for any use.
Visit http://learn.sparkfun.com/products/2 for SIK information.
Visit http://www.arduino.cc to learn more about Arduino.
*/
//include the servo library
#include
//create a servo object called servo1
Servo servo1;
void setup()
{
//attach servo1 to pin 9 on the Arduino 101
servo1.attach(9);
}
void loop()
{
//create a local variable to store the servo's position.
int position;
// To control a servo, you give it the angle you'd like it
// to turn to. Servos cannot turn a full 360 degrees, but you
// can tell it to move anywhere between 0 and 180 degrees.
// Change position at full speed:
// Tell servo to go to 90 degrees
servo1.write(90);
// Pause to get it time to move
delay(1000);
// Tell servo to go to 180 degrees
servo1.write(180);
// Pause to get it time to move
delay(1000);
// Tell servo to go to 0 degrees
servo1.write(0);
// Pause to get it time to move
delay(1000);
// Tell servo to go to 180 degrees, stepping by two degrees
for(position = 0; position < 180; position += 2)
{
// Move to next position
servo1.write(position);
// Short pause to allow it to move
delay(20);
}
// Tell servo to go to 0 degrees, stepping by one degree
for(position = 180; position >= 0; position -= 1)
{
// Move to next position
servo1.write(position);
// Short pause to allow it to move
delay(20);
}
}
Código a tener en cuenta
#include
#include
es un comando especial del "preprocesador" que inserta una biblioteca (o cualquier otro archivo) en el boceto. Puede escribir este comando o elegir una biblioteca instalada en el menú "sketch / import library" (Boceto/Importar biblioteca).
Servo servo1;
Cuando se utiliza una biblioteca, se crea lo que se denomina un objeto de dicha biblioteca, al que se asigna un nombre. Este objeto es un objeto de la biblioteca del servo y se denomina servo1. Si se utilizan varios servos, tendrá que asignar un nombre a cada uno de esta manera.
servo1.attach(9);
La biblioteca de servos agrega nuevos comandos que le permiten controlar un servo. Para que Arduino controle un servo, primero debe crear un "objeto" del servo para cada servo (en este ejemplo lo hemos llamado "servo1") y, a continuación, "conectarlo" a un pin digital (en este ejemplo estamos utilizando el pin 9). Piense en esto como la manera que tiene el servo para activar la función pinMode().
servo1.write(180);
Los servos de este kit no giran completamente, pero se puede solicitar que se muevan a una posición específica. Utilizamos el comando write()
de la biblioteca del servo para mover el servo un número de grados especificado (de 0 a 180). Recuerde que el servo requiere tiempo para moverse, por lo tanto, asígnele un valor bajo de delay()
si es necesario.
Lo que debería ver
Debería ver al servomotor moverse a diferentes ubicaciones a varias velocidades. Si el motor no se mueve, compruebe las conexiones y asegúrese de que ha verificado y cargado el código o consulte la sección Solución de problemas.
Solución de problemas
El servomotor no gira
Incluso con cables de colores es muy fácil conectar un servo al revés. Este podría ser la causa del problema.
Sigue sin funcionar
Un fallo que hemos cometido alguna vez ha sido olvidar conectar la alimentación (cables rojo y negro) a la línea de 5 voltios y a tierra.
Funcionamiento irregular
Si el servo comienza a moverse y, a continuación, da una sacudida, y parpadea una luz en la placa 101, la alimentación que está utilizando no es suficiente. Si utiliza un adaptador de pared en lugar de un USB, el problema debería resolverse.