Salidas de mayor potencia con Arduino y transistor BJT


arduino-transistor-bjt

En entradas anteriores hemos visto como usar las salidas digitales y las salidas analógicas PWM de Arduino para realizar acciones en el mundo.

Sin embargo, las salidas en Arduino están limitadas tanto en tensión como en intensidad. La tensión máxima que pueden suministrar será la tensión de alimentación (5V o 3,3V en función del modelo). Por su parte, la intensidad máxima admisible es 40mA, siendo recomendado un valor inferior a 20mA.

Más allá de encender una pequeña carga o ejecutar unos cuantos programas de ejemplo, lo cierto es que en el mundo real esto no es suficiente para hacer funcionar la mayoría de cargas, ni siquiera un pequeño motor DC o un relé.

Este comportamiento es habitual, en general, en todos los autómatas. La función de un autómata no es proporcionar intensidad suficiente para realizar acciones. Su función es leer entradas, realizar cálculos, comunicarse con otros autómatas y comandar acciones.

Recordar, el procesador es el “cerebro” de una máquina, no el músculo.

Para realizar las acciones los procesadores delegan en etapas de amplificación o controladores (drivers), que actúan como adaptadores entre el nivel de potencia empleado en el controlador y el requerido por el actuador.

Una de las formas más simples y habituales de realizar esta adaptación es el empleo de transistores. Existen dos grandes familias de transistores. Los transistores BJT (bipolar junction transistor), que fueran los primeros en aparecer, y los transistores FET (field effect transistor).

En esta entrada aprenderemos a usar transistores BJT para manejar cargas mayores a las que podemos manejar con las salidas digitales o analógicas Arduino.

En la próxima entrada veremos cómo hacer esto con transistores MOSFET, unas sub familia de transistores FET.

¿QUÉ ES UN TRANSISTOR BJT?

Los transistores son dispositivos electrónicos que constituyen la base de la electrónica moderna. De forma muy resumida encontramos dos aplicaciones o modos de funcionamiento distintos.

  • Amplificar una señal eléctrica
  • Actuar como interruptor controlado de forma eléctrica

Existe multitud de modelos de transistores, cada uno con diferentes características eléctricas, para atender a las distintas necesidades de nuestros circuitos eléctricos. Por tanto, una parte importante de la fase de diseño al usar un transistor es la elección del modelo adecuado.

Externamente un mismo transistor puede fabricarse en distintos encapsulados standard. Normalmente, los encapsulados con mayor tamaño permiten disipar mejor el calor y, por tanto, soportan mejor intensidades superiores.

arduino-transistor-bjt-componente

Los encapsulados que usaremos más frecuentemente en nuestros proyectos son el TO-92 y TO-220.

Por tanto, no es posible distinguir de forma sencilla las características de un transistor simplemente de forma visual. Deberemos mirar el número de modelo, grabado sobre el mismo, y consultar su correspondiente Datasheet.

¿Cómo funciona un transistor BJT?

Los transistores son dispositivos relativamente complejos, y se requiere conocimientos de electrónica para entenderlos en profundidad. Por tanto, en lugar de realizar un análisis detallado, nos limitaremos a dar una serie de pautas para entender sus fundamentos y que nos permita emplearos en nuestros montajes.

Si necesitáis más información podéis consultar con cualquier libro de electrónica, o sentiros libres de dejar un comentario preguntando lo que queráis.

Una buena forma de entender el funcionamiento de un transistor es mirar a su “abuelo” en la electrónica, la válvula de vacío.

arduino-transistor-bjt-funcionamiento

Una válvula de vacio es un componente eléctrico que dispone de tres terminales en el interior de un tubo en el que se ha hecho vacio. Uno de los terminales actúa como cátodo y otro como ánodo. El tercer terminal está conectado a una rejilla metálica ubicada entre ambos.

Al aplicar electricidad en el terminal de la rejilla se genera un campo eléctrico que “arranca” corriente eléctrica desde el cátodo. Los electrones atraviesan el vacio, pasan sin chocar con la rejilla, y finalmente llegan al ánodo.

El resultado es que tenemos un “contacto eléctrico” entre los terminales de cátodo y ánodo, en el que podemos regular la cantidad de electricidad que fluye entre ambos actuando sobre la rejilla (el tercer terminal). Con esto conseguimos un amplificador eléctrico.

En los transistores BJT, la ampolla de vidrio y los terminales son sustituidos por uniones de semiconductores con diferentes grados de dopado (de ahí su nombre, bipolar junction), formando un integrado sólido. Esto permite hacerlos mucho más pequeños y duraderos que las válvulas de vacío.

En un transistor también tenemos tres terminales, denominados Emisor, Colector, y Base. El “contacto eléctrico” que nos interesa se realiza entre el emisor y el colector, mientras que la base es el elemento que controla la cantidad de electricidad que atraviesa el componente.

Modos de funcionamiento en un BJT

arduino-transistor-bjt-curvas

Un transistor BJT tiene tres modos de funcionamiento.

  • Corte: En este modo el transistor se comporta como si el colector y el emisor estuvieran desconectados, por lo que decimos que es similar a tener un circuito abierto
  • Saturación: En este modo, el transistor se comporta como si el colector y el emisor estuvieran conectados por un diodo de pequeña tensión. Por eso decimos que es similar a tener un cortocircuito, con una cierta caída de tensión
  • Activo: En este modo, la corriente entre el colector y el emisor es proporcional a la intensidad de la base

El modo activo es el modo empleado para amplificar señales (por ejemplo, para hacer un amplificador de audio). En esta entrada no emplearemos este modo.

Los modos corte y saturación puede emplearse de forma conjunta para formar un “interruptor” controlado eléctricamente. Son estos dos modos los que usaremos para encender y apagar nuestra carga, consiguiendo un efecto similar a emplear un interruptor físico, con la diferencia de que este “interruptor” estará controlado por una salida de Arduino.

El estado en que funciona un transistor BJT depende de la corriente que circula por su base. Por ese motivo se dice que un transistor BJT es un dispositivo controlado por intensidad (por contra, las válvulas de vacío y los transistores FET son dispositivos controlados por tensión)

ESQUEMA DE CONEXIÓN

Existe más de un forma de realizar la conexión del transistor. En esta entrada emplearemos la configuración de emisor común, por ser la más simple para hacer conmutar el transistor.

Existen dos sub familias de transistores BJT, el tipo PNP y el tipo NPN. La diferencia entre ambos es el tipo de uniones y semiconductores que se ha empleado en su fabricación.

arduino-transistor-bjt-esquema

Regla nemotécnica: Podéis usar la palabra “Pincha” (que abreviaremos como “PN”), imaginando que la flecha es una aguja que pincha o no el interior del transistor. Si la flecha “Pincha” es PNP. Si “No Pincha” es NPN

Ambos tipos de transistores, PNP y NPN, son similares en funcionamiento (o tienen unas diferencias realmente leves), pero sí que influye en la ubicación en la que tenemos que disponer el transistor BJT el montaje.

arduino-transistor-bjt-montaje

Regla nemotécnica: El transistor PNP (P) se pone en la parte “Positiva” del circuito. El transistor NPN (N) se pone en la parte “Negativa” del circuito

La resistencia de la base sirve para regular la intensidad que atraviesa la base del transistor, y la elección de su valor es crítica para el correcto funcionamiento del circuito. Calcularemos el valor de esta resistencia a continuación.

No todos los modelos de transistor y todos los encapsulados asignan los mismos terminales a cada pin. Por tanto, tendréis que consultar el patillaje en el Datasheet del dispositivo antes de realizar el montaje.

CALCULO DEL TRANSITOR BJT

Podéis realizar todos estos cálculos que aparecen en esta sección automáticamente mediante la Calculadora de transistor BJT como interruptor

Para usar el transistor como conmutador vamos a usar las zonas de corte y saturación del transistor, por lo que no tenemos que realizar cálculos en la región activa.

De esta forma, el cálculo se simplifica y se reduce a calcular la resistencia de base necesaria para que en el punto de trabajo deseado el transistor conmute entre corte y saturación.

En un transistor BJT, la intensidad que atraviesa el colector Ic es proporcional a la intensidad en su base Ib. Esta relación se denomina hFe (a veces Beta). Valores típicos son entre 100 a 200.

Por otro lado, en saturación, el transistor se comporta como un diodo entre colector y emisor de tensión Vce, y un diodo entre base y emisor de tensión Vbe.

Por ejemplo, supongamos que queremos alimentar una carga de 200mA con una tensión nominal de 12V, con un determinado transistor de cuyo Datasheet hemos obtenido que

  • hFe(min) = 100
  • Vce(sat) = 0.2
  • Vbe = 0.7
En el ejemplo asumiremos una hFe constante, pero en el mundo real la relación hFe varía entre un transistor y otro del mismo modelo, debido a diferencias en el proceso fabricación. Además, tiene dependencia con la temperatura de trabajo y con el punto de trabajo. Por tanto en los Datasheet del componente observaréis curvas de dependencia de este factor.

Aplicando la ley de Ohm al dispositivo, calculamos que su equivalente es una resistencia de 60 Ohm.

Por tanto, podemos calcular la intensidad que circula por el colector.

I_c = \frac{V_{cc}-V_{ce}}{R_{load} } = \frac{12-0.2}{60} = 0.196 mA


La intensidad requerida en la base es la intensidad de colector reducida a un factor de hFe(min, por lo que

I_b = \frac{I_c}{h_{FE}} = \frac{0.196A}{100} = 0.00196 A


Por tanto, la resistencia de base necesaria es inferior a

R_b = \frac{V_{in}-V_{be}}{I_b} = \frac{5 - 0.7}{0.00196} = 2196 \Omega


Elegimos la resistencia normalizada inferior y comprobaríamos mirando las curvas del Datasheet que la tensión de base es suficiente para llevar al transistor a saturación.

Otra forma para asegurar la saturación del transistor es mayorar un poco la corriente de base. En el ejemplo, Arduino tiene que proporcionar menos de 2 mA al transistor, por lo que tenemos margen para aumentar un poco la corriente.

R_b = \frac{V_{in}-V_{be}}{I_b} = \frac{5 - 0.7}{0.00196 \cdot 3} = 732 \Omega


Elegiríamos la resistencia normalizada más cercana. En este ejemplo, en el que no disponemos de más detalles sobre el transistor, una resistencia de base de 1k sería razonable.

Podéis elegir la resistencia normalizada más cercana con la Calculadora de resistencias normalizadas

Por último, debemos comprobar que todos los elementos del sistema son capaces de soportar la intensidad y potencia que los atraviesa (incluidas las resistencias y el propio transistor)

P_{transistor} = I_c \cdot V_{ce}


P_b = I_b \cdot V_b


Algunos modelos de transistores permiten disipar potencias mayores acoplando un disipador externo.

Modelos de BJT en Arduino

Existe una gran variedad de transistores BJT que podemos usar en nuestros montajes de Arduino. En general son componentes muy baratos. Su precio varía en función del modelo y características, pero un precio habitual es 0.01 – 0.02€.

Entre los muchos modelos disponibles, algunos habituales son N2222, BC547, BC337, BC556 o el TIP41C.

CONECTAR CARGAS INDUCTIVAS

Al conectar cargas inductivas, bobinas, electroimán, motores, relés, debemos poner un dispositivo de protección adicional, el diodo de Flyback.

Las cargas inductivas presentan una oposición a variaciones en la corriente que los atraviesa, para lo cual generan una corriente inducida que se opone a las variaciones de intensidad. Estas corrientes inducidas pueden dañar el transistor o incluso el pin de Arduino.

El diodo de flyback proporciona un camino de baja resistencia que permite disipar las corrientes inducidas por las cargas inductivas, protegiendo el resto de dispositivos.

arduino-flyback

Por tanto, en el caso de cargas inductivas el montaje quedaría de la siguiente forma.

arduino-transistor-bjt-montaje-flyback

PAR DARLINGTON

Para obtener relaciones de amplificación mayores a las de un BJT podemos usar un par Darlington, un dispositivo basado en los transistores BJT, ampliamente empleado en electrónica.

En esencia, un par Darlington es un conjunto formado por dos BJT en un único integrado.

arduino-transistor-par-darlington

El comportamiento global de un par Darlington es similar a un BJT en el que los hFE se multiplican, llegando a valores de 5000-20000.

Por contra, la tensión de base se suma por lo que los valores típicos de Vce son en torno a 1.4V.

Igualmente, existen múltiples modelos de par Darlington. Su precio es superior al de un transistor BJT, pero siguen siendo dispositivos baratos. El rango habitual es de 0,10 a 0,20€.

Entre los muchos modelos disponibles, algunos habituales son el TIP140, el BC317, y el integrado ULN2003, que dispone de 7 par Darlington en un único integrado.

TRANSISTORES BJT EN PWM

Los transistores BJT son apropiados para salidas PWM, por lo que pueden ser controlados con las salidas analógicas (PWM) de Arduino.

El resultado será una onda pulsada entre Vcc y GND, con la misma frecuencia que el PWM.

Únicamente deberemos comprobar que la frecuencia de conmutación del transistor elegido es superior a la frecuencia del PWM que apliquemos.

EJEMPLO DE CÓDIGO

El código a emplear es exactamente el mismo que el que vimos al ver las salidas digitales y salidas analógicas PWM en Arduino, por lo que os referimos a los ejemplos de estas entradas.

La etapa de transistor únicamente nos permite adaptar la tensión y la corriente de salida a valores superiores a los que podríamos proporcionar directamente con las salidas de Arduino.

Si te ha gustado esta entrada y quieres leer más sobre Arduino puedes consultar la sección Tutoriales de Arduino
Previous Detector de líneas con Arduino y sensor TCRT5000L
Next Medir temperatura de líquidos y gases con Arduino y DS18B20

¡Deja un comentario!...

avatar
1000
Sort by:   newest | oldest | most voted
luisllamas
Guest

No veo problema, siempre que la sección del cable sea suficiente para que la caída de tensión sea aceptable.
También depende del tipo que señal que quieres mandar. Si es una señal de comunicación (Serial, SPI, I2C), o un PWM, u otro tipo de señal que tenga una frecuencia media-alta, deberás tener en cuenta otros efectos como el ruido ambiente, el efecto capacitivo de la línea, etc.

wpDiscuz