mercoledì 22 gennaio 2020

Arduino N° 33 - Pilotaggio di un relay con driver a BJT

Arduino N° 32

 Achille De Santis

Arduino N° 34





Pilotaggio di un relay attraverso uno stadio driver a BJT, in configurazione ad "Emettitore Comune" opportunamente polarizzato.

Un cicalino, escludibile, segnala l'avvenuta attuazione.

Per il dimensionamento dello stadio a transistore BJT, del tipo NPN, vedere la pagina a questo link.

Immettendo i dati indicati in rosso si ottengono i valori dei componenti. Non modificate gli altri campi!

Il transistore NPN può essere un comune BJT per usi generali (BC108, BC109, 2n1711, 2N1613, 2N2222); consigliato il 2N2369 che è ottimo per l'uso in commutazione.

Per carichi notevoli serve un BJT di potenza da utilizzare come stadio finale.

Nota:
Il buzzer NON è un altoparlante ma un cicalino (ronzatore)! L'altoparlante manderebbe in corto-circuito l'alimentazione di Arduino!


/* ------------------------ Inizio Programma -----------------------
 * Pilotaggio intermittente di un Relay con Arduino
 * Segnalazione acustica tramite Buzzer
 * Uso delle routines per le operazioni elementari ripetitive.
 */ ---------------------------------------------------------------------

// --------------- I/O ------------------------------
 #define R 13     // Uscita comando relay
 #define B 12     // Uscita comando buzzer
// --------------------------------------------------

 const int  T1=100,   // ritardo
                 T2=1000,
                 T3=3000;     // ritardo

void setup()
{
  pinMode(R, OUTPUT); // viene settato il pin R come uscita
  pinMode(B, OUTPUT); // viene settato il pin B come uscita
}

void accendi(int r, int b)
{
  digitalWrite(r, HIGH);  // mette R a livello alto facendo andare il BJT in saturazione
  digitalWrite(b, HIGH); // mette B a livello alto facendo suonare il buzzer
  delay(T1);                    // attende T1 millisecondi
}
void spegni(int r, int b)
{
  digitalWrite(r, LOW);  // spegne il bjt, spegne il relè e il buzzer
  digitalWrite(b, LOW);
  delay(T1);                    // ritardo
}
void loop()
{
  accendi(R,B);   delay(100);
  // digitalWrite(B, LOW);    // per segnalazione impulsiva.
  delay(T2);   

  spegni(R,B);    delay(T3);    // ritardo, poi il ciclo si ripete
}

// --------------------- Fine programma -----------------------------



Simulazione: 

Pilotaggio relay con Arduino e driver a BJT;


Argomenti correlati: 

dimensionamento dello stadio a transistore;



> Arduino N° 34


Nessun commento:

Posta un commento