He estado tratando de crear un circuito de transistor simple con un 2N3904 que activará y desactivará un motor de CC con engranajes sin extraer energía del arduino; he seguido el esquema que se ve en la segunda imagen.
(Vista de tablero)
(Esquemático)
El circuito no se está comportando como esperaba. Para fines de prueba, he estado alimentando los 5V del arduino al pin base (antes de la resistencia) para activar el 'interruptor' del BJT. Esto solo alimenta el motor cuando tengo una resistencia de bajo valor en la base (~ 10 ohmios). Cuando uso una resistencia de 1k, el motor no enciende. Además, he usado un pin digital configurado en alto para intentar alimentar el pin base y encender/apagar el motor, pero esto no hace nada, independientemente del valor de la resistencia.
¿Quizás mi circuito es incorrecto? Todo lo que quiero que haga el circuito es encender y apagar el motor cuando le entrego una señal alta del arduino.
Notas: El cable rojo que ingresa al nodo en la parte superior proviene de una batería de 9V. El bus de tierra en la protoboard tiene tanto la tierra de arduino como la tierra de la batería conectadas a él.
Su motor al que se vinculó es un motor de 4.5V 190~250 mA (sin carga). A 9v, la corriente probablemente aumenta. Lo estás sobrecargando en un 200%. Y cualquier carga/peso también hará que aumenten los requisitos actuales. La corriente de parada es probablemente 10 veces mayor que al menos.
Le falta el diodo de protección en el motor, que puede matar fácilmente el transistor.
El transistor que está utilizando es un estándar de 100 mA, máximo absoluto de 200 mA . Uno de esos motores por sí solo sin carga puede matar fácilmente ese transistor.
La resistencia base se calcula como (Base Voltage - Base-Emmiter Voltage) / Current required
. El voltaje base es el pin Arduino, por lo que 5v, Vbe depende de la corriente del colector, que aquí es de 200 mA, por lo general, 1V. La corriente requerida se calcula como Corriente de colector (200 mA) / Hfe (De la hoja de datos, 10~30). En el lado seguro, vamos con 10, entonces 200/10 = 20mA necesarios en la base.
(5V - 1V) / 20mA o 4V / 0.02A = resistencia de 200Ω. Una resistencia de 1 kΩ solo permitiría 4 mA en la base, lo que multiplicado por el Hfe de 10, solo permitiría 40 mA en el colector, probablemente no sea suficiente para encender el motor.
TLDR: necesita el diodo de protección, su fuente de alimentación de 9v es demasiado alta y su transistor es demasiado débil para el motor que está utilizando. Y necesita una resistencia más grande en la base porque el motor requiere más corriente de lo que piensa. Un transistor 2n2222 común con una resistencia de 470 Ω funcionaría mucho mejor.
Editar: no hacer que el pin sea una salida también pone un freno a las cosas. Respuesta, los pines de Arduino están predeterminados en la entrada.
pinMode(motorPin, OUTPUT);
en la sección de configuración(). HH.La explicación más probable es que el motor necesita más corriente de la que el transistor quiere entregar. Has medido la corriente del motor?
De hecho, puede ser que el motor requiera más corriente de la que puede suministrar su batería de 9V. ¿Ha hecho funcionar el motor directamente con la batería de 9V?
Lo segundo más probable es que la fuerza electromagnética del motor haya hecho estallar el transistor. Sustituya el motor por una pequeña bombilla incandescente y vea si puede arrojar algo de luz sobre el tema.
Coloque un diodo de polarización inversa a través del motor. Probablemente tomaría un 1N4001 o algo similar.
Por lo que vale, creo que los MOSFET de canal N con puertas de nivel lógico son mucho más fáciles de usar que los transistores NPN para este tipo de conducción. Una resistencia de un kiloohmio funcionaría bien para la base, ya que solo se necesita una pequeña cantidad de carga para hacer que el MOSFET conduzca, y luego no consumirá básicamente nada.
El BS170 (similar al 2N7000) viene en una versión de 500 mA que es excelente para la experimentación de propósito general y puede comprar 25 por unos pocos dólares. El MOSFET de canal N IRLB8721 es excelente para manejar cosas más grandes (fácilmente más de 10 amperios sin disipación de calor) y cuesta alrededor de un dólar cada uno. En buena medida, probablemente desee una resistencia de 220 ohmios en la puerta de eso, para encenderlo bien y rápido.
Es posible que haya invertido demasiada fe en el transistor. Cuando miro la hoja de datos del 2N3904, tiene una corriente de colector máxima de 200 mA, que es lo que obtiene su motor de CC. Los motores de CC son dispositivos de alta corriente, trate de averiguar la corriente necesaria para encender este motor.
La corriente de colector del transistor será una función de la corriente a la Base del transistor. Recuerda que B*I(b) = I(c).
Cuando usa el pin de 5V del Arduino, se conecta directamente a la salida del LDO integrado. Esto será mucho más adecuado para impulsar su motor de CC, por lo que este pin funcionará (una corriente de base más alta es igual a una corriente de colector más alta).
Sin embargo, Arduino solo puede generar un máximo de 40 mA por pin de E / S, no he verificado la corriente máxima del LDO, pero estoy seguro de que es mucho más alta.
Aquí está el esquema de referencia: Arduino Schematic
De todos modos, el consejo más pragmático que puedo dar es que su transistor solo debe usarse para impulsar pequeños motores de juguete. Si tiene un motor de CC de valor, es necesario usar un relé o un transistor más robusto.
phil escarcha
pwee92