Cálculo de los valores de resistencia que controlan los LED a través de transistores y tienen resistencias de pull-up / pull-down adjuntas

0

Durante el inicio de ESP8266:

  • GPIO15 debe estar BAJO
  • GPIO2 necesita estar ALTO

Quiero poder encender / apagar los LED RGB conectados a GPIO2, GPIO15 y GPIO4 a través de transistores NPN.

Datos:

  • Rojo: Uf = 2 V
  • Verde: Uf = 2.5 V
  • Azul: Uf = 3.3 V
  • Si = 22 mA
  • VCC = 3.3 V
  • hFE = 10 (?)
  • Vbe = 0.82 V (?)
  • Vce = 0.3V (?)

Esquema:

Estoy perdido en mis cálculos de R2, R21 y R22 . Hace un tiempo los calculé de la siguiente manera en el esquema y el dispositivo funcionaba correctamente, pero creo que tuve suerte.

Entonces, ¿cómo debo calcularlos correctamente?

    
pregunta Defozo

1 respuesta

2

La clave es elegir esos valores de resistencia para que los transistores operen en la región de saturación (como un interruptor).

Por lo que veo en el esquema que proporcionó, cada transistor impulsa 4 LED y desea que la corriente a través de cada LED sea de 22 mA. Luego, la corriente del colector a través de cada transistor cuando controla su conjunto de LED es 4x22mA = 88mA.

Con esa información, puedes averiguar cómo sobrecargar la corriente base para que el transistor esté en saturación. Es decir, elija un \ $ \ beta_ {forzado} \ $ < \ $ \ beta (min) \ $ de su transistor. Eso asegurará que los dispositivos estén en saturación.

Diga, usted elige \ $ \ beta_ {forzado} \ $ = \ $ \ dfrac {\ beta (min)} {5} \ $ o, para simplificar, selecciónelo como \ $ \ beta_ {forzado} = 10 \ $ como usted tiene en sus especificaciones.

Luego \ $ I_B = \ dfrac {I_c} {\ beta_ {forzado}} = \ dfrac {88 \ text {mA}} {10} = 8.8 \ text {mA} \ $

Ahora puede encontrar los valores para la resistencia de base usando la ley de kirchoff

$$ R_B = \ dfrac {V_ {output} -V_ {BE}} {I_B} $$

donde \ $ V_ {salida} \ $ es el voltaje en el GPIO cuando está alto

Su dispositivo funcionó porque sus valores para \ $ R_B \ $ proporcionaron suficiente overdrive current a través de la base para colocar el transistor en la región de saturación.

Para R2 tenías 510 ohmios, entonces

$$ I_B = \ dfrac {5 \ text {v} -0.82 \ text {v}} {510 \ Omega} = 8.20 \ text {mA} $$ asumiendo que el gpio es 5V cuando está alto (\ $ \ beta_ {forzado} \ approx 10 \ $). Incluso si fuera 3.3V, \ $ I_B = 4.9 \ text {mA} \ $ y (\ $ \ beta_ {forzado} \ approx 18 \ $), esas corrientes son lo suficientemente altas como para conducir el transistor a la saturación.

Además, si revisa la hoja de datos, para un voltaje de saturación \ $ V_ {ce} = 0.3 \ text {V} \ $, intentaron una corriente base de 15mA para una corriente de colector de 150mA (\ $ \ beta_ {forzado} = 10 \ $).

EDITAR: Uno de los comentarios agregó el hecho de que los pines de E / S típicos tienen una impedancia de salida de aproximadamente 100 ohmios. Esto cambia la corriente de la base un poco, pero sigue manteniendo el dispositivo funcionando como un interruptor (\ $ \ beta_ {forzado} \ $ sigue siendo una fracción de \ $ \ beta (\ text {min} \ $)).

Por lo que veo en la hoja de datos del ESP8266, puede configurar sus GPIO como drenaje abierto, push-pull, etc. No sé cuál de esos ajustes está usando. Pero si los está utilizando como push-pull (puede aumentar o disminuir la salida), todo lo anterior sigue siendo válido después de startup .

Ahora, supongo que al inicio, esos GPIO son de alta impedancia y desea un estado bien definido, por eso está tirando hacia abajo y tirando de los dos GPIO que mencionó. En la puesta en marcha, su LED verde, que está conectado a GPIO2 (alto), no se encenderá tan brillante como después de la puesta en marcha (pero ni siquiera lo notará), esto se debe a que la corriente de base no es tan grande Para configurar una corriente de colector de 88 mA. La corriente de base debe ser aproximadamente (la corriente de fuga en el gpio debe ser despreciable):

$$ I_ {B (@startup)} = \ dfrac {V_ {cc} -V_ {BE}} {R_ {pullup} + R_B} = 0.236 \ text {mA} $$

Si decimos \ $ \ beta \ $ = 100, entonces el dispositivo probablemente no sea un interruptor en este momento (está en la región activa), \ $ I_C = \ beta I_B \ $ = 23.6mA (\ $ V_ {ce} \ approx 3 \ text {V} \ $, y de hecho está en la región activa), que debe dividir por cuatro (ya que tiene cuatro LED), por lo que cada LED tendrá \ $ I_F \ approx \ $ 5.9mA. Es por eso que los LED no serán tan brillantes como cuando obtienes 22 mA a través de cada uno de ellos. Pero esto solo ocurre al inicio, lo que probablemente no se nota.

El problema que puedo ver es que al inicio, GPIO2 puede no ser lo suficientemente alto debido a que la corriente de la base es lo suficientemente alta como para generar una considerable caída de voltaje en el pullup. Es decir,

$$ v_ {CC} -I_ {B (@startup)} R_ {pullup} = V_ {gpio2} = 0.94 \ text {V} $$

Y el ESP8266 leerá una lógica alta si es al menos 0.75 * Vcc = 2.48V según la hoja de datos.

No tienes este problema con el menú desplegable.

No sé cuál es el bloque central de su esquema, asumí que esos transistores se conectan directamente a los GPIO.

Idealmente, es posible que desee aislar su transistor conectado a gpio2 de esta salida, digamos por un par de milisegundos, de esa forma la corriente base no pondrá a gpio en un estado desconocido al inicio (¿quizás agregue algún tipo de mecanismo de retardo? ). Después del inicio, podría 'volver a conectar' su transistor asociado con gpio2, y todos los cálculos anteriores para \ $ R_B \ $ todavía se aplican (configuración push-pull).

Después de la puesta en marcha, el desplegable, parece una carga para GPIO15 cuando se maneja alto, no afecta el cálculo de su resistencia base, pero no desea extraer más corriente de ese pin que la clasificación máxima (en este momento es de aproximadamente .33mA que se extrae del menú desplegable (3.3V / 10k)). La corriente total extraída de ese gpio será la corriente base más la corriente a través de la resistencia desplegable. Pero no veo esto como un problema siempre y cuando esté bajo la calificación máxima.

Espero que esto sea útil y espero que otras personas agreguen a esto algunas formas de abordar algo como esto.

    
respondido por el Big6

Lea otras preguntas en las etiquetas