Motores de Corriente continua

Objetivos

motor_CC

Material requerido

cropped-arduino-1.jpg
  • Arduino Uno o similar. Esta sesión acepta cualquier otro modelo de Arduino.
Img_3_4
  •  Una Protoboard.
diodo
  • Un  diodo N4001 o N4007
2N2222
  • Un transistor 2N2222. Comprobad que lleva rotulada esta referencia, porque el sensor de temperatura es similar.  O un transistor S8050.
Img_3_5
  • Una resistencia de 330 Ohmios
Img_3_6-300x185
  • Algunos cables de Protoboard.
motor_CC
  • Un motor de corriente continua.

Los pines digitales de Arduino permiten un máximo de 40 mA o lo que es lo mismo 5V x 40mA = 0,2 Watt.

Esto es suficiente para iluminar LEDs o incluso mover un pequeño servo pero es insuficiente para mover un motoro de corriente continua o de paso a paso.

Es importante asegurarnos de que lo que conectemos a los pines no sobrepasen las especificaciones de nuestros Arduinos, porque si los forzamos la cosa acabara oliendo a plástico quemado.

Un transistor puede trabajar de dos maneras:

  • Permitir o cortar el flujo de corriente.
  • Amplificando una señal de entrada.

Cuando un transistor funciona de la primera manera, en modo pasa o no pasa, pero sin medias tintas, decimos que funciona al corte (no pasa) o a saturación (pasa sin restricciones). Y esto es el fundamento de toda tecnología digital moderna: Ordenadores, teléfonos, consolas, relojes digitales. De hecho un transistor en corte es un 0 y en saturación es un 1, (o TRUE / FALSE).

Los transistores tiene tres partes: entrada, salida y control y se llaman emisor, colector y base (E, C, B).

Un transistor es como un grifo, si lo hacemos funcionar y vamos moviendo sin parar el control en ambas direcciones, el flujo de salida de agua es proporcional al ángulo del mando en cada momento.

Cuando hacemos eso con un transistor poniendo en la Base una señal eléctrica variable,  el flujo de corriente entre el Emisor y el Colector sigue la señal de la base pero amplificándola. Se pueden conseguir ganancias enormes con este sistema y es la base de todos los amplificadores electrónicos modernos.

EL CIRCUITO

Vamos a empezar con un transistor de uso general, que podemos encontrar con facilidad en cualquier sitio: P2N2222. Todos los circuitos que incluyen un transistor se suelen parecer a este:

Img_13_1

El transistor es Q1, y normalmente se suele representar inscrito en un círculo.

  • La flecha del emisor indica la dirección de la corriente y que es un transistor NPN, si la flecha tuviera la dirección contraria sería un transistor PNP.
  • M1 es cualquier cosa que vayamos a controlar (como un motor de CC por ejemplo).
  • Pin9 representa uno de los pines de control de nuestro Arduino cuya señal gobernara el circuito externo.

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.

Vamos a alimentar nuestra carga con 5V porque no tenemos otra. Pero podríamos conectar 12V, 24V o lo que necesitásemos e ir usando motores más potentes sin preocuparnos de si Arduino puede alimentarlo o no.

Una ventaja de usar un transistor es que aísla eficazmente el circuito de control de la base de la carga entre Emisor y Colector, haciendo casi imposible que queméis un Arduino con un circuito como este.

transistor

Para saber que es cada pin, sostened el transistor con las patas hacia abajo mirando a la cara plana, donde esta rotulado el nombre. De izquierda a derecha son Emisor, Base y Colector.

¿Para qué sirve el diodo del motor? Cuando se reduce rápida y drásticamente el voltaje  que se les proporciona a un motor, provocan un pico de voltaje elevado durante un momento que puede dañar el motor. El diodo evitará este efecto y te ahorrará posibles reemplazos. Este diodo se conoce como Flyback Diode.

Con alimentación interna y un diodo:

Motor_transistor_02_bb Motor_transistor_01_bb

El programa.

Vamos a empezar por lo sencillo, simplemente, arrancando y apagando el motor sin variar la velocidad.

const  int control = 9 ;

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

void loop()
    {
         digitalWrite(control, HIGH);
         delay(2000);
         digitalWrite(control, LOW);
         delay(1000);
    }

Ya va siendo hora de que empecemos a coger buenas costumbres, y por eso en la primera línea definimos una constante de tipo entero llamada control, que usaremos en lugar de el 9, cuando queramos referirnos al pin de control.

A medida que el tamaño de los programas crecen, un error en un numero de pin puede ser muy difícil de detectar, pero en cambio dándole un nombre, no solo ayuda a que sea más fácil de leer, sino que además, si por cualquier motivo queremos cambiar el pin de control, basta con cambiarlo en un único sitio sin necesidad de recorrer el programa buscando un número concreto.

Para ver como varía la velocidad podríamos hacer:

const int control = 9 ;
void setup(){

    pinMode(control,  OUTPUT) ;

}

void loop()
    {
        for ( int n = 0 ; n < 255 ; n++)
           {
               analogWrite (control,  n) ;
               delay(15) ;
           }
    }

Donde escucharemos como va aumentando la velocidad del motor hasta pararse y volver a empezar. La razón es que al variar la tensión en la base del transistor, este limita la corriente que lo atraviesa modificando así la velocidad del motor al que esta conectado.

Posible mejora: Control con un potenciómetro

Sería bastante sencillo añadir al ejemplo un potenciómetro, de modo que usemos su valor para variar la velocidad del motor.