En esta guía vamos a controlar la velocidad y el sentido de un motor DC a través de un potenciómetro desde Arduino.
Materiales:
- Arduino Uno
- Un switch
- Un puente H L293d
- Un potenciómetro
- Jumpers
Arduino uno
Es un microcontrolador basado en ATmega328, tiene un voltaje de funcionamiento de 5V, el voltaje de entrada recomendado va de 7V a los 12V, con voltaje límites de 6V a 20V, cuenta con 14 pines de entrada y salida (de los cuales 6 proporcionan salida PWM), 6 pines para entrada analógica, y una memoria flash de 32 KB.
Switch
El switch o interruptor, es un dispositivo que permite desviar o interrumpir el curso de una corriente eléctrica. En el mundo moderno sus tipos y aplicaciones son innumerables, desde un simple interruptor que apaga o enciende una bombilla, hasta un complicado selector de transferencia automático de múltiples capas, controlado por computadora.
Puente H L293d
El puente H es un circuito electrónico que permite a un motor eléctrico DC girar en ambos sentidos.
Se construye con 4 interruptores (S1,S2,S3,S4). Cuandos los interruptores S1 y S4 están cerrados (S2 y S3 abiertos) se aplica una tensión haciendo girar el motor en un sentido. Abriendo los interruptores S1 y S4 (cerrando S2 y S3), el voltaje se invierte, permitiendo el giro en sentido inverso del motor.
El circuito interno del L293D forma 2 puentes H, por lo que podemos manejar 2 motores. En este caso el manejo será bidireccional, con frenado rápido y con posibilidad de implementar fácilmente el control de velocidad. Se puede manejar cargas de potencia media, en especial pequeños motores y cargas inductivas, con la capacidad de controlar corriente hasta 600 mA en cada circuito y una tensión entre 4,5 V a 36 V.
POTENCIÓMETRO:
Un potenciómetro es una resistencia variable, el diagrama interno del potenciómetro para la conexión hecha en el proyecto es como el que se muestra en la imagen de la derecha, donde al girar la perilla van a variar los valores de R1 y R2, haciendo que la señal de voltaje Vout tambien cambie, y de forma proporcional a este cambio, la velocidad del motor varía.
PWM
El PWM o Modulador por anchura de pulsos es una señal digital cuadrada en el cual podemos variar el ciclo de trabajo (tiempo ON) sin variar la frecuencia.
En pocas palabras, consiste en aumentar el tiempo en el cual se mantiene la señal alta de voltaje, hasta que el tiempo en el que se encuentre en 0V sea tan pequeño que se perciba como una señal continua con voltaje alto.
Para controlar la velocidad y el giro del motor, usaremos las entradas PWM de nuestro Arduino.
El vídeo de la simulación del proyecto lo puedes encontrar aquí: https://www.dropbox.com/s/uwuhi1t2el98nbq/bandicam%202017-11-12%2012-17-26-828.avi?dl=0
DIAGRAMA DE CONEXIÓN:
CÓDIGO:
int in1=8; //Entrada 2 del L293D
int in2=9; //Entrada 7 del L293D
int enable1=10; //Entrada 1 del L293D
int sw = 7; //recibe el estado del Switch
int pote=A0; //Potenciómetro
int valorpote; //Variable que recoge el valor del potenciómetro
int pwm; //Variable del pwm
int giro; //variable para definir el sentido de giro del motor
void setup()
{
//Inicializamos los pins de salida
pinMode(in1,OUTPUT);
pinMode(in2, OUTPUT);
pinMode(enable1, OUTPUT);
pinMode(sw,INPUT);
pinMode(pote,INPUT);
}
void loop()
{
//Almacenamos el valor del potenciómetro en la variable
valorpote=analogRead(pote);
//Almacena el estado del switch que define el sentido de giro
giro = digitalRead(sw);
//Como la entrada analógica del Arduino es de 10 bits, el rango va de 0 a 1023.
//En cambio, la salidas del Arduio son de 8 bits, quiere decir, rango entre 0 a 255.
//Por esta razón tenemos que mapear el número de un rango a otro usando este código.
pwm = map(valorpote, 0, 1023, 0, 255);
//Cuando el Switch esta abierto entonces el motor girará en un sentido.
if (giro==HIGH){
digitalWrite(in1, LOW);
digitalWrite(in2, HIGH);
analogWrite(enable1, pwm);
}
//Cuando el Switch esta cerrado entonces el motor girará en el otro sentido.
else{
digitalWrite(in1, HIGH);
digitalWrite(in2, LOW);
analogWrite(enable1, pwm);
}
}
No se han encontrado comentarios