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.

Pages
Contributors: D___Run___
Favorited Favorite 0

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:

Breadboard - Self-Adhesive (White)

Breadboard - Self-Adhesive (White)

PRT-12002
$5.50
48
Servo - Generic (Sub-Micro Size)

Servo - Generic (Sub-Micro Size)

ROB-09065
$9.95
13
Jumper Wires - Connected 6" (M/M, 20 pack)

Jumper Wires - Connected 6" (M/M, 20 pack)

PRT-12795
$2.10
2

También necesitará una placa Arduino 101 O Genuino 101.

Arduino 101

DEV-13787
9 Retired

Genuino 101

DEV-13984
Retired

Lectura sugerida

Antes de continuar con este experimento, le recomendamos que se familiarice con los conceptos en el siguiente tutorial:

Presentación del servomotor

texto alternativo

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.

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

texto alternativo

¿Tiene problemas para ver el circuito? Haga clic en el diagrama de cableado para verlo más de cerca.

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.

texto alternativo

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.