Controlar grandes cargas eléctricas con Arduino

Un modo sencillo de controlar grandes cargas eléctricas con Arduino (o, en general, con cualquier sistema electrónico digital) es mediante el uso de transistores MOSFET.

Veamosló con un ejemplo práctico: Esta sería una forma sencilla de controlar un motor de corriente continua mediante el uso del transistor TIP120, capaz de soportar tensiones de hasta 60 Voltios y corrientes de hasta 5 Amperios.

tip120_dc.png

Del mismo modo, en lugar del motor, se podría haber conectado un relé (relevador) o un contactor de potencia, capaces de controlar cualquier tipo de cargar eléctrica aplicando una pequeña corriente eléctrica a su bobina de activación.

La resistencia de 2.2 KΩ, limita la corriente de la salida digital a algo menos de 2 mA., valor seguro para la placa Arduino, y suficiente para poner en modo conducción el transistor. El diodo (1N4007) conectado entre los bornes del motor, protege al transistor de sobretensiones transitorias producidas durante los cortes bruscos de alimentación eléctrica en cargas inductivas (motores, relés, contactores, y en general, cualquier carga que conste básicamente de un inductor o bobina).

Un ejemplo sencillo de programa para controlar esta carga con la placa Arduino sería:

int TIP120Pin = 9;
void setup()
{
    pinMode(TIP120Pin, OUTPUT);      // Configura puerto como salida.
}

void loop()
{
    digitalWrite(TIP120Pin, HIGH);   // Activa salida.
    delay (5000);                    // Espera durante 5 segundos.
    digitalWrite(TIP120Pin, LOW);    // Deactiva salida.
    delay (5000);                    // Espera durante 5 segundos.
}

En el ejemplo práctico que estamos usando, el motor está controlado por una salida digital del tipo PWM, por lo que además contamos con la posibilidad de variar su velocidad de rotación de un modo tan sencillo como este:

int TIP120Pin = 9;
void setup()
{
    pinMode(TIP120Pin, OUTPUT);      // Configura puerto como salida.
}

void loop()
{
    analogWrite(TIP120Pin, 255);     // Ponemos el motor al 100%
    delay (5000);                    // Espera durante 5 segundos.
    analogWrite(TIP120Pin, 175);     // Reducimos la velociadad del motor.
    delay (5000);                    // Espera durante 5 segundos.
    analogWrite(TIP120Pin, 0);       // Paramos el motor.
    delay (5000);                    // Espera durante 5 segundos.
}
Anuncios

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s