Arduino Projects: un semplice controllo della temperatura con un buzzer

In un articolo precedente abbiamo presentato il nostro kit (clicca qui per scoprire come ricevere in omaggio il kit e Arduino), in particolare come accendere un LED e come collegare il sensore di temperatura. Ora vedremo in questo articolo come programmare Arduino per leggere il sensore di temperatura attraverso l'ausilio di tre LED per fornire un'indicazione sul range di temperatura. Inoltre, valuteremo come implementare un buzzer, ovvero un dispositivo che emette un segnale sonoro in determinate situazioni. Arduino può gestire anche segnali analogici come la temperatura utilizzando il convertitore ADC integrato nel microcontrollore. I piedini A0-A5 restituiscono valori compresi tra 0 e 1023 per tensioni tra 0 e 5 V. Le implicazioni di questa applicazione sono tante, dalla semplice lettura della temperatura ambientale a quella corporea.

Introduzione

L'ambiente di sviluppo per implementare questo progetto è sempre Arduino IDE (Figura 1), in particolare nel menù è presente un monitor seriale per visualizzare i dati provenienti dal microcontrollore ovvero dalla porta USB riconosciuta come COM. Il circuito è visualizzato in figura 2 dove sono indicate le connessioni dei 3 LED con le resistenze di 1 Kohm per limitare la corrente, comandati dai segnali digitali dei pin 8,9 e 10. Le uscite simulano una tensione di 5 V quando attive e 0 V quando disabilitate. Il sensore di temperatura viene collegato come indicato nel precedente articolo. Arduino dispone inoltre di segnali PWM, ovvero una tecnica di modulazione per ottenere risultati analogici con mezzi digitali. Il controllo digitale viene utilizzato per creare un'onda quadra, un segnale commutato tra on e off. In questo esempio utilizzeremo il segnale digitale (no PWM) in output come segnale ON (HIGH) e Off (LOW).

Figura 1: Arduino IDE. Nel menù strumenti è visualizzato l'opzione Monitor seriale

Figura 1: Arduino IDE. Nel menù strumenti è visualizzato l'opzione Monitor seriale

 

Figura 2: Arduino con il sensore di temperatura e i 3 LED di indicazione

Il codice

Il listato con i commenti è riportato di seguito:

//costante per individuare il pin arduino dove collegare il sensore di temperatura e i LED
const int sensorPin = A0;
const int led1 = 2;
const int led2 = 4;
const int led3 = 7; 
//valore da modificare in base alla temperatura della stanza per esempio;
const float baselineTemp = 19;

 
void setup(){
  //Connessione serial a 9600 bps
  Serial.begin(9600);
  //attiviamo i pin 2,4 e 7 (LED) come uscite e le impostiamo a LOW inizialmente
  pinMode(led1, OUTPUT);
  digitalWrite(led1,LOW);
  pinMode(led2, OUTPUT);
  digitalWrite(led2, LOW);
  pinMode(led3,OUTPUT);
  digitalWrite(led3,LOW);
}
 
void loop(){
  //acquisiamo il valore del sensore sul pin A0
  int sensorVal = analogRead(sensorPin);
 
 //inviamo i dati via seriale in modo che possano essere visualizzati sul monitor seriale
  Serial.print("Sensore: ");
  Serial.print(sensorVal); 
 
  // convertiamo il valore in tensione
  float voltage = (sensorVal/1024.0) * 5.0;
 
  Serial.print(",Volt: ");
  Serial.print(voltage);
 
  
 // calcoliamo il valore della temperatura e la visualizziamo
  Serial.print(",Temperatura: "); 
  
  float temperature = (voltage - 0.5)*100;
 
 
  Serial.println(temperature);
  //il comando Serial.println manda a capo il cursore per aiutare a vedere meglio i dati
 
//se la temperatura è inferiore a quella ambientale nessun LED è acceso
  if(temperature < baselineTemp){ 
    digitalWrite(led1, HIGH);
    digitalWrite(led2, LOW);
    digitalWrite(led3, LOW);
  } 
  delay(1000);
}

La retta di calibrazione del sensore può essere presa dal data sheet e riportata in figura 3.

Figura 2: Retta di calibrazione del sensore di temperatura TMP36

Figura 3: Retta di calibrazione del sensore di temperatura TMP36

A questo punto vi potete divertire modificando a piacimento il codice, immaginando di far accendere uno o due LED a seconda del valore creando così una scala discreta di temperatura. Aiutandovi con una sorgente di calore per far variare la temperatura e un ventilatore per raffreddarla. Per esempio, se la temperatura è uguale a 30 °C vogliamo far accendere i primi due LED:

  if(temperature == 30){
    digitalWrite(led1, HIGH);
    digitalWrite(led2, HIGH);
    digitalWrite(led3, LOW);
  } 

Perchè non inserire un semplice Buzzer per avvisarci del raggiungimento di una temperatura ? In questo caso ci viene in aiuto il Buzzer presente nel kit estremamente semplice da utilizzare. Vi consiglio di dare un'occhiata anche a questo articolo.

Figura 3: Arduino e il Buzzer

Figura 3: Schema di connessione tra Arduino e il Buzzer

 

Figura 4: Il collegamento del Buzzer

Figura 4: Il collegamento del Buzzer

In figura 3 e 4 viene visualizzato il Buzzer collegato ad Arduino attraverso i pin 12 e GND. Per far lavorare il buzzer è necessario implementare il seguente codice:

 int buzzer = 12;     //buzzer connesso al pin 12

void setup()
{
pinMode(buzzer,OUTPUT);
}

void loop()
{
//tone(buzzer,3000,200);     //suona nota sul pin 12 alla frequenza di 3000Hz
delay(2000);                        //aspetta 2 secondi
noTone(buzzer);                //il buzzer non suona
delay(1000);       // aspetta 1 secondo
}

Come esercizio vi consiglio di implementare questo codice nel programma per la lettura del sensore di temperatura, attivando il buzzer quando la temperatura raggiunge un certo livello. Un buzzer non è nient'altro che un dispositivo di segnalazione audio, che può essere meccanico, elettromeccanico o piezoelettrico. Gli usi tipici includono dispositivi di allarme, timer e la conferma di input da parte dell'utente, come un clic del mouse o della tastiera.

Conclusioni e Considerazioni

Partendo da questo progetto è possibile sviluppare molte idee: vedremo in seguito come controllare un motore in funzione della temperatura: un utile progetto alla base dell'accensione della ventola di un PC.  Non sarebbe male implementare un display per visualizzare la temperatura, e nello stesso tempo acquisire i dati seriali per graficarli con una interfaccia grafica open source tipo Gnuplot.

 

 

Iscriviti e ricevi GRATIS
Speciale Pi

Fai subito il DOWNLOAD (valore 15€) GRATIS

Una risposta

  1. Maurizio Di Paolo Emilio Maurizio Di Paolo Emilio 12 dicembre 2016

Scrivi un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *

Iscriviti e ricevi GRATIS
Speciale Pi

Fai subito il DOWNLOAD (valore 15€) GRATIS