Manejo de motores de corriente continua con Arduino

El motor que tenemos en el aula normalmente es un motor de corriente continua (CC) Leer más... Son los motores que  encontramos en juguetes, DVD's, etc. Al aplicarle un voltaje el motor gira y al quitarlo se detiene. Para cambiar la dirección solo hay que cambiar su polaridad.

El circuito más básico para controlar el giro de un motor de corriente continua será el siguiente:


Importante: Dado que el motor tiene carga inductiva conviene añadir un diodo que proteja el transistor.

Este circuito solo permite controlar el giro del motor en un solo sentido y sin controlar la velocidad, siempre gira a  la misma velocidad.

Componentes 
  • Transistor 2N2222 o similar.
  • Resistencia de 1 K.
  • Diodo 1N4001.
  • Pila cuadrada de 9 V.

Aquí tenéis el esquema inicial para que comprobéis las conexiones del motor y que funciona correctamente, antes de seguir.


Para comprobar que el motor funciona, podéis cargar este pequeño programa, que simplemente activa el pin 9 como salida y a continuación se activa a valor HIGH:

//Control de un motor de CC

const int pinMotor = 10 ;
const int retardo=50;

void setup()
   {  
    pinMode(pinMotor,  OUTPUT) ;
 }

void loop()
   {
        digitalWrite(pinMotor,HIGH);
        delay(retardo);
         
   }


Que como veréis, simplemente pone un valor de 5 V en el pin 9. Con esta instrucción tenemos dos posibilidades:
  • digitalWrite(pinMotor, LOW));   0V en el pin 9,  el transistor entra en corte (Resistencia infinita). El motor no gira.
  • digitalWrite(pinMotor, HIGH));  5V en el pin 9, el transistor entra en saturación, con lo que presenta resistencia nula, el motor gira a máxima velocidad.
Control de la velocidad de giro del motor

Utilizando el mismo circuito pero modificando el programa podemos conseguir que varíe la velocidad del motor en función de los valores proporcionados en el pin 9, utilizando la función analogWrite (pinMotor,  n) ;

Un circuito así nos permite que la resistencia entre Emisor y Colector sea proporcional a la señal de control que inyectamos en la Base. En este ejemplo un valor de 5V en la Base permite el paso de la corriente sin restricciones. Y para tensiones que vayan decreciendo en la Base (mediante PWM) la oposición al paso es cada vez mayor hasta que en 0V, corta por completo el paso.

No supongáis que podemos hacer que el motor gire de forma continua para todos los valores de tensión en la base. Por debajo de un cierto umbral se parará y solo girará cuando este se supere.

Al hacer crecer el valor de tensión que le damos al motor, la velocidad de giro, irá aumentando progresivamente hasta alcanzar su velocidad máxima.

 El programa será el siguiente:


Los dos métodos anteriores son pocos efectivos para controlar la velocidad de giro del motor, podemos mejorar el control del motor utilizando el circuito integrado L293D (Características del L293D), un chip especialmente diseñado para controlar el funcionamiento de dos motores.








En un proyecto de tecnología podemos encontrarnos con los siguientes casos:

1.- Un proyecto en el que el motor siempre ha de girar a la misma velocidad, en este caso el programa será el siguiente:



<11 i="<11;i++)<br">  2.- Un proyecto en el que es necesario controlar la velocidad de giro del motor, en este caso el programa será el siguiente:


<11 i="<11;i++)<br">


<11 i="<11;i++)<br">

<11 i="<11;i++)<br">

En este caso utilizamos la instrucción analogWrite(E1, n ); para ir modificando los valores en el pin Enable del L293d.

3.- Un proyecto en el que sea necesario que el motor gire en un sentido durante un cierto tiempo, se detenga y a continuación gire en el otro sentido. En este caso el programa será el siguiente:



No hay comentarios: