Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
Cognome: Morzenti
Nome: Nicola
Classe: 4D
TITOLO
Lettura della temperatura tramite sensore LM35 e microcontrollore Arduino.
La temperatura è una delle grandezze più rilevanti non solo nel campo dell’automazione e dell’elettronica,
ma anche in molti altri campi, come meccanica e informatica, influenzando direttamente l'efficienza
energetica negli ambienti domestici e industriali. In questo contesto, il nostro progetto farà uso del
microcontrollore Arduino e del sensore di temperatura LM35 per realizzare un sistema di rilevamento
termico rudimentale. Questo progetto offre l'opportunità di acquisire competenze fondamentali
nell'elettronica e nell'automazione e di comprendere il funzionamento di un dispositivo che può avere
applicazioni reali significative.
Analizzeremo non solo il lato teorico e pratico, ma anche la sua rilevanza nel contesto attuale, dove il
monitoraggio ambientale e il controllo sono diventati parte integrante della vita quotidiana e delle
applicazioni industriali.
DESCRIZIONE TEORICA
Come prima cosa, ecco presentati in breve la scheda a microprocessore Arduino e il sensore di temperatura.
2 3
1 4
Scheda
Arduino 1
Uno 0
9
5
7 6
L’immagine precedente è la rappresentazione della scheda hardware Arduino UNO. Andremo ora, in modo
sommario e generale, a descrivere le componentistiche hardware della scheda.
1 Power USB
Tramite questa porta, è possibile collegare la scheda ad un computer dotato di porta USB, per alimentare la
scheda e per fornirle informazioni di programmazione.
2 Reset Arduino
3 1/0 digitale
Questi pin possono essere configurati per funzionare come pin digitali di ingresso (1 o 0) o come pin digitali
di uscita.
4 Led di alimentazione
Questo led segnala una avvenuta alimentazione della scheda. Nel caso di mancata accensione, ciò starebbe
a significare un guasto o un’erronea connessione.
5 Microcontrollore principale
6 Pin analogici
La scheda Arduino possiede anche dei pin di ingresso analogici. Possono infatti leggere il valore di un’umidità
per poi convertirla in segnale digitale.
7 Pin
Tra questa serie di pin sono presenti quello corrispondente a 3,3V, 5V e la GND.
8 Alimentatore da Jack
La scheda Arduino possiede anche un ingresso apposito per i Jack, con dispositivi di alimentazione DC.
9 Regolatore di tensione
La funzione del regolatore di tensione consiste nel controllare la tensione fornita alla scheda e stabilizzare le
tensioni utilizzate dal processore e da altri elementi.
10 Oscillatore di cristallo
Questo tipo di componente, di solito al quarzo, aiuta Arduino a gestire i problemi legati al tempo e alla
frequenza. La scheda lavora a 16 MHz.
Il piano software della scheda è essenziale per l'istruzione e il funzionamento della scheda. Inizieremo con
un abbozzo generale, uno scheletro di programma, per poi esaminare in dettaglio le funzioni utilizzate nel
nostro codice.
Un programma wiring, basato su C e C++, è diviso in tre parti fondamentali, separato da due dichiarazioni:
void setup() e void loop(). La struttura standard di un programma comprende:
1. Dichiarazioni Preliminari: Questa sezione è dedicata alle librerie, alle variabili e alle costanti
necessarie per il programma.
2. Setup: La seconda parte, setup(), viene eseguita solo all'avvio del programma. Qui vengono
dichiarate le porte di input/output e possono essere incluse istruzioni iniziali aggiuntive.
3. Loop: La terza parte, loop(), è il cuore del programma. Questa sezione viene eseguita in modo ciclico
fino a quando l'alimentazione viene interrotta o il pulsante di reset viene premuto.
Sono di seguito descritti i comandi alla programmazione di Arduino da noi utilizzati in questa esperienza.
Sintassi ed ortografia:
() [] {} le parentesi tonde e quadre delimitano gli operatori di un’istruzione, mentre le parentesi graffe
delimitano una serie di istruzioni riconducibili ad una condizione
Le variabili
Tramite queste Arduino memorizza i dati necessari al funzionamento del programma. Esistono diverse
tipologie di variabili, ma le più comuni sono:
int usa 2 byte di memoria e può contenere un numero compreso tra -32768 e 32767
Le istruzioni di controllo
If… else… permette di prendere delle decisioni. L’istruzione if deve essere seguita da una condizione
racchiusa parentesi e da una o più istruzioni racchiuse tra parentesi graffe. Se la condizione è vera verranno
eseguite le istruzioni contenute tra parentesi graffe mentre se la condizione è falsa verranno eseguite le
istruzioni (sempre tra parentesi graffe) contenute immediatamente dopo la parola chiave else. In entrambi i
casi verranno poi eseguite le istruzioni successive alla fine delle istruzioni dipendenti dalla else. È possibile
usare l’istruzione if anche senza la parola chiave else. In quest’ultimo caso se la condizione è vera verranno
eseguite le istruzioni racchiuse tra le parentesi graffe che seguono la if, se invece è falsa e si passerà
direttamente alle istruzioni successive alla parentesi graffa di chiusura
pinMode(porta, utilizzo); questa istruzione è utilizzata per configurare una delle porte digitali; nella
variabile porta deve essere inserito il numero della porta digitale (da 0 a 13) che si intende definire mentre
in utilizzo deve essere indicato il tipo di utilizzo (INPUT oppure OUTPUT). Ad esempio:
pinMode (13, INPUT); configura la porta digitale 13 come una porta di INPUT
digitalWrite(porta, valore); attiva (HIGH) o disattiva (LOW) una porta digitale di OUTPUT. L’attivazione
implica che la porta in oggetto venga alimentata con una tensione di 5 volt mentre la disattivazione implica
che attraverso la porta non circoli alcuna tensione. Ad esempio:
variabile = digitalRead(numero della porta); rileva lo stato di una porta digitale di INPUT. Inserisce il valore
1 (HIGH) in variabile se sulla porta rileva una tensione superiore a 3 volt, inserisce 0 (LOW) se rileva una
tensione inferiore a 1,5 volt e lascia inalterato il valore di variabile se rileva una tensione compresa tra 1,5 e
3 volt. Ad esempio:
val=digitalRead (7); rileva la tensione fornita dal sensore collegato alla porta 7
delay (1000); interrompe per un secondo (1000 millisecondi) l’esecuzione del programma.
Si utilizza #define per creare una sorta di sostituzione di testo. Ad esempio, assegnando A0 alla parola
SENSORE_PIN nel nostro codice, ogni volta che Arduino incontrerà questa parola capirà che equivarrà ad A0.
Tensione di Uscita: La tensione di uscita del sensore può essere letta da un microcontrollore o da altri circuiti
elettronici per determinare la temperatura corrente.
Termostati: Il sensore LM35 può essere utilizzato nei termostati per il controllo della temperatura in sistemi
di riscaldamento, condizionamento dell'aria e dispositivi di controllo climatico.
Monitoraggio Ambientale: Può essere impiegato in applicazioni di monitoraggio ambientale per misurare la
temperatura in laboratori, magazzini, camere frigorifere.
Elettronica di Consumo: Il sensore può essere incorporato in elettronica di consumo come termostati digitali,
termometri digitali e regolatori di temperatura.
CODICE
Viene di seguito presentato e spiegato il codice utilizzato nel progetto.
Vengono dichiarate
quattro variabili per
memorizzare la lettura
del sensore, per
memorizzare il valore
della temperatura, per
tenere traccia dello
stato della “caldaia” e
del “condizionatore”.
Il sensore di temperatura
viene letto e viene
convertito in temperatura
in gradi Celsius. In base
alla temperatura letta, il
codice decide se
accendere il
“condizionatore” o la
“caldaia”. Viene stampata
la temperatura sul
monitor seriale. Il
programma attende per
500 millisecondi prima di
ripetere la lettura.
“Caldaia” e “condizionatore” rappresentano rispettivamente il LED giallo ed il LED verde.
La riga di codice temperatura = (valoreSensore * 500.0) / 1023.0; converte la lettura del sensore (in scala da
0 a 1023) in una temperatura in gradi Celsius. La costante 500.0 rappresenta la scala di temperatura (10 mV
per grado Celsius) e 1023.0 è il massimo valore di lettura del sensore. Il risultato è la temperatura in gradi
Celsius
ELENCO COMPONENTI e STRUMENTI
nome quantità
Scheda Arduino UNO 1
Resistenza 2, 330 ohm / 1, 1 kohm
LED giallo 1, tensione nominale massima 1,9V
Breadboard 1
Simulazione su tinkerCad
Stato: spento
Simulazione su tinkerCad
Stato: temperatura < 24.9° C
Simulazione su tinkerCad
Stato: temperatura > 24.9° C
Progetto
Stato: spento
Progetto
Stato: temperatura < 24.9° C
Progetto
Stato: temperatura > 24.9° C
Sia nella simulazione su tinkerCad che nella vita reale, il LED verde si accende con una temperatura inferiore
a 24,9 gradi Celsius; viceversa, il LED giallo con una temperatura superiore a 24.9 gradi Celsius.
schema funzionale
SCHEMI
Nel programma gratuito rilasciato da Arduino, tramite il quale è possibile far comunicare la scheda UNO con
l’esterno, è presente una funzione che rappresenta sotto forma di grafico l’output prestabilito. Di seguito
sono presentate la temperatura in aumento e in discesa rilevate dal sensore LM35.
temperatura in salita
temperatura in discesa
In conclusione, il progetto descritto offre un esempio concreto di come utilizzare Arduino e il sensore di
temperatura LM35 per creare un sistema di controllo termico. Attraverso il codice fornito, il
microcontrollore è in grado di rilevare la temperatura ambientale e prendere decisioni di controllo.
La versatilità di questo progetto consente di adattarlo a diverse esigenze, come il controllo automatico del
clima in un'abitazione o il monitoraggio delle condizioni ambientali.
Inoltre, questo progetto può servire come punto di partenza per ulteriori sviluppi e miglioramenti, come
l'implementazione di funzionalità aggiuntive o l'uso di algoritmi più complessi per il controllo termico.
L’LM35 è un sensore di piccole dimensioni: in nessun caso, sia per la sua non assoluta precisione, sia per la
sua scarsa resistenza, potrebbe essere usato nel campo dell’automazione a livello industriale. Nonostante
questo, proprio per le sue piccole dimensioni può essere facilmente introdotto in piccoli misuratori di
temperatura, ed essere utilizzato con molta semplicità ed efficienza.