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 13: Controlador del motor con entradas
Introducción
En el experimento 12 ha utilizado la placa del controlador del motor para controlar la velocidad y dirección de un motor. El objetivo era codificar la dirección y la velocidad del motor. La mayoría de las aplicaciones que usan un motor permiten al usuario controlar la velocidad y la dirección del motor, como lo haría en su propio vehículo. En este experimento vamos a añadir dos entradas y las utilizaremos para controlar la dirección y velocidad del motor.
¿Está preparado para poner el motor en marcha? ¡Comencemos!
Elementos necesarios
Necesitará los siguientes elementos:
- 1 placa de pruebas
- 1 placa Arduino 101 o Genuino 101
- 1 interruptor SPDT
- 1 potenciómetro 10K
- 1 placa del controlador del motor SparkFun
- 1 motor reductor 48:1
- 20 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.
Conexión del hardware
¿Está 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. |
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 controla el circuito. Abra el código del circuito 13; para ello, acceda a "SIK Guide Code" (Guía de códigos de SIK) que ha descargado y guardado en la carpeta "Examples" (Ejemplos) anteriormente.
Para abrir el código vaya a: File > Examples > SIK Guide Code > Circuit_13 (Archivo > Ejemplos > Guía de códigos de SIK > Circuito_13)
También puede copiar y pegar el siguiente código en el IDE de Arduino. Cárguelo y vea qué es lo que ocurre.
language:cpp
/*
SparkFun Inventor's Kit
Example sketch 13
SparkFun Motor Controller with Inputs
Use the inputs to manually set the direction and speed of a motor.
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.
*/
//define the two direction logic pins and the speed / PWM pin
const int DIR_A = 5;
const int DIR_B = 4;
const int PWM = 6;
//define the input pins
const int switchPin = 10;
const int potPin = 0;
void setup()
{
//set all pins as output
pinMode(DIR_A, OUTPUT);
pinMode(DIR_B, OUTPUT);
pinMode(PWM, OUTPUT);
//set the switchPin as INPUT
pinMode(switchPin, INPUT);
}
void loop()
{
//read the value from the potentiometer and divide
//it by 4 to get a 0-255 range. Store the value in
//the speed variable
int speed = analogRead(potPin) / 4;
//read the value of the switch and store it in the
//direction variable.
//if the value of direction is HIGH drive forward at
//a speed set by the speed variable, else drive reverse
//at a speed set by the speed variable.
if (digitalRead(switchPin) == HIGH)
{
forward(speed);
}
else
{
reverse(speed);
}
}
//create a custom function that defines moving forward
//the forward() function accepts one parameter and that is
//the speed at which you want to drive forward (0-255)
void forward(int spd)
{
//motor contoller direction pins set to forward
digitalWrite(DIR_A, HIGH);
digitalWrite(DIR_B, LOW);
//write the speed by using the parameter of spd
analogWrite(PWM, spd);
}
//create a custom function that defines moving in reverse
//the reverse() function accepts one parameter and that is
//the speed at which you want to drive in reverse (0-255)
void reverse(int spd)
{
//set motor controller pins to reverse
digitalWrite(DIR_A, LOW);
digitalWrite(DIR_B, HIGH);
//write the speed by using the parameter of spd
analogWrite(PWM, spd);
}
Estas funciones, aparentemente muy complejas, toman un solo valor como parámetro: velocidad. Cada función acepta ese valor y lo aplica a la función analogWrite() dentro de la función personalizada. Las funciones personalizadas son un gran método para limpiar el código y hacerlo más modular y útil en otras aplicaciones. ¡Cuidado! Está a mitad de camino de escribir su propia biblioteca.
Lo que debería ver
Debería poder controlar la dirección del motor al activar el interruptor SPDT y la velocidad con el potenciómetro. Continúe probando ambas entradas para asegurarse de que funcionan y que el motor responde a dichas entradas.
Solución de problemas
El motor gira solo en una dirección
Verifique el cableado del interruptor y verifique también la instrucción if() para asegurarse de que no hay un punto y coma después de la instrucción.
Además, verifique que ha conectado correctamente los cables del pin de espera (3,3 V).