Sunteți pe pagina 1din 9

Control de velocidad del motor DC

CONTROL VELOCIDAD Y
SENTIDO DE MOTOR DC

(26/11/13)

En este tutorial vamos a controlar la velocidad y el sentido de un motor


DC a través de un potenciómetro desde Arduino.

Material
-Arduino Uno
-Motor DC
-Potenciómetro
-L293D (driver motores)
-Fuente alimentación externa

Motor DC
Un motor de corriente continua convierte la energía eléctrica en mecánica. Se
compone de dos partes: el estator y el rotor.
El estator es la parte mecánica del motor donde están los polos del imán.
El rotor es la parte móvil del motor con devanado y un núcleo, al que llega la
corriente a través de las escobillas.
Cuando la corriente eléctrica circula por el devanado del rotor, se crea un campo
electromagnético. Este interactúa con el campo magnético del imán del estator.
Esto deriva en un rechazo entre los polos del imán del estator y del rotor creando
un par de fuerza donde el rotor gira en un sentido de forma permanente.
Si queremos cambiar el sentido de giro del rotor, tenemos que cambiar el sentido
de la corriente que le proporcionamos al rotor; basta con invertir la polaridad de la
pila o batería.

L293D
Para controlar un motor DC desde Arduino, tendremos que usar un driver para
motores para proporcionarle más corriente al motor ya que las salidas del Arduino
sólo dan 40mA. De esta manera, con el driver podemos alimentar el motor con una
fuente de alimentación externa.
El L293D es un integrado para controlar motores DC que usa el sistema puente en
H. ¿Qué es el puente en H? Es un sistema para controlar el sentido de giro de un
motor DC usando cuatro transistores. En la imagen vemos que los transistores se
comportan como interruptores y dependiendo que transistores conducen y cuáles
no cambia la polarización del motor, y con esto el sentido de giro.
El L293D tiene dos puentes H y proporciona 600mA al motor y soporta un voltaje
entre 4,5V y 36V tal y cómo pone en el datasheet.
En el datasheet también hay el esquema que vamos a usar.

Nosotros usaremos la parte de la izquierda (los diodos externos en el L293D están


dentro). Cómo se aprecia en la imagen, los pins 3 y 6 son las salidas y se conectan
a los bornes del motor. Y los pins 2 y 7 son las entradas donde conectaremos las
salidas del Arduino. Dependiendo que valor ponemos entre los pins 2 y 7 el motor
girará en un sentido o en otro.

Control velocidad a través de PWM


Hasta este punto sabemos cómo controlar el sentido de giro del motor DC a través
del L293D. Pero ¿y la velocidad de giro? En este proyecto lo que haremos es
controlar la velocidad y el giro del motor con un solo potenciómetro.
Para hacerlo utilizaremos el PWM (véase PWM). Sabemos que hay que atacar los
pins 2 y 7 del L293D desde dos salidas del Arduino. En estas dos salidas habrá un
PWM a cada una. Pero tenemos que invertir un PWM. ¿Qué quiere decir invertir?
Pues que cuando en un PWM tengamos un pulso a un valor alto, en el otro PWM el
mismo pulso sea valor bajo. En la imagen lo entenderemos de una manera más
gráfica.
MONTAJE
-Pins 4,5,12,13 del L293D a masa.
-Juntar las masas del Arduino y de la fuente de alimentación externa.
-Pin 8 del L293D a 9V de la fuente de alimentación externa. Es el voltaje que
proporciona al motor.
-Pin 16 del L293D a 5V. Es la alimentación del L293D, pude alimentarse
directamente desde la alimentación que proporciona el Arduino.
-El potenciómetro pude ser de cualquier valor.
PROGRAMA
1
2
3
/*
4 www.diymakers.es
5 by A.García
6 Control velocidad y sentido motor DC
7 Tutorial en: http://diymakers.es/control-velocidad-y-sentido-de-motor-dc/
8 */
9
int pin2=9; //Entrada 2 del L293D
10 int pin7=10; //Entrada 7 del L293D
11 int pote=A0; //Potenciómetro
12
13 int valorpote; //Variable que recoge el valor del potenciómetro
14 int pwm1; //Variable del PWM 1
15 int pwm2; //Variable del PWM 2
16
void setup()
17 {
18 //Inicializamos los pins de salida
19 pinMode(pin2,OUTPUT);
20 pinMode(pin7, OUTPUT);
}
21
22 void loop()
23 {
24
25 //Almacenamos el valor del potenciómetro en la variable
26 valorpote=analogRead(pote);
27
28 //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
29 //Por esta razón tenemos que mapear el número de un rango a otro usando este có
30 pwm1 = map(valorpote, 0, 1023, 0, 255);
31 pwm2 = map(valorpote, 0, 1023, 255, 0); //El PWM 2 esta invertido respecto al P
32
33 //Sacamos el PWM de las dos salidas usando analogWrite(pin,valor)
analogWrite(pin2,pwm1);
34 analogWrite(pin7,pwm2);
35
36 }
37
38
39

S-ar putea să vă placă și