¿Por qué el relé está activado por un transistor NPN mientras la salida de Arduino está apagada (baja)?

Tengo un circuito como se muestra a continuación:

esquemático

simular este circuito : esquema creado con CircuitLab

Nota:

En el esquema anterior, algunos pines de Arduino Nano no se muestran por motivos de simplicidad. Además, SW1 y SW2 no son interruptores sino sensores, como se muestra a continuación:

ingrese la descripción de la imagen aquí

Aquí está el código de arduino:

//include LCD library
#include <LiquidCrystal.h>

//Initialize an LCD object
/*Pins should be mentioned in this order:
  Reset
  Enable
  Data4
  Data5
  Data6
  Data7
*/
LiquidCrystal lcd(7, 6, 5, 4, 3, 2);
int upSensor = 11;
int downSensor = 10;
int continuousSwitch = 8;
int suddenSwitch = 9;

unsigned long counter = 0;

void setup()
{
  Serial.begin(9600);

  pinMode(upSensor, INPUT);
  pinMode(downSensor, INPUT);
  pinMode(continuousSwitch, OUTPUT);
  pinMode(suddenSwitch, OUTPUT);

  //Begin the LCD interface
  lcd.begin(16, 2);

  lcd.print("MOTOR OFF");
}

void loop()
{

  if(counter == 1)
  {
    digitalWrite(suddenSwitch, HIGH);
    delay(1000); //1 Second
    digitalWrite(suddenSwitch, LOW);
  }

  Serial.println("upSensor: " + String(digitalRead(upSensor)));
  Serial.println("downSensor: " + String(digitalRead(downSensor)));

  if(digitalRead(upSensor) == HIGH && digitalRead(downSensor) == HIGH)
  {
    digitalWrite(continuousSwitch, HIGH);
    lcd.setCursor(6, 0);
    lcd.print("ON");
    counter++;
  }

  if((digitalRead(upSensor) == LOW && digitalRead(downSensor) == LOW))
  {
    digitalWrite(continuousSwitch, LOW);
    lcd.setCursor(6, 0);
    lcd.print("OFF");
    counter = 0;
  }

}

Todo funciona bien excepto el relé RLY2.

No importa si los interruptores sw1 y sw2 están abiertos o cerrados, RLY2 siempre está ENCENDIDO. Quiero decir que la conexión COMÚN de RLY2 siempre está conectada a la conexión NORMALMENTE ABIERTA. Si mido la salida del pin D9 de arduino, puedo ver que está cambiando según el estado de los interruptores SW1 y SW2. Pero el Relé RLY2 siempre está ENCENDIDO. ¿¿¿¿POR QUÉ????

Actualizar:

Antes de quitar el transistor:

He agregado un diodo entre el emisor y la tierra. También cambió la resistencia R2 de 1K a 470E.

Voltajes de Q2:

A. Cuando D9 es ALTO:

Collector - Ground ----> 6.15V
Emitter - Ground ------> 0.70V
Base - Ground ---------> 1.40V

Collector - Base ----> 4.75V
Collector - Emitter -> 5.40V
Base - Emitter ------> 0.70V

B. Cuando D9 es BAJO:

Collector - Ground ----> 7.90V
Emitter - Ground ------> 0.70V
Base - Ground ---------> 0.65V

Collector - Base ----> 7.25V
Collector - Emitter -> 7.20V
Base - Emitter ------> 0.50V

Quitaré el transistor, después de que Trevor verifique los voltajes anteriores y se asegure de que el transistor esté enfermo.

Actualización2:

Después de quitar el transistor:

Voltajes de Q2:

A. Cuando D9 es ALTO:

Collector - Ground ----> 15.06V
Emitter - Ground ------>  0.15V
Base - Ground --------->  4.03V

Collector - Base ----> 12 V
Collector - Emitter -> 15.6V
Base - Emitter ------> 3.70V

B. Cuando D9 es BAJO:

Collector - Ground ----> 16.90V
Emitter - Ground ------> 0.12V
Base - Ground ---------> 0 V

Collector - Base ----> 16.8V
Collector - Emitter -> 16.4V
Base - Emitter ------> 0.15V

También he medido el transistor:

Base - Collector    --> 647
Base - Emitter      --> 642
Collector - Emitter --> 1
Collector - Base    --> 1
Emitter - Base      --> 1
Emitter - Collector --> 1

Entonces, de las lecturas mencionadas anteriormente, creo que el transistor está bien. ¿Tengo razón?

Actualización3:

He puesto nuevo 2N2222 tras quitar el primero:

Voltajes de Q2:

A. Cuando D9 es ALTO:

Collector - Ground ----> 0.76V
Emitter - Ground ------> 0.74V
Base - Ground ---------> 1.52V

Collector - Base ----> 0.74 V
Collector - Emitter -> 0.02V
Base - Emitter ------> 0.77V

B. Cuando D9 es BAJO:

Collector - Ground ----> 10.25V
Emitter - Ground ------> 0.70V
Base - Ground ---------> 0.73V

Collector - Base ----> 9.50V
Collector - Emitter -> 9.55V
Base - Emitter ------> 0.04V

Ahora, mi diagrama se ve así:

esquemático

simular este circuito

Update4 (diagrama de trabajo):

esquemático

simular este circuito

Los comentarios no son para una discusión extensa; esta conversación se ha movido a chat .

Respuestas (2)

Desafortunadamente, no hay garantía de que Arduino pueda tirar de la base tan bajo...

ingrese la descripción de la imagen aquí

Debe agregar un diodo debajo de ese transistor y reducir la resistencia a 500R para que se encienda más fuerte o mejor, cambie a MOSFETS de canal N.

Si cambio a MOSFETS, ¿habrá necesidad de C2 y D2? Además, ¿necesitaré una resistencia PULL-DOWN en la base de Q2?
Todavía se necesita D2 para la protección flyback, C2 puede deshacerse o hacerse pequeño. Pull-down es una buena idea para mantener el MOSFET en un estado conocido durante el encendido/reinicio de la CPU.
DE ACUERDO. Lo intentaré y te diré si tuve éxito.
@Trevor: ¿No son peores esas especificaciones cuando se hunden 20 mA? Seguramente ese no es el caso aquí. ¿Cuál es el número de pieza del relé que está utilizando (enlace a la hoja de datos?). ¿Quizás los 2222 están cocidos? ¿Qué mides en DIO9? ¿Sobre el colector de Q2? Doble-Cuádruple verifique que los transistores estén cableados correctamente. Además, podría eliminar C2. Lee esto: enlace
@ChrisKnudsen, Sí, lo son, pero no hay un mínimo, y su base está en 0.13V, que no es suficiente para apagar ese transistor. Y aparentemente su subidón tampoco le está dando suficiente jugo. Necesitas leer los comentarios en la pregunta. Muchos números allí.
¿Puedo usar un capacitor tipo disco en lugar de un capacitor electrolítico? Porque no tengo un condensador electrolítico de valor inferior a 1uF. Tengo un capacitor tipo disco que tiene escrito 103. Creo que su valor es 10nF según mis cálculos. ¿Puedo usar eso? Como dices, si me deshago de C2, creo que mi relé no cambiará sin problemas, ¿verdad?
@Vishal, sí, estará bien, aunque realmente no lo necesita en esta aplicación.
He eliminado C2 en este momento. Tengo diferentes resultados ahora. Ahora, cuando SW1 y SW2 están BAJOS, el voltaje entre la base y el emisor es de 0,52 voltios, que era de 0,13 V antes de eliminar C2. En esta condición, si compruebo el voltaje entre la salida de arduino en D9 y GND, obtengo 0V. La misma conexión de D9 va a la base de Q2. Solo hay una resistencia entre ellos. Entonces, ¿por qué obtengo 0,52 V en la base y el emisor de Q2?
@Trevor, pasé por alto por completo el enlace 'mostrar más comentarios'. Mis disculpas.
@Vishal ¿Qué voltajes obtienes en el colector cuando el pin D9 está alto ahora?
Cuando el pin D9 es alto, obtengo el mismo voltaje que antes de quitar el capacitor. es decir, 7,51 V
@Vishal, sigo pensando que el transistor está enfermo... o tal vez al revés.
@Vishal, sáquelo, el 2n2222, luego encienda su placa y use su multímetro en la configuración de amperios de CC para conectar manualmente la almohadilla colectora a tierra. A ver si a. el relé conmuta y abre, y b. cual es la corriente. También verifique los voltajes mientras lo hace.
¿Puede verificar la parte de actualización en cuestión? He anotado todos los voltajes para asegurarse de que si el transistor está enfermo.
@Trevor Lo siento, me quedé dormido. Eran las 4 de la mañana. ¿Puede comprobar ahora la parte update2 en cuestión?
@Trevor, ¿puede verificar también la parte update3 en cuestión?
¿Puedo usar JFET en lugar de MOSFET? Porque tengo un JFET K117. Aquí está la hoja de datos: datasheetspdf.com/PDF/K117/607277/1
@vishal (solo soy un estudiante) ¿qué lenguaje de codificación usaste en tu pregunta? (Parece codificación C, curiosidad por saber su nombre)
@KrishnShweta Es un lenguaje como C, desarrollado por Arduino. Puede obtener más información al respecto aquí: youtube.com/playlist?list=PLA567CE235D39FA84
@Vishal, por cierto, creo que hay un "error" en tu código. El "contador" eventualmente se dará la vuelta cuando ambos interruptores estén altos, lo que hará que pase la primera prueba y que el relé cambie. No estoy seguro de si tenías esa intención o no, pero. Probablemente también debería agregar un else a la primera prueba para actualizar el relé si el contador <> 1. Además, no veo que inicialice nada en el bloque de configuración ... es decir, los relés están apagados. Probablemente se supone que debe inicializarse de esa manera al encender, pero nunca se sabe, especialmente si hay otros modos de reinicio que no borran el conjunto de registros.
Bien, inicializaré los relés para desactivarlos en mi bloque de configuración. También agregaré el bloque else. Ahora, hice el circuito desde cero usando MOSFETS en lugar de BJT. Actualizaré mi pregunta con un nuevo diagrama y problemas.
Eche un vistazo a la parte Update4 en cuestión.
El voltaje de umbral de @vishay Gate es demasiado alto con ese mosfet, necesita uno ~ 2V
@Trevor El voltaje de umbral de puerta mínimo es de 2,0 V, mientras que el voltaje de umbral de puerta máximo es de 4,0 V. Aquí está la hoja de datos: pdf1.alldatasheet.com/datasheet-pdf/view/67488/INTERSIL/… Además, si cree que debería usar otro MOSFET, ¿puede sugerir el nombre del MOSFET que debería usar?
@Trevor, ¿y si elimino las resistencias sobre la puerta?
@Vishal... amigo, no puedo sostener tu mano hasta que esto funcione... La resistencia no ayudará. La corriente de puerta MOSFET es extremadamente baja. Necesitas la pieza correcta. Experimenta un poco.
@Vishal, buena suerte. Confío en que puedas resolverlo. Solo tienes que pensarlo paso a paso :)
Gracias por la ayuda. Lo hice funcionar reemplazando IRF164 con 2N7000

B. Cuando D9 es BAJO:

Emisor - Tierra ------> 0.70V Base - Tierra ---------> 0.65V

ese es su problema: cuando D9 es bajo y el emisor está conectado a tierra, no hay forma de que haya observado un diferencial de voltaje entre el emisor y la tierra, y no hay forma de que la base esté a 0.65v por encima del suelo.

Sospecharía una conexión defectuosa o un transistor defectuoso.

Por cierto, no tiene sentido agregar un diodo al emisor -> no tiene sentido.

He usado Mosfet de canal N en lugar de BJT y ahora funciona bien. Revisé el BJT después de quitarlo. No estaba defectuoso en absoluto. En la respuesta de trevor, me dijo que necesito un diodo debajo de BJT y así lo hice. Creo que entendí mal el concepto que estaba tratando de explicarme. Aunque mi circuito funciona bien ahora, quiero saber el significado de You need a diode under that transistor. ¿Me puedes explicar?