En el Proyecto 31.1 vimos como conectar un sencillo driver para transistores MOSFET al Arduino. Este módulo tenía una limitación en cuanto a la tensión máxima con la que podíamos alimentar la carga.
Partiendo del circuito original, haremos un nuevo diseño para eliminar esa limitación y sustituiremos el MOSFET por otro modelo que nos permita controlar cargas de elevada potencia.
El circuito es muy parecido al original, solo hay que añadir un segundo transistor y duplicar las conexiones para la entrada IN-B y salida OUT-B. También tenemos que separar la alimentación del circuito, de la alimentación de la carga. Ahora el circuito se alimenta con los +5V de Arduino y la carga con la tensión que corresponda. Dependiendo del MOSFET empleado pueden ser hasta varios centenares de voltios. El IRF730 aquí utilizado soporta hasta 400V y 5.5A. Si nuestros requisitos de diseño son una mayor corriente y menor tensión se puede emplear el IRF530, 100V y 14A.
En cualquier caso el aumento de potencia respecto del driver anterior es importante. Toda tensión por encima de 48V comienza a ser peligrosa. Si vais a trabajar con tensiones elevadas, tomad las precauciones necesarias.
Otra diferencia respecto al driver original es el Circuito Integrado usado en este diseño. Mientras que el anterior empleaba el UCC27324 de Texas Instruments, aquí he utilizado el TC4427 de MICROCHIP. Ambos CI´s son idénticos pin a pin. Si he usado uno en lugar del otro solo es por temas de disponibilidad.
A continuación el esquema del circuito y el diseño de la tarjeta.
A la hora de montar los componentes sobre la placa me encontré con el problema de que el CI sólo estaba disponible en encapsulado miniatura SOIC. Nada que no se pueda solucionar con un adaptador y unos espadines.
Como se muestra en la siguiente imagen, solo hay que soldar el CI y los espadines en la tarjeta y problema resuelto.
Para comprobar el correcto funcionamiento del driver he utilizado dos motores de 24V y un sencillo sketch donde con dos potenciómetros se puede controlar a voluntad la velocidad de giro de ambos motores.
/*
Dual POWER MOSFET Driver
Controling the speed of two motors by potentiometers
https://sites.google.com/site/angmuz
*/
int pot1 = 0;
int speedMotor1 = 0;
int pot2 = 0;
int speedMotor2 = 0;
void setup()
{
pinMode(6, OUTPUT); // Motor 1
pinMode(11, OUTPUT); // Motor 2
}
void loop()
{
pot1 = analogRead(A0);
speedMotor1 = pot1/4;
pot2 = analogRead(A4);
speedMotor2 = pot2/4;
analogWrite(6, speedMotor1);
analogWrite(11, speedMotor2);
delay(100);
}
En un segundo ejemplo de aplicación he prescindido de los potenciómetros y he programado el sketch para que los motores varíen automáticamente su velocidad.
/*
Dual POWER MOSFET Driver
Controling the speed of two motors by auto PWM
https://sites.google.com/site/angmuz
*/
int pwm1 = 0;
int pwm2 = 64;
void setup()
{
pinMode(11, OUTPUT);
pinMode(6, OUTPUT);
}
void loop()
{
pwm2=64;
for (pwm1=15; pwm1<64; pwm1++)
{
pwm2--;
analogWrite(11, pwm1);
analogWrite(6, pwm2);
delay(50);
}
delay(5000);
pwm2=12;
for (pwm1=64; pwm1>12; pwm1--)
{
pwm2++;
analogWrite(11, pwm1);
analogWrite(6, pwm2);
delay(50);
}
delay(5000);
}
A continuación un vídeo que ilustra el ejemplo anterior