¿Por qué se requiere un transistor al conectar relés a un Arduino? [duplicar]

Estoy tratando de usar un circuito Arduino simple para encender y apagar una lámpara de CA. Este es el circuito que estaba a punto de probar y que obtuve de un sitio web .

Ingrese la descripción de la imagen aquí

No entiendo por qué se requiere un transistor allí. Pensé que ya tenemos una salida de 5 V que podemos conectar directamente al relé.

Pero creo que ya tengo algunas de las mejores respuestas. Gracias.
Más soluciones de las que siempre quiso aquí: electronics-tutorials.ws/blog/relay-switch-circuit.html - Desplácese hacia abajo hasta "Circuito de interruptor de relé controlado por lógica" - Mejora de canal N: MOSFET sería mi preferencia personal.
@EdRandall Muchas gracias por eso... Esos son realmente informativos para mí, como principiantes...
Esta es una súper pregunta frecuente. ¿Por qué tales preguntas no se cierran inmediatamente como un duplicado? ¿Por qué tenemos que responder las mismas preguntas una y otra vez?
@PeterMortensen Suena como una pregunta para meta.

Respuestas (5)

El microcontrolador promedio como en su Arduino solo tiene una "fuerza" limitada en los pines del puerto. Por lo general, podría ser de 2 a 20 mA. Es posible que su relé requiera 60 mA, por lo que necesita algún medio para amplificar el pin del puerto. Comúnmente se usa un transistor o mosfet.

Tenga en cuenta que a su diagrama le falta una resistencia en serie con el transistor, ya que el transistor solo requiere alrededor de 0,7 V para encenderlo. La resistencia reduce el voltaje del pin del puerto de 5 V a 0,7 V.

Muchas gracias.. Pero no seguí la parte de la resistencia... :( Sugiera el valor si no le importa. Entonces, ¿está en serie con la base? Pin de Aruduino -> Resistencia -> Base de transistor, ¿es correcto amigo? ?
Hay muchos tutoriales, ya que lo que pides es muy común. Supongo que haría que la resistencia fuera de 1K. Los tutoriales deben cubrir cómo puede calcular la resistencia tge requerida.
Es posible que no se necesite una resistencia si el pin tiene un pullup interno.
La resistencia es necesaria para limitar la corriente de base en el transistor. De lo contrario, correrá el riesgo de dañar el puerto gpio. Realmente es más un problema actual que uno de voltaje (pero la ley de ohmios existe...)
fraxinus, está confundiendo la resistencia pullup de entrada con la resistencia limitadora de corriente de salida .
@LorenzoMarcantonio, debe usar la @usernamesintaxis si desea que fraxinus reciba un ping en su bandeja de entrada.
Sería bueno incluir un pequeño esquema que muestre la resistencia "faltante", o indicar que la resistencia va a la base del transistor desde el pin de salida de Arduino. Los usuarios de Arduino no son los ingenieros eléctricos más competentes y es posible que no lo entiendan de inmediato.
Sí, la frase "en serie con" es confusa cuando se habla de un dispositivo de 3 terminales. Te refieres a una resistencia en la base, no en el colector.
2-20 mA... ¡He usado un microcontrolador con salidas que ni siquiera pueden controlar más de unos pocos cientos de μA!
Los MCU de micropotencia de @Hearth o casi CPU de alta potencia a menudo tienen salidas débiles. ¡El viejo 6502 (NMOS IIRC) incluso necesitaba buffers para ir a su propio bus! El AVR y los PIC de referencia parecen ser los últimos en tener un disco tan pesado en todos los GPIO
"Un transistor o mosfet..." MOSFET también es un tipo de transistor. Lo que quieres decir es BJT.
@Durnus. La hoja de datos de Fairchild se refiere al BC547 como un transistor.
@Kartman No sé cuándo estuvo disponible por primera vez el BC547, pero no me sorprendería si fuera antes de que los MOSFET fueran comunes. Incluso si no, llamarlo transistor no está mal. Dicho esto, no creo que sea correcto usar "transistor" para referirse específicamente a "BJT" en lugar de otros tipos de transistores. Los MOSFET también son transistores, al igual que los JFET y los HEMT, e incluso los transistores de contacto puntual y los UJT, aunque ya no se usan.
@Kartman Sí, la "T" en BJT significa "transistor". La "T" en MOSFET también significa "transistor". Al igual que la "T" en JFET y la "T" en HEMT y la "T" en IGBT, etc...
Vamos chicos, nos estamos riendo los pelos aquí. No está agregando valor a la pregunta.
@Kartman No es una broma: esta respuesta estará aquí durante mucho tiempo, y mientras contenga la frase "transistor o mosfet", seguirá conteniendo una inexactitud que puede agregar confusión a los estudiantes de electrónica que leerán esto y caminarán. Deshazte de la idea de que los transistores y los mosfets son tipos diferentes de cosas, que no lo son. Es como decir que puedes crear música con un instrumento musical o un piano. O que los árboles pueden producir frutas o manzanas; que se puede llegar al trabajo utilizando un vehículo o un coche, etc.
@J... ¿qué tal 'pantalla LCD' y 'cajero automático'?
@Kartman Esos no tienen ninguna relación . Se aplicaría aquí si dijera "Un transistor mosfet", pero la frase en cuestión es "un transistor o mosfet". Estos son lógicamente diferentes.
J... Creo que podemos decir con seguridad que todos los participantes de esta discusión conocen la diferencia entre un BJT y un MOSFET. Sí, referirse a un BJT como un 'transistor' es impreciso, pero en el contexto de la pregunta original no había ambigüedad. Incluso traté de introducir algo de humor consultando la hoja de datos de Fairchild. Se notó la imprecisión e hice una moción para detener cualquier otra discusión improductiva. Parece que ignoraste la señal de alto y querías martillar el clavo un poco más. No hay ningún argumento de mi parte, así que por favor deténgase. Edita mi respuesta si eso te ayuda. Termina aquí.

Ok, aquí está (casi) todo lo que necesitas:

esquemático

simular este circuito : esquema creado con CircuitLab

El Arduino usa una MCU ATMEGA (la mayoría de los AVR tienen especificaciones similares, por lo que no es crítico), por lo que la hoja de datos tiene la información relevante:

  • Con un suministro de 5 V, el voltaje ALTO del puerto de salida es de al menos 4,2 V, con una carga de 20 mA

  • Todavía de 5 V, el voltaje BAJO del puerto de salida es como máximo de 0,7 V, con una carga de 20 mA

Dado que citan la corriente a 20 mA, es seguro asumir que la corriente está disponible (hasta 400 mA en total para el chip, como en los máximos absolutos).

En la hoja de datos BC547 puede ver que:

  • La capacidad de corriente máxima es de 100 mA (el tamaño de la bobina de su relé)

  • La ganancia de corriente CC (hFE) a 2 mA es de al menos 110

  • La saturación del emisor base suele ser de 0,7 V.

  • El emisor base en el voltaje podría bajar a 0,55 V (esta es una trampa para principiantes)

Ahora, para los cálculos: desea poner algunos mA en la base con el GPIO alto: por lo que tiene una fuente de 4,2 V, la resistencia base y la unión BE (que es sustancialmente un diodo para este propósito, y cae 0,7 V)

Luego deja al menos 3.5V en la resistencia para caer. La resistencia de 1k propuesta limita la corriente a aproximadamente 3,5 mA (mínimo). Eso, multiplicado por el hFA, da un potencial de 350 mA de corriente de colector que es suficiente (como si intentara extraer más de 100 mA, el BJT muere). Entonces, incluso una resistencia un poco más grande funcionará (sin embargo, no demasiado)

Ahora, para la trampa mencionada anteriormente: si tiene mucha mala suerte, podría tener un AVR con una salida muy baja (0.7V) y un BJT con un VBE muy bajo (0.55V). ¡Entonces el relé podría dispararse cuando el GPIO está bajo!

Por esa razón, es útil agregar otra resistencia entre la base y el emisor para derivar el exceso de corriente. El cálculo no es inmediato (piense en una resistencia en paralelo al diodo de unión BE). Sin embargo, una resistencia de 10k es útil y tradicional durante muchas décadas.

Buena respuesta, solo agregaría que en diseños resistentes, la base también debe tener una resistencia de extracción para que el BJT esté en un estado definido cuando la MCU se inicia o se reinicia. La resistencia de derivación que mencionas actuaría como tal.
Para los MOSFET es bastante importante ya que tienen una puerta de alta impedancia y una salida triestablecida es esencialmente aleatoria; un BJT no sufre ese problema: sin corriente de base, sin corriente de colector. Sin embargo, el VBE suele ser más bajo que el VGSth, por lo que este otro problema es típico.
@LorenzoMarcantonio Esa es realmente una excelente respuesta hombre... Muchas gracias
Sí, pero realmente no puede confiar en que la MCU tenga un estado bien definido durante el reinicio o el encendido. Podría ser algo de tres estados, podría ser flotante, podría ser de entrada... sí, es poco probable que algo del lado de MCU realmente lleve el pin alto según sea necesario para NPN, pero también hay EMI.
+1 - por incluir el esquema - ¡Esta debería ser la respuesta aceptada ...!
¿Estás asumiendo que los 5 voltios también provienen del Arduino? ¿O el pin no sería suficiente? Si la bobina solo genera 20 mA, entonces debería funcionar, ¿verdad?
el suministro de +5 proviene del riel de alimentación. Si la bobina se hunde 20 mA, no debería haber ningún problema. Por cierto, el 547 IIRC tiene algo así como 40-60 VCEmax, por lo que incluso un relé de 12 V funcionaría de la misma manera ( no cambia nada para la polarización base)

Déjame tratar de simplificar:

  • A - Verifique la corriente mínima necesaria para encender el relé en la hoja de datos.
  • B - Verifique la corriente máxima que la MCU GPIO puede generar en la hoja de datos

Si B> A, entonces no necesita un transistor; de lo contrario, para obtener la corriente adicional requerida por el relé, necesita un transistor.

Hay relés que no necesitan un transistor para funcionar: por ejemplo, los relés de lengüeta HE3300 necesitan tan solo 10 mA y pueden ser controlados directamente por un pin de microcontrolador. Tenga en cuenta que dichos relés son, a su vez, bastante limitados en cuanto a la potencia que pueden cambiar sus contactos (para HE3300, eso sería 10 W máx.).

Además de las capacidades de corriente limitadas de las salidas: hundir una corriente significativa, incluso dentro de las especificaciones, creará más calentamiento del microcontrolador (lo que no es bueno para la confiabilidad); Además, puede haber un límite para la corriente de salida total (sumidero) para todo el microcontrolador, lo que limita la cantidad de relés que puede controlar directamente.

Además, impulsar picos de corriente significativos a través de la conexión a tierra de la MCU puede potencialmente crear problemas de integridad de la señal (forzar una conexión a tierra del bus en un lugar donde podría no ser deseable), especialmente si la MCU tiene algunas E/S analógicas y no AGND por separado.

Además, los relés y los motores se consideran dispositivos que crean picos EMF de retorno y otros efectos que, si bien debe mitigarlos con dispositivos como diodos de marcha libre y/o amortiguadores en cualquier caso, desea mantener algo aislado de una parte LSI sensible como un MCU.