Professional Documents
Culture Documents
CONTROL DE MOTORES DC
Metodología empleada
Controlaremos la velocidad y el sentido de giro de un motor de corriente
continua. Más concretamente lo que haremos es montar un circuito que sea
capaz de hacer todo ello con un simple potenciómetro de forma que cuando
el potenciómetro este en el centro el motor este parado y cuando se gira
potenciómetro a los lados de forma regulada. También hay la posibilidad que
no haya cambio de sentido y que solo se regule la velocidad del motor con
todo el recorrido del potenciómetro
El control de motores en forma precisa, requiere de un circuito electrónico
especializado que realiza la regulación de la velocidad mediante una técnica
denominada PWM (pulse wide modulatión) y que consiste básicamente en
variar la cantidad de tiempo que el motor recibe tención. Si el motor recibe
tensión en forma constante, esta gira en máxima velocidad y potencia. Con
PWM lo que se hace el aplicar máxima tensión, pero no todo el tiempo, sino
a pulsos, con lo que se consigue regular la velocidad manteniendo la potencia
del motor.
La segunda función que hace el circuito de control de motores, es encargarse
del sentido del giro. En una aplicación sin circuito, hay que cambiar la
polaridad del motor para que este cambie el sentido del giro. Lo que implica
utilizar algún tipo de conmutador doble que haga la inversión d polaridad. Una
ventaja adicional de usar circuito de controles el hecho de que tenemos
arranques y paradas mucho más suaves, lo cual resulta muy bueno en la
mayoría de los casos.
DIAGRAMA DE FLUJO
SETUP Estado a controlar:
Inicializar Serial Estado del botón on/off
Estado del botón giro
Inicializar pines
Motor encendido/apagado
Dirección del giro del motor
Velocidad del motor
Velocidad anterior del motor
INICIO LOOP
No
Botones (todos a input_pullup):
Parada del Motor
Sí -Arranque/Parada
¿Pulsada seta -Cambio sentido giro
emergencia? -Seta de emergencia
Activo rampa
Sí ¿Cambia la
velocidad
del motor?
No
Activo parada o
arranque con rampa. Sí ¿Pulsado
Solo con rampa boton on/off?
ascendente
No
Activo cambio de
Sí ¿Pulsado
dirección con rampa.
botón cambio
Solo con rampa de dirección?
ascendente
No
Material
-Potenciómetro
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.
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.
PROGRAMA
1
2
3 /*
4 Control velocidad y sentido motor DC
5
6 int pin2=9; //Entrada 2 del L293D
7 int pin7=10; //Entrada 7 del L293D
8 int pote=A0; //Potenciómetro
9
10 int valorpote; //Variable que recoge el valor del potenciómetro
11 int pwm1; //Variable del PWM 1
12 int pwm2; //Variable del PWM 2
13
14 void setup()
15 {
16 //Inicializamos los pins de salida
17 pinMode(pin2,OUTPUT);
18 pinMode(pin7, OUTPUT);
19 }
20
21 void loop()
22 {
23
24 //Almacenamos el valor del potenciómetro en la variable
25 valorpote=analogRead(pote);
26
27 //Como la entrada analógica del Arduino es de 10 bits, el rango va de 0 a 1023.
28 //En cambio, la salidas del Arduio son de 8 bits, quiere decir, rango entre 0 a 255.
29 //Por esta razón tenemos que mapear el número de un rango a otro usando este código.
30 pwm1 = map(valorpote, 0, 1023, 0, 255);
31 pwm2 = map(valorpote, 0, 1023, 255, 0); //El PWM 2 esta invertido respecto al PWM 1
32
33 //Sacamos el PWM de las dos salidas usando analogWrite(pin,valor)
34 analogWrite(pin2,pwm1);
35 analogWrite(pin7,pwm2);
36
37 }
38
39