Visualizzazione post con etichetta Buzzer. Mostra tutti i post
Visualizzazione post con etichetta Buzzer. Mostra tutti i post

mercoledì 4 maggio 2022

Arduino N° 108 - Buzzer a frequenza variabile con potenziometro

Arduino N° 107       

 Achille De Santis

Arduino N°  109

 

Ruotando il potenziometro, gradualmente da zero al massimo, si ottiene la generazione di tono audio a  frequenza variabile, da zero a 5000 Hz.

La capacità in serie all'altoparlante è necessaria per separare la componente continua.

 

Fig. 1: generatore di tono a frequenza variabile;

Simulazione Buzzer a frequenza variabile



mercoledì 16 giugno 2021

Arduino N° 99 - Uso del BUZZER attivo e passivo

< Arduino N° 98

 Achille De Santis

Arduino N°  100


Mi sono deciso a scrivere queste note dal momento che su vari gruppi di Internet si leggono cose abbastanza fantasiose ed approssimative, che denotano la scarsa conoscenza degli argomenti dell'Elettronica di base.

Parliamo dei cosiddetti BUZZER cioè dei cicalini o "ronzatori".

Intanto, il termine viene già usato in modo improprio e si confondono i cicalini con gli altoparlanti. 

Dobbiamo infatti distinguere:

  • Buzzer passivi;
  • Buzzer attivi.

Il buzzer passivo non è altro che un piccolo altoparlante:  per generare il tono bisogna fornirglielo! La generazione del tono va fatta a monte. Il segnale immesso nell'altoparlante dovrebbe essere a valore medio nullo (senza la componente continua). Il circuito equivalente si può schematizzare con una induttanza, in serie ad una resistenza di bassissimo valore. La componente a tensione continua verrebbe corto-circuitata dalla bassa reattanza induttiva. Per l'accoppiamento interstadio è necessario utilizzare una "capacità di accoppiamento", per separare la componente continua che altrimenti andrebbe a scorrere nella bobina dell'altoparlante. Possiamo cambiare la frequenza del tono con ampio margine, agendo, a monte, sul generatore di tono.
Con Arduino si utilizzano le funzioni predefinite tone() e noTone, rispettivamente, per attivare e disattivare il tono. 


Fig. 1: inserimento della capacità di accoppiamento su buzzer passivo;


Fig 2: buzzer passivo, completo di circuito di pilotaggio a transistore; notate che è necessario pilotarlo con un segnale esterno ad onda quadra;


Il buzzer attivo, invece, è il vero "ronzatore"; basta alimentarlo con la giusta tensione ed il circuito interno genererà il tono. Non è possibile cambiare la frequenza del tono dall'esterno, poiché ne è prevista soltanto l'alimentazione; piccole variazioni si potrebbero ottenere soltanto cambiando la tensione di alimentazione, che ne renderebbe instabile il funzionamento. Il buzzer attivo NON ha bisogno del condensatore di accoppiamento, anzi, non va inserito altrimenti il circuito non può essere alimentato dalla necessaria tensione continua.

Con Arduino si utilizza l'istruzione digitalWrite() con argomento HIGH o LOW, per attivare l'alimentazione del buzzer. 

In entrambi i casi è opportuno l'uso di uno stadio separatore a transistore (BJT o MOSFET che sia). 

A questo punto qualcuno dirà, come è già capitato: "Se non inserisco il condensatore sull'altoparlante  (passivo) funziona ugualmente!". 

La risposta per il meccanico è: 
"Stai procedendo con una vettura senza olio: prima o poi il motore fonderà!".

La risposta per l'elettronico (o apprendista tale!) è: 
"Stai usando un diodo LED senza la resistenza di polarizzazione: prima o poi il led brucerà!"

Intelligenti pauca!
Fig. 3: cicalino piezoelettrico (piezo);

In ultimo, ci sono anche i cicalini "piezoelettrici", assimilabili ad un buzzer passivo. Invito il lettore a documentarsi in merito. Il cicalino piezo è un dispositivo passivo che sfrutta l'effetto piezoelettrico. Anche qui è necessario fornire il segnale di comando sotto forma di oscillazione alla frequenza audio voluta.
Il cicalino piezo lavora ad alta impedenza.

A questo punto, spero di aver chiarito qualcosa su questo argomento. 
Provate ed usate quello che vi fa più comodo!

Le applicazioni sono tante: monitor acustico per comandi ed attuazioni, segnalazione di eventi, segnalazione di allarmi, intermittenze, modulazione della nota di avviso per segnalare eventi diversi, sirene varie, note musicali ecc...

Nota: non pretendiate potenze assurde! Per ottenere potenze maggiori in uscita è obbligatorio l'uso di uno stadio amplificatore in bassa frequenza!


Simulazione:  AllarmeSirena italiana

Argomenti correlati:  sirena alla francese

mercoledì 15 luglio 2020

Arduino N° 58 - Pilotaggio intermittente di una uscita digitale

      
Arduino N°  57

 Achille De Santis

 Arduino N°  59 




Fig. 1: Modulo di prova;


Pilotaggio intermittente di una uscita digitale, con segnalazione della commutazione attraverso un breve impulso che pilota un cicalino (buzzer).
Il ciclo di commutazione viene abilitato portando a massa il piedino S (switch).
Non occorre resistenza di pull-up, già prevista internamente. 

Il dispositivo non rappresenta nulla di nuovo ma è un esempio di come si possano elaborare nuove applicazioni da cose già note: l'intermittente (o lampeggiatore) , il "buzzer" attivo (o "cicalino"), il circuito universale di prova, il relay.






/* ----------------- Inizio Programma -------------------------------------------
 * Pilotaggio intermittente di un Relay con Arduino
 * Segnalazione tramite Buzzer
 * Uso delle routines per le operazioni elementari ripetitive.
 * Aggiungere il piedino di attivazione del comando!!!!!!!!
 * Se non è necessario il relay, come separatore galvanico, 
 * si può sostituire con un transistore di adeguata potenza.  
 * Achille De Santis - V5.0 del 09-06-2020
 * 
 */
// --------------- I/O -------------------------------
 #define S    6      // ingresso switch
 #define R    13     // Uscita comando relay
 #define B    12     // Uscita comando buzzer
// ---------------------------------------------------

 const int  T1=200, T2=1000;

void intestazione()
{ Serial.println("\n ------------------------------------------------- ");
  Serial.println(" - Tecnatron - ing. Achille De Santis        - ");
  Serial.println(" - Comando uscita intermittente     V. 1.0 - "); 
  Serial.println(" - Segnalazione con buzzer                       -"); 
  Serial.println(" --------------------------------------------------\n");
}

void buzz()
{
  digitalWrite(B,HIGH);     // comanda B alto 
  delay(T1);                // attende T1 millisecondi
  digitalWrite(B, LOW);     // comanda B basso 
}

void setup()
{
  pinMode (R,OUTPUT);          // Relay: viene settato il pin R come uscita
  pinMode (B,OUTPUT);          // Buzzer: viene settato il pin B come uscita
  pinMode (S,INPUT_PULLUP);    // Switch: ingresso
  Serial.begin(9600);         // predispongo la velocità di comunicazione
  intestazione();             // intestazione, inviata alla seriale
}

void loop()

  while (digitalRead(S)==0)
  { 
    digitalWrite(R,1);  buzz(); 
    delay(T2);
    digitalWrite(R,0);
    delay(T2);                  // ritardo, poi il ciclo si ripete
  }
}
// ---------------------- Fine Programma ----------------------------------------




mercoledì 1 luglio 2020

Arduino N° 56 - Comando relay con buzzer avvisatore

Arduino N°  55 

 Achille De Santis

 Arduino N°  57





Questo semplice programma è utile ai neofiti per familiarizzarsi con l'uso dei comandi digitali e con le temporizzazioni.


Il riscontro visivo è di immediata comprensione per chi comincia a destreggiarsi con Arduino o con i controllori programmabili, in generale.

Il relay viene comandato in modalità "monostabile", con la temporizzazione impostata nel FW. In pratica, il comando impulsivo sul pulsante determina l'eccitazione del relay per il tempo impostato, indipendente dal comando.
Il buzzer avverte acusticamente che il comando è stato eseguito.
   

Sul piedino D12 di uscita va collegato un "buzzer" cioè un "ronzatore" attivo, NON un altoparlante che manderebbe in corto l'uscita stessa, con conseguenze dannose sia per l'uscita che per l'altoparlante.

Volendo, invece, collegare un altoparlante dovrete operare alcune modifiche, HW e SW:


  1. modificare il SW ed inserire un generatore di tono di B.F;
  2. modificare l'HW inserendo una capacità di accoppiamento sull'uscita D12, in serie ad opportuna resistenza. 



/* ------------------------ Inizio programma ---------------------------
 * Pilotaggio intermittente di un Relay con Arduino
 * Segnalazione tramite Buzzer
 * Uso delle routines per le operazioni elementari ripetitive.
 * Aggiungere il piedino di attivazione del comando!!!!!!!!
 * Se non è necessario il relay, come separatore galvanico, 
 * si può sostituire con un transistore di adeguata potenza.  
 * Achille De Santis - V5.0 del 09-06-2020
 * 
 */

// --------------- I/O ------------------------------
 #define R    13     // Uscita comando relay
 #define B    12     // Uscita comando buzzer
 #define S    6      // ingresso switch
// --------------------------------------------------

 const int  T1=200, T2=1000;

void buzz()
{
  digitalWrite(B,HIGH);     // comanda B alto 
  delay(T1);                // attende T1 millisecondi
  digitalWrite(B, LOW);     // comanda B basso 
}

void setup()
{
  pinMode (R,OUTPUT);          // Relay: viene settato il pin R come uscita
  pinMode (B,OUTPUT);          // Buzzer: viene settato il pin B come uscita
  pinMode (S,INPUT_PULLUP);    // Switch: ingresso
}

void loop()

  while (digitalRead(S)==0)
  { 
    digitalWrite(R, 1); buzz();
    delay(T2);
    digitalWrite(R,0);
    delay(T2);                  // ritardo, poi il ciclo si ripete
  }
}
// ---------------------------- Fine programma -------------------------------------


Simulazione: 


Argomenti correlati:

> Arduino N°  57