Come misurare la temperatura con Arduino ed un sensore DS18B20

Stai pensando a come misurare la temperatura con Arduino ed un sensore DS18B20?

Ok, se la tua risposta è affermativa allora devi leggere questo articolo.

Informazioni sul sensore DS18B20

DS18B20 è un sensore digitale prodotto dalla Maxim IC che usa un bus di comunicazione chiamato 1-Wire. misura la temperatura sulla propria superficie in gradi celsius con una precisione da 9 a 12-bit, da -55 a 125 (+/-0.5) gradi centigradi. Ogni sensore ha un numero seriale identificativo a 64-bit stampato all’interno, consentendo l’utilizzo di un elevato numero di sensori sullo stesso bus.

Può essere alimentato da 3.0V a 5.5V e utilizza solo un pin per la comunicazione dei dati. Può essere collegato ad uncontroller senza alcun altro componente. Ed, infine, vi sono librerie per il supporto con Arduino. Sembra un classico transistor di tipo TO-92.

C’è una versione incapsulata nel metallo che è a prova di immersione e può essere utilizzata per la misura di temperataura nei liquidi o può essere inserito in altri accoppiamenti metallici.

Il colore dei cavi è:

Nero – GND – Massa – pin 1 del DS18B20 originale

Rosso – +VDD – Alimentazione – pin 3 del DS18B20 originale

Giallo – DQ – Pin Dati – pin 2 del DS18B20 originale

Informazioni su Arduino

Arduino è una piattaforma open-source elettronica basata sul hardware e software facile da utilizzare. L’idea, all’inizio, era offrire una piattaforma di sviluppo per chi non ha specifiche esperienze elettronica in hardware e software. Oggi giorno puoi comprare un ampia gamma di modelli Arduino e programmarli tutti con un unico IDE (Ambiente di sviluppo Integrato) in linguaggio C++.

Il sito ufficiale può essere raggiunto qui e contiene tutto quello di cui hai bisogno.

Come misurare la temperatura con Arduino ed un sensore DS18B20

Ora, conosciamo cosa sia Arduino e il sensore DS18B20. Abbiamo bisogno di collegarli e scrivere un pò di software..

Il modo più semplice per collegarli è seguire il seguente schema:

Se prendiamo un Arduino Uno possiamo fornire alimentazione al sensore DS18B20 direttamente dalla scheda ed utilizzare il  PIN 2 di Arduino per connettere la linea dati. Abbiamo bisogno di una resistenza da 4.7kOhm connessa dalla linea dati a +Vdd. La funzione di questa resistenza è detta PULL-UP.

Libreria 1-Wire e libreria DS18B20

Adesso abbiamo bisogno di librerie software per abilitare Arduino a connettersi e gestire i dati del DS18B20.

Scarica la libreria 1-Wire dal seguente link:

e hai bisogno della libreria per il DS18B20. Puoi scaricarla da:

Dopo che hai installato Arduino IDE (l’ultima versione disponibile) e le due librerie, sei pronto per testare la funzione di lettura con Arduino e DS18B20.

Due articoli saranno disponibili su questo sito per scaricare ed installare Arduino IDE e come installare le librerie al di sotto di Arduino IDE.

Il codice

Avvia Arduino IDE.

Dopo di chè, selezione il seguente codice e copialo su Arduino IDE.

/********************************************************************/
// First we include the libraries
#include <OneWire.h> 
#include <DallasTemperature.h>
/********************************************************************/
// Data wire is plugged into pin 2 on the Arduino 
#define ONE_WIRE_BUS 2 
/********************************************************************/
// Setup a oneWire instance to communicate with any OneWire devices  
// (not just Maxim/Dallas temperature ICs) 
OneWire oneWire(ONE_WIRE_BUS); 
/********************************************************************/
// Pass our oneWire reference to Dallas Temperature. 
DallasTemperature sensors(&oneWire);
/********************************************************************/ 
void setup(void) 
{ 
 // start serial port 
 Serial.begin(9600); 
 Serial.println("Dallas Temperature IC Control Library Demo"); 
 // Start up the library 
 sensors.begin(); 
} 
void loop(void) 
{ 
 // call sensors.requestTemperatures() to issue a global temperature 
 // request to all devices on the bus 
/********************************************************************/
 Serial.print(" Requesting temperatures..."); 
 sensors.requestTemperatures(); // Send the command to get temperature readings 
 Serial.println("DONE"); 
/********************************************************************/
 Serial.print("Temperature is: "); 
 Serial.print(sensors.getTempCByIndex(0)); // Why "byIndex"?  
   // You can have more than one DS18B20 on the same bus.  
   // 0 refers to the first IC on the wire 
   delay(1000); 
}

Sei pronto per scaricarlo dentro Arduino Uno.

Connetti Arduino Uno alla porta USB e attendi che Windows lo connetta.

Dal menù di Arduino IDE seleziona TOOLS -> BOARD -> e ARDUINO UNO.

Dal menù di Arduino IDE seleziona TOOLS -> PORT -> e la porta COM apparsa.

Adesso pui eseguire l’UPLOAD dello sketch utilizzando il secondo bottone nella barra principale di Arduino IDE o, in alternativa, puoi selezionare SKETCH -> UPLOAD dal menù o puoi premere la combinazione di tasti “CTRL“+”U

Devi lanciare il Serial Monitor da TOOLS -> Serial Monitor o puoi premere “CTRL“+”SHIFT“+”M” sulla tastiera.

Nel monitor seriale, vedrai le temperature che il sensore DS18B20 stà laggendo.