DS18B20: un sensore di temperatura per liquidi

DS18B20

Sono disponibili vari sensori di umidità e temperatura, come l'LM35. Alcuni integrati nei moduli per un utilizzo specifico con Arduino. Ma generalmente devono misurare la temperatura secca, cioè la temperatura dell'aria. Ma c'è un modello concreto per cui funziona misura la temperatura nei liquidi e si chiama DS18B20. Una particolarità che può tornare utile per alcuni dei tuoi progetti fai da te più esotici dove giochi anche con qualche tipo di liquido per il quale devi conoscere questo parametro.

In realtà il DS18B20 non misura solo la temperatura all'interno dei liquidi, ma può essere molto utile misurare la temperatura in ambienti umidi e anche sotto un po 'di liquido. Quindi puoi anche usarlo per misurare la temperatura dell'aria se l'ambiente è abbastanza carico di umidità. E come dicevo, la caratteristica di poterlo immergere in un liquido per misurarne la temperatura è una delle caratteristiche che lo rendono incredibilmente pratico.

Cos'è il DS18B20?

Bene, penso che sia già diventato abbastanza chiaro, si tratta di un sensore elettronico in grado di misurare la temperatura di mezzi gassosi o liquidi. Inoltre, ci sono diverso incapsulamento o confezionamento del DS18B20, come quello di base che vedete nell'immagine principale, oppure può essere integrato anche in alcuni PCB, sonde sommerse, ecc. Per il tuo progetto dovresti scegliere il formato più adatto in base a ciò che desideri.

Ad esempio, oltre al tipico TO-92, c'è anche il microSOP. Possibilmente da integrare con Arduino il più appropriato è il TO-92, poiché con i suoi tre pin è molto facile da inserire nella breadboard per il collegamento.

Pinout

Perni ds18b20

El Pinout DS18B20 è facile da identificare. Ad esempio, prendendo come riferimento il pacchetto Dallas TO-92, che è uno dei più popolari, si può vedere che ha tre pin. Se lo metti di fronte, cioè con la sezione arrotondata dietro e guardando la faccia piatta dove appaiono le iscrizioni, il perno alla tua sinistra è 1 e quello alla tua destra è 3. Pertanto, 1 sarebbe per GND o terra, 2 è per i dati e 3 per la tensione di alimentazione.

Qui dobbiamo dire che, valori che dovresti conoscere:

  • Pin 1: devi collegarlo al pin GND di Arduino, cioè a 0v.
  • Pin 2: questo pin è DQ o data, quello che invierà le temperature misurate dal sensore ad Arduino attraverso un particolare protocollo noto come 1-Wire e che avrà bisogno di una libreria e di funzioni speciali per l'IDE di Arduino. Ciò consentirà di utilizzare un solo pin Arduino per collegare più sensori con questo protocollo ...
  • Pin 3: può essere alimentato da 3 a 5,5v, quindi puoi collegarlo all'uscita 5v di Arduino.

Caratteristiche tecniche e datasheet DS18B20

Come sempre lo è interessante conoscere le caratteristiche tecniche del sensore per sapere come funziona, per non danneggiarlo, e soprattutto per sapere dove sono i suoi limiti di misura, poiché se i valori che vogliamo misurare non sono tra loro non aiuterà noi e te dovrebbe cercare un'altra alternativa.

Per fare ciò, è meglio scaricare un file scheda tecnica del produttore, come quello di Dallas quello puoi vedere qui. Lì troverai tutte le informazioni necessarie. E ricorda che sebbene tutti i DS18B20 possano essere simili, a seconda del produttore o del pacchetto potresti trovare alcune modifiche ...

Ma a prescindere dalle stranezze, eccone alcune dati tecnici di base:

  • Intervallo di temperatura: Da -55 a 125ºC, quindi, può misurare in gas o liquidi a temperature molto basse e anche alte.
  • errori: il DS18B20 è sensibile a rumori esterni o disturbi che possono dare valori errati nelle misure. Il margine di errore è più meno 2ºC, anche se a temperature comprese tra -10ºC e 85ºC, cioè quando non siamo vicini ai limiti, potrebbe essere solo di mezzo grado.
  • Risoluzione: Puoi lavorare con diverse risoluzioni o variazioni minime che puoi rilevare con i pin analogici di Arduino. Supporta 9 bit, 10 bit, 11 bit e 12 bit (impostazione predefinita). Cioè, può misurare da mezzo a mezzo grado, da un quarto a un quarto di grado, da 0,125 a 0,125 ° C o da 0,0625 ° C rispettivamente. È possibile modificare questa programmazione tramite il codice di programmazione.
  • Tensione di alimentazione: Da 3 a 5,5 v
  • Prezzo: Da 1 a 3 €

Integrazione con Arduino

Schema di collegamento Arduino - ds18b20

Sebbene ci siano vari modi per collegarlo, il più adatto è quello che vedi in questo diagramma. È abbastanza semplice, con il pin GND nella connessione corrispondente della scheda Arduino, l'alimentazione lo stesso e quindi i dati all'analogo Arduino che hai scelto nel codice di programmazione in Arduino IDE. Ma è anche bene impostare una resistenza pull-up da 4,7k (se la distanza del cavo della sonda del sensore è maggiore, la resistenza dovrebbe essere inferiore, ad esempio, per 5m di 3,3k, per 10 di 2,2, XNUMXk, ...) per il pin dati e quindi mantenerlo sempre alto.

Per programmazione in Arduino IDE e la sua buona integrazione con il DS18B20 e quel particolarissimo protocollo, si consiglia di scaricare le librerie Dallas Temperatura y OneWire dall'ambiente. E il codice di base, potrebbe essere qualcosa di simile a questo esempio che mostro:

#include <OneWire.h>
#include <DallasTemperature.h>

// Pin donde se conecta el bus 1-Wire (DQ)
const int pinDatosDQ = 9;

// Instancia a las clases OneWire y DallasTemperature
OneWire oneWireObjeto(pinDatosDQ);
DallasTemperature sensorDS18B20(&oneWireObjeto);
 
void setup() {
    // Iniciamos la comunicación serie a 9600 baudios
    Serial.begin(9600);
    // Iniciamos el bus 1-Wire del sensor
    sensorDS18B20.begin(); 
}
 
void loop() {
    // Indicamos que tome la temperatura
    Serial.println("Midiendo temperatura");
    sensorDS18B20.requestTemperatures();
 
    // Lee y muestra la temperatura (recuerda que puedes conectar más de uno con 1-wire)
    Serial.print("La temperatura del sensor 0 es de: ");
    Serial.print(sensorDS18B20.getTempCByIndex(0));
    Serial.println(" C");
    Serial.print("La temperatura del sensor x es de: ");
    Serial.print(sensorDS18B20.getTempCByIndex(1));
    Serial.println(" ºC");
    
    delay(1000); 
}

Ulteriori informazioni - Manuale di programmazione Arduino (PDF gratuito)


Puoi essere il primo a lasciare un commento

Lascia un tuo commento

L'indirizzo email non verrà pubblicato. I campi obbligatori sono contrassegnati con *

*

*

  1. Responsabile dei dati: Miguel Ángel Gatón
  2. Scopo dei dati: controllo SPAM, gestione commenti.
  3. Legittimazione: il tuo consenso
  4. Comunicazione dei dati: I dati non saranno oggetto di comunicazione a terzi se non per obbligo di legge.
  5. Archiviazione dati: database ospitato da Occentus Networks (UE)
  6. Diritti: in qualsiasi momento puoi limitare, recuperare ed eliminare le tue informazioni.