Controla un motor de 5 V CC con Arduino

Estoy tratando de construir un circuito para controlar un motor de CC de 5 V con Arduino. Mi problema es que no puedo entender el valor de la resistencia dentro de este esquema:

Esquemático

¿Qué resistencia debo usar para que funcione correctamente el transistor TIP132 ( hoja de datos )?

Respuestas (2)

La resistencia depende del consumo máximo de corriente del motor y de la h(FE) del transistor, la relación entre la corriente de colector y de base. Como puedo ver en la hoja de datos ( http://www.datasheetcatalog.com/datasheets_pdf/T/I/P/1/TIP132.shtml ), la h(FE) de TIP132 es al menos 1000. Digamos que su motor consume como máximo 2 A (que debe averiguarlo usted mismo, ya sea de su hoja de datos o bloquee el rotor y mida la corriente consumida), por lo que el microcontrolador debe generar aproximadamente 2 mA para impulsar el transistor.

El voltaje base-emisor del transistor debe ser de aproximadamente 1,5 V (es un transistor Darlington, es decir, dos uniones base-emisor están conectadas en serie, cayendo aproximadamente 0,7 V cada una), por lo que la resistencia debe caer aproximadamente 3,5 V con un suministro de 5 V. Teniendo eso podemos calcular que su resistencia debe ser: 3,5 V / 2 mA = 1,75 kOhm, por lo que 1,5 kOhm sería adecuado en mi caso.

Nuevamente, verifique el consumo máximo de corriente de su motor y vuelva a calcular la resistencia. También puede encontrar una opción interesante para reemplazar un BJT con un MOSFET adecuado (un IRL3202 podría ser una buena opción). Un MOSFET tiene una caída de voltaje de "estado abierto" más baja que un BJT, por lo que permite entregar un voltaje de suministro casi completo al motor y disipa menos calor.

Muy buena respuesta. ¡Bienvenido!
@ deed02392 Quise decir que el voltaje entre los terminales de la resistencia debería ser de aproximadamente 3,5 voltios, y lo expresé con el término "caída de voltaje". Probablemente mi inglés no era perfecto aquí. Por favor corrígelo para que aprenda :)
Estás bien, leí mal tu respuesta. :)

¡El cálculo "3,5 V / 2 mA = 7 kOhm" es incorrecto!

En realidad:

el 3.5 se calculó como 5V (salida de arduino en el estado lógico "1") - 1.5 V (voltaje BE del transistor darlington cuando se conduce).

3,5 V / 0,002 A = 1750 ohmios

Es mejor redondear el valor hacia abajo, por lo que el valor E24 más cercano sería 1600 ohmios.

Y: ¿realmente puede garantizar que el arduino generaría exactamente 5 V cuando se encuentra en el estado lógico "1"?

si Arduino solo da, por ejemplo, 4,4 V en lugar de 5 V, el cálculo cambiaría a:

4,4 V - 1,5 V = 2,9 V

2,9 V / 0,002 A = 1450 ohmios, el redondeo hacia abajo (E24) de 1450 ohmios es 1300 ohmios.

Para estar seguro, debe consultar las especificaciones técnicas de Arduino:

el voltaje mínimo de salida del pin de E/S cuando está en estado lógico "1".

Luego calcule el voltaje de la resistencia:

U(R) = V(E/S @ lógico "1") - 1,5 V

Y finalmente, suponiendo que el transistor es exactamente hFe = 1000, si la corriente del motor es de 2 A, que hFe = 1000 significa que la corriente base necesaria para el transistor es la misma que la corriente del resistor I(R) = 2 A / 1000 = 2 mA = 0,002 A.

Así que finalmente:

R = U(R) / I(R)

Si bien es cierto que si tiene una resistencia demasiado baja, tiene una corriente de base demasiado alta, pero lo contrario es aún peor:

Una corriente de base demasiado pequeña puede no permitir que el transistor se sature por completo, y eso significa:

1) el transistor genera más calor

2) la pérdida de voltaje en el transistor es innecesariamente grande, dejando menos voltaje (y menos potencia) para el motor.

He editado mi respuesta con el cálculo correcto de la resistencia. Me he equivocado con la división aritmética y esto me llevó a la sugerencia equivocada.