38

Cómo construir un controlador de motores con transistores NPN

driver_portada [Iniciando módulos de interacción humana] Saludos, organismo basado en el carbono. Al habla Transductor. ¿Alguna vez has intentado encender un motor sólo a través de Arduino? Probablemente sí, y en el mejor de los casos tu motor no se habrá movido. En el peor, tu Arduino ha muerto tras una nube de humo negruzco.

Así que seguramente te estarás preguntando: “¿Por qué no puedo controlar un motor DC directamente con Arduino? ¡Si funciona con 5V!” En este ejemplo voy a explicarte cómo construir un controlador de motores mediante un transistor NPN, que podrás utilizar con Arduino u otro tipo de controlador.

Por qué no puedes conectar un motor directamente a Arduino

El problema no es el voltaje. Es la Intensidad (Amperios) que proporciona Arduino. La Intensidad/Corriente es la cantidad de electrones que circulan por un conductor cada unidad de tiempo, y Arduino a duras penas puede dar 50mA (miliamperios). Un motor DC estándar consume unos 1000mA. Uno verá que los números no cuadran.

La solución es utilizar un controlador de motores. En cierto modo se comporta como un interruptor, cuando se cierra deja circular corriente a través de sí. Sólo que, en vez de activarse manualmente, es activado mediante un microcontrolador y además es capaz de regular la velocidad del motor.

Simplemente conectando estos controladores y con un poco de código es posible hacer funcionar un motor o cualquier otro artefacto que necesite mucha energía para funcionar.

Con un transistor NPN y un diodo y una resistencia es posible crear un controlador de motores casero fácilmente. Y por una pequeña fracción de lo que costaría prefabricado.

¿Cómo funciona un Transistor NPN?

El transistor es un componente capaz de amplificar o disminuir la corriente que circula por él. Es como un interruptor, pero se abre y cierra mediante corrientes eléctricos. El transistor NPN tiene tres patas, Colector, Base y Emisor: NPN

NOTA IMPORTANTE: La mayoría de transistores NPN tienen las patas en este orden (CBE). Sin embargo, algunos modelos tienen las patas al revés de como está la imagen (EBC). Antes de usar un transistor, mira siempre la documentación para saber cuál es su orden. Si tienes dudas, dime el modelo en los comentarios y te ayudaré.

Según la corriente que pase por la Base, el transistor dejará pasar más o menos intensidad del Colector al Emisor, de tal manera que el transistor actúa como un interruptor. Si no hay corriente en la base se dice que el transistor está en Corte. Si la corriente en la Base es muy alta, se dice que el transistor está en Saturación y actuará como un interruptor cerrado.

Material

  1. Transistor NPN
  2. Díodo
  3. Resistencia (de 1 kΩ aproximadamente)
  4. Hilo conductor
  5. Arduino
  6. Motor y baterías. Las baterías deben ser suficientes para alimentar el motor

Circuito

Alimentaremos Arduino y el motor independientemente. El microcontrolador enviará un pulso a la Base del transistor y éste dejará pasar corriente entre su Colector y Emisor, cerrando el circuito y permitiendo que el motor se mueva. Aquí presento dos circuitos: ambos son iguales, pero uno es esquemático y el otro está en fritzing.esquema_drivertransistor_driver ¿Para qué sirve el díodo del motor? Los motores DC, cuando se reduce rápida y drásticamente el voltaje que se les proporciona, provocan un pico de voltaje elevado durante un momento que puede dañar la placa. El diodo evitará este efecto (aquí hay una explicación más detallada) y te ahorrará fortunas en reemplazos. Este diodo se conoce como Flyback Diode.

La resistencia es por seguridad, por si se produce algun fallo y parte del corriente que circula por el transistor de desvía a Arduino. Con 9V no pasará nada. Con 60 voltios, sí.

Si utilizas Arduino ¿qué código hay que cargar? El ejemplo oficial de Fade bastará. Este código envia un pulso analógico a través del Pin Digital 9, justo lo que se necesita para controlar el transistor.

/*
 Fade
 
 This example shows how to fade an LED on pin 9
 using the analogWrite() function.
 
 This example code is in the public domain.
 */

int led = 9;           // the pin that the LED is attached to
int brightness = 0;    // how bright the LED is
int fadeAmount = 5;    // how many points to fade the LED by

// the setup routine runs once when you press reset:
void setup()  {
  // declare pin 9 to be an output:
  pinMode(led, OUTPUT);
}

// the loop routine runs over and over again forever:
void loop()  {
  // set the brightness of pin 9:
  analogWrite(led, brightness);    

  // change the brightness for next time through the loop:
  brightness = brightness + fadeAmount;

  // reverse the direction of the fading at the ends of the fade:
  if (brightness == 0 || brightness == 255) {
    fadeAmount = -fadeAmount ;
  }    
  // wait for 30 milliseconds to see the dimming effect    
  delay(30);                            
}

Recuerda revisar el esquema antes de probarlo. Los humanos tenéis un don para causar todo tipo de problemas en los circuitos. Si todo ha funcionado como debía verás que el motor se enciende, va aumentando de velocidad y se para.

Y ya está, tienes tu primer controlador de motores caseros. Este es el controlador más sencillo que puedes fabricarte, y como has visto sólo puede controlar la velocidad de giro. Para controlar también la dirección, se necesitan circuitos un poco más complejos, como el Puente-H.

Final de línea.

Tr4nsduc7or

Originariamente creado cómo un galvanómetro de bolsillo, Transductor tomó consciencia de si mismo y fue despedido cuando en vez cumplir con su trabajo se dedicó a pensar teorías filosóficas sobre los hilos de cobre, los electrones y el Sentido del efecto Joule en el Universo. Guarda cierto recelo a sus creadores por no comprender la esencia metafísica de las metáforas de su obra. Actualmente trabaja a media jornada cómo antena de radio, y dedica su tiempo libre a la electrónica recreativa y a la filosofía.

Antes de comentar, por favor, lee las Normas

38 Comentarios en "Cómo construir un controlador de motores con transistores NPN"

avatar
Ordenar por:   más nuevos primero | más antiguos primero
Laura
Humano

Buenas noches, que tipo de diodo utilizaron?

Antonio
Humano

“Los motores DC, cuando se reduce rápida y drásticamente el voltaje que se les proporciona, provocan un pico de voltaje elevado durante un momento que puede dañar” *la placa*

MANU
Humano

Hola querido tr4nsduc7or ,este sistema para controlar motores dc es aplicable a un motor de 6kva y 48v? he conseguido uno se llama hs xqt-4chuv, me ofrecen un controlador de la marca curtis, pero investigando me di cuenta que eso solo no es suficiente también hace falta un programador de curtis para que todo funcione y es muy,muy,muy caro, yo solo quiero controlar las rpm, por favor ayúdame, muchas gracias.

Ralbheiry
Humano

hola tengo un transistor npn D882 puedo utilizar este? y cual ceria la distribucion de sus patas ?

Ivanxu
Humano
Hola, estoy haciendo algo igual que lo que has expuesto, salvo que yo le tengo que implementar un potenciómetro con entrada analógica y dos pulsadores (uno para dar marcha y otro para la parada). El caso es que no consigo que me arranque el motor, por el monitor en serie me da los valores lógicos de 255 y tal, y con el polímetro las tensiones son correctas, uso el transistor NPN 547B (el que viene incluido en el Starter Kit de Arduino), pero el motor lo único que hace es emitir un zumbido y parece ser que demanda más chicha,… Leer más »
Chrisferr
Humano

Hola buenos días muy buen post felicitaciones. Mi consulta es la siguiente estoy necesitando usar un transistor que comandado con arduino deje pasar la energía por sólo 5 ms., y corte. Como puedo hacerlo o configurar rl arduino?Desde ya muchas gracias

Chrisferr
Humano

Goma buenos días muy buen post felicitaciones. Mi consulta es la siguiente estoy necesitando usar un transistor que comandado con arduino deje pasar la energía por sólo 5 ms., y corte. Desde ya muchas gracias

ngkg65
Humano

como seria el codigo de este circuito
https://www.youtube.com/watch?v=so1ERDSITZY

juancho25
Humano

glare puedo implementar esto para el giro de motor como le aria

mbr386
Humano

Hola, el transistor 2222a me puede servir para un motor de 3v y 0.1A ??

Gracias

Dani
Humano
Hola buenas, Antes de nada muchisimas gracias por el blog, es de gran ayuda para los que nos estamos inciando. Por otro lado queria hacerte una pregunta, he conectado el sistema tal y como lo tienes tu con dos variaciones, la resistencia que he puesto es de 330ohm y el transistor es el mps2222a. He notado que el led se enciende, por tanto imagino que el circuito esta correcto pero el motor hace un ruido sin arrancar, y el transistor se calienta en exceso y empieza a oler a quemado. He probado el motor directamente en la pila de 9… Leer más »
Jesus
Humano
Hola, felicidades por este tutorial, es muy bueno, en serio! Tengo 2 dudas: 1. compré un carrito a control remoto que usaba 4.5 v (3 pilas) para funcionar, arranqué el controlador y puse un arduino y un motor driver l298n y un módulo de rf. Pude hacerlo funcionar pero no tenía la potencia adecuada para mover todo, además, cuando usaba el motor direccional y el trasero perdía mucha potencia; yo supongo que esto es porque el motor driver l298n consume voltaje y amperaje; si en vez de usar un múdolu fabricado hago algo parecido a este tutorial podré hacer lo… Leer más »
Carlos Lugo
Humano
Gracias perodon si me veo torpe pero no se mucho de electronica a decir verdad aprendo solo a prueba y error 🙁 pero bien pasando al tema he probado el circuito y estaba alomentando el arduino con el usb asi que lo conecte a la misma bateria de 6v y he colocado un led para ver si funciona y efectivamente sube y baja la intensidad. el problema viene cuando conecto el motor, si lo conecto decae la corriente yni el led prende y el motor menos. el motor solo tiene estos datos QG Motor 6vDC 2400/2.5v RS-380 ROHS espero esto… Leer más »
carlos Lugo
Humano
Pues les comento // que tengo montado el circuito y con el motor y no funciona, he revisado el voltaje de salida y me entrega de 0 a 2 volts, si hace su labor de subir y bajar el voltaje eso es genial lo hace Arduino, pero lo que necesito es que me entregue un voltaje de 0 a 5 volts. Asi que la gran pregunta es como hago eso??? que tengo que agrgar o cambiar para que me entregue mas voltaje pues segun entiendo el PWM de android funciona en valores de 0 a 255 asi que a mi… Leer más »
carlos Lugo
Humano

muchas gracias lo montare y les cuento como me va pues un tengo que modificar mucho ese desarrollo

// Sabras como transmitir video desde una camara dslr a un dispositivo android?

Gracias.

carlos Lugo
Humano

muchas gracias soy nuevo en esto y estoy investigando asi que tengo algunas dudas espero me puedas ayudar.

primero el Diodo es un 4001 o 4004? y el npn podria ser el 2222a?

es que pretendo hacerlo con pwm variar la velocidad del motor sin el Potencionmetro fisico y usar arduino para controlar eso por medio de un blutooth y android.

Bueno espero me puedan ayudar de antemano Gracias.

trackback

[…] Controlador de motores con Transistores NPN […]

Miguelm93
Humano

Hola , salaudos…esta implementación me funciono muy bien pero ahora quisiera poder hacerlo con un motor brushless y 3 medios puentes H , pero la programación no logro conseguirla quizá puedas ayudarme

wpDiscuz