G009 Uso de un transistor para controlar motor DC

Descripción                                                                                    ADM
La capacidad de arduino para alimentar elementos externos es muy limitada y a menudo insuficiente para excitar actuadores de mundo exterior, los pines digitales de arduino permiten un máximo de 40mA, o lo que es lo mismo:

                                             40mA x 5V = 200mW =0,2 W 

por eso necesitamos elementos externos que reciban la señal de control de arduino, y tengan la capacidad de gobernar elementos externos, con corrientes y tensiones muy superiores. Estos elementos son el transistor, el relé, servomotores, etc...

Es importante asegurarnos que lo que conectamos a nuestro arduino, no sobrepase las especificaciones técnicas del mismo, si no queremos que se queme.

Vamos a usar un componente que es la base de la electrónica moderna, es el transistor, y es muy sencillo de usar.



Un transistor se puede comportar como un simple interruptor o como un amplificador de la seña de entrada.

Cuando un transistor funciona como un interruptor, se dice que funciona al corte, cuando no deja pasar la corriente y en saturación cuando deja pasar la corriente.

Un semiconductor se convierte en conductor o aislante a voluntad con ayuda de una señal eléctrica y presenta ciertas cualidades interesantes bajo las condiciones adecuadas.

El transistor es como un grifo,  el grifo tiene una entrada por donde entra el agua, una salida, por donde sale el agua y un mando que controla la cantidad de agua que sale por la salida, que va desde 0 hasta la cantidad máxima que permite la salida del grifo.  

El transistor también tiene una entrada llamada Emisor, por donde entran los electrones procedente del negativo, una salida llamada Colector, por donde salen los electrones que van al positivo y un mando que controla la cantidad de corriente de electrones que se llama Base, que regula cuanta cantidad de corriente de electrones pasa por el transistor.

Recuerda que el sentido convencional de las corriente es desde el positivo al negativo, pero el sentido REAL es movimiento de electrones del negativo al positivo.

Cuando el transistor actúa como interruptor, es como si el grifo solo tuviese dos posiciones, abierto pasa toda el agua, cerrado no pasa agua. 

Pues con el transistor, si tenemos una tensión en la patilla de la base pasa toda la corriente del generador, y si no tenemos tensión en la patilla de la base no pasa nada de corriente.

Cuando el transistor actúa como un amplificador, el grifo tiene infinitas posiciones intermedias entre abierto total y cerrado total. 

Cuando giramos el grifo, el flujo de salida del agua es proporcional, es decir, depende del ángulo de giro del grifo, si se gira mucho sale mucha agua y si se gira poco sale poca agua, pues con el transistor ocurre lo mismo, solo que en lugar de girar, se coloca una cantidad pequeña de corriente en la Base del transistor, entonces tendremos una gran cantidad de corriente en el colector, dependiendo de la ganancia del transistor, y dependiendo de la cantidad de corriente de la base, tendremos más corriente en el colector o menos. Si la corriente de base es variable, la corriente de colector variará igual, pero amplificada.

Ej: si tenemos un transistor con una ganancia de 10, a aplicar 1voltio en la base, tendremos 10 voltios en el colector, y al aplicar 2 voltios tendremos 20 voltios en el colector, con 0,5 voltios en la base tendremos 5V en el colector.


Componentes
La placa de Arduino 1
1 Resistencia de 330
1 Diodo LED de 5mm
1 Transistor 2N2222
1 Motor de DC de 12V
Protoboard, cables para las conexiones y cable USB para conectar Arduino al PC que sirve de alimentación apara el Arduino 
1 Fuente de alimentación de 12V para el motor.

Circuito
Vamos a ver un transistor de uso general, el 2N2222.

El Q1 es el transistor que es del tipo NPN, si fuese PNP el emisor tendría que ir conectado al positivo. La flecha indica hacia donde va el sentido convencional de la corriente. 

Vemos que el colector se ha conectado directamente al positivo y el emisor va a la entrada de un motor, que puede ser un motor DC o un ventilador de PC, etc... y la otra patilla del motor va al negativo a través de la masa.

R1 de 330 ohmios es la resistencia que protege la base del transitor, que a su vez está
conectado al pin 9 de arduino, desde el cual vamos a controlar al transistor y por tanto a este circuito externo.

La función del LED es la de proteger al transistor, dado que el motor tiene carga inductiva, aunque no es imprescindible, es más barato y más fácil cambiar el diodo que el transistor.

Este circuito 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.

Aunque este circuito lo vamos a alimentar con 5v, se podría alimentar con 12v o más, de hecho se venden transistores capaces de regular corriente alterna de 220V, y no nos preocuparíamos por el arduino, ya que el transistor aísla eficazmente el circuito de control de la base de la carga entre el emisor y el colector, haciendo casi imposible que se queme un arduino con un circuito como este.

Montaje






















Código
Con este código vamos simplemente a arrancar y parar el motor, sin variar la velocidad
const int control = 9;

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

void loop() {
  digitalWrite(control, HIGH);
  delay(1000);
  digitalWrite(control, LOW);
  delay(1000);
 }
En la primera línea declaramos una constante  tipo entero que llamamos control y que le asignamos el pin 9, y es constante porque este valor no va a variar, y cuando nos refiramos a él, en lugar de 9 diremos control, será más fácil de recordar.

En el setup, establecemos a control (pin 9) como salida.

En el loop, ponemos  a control en estado alto, esperamos 1 segundo y lo pasamos a estado bajo, esperamos un segundo y vuelta a empezar. 

Esto hará que el motor se encienda segundo y se pare, y se vuelva a encender al segundo, y así constantemente. Al poner el estado HIGH, con solo 40mA, estamos activando nuestro transistor, y al poner un LOW, lo desactivamos.


Con el siguiente código, vamos a variar la velocidad del motor, empezará de y poco a poco se irá acelerando hasta su velocidad máxima, para después parar de repente.


const int control = 9;

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

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

 }
La variación con el código anterior la encontramos en el loop, donde tenemos un bucler for en el que la variable n se inicializa en cero y va aumentando uno en cada repetición. Cada 100 milisegundo escribirá un ancho de pulso del valor de la variable n en el pin de control, que es el 9 hasta que n deje de ser menor que 255.  Entonces, todo empezará de nuevo. El resultado es que poco a poco el motor se irá poniendo en marcha e irá cogiendo velocidad hasta que se pare, y volverá a empezar de nuevo.  La razón es que al variar la tensión en la base del transistor, esta limita la corriente que atraviesa al transistor, modificando así la velocidad del motor al que está conectado. Una opción sería añadir al circuito un potenciómetro y modificar así la velocidad a nuestra voluntad.