¿Es correcto este circuito de conducción del motor arduino?

Tengo un Arduino Pro Micro y algunas partes para jugar. Quiero controlar un pequeño motor de 5v desde una fuente de alimentación externa usando el Arduino para activar un transistor. Como esto:

ingrese la descripción de la imagen aquí

¿Es eso del todo correcto? ¿Funcionará? Quiero experimentar pero no quiero romper mi nuevo juguete en el proceso. El transistor que estoy usando es un NPN, 2N3904.

Respuestas (4)

Quieres usar tu transistor como un interruptor. Encontré un buen sitio sobre lo que da este circuito:

ingrese la descripción de la imagen aquí

Ahora olvídate de toda la basura y reduce el diseño a esto:

esquemático

simular este circuito : esquema creado con CircuitLab

Su circuito es correcto, excepto que le falta la resistencia base (R1) y la resistencia desplegable (R2). Además, la carga (su motor) debe estar en el colector del transistor, no en el emisor. Por último, utilizar un diodo flyback o flywheel con el cátodo a V cc , como en la primera imagen, para evitar tensiones altas.

Entonces, al final, su esquema se vería así:

esquemático

simular este circuito

Explicación del circuito:

  • Se requiere R1 para limitar la corriente en la base de la resistencia y, por lo tanto, la corriente extraída del Arduino. Si no usa la resistencia base, su Arduino podría romperse.
  • R2 es una resistencia desplegable que asegura que el voltaje en la base del transistor sea lo suficientemente bajo como para no conducir cuando no haya una señal de entrada del Arduino. Entonces, esta resistencia se asegura de saber en qué estado está el circuito cuando el Arduino está desconectado. Esta resistencia no es necesaria, pero se recomienda .
  • D1 es un diodo flyback que elimina el pico de voltaje cuando el motor se detiene o comienza a funcionar. Va demasiado lejos para explicar por qué, pero cada vez que deja que fluya una corriente a través de una bobina o cuando deja de dejar que la corriente fluya, puede ocurrir un pico de voltaje. Con el diodo flyback, te aseguras de que el pico se elimine inmediatamente. Se recomienda encarecidamente el uso de este diodo .

Una última cosa a explicar: por qué el motor tiene que estar del lado del colector y no del lado del emisor del transistor. Wouter explica esto en su respuesta , en resumen: con la carga en el lado del colector, usted está a cargo de qué voltaje recibe el motor; con la carga en el lado del emisor, este voltaje no puede ser mayor que el voltaje en la base (menos algo).

Hola Camil, aprecio todo el trabajo que pusiste en la publicación y la mayor parte de lo que dijiste tiene sentido para mí. Sin embargo, tengo un par de preguntas: 1. Si la entrada de Arduino está apagada, ¿por qué se necesita la resistencia R2? ¿La base no tendrá voltaje y el transistor no se disparará? 2. Tengo entendido que los diodos evitan que la corriente fluya en una dirección, pero ¿por qué une los polos + y - del motor? ¿Por qué no estaría simplemente en el polo negativo, ya que esa es la parte conectada al Arduino?
@Madagascared la mayor parte del tiempo también funciona sin R2, pero con esta resistencia siempre sabes lo que sucede. No es obligatorio, pero recomendable. Su comprensión de los diodos es correcta. Cuando el motor de CC se desconecta, puede ocurrir un pico de voltaje en el lado del transistor. Con el diodo flyback, elimina directamente el pico dejándolo fluir a V_cc. Si no hace esto, el transistor recibe el pico en su colector y es posible que no le guste esto.
@Madagascared, por favor, no acepte una respuesta tan rápido. Solo espere unos días: una respuesta aceptada desalienta a otros a responder, ¡mientras que también pueden tener cosas interesantes que decir!
La resistencia desplegable de @CamilStaps no es necesaria si maneja el BJT con una salida ATmega, ya que va a 0, no a alta impedancia.
@FelicePollano correcto, pero ¿y si cambias el pin a entrada o desconectas el uC? Entonces es bueno tener el menú desplegable. Por supuesto, también es una buena práctica.
@CamilStaps Es un BJT, si en el entorno que dejas necesitas una resistencia desplegable para abrir el bjt, estás en un problema;)

Podría funcionar (al menos por un tiempo), pero hay algunos problemas:

  • no mencionaste cuánta corriente consumirá el motor. un 2N3904 es un transistor de pequeña señal, es posible que no sobreviva a la corriente del motor (tenga en cuenta que un motor parado consume una corriente mucho más alta)

  • como un relé, un motor puede generar picos de tensión. Pondría un diodo en paralelo al motor. (observe la polaridad!)

  • usa el transistor como seguidor de emisor, por lo tanto, el voltaje en el motor solo puede ser tan alto como el voltaje de salida del arduino (menos 0.6V más o menos). Esto podría funcionar, pero preferiría el motor 'en' el cable colector. Esto requeriría una resistencia adecuada en el 'cable' base.

Para empezar, ni siquiera usaría un transistor NPN debido a la disipación de calor (Pd). Pd se puede calcular usando:

NPN/PNP -> Pd = Vf*I = 0.7V*I Como puede ver aquí, si está dibujando 1A, entonces ese transistor se calentará como si no hubiera un mañana. (0.7V)*(1A) = 700mW.

MOSFET -> Pd = I ^ 2 * Ron = número pequeño Como puede ver aquí, incluso en 1A, es esencial que no se emita calor. Dado que la resistencia de encendido está típicamente en miliohmios. (1A)^2*10mOhm = 10mW.

Además, ¡la mayoría de los MOSFET tienen un diodo flyback incorporado!

Aquí hay una pregunta: usted dice que la fuente de alimentación de 5V para el motor no está conectada al Arudino en absoluto. En este caso, tengo mis dudas de que el circuito funcione, a menos que esté acoplado a tierra en otro lugar (por ejemplo, si su Arduino está alimentado por USB, que está acoplado a la tierra de CA, y la fuente de alimentación del motor está acoplada a la misma tierra a través de la salida). En cualquier caso, depender involuntariamente de que las cosas se acoplen a través de la red eléctrica no es la forma en que desea diseñar circuitos (por ejemplo, dejará de funcionar si el Arudino o el motor funcionan con batería). Por ejemplo, en este circuito, el V_be (voltaje base-emisor) no está definido.

Una solución simple es conectar la tierra del Arduino a la tierra de la fuente de alimentación del motor. Si realmente insiste en no tener un acoplamiento a tierra, debe tener alguna otra forma de acoplamiento, ya sea ópticamente (optoaislador) o magnéticamente (transformador).