DS18B20: un senzor de temperatură pentru lichide

DS18B20

Sunt disponibili diferiți senzori de umiditate și temperatură, cum ar fi LM35. Unele sunt integrate în module pentru utilizare specifică cu Arduino. Dar, în general, acestea trebuie să măsoare temperatura uscată, adică temperatura aerului. Dar există un model concret pentru care funcționează măsoară temperatura în lichide și se numește DS18B20. O particularitate care poate fi utilă pentru unele dintre proiectele tale DIY mai exotice, unde te joci și cu un tip de lichid pentru care trebuie să cunoști acest parametru.

De fapt, DS18B20 nu măsoară doar temperatura în interiorul lichidelor, dar poate fi foarte utilă pentru măsurarea temperaturii medii umede și, de asemenea, sub ceva lichid. Așadar, îl puteți utiliza și pentru a măsura temperatura aerului dacă mediul este destul de încărcat de umiditate. Și, așa cum am spus, caracteristica de a-l putea scufunda într-un lichid pentru a-i măsura temperatura este una dintre caracteristicile care îl fac incredibil de practic.

Ce este DS18B20?

Ei bine, cred că a devenit deja destul de clar, este un senzor electronic capabil să măsoare temperatura mediilor gazoase sau lichide. În plus, există diferite încapsulare sau ambalaje ale DS18B20, cum ar fi cea de bază pe care o vedeți în imaginea principală, sau poate fi integrată și în unele PCB-uri, sonde submersibile etc. Pentru proiectul dvs. ar trebui să alegeți formatul cel mai potrivit în funcție de ceea ce doriți.

De exemplu, în afară de tipicul TO-92, există și microSOP. Posibil de integrat cu Arduino cel mai potrivit este TO-92, deoarece, cu cei trei pini ai săi, este foarte ușor de inserat în panoul de control pentru conectare.

pinout

Pini Ds18b20

El DS18B20 pinout este ușor de identificat. De exemplu, luând ca referință pachetul Dallas TO-92, care este unul dintre cele mai populare, puteți vedea că are trei pini. Dacă îl puneți din față, adică cu secțiunea rotunjită în spate și uitându-vă la fața plană unde apar inscripțiile, știftul din stânga dvs. este 1 și cel din dreapta dvs. este 3. Prin urmare, 1 ar fi pentru GND sau la masă, 2 este pentru date și 3 pentru tensiunea de alimentare.

Aici trebuie să spunem că, valori pe care ar trebui să le cunoașteți:

  • Pinul 1: trebuie să îl conectați la pinul GND al Arduino, adică la 0v.
  • Pinul 2: acest pin este DQ sau date, cel care va trimite temperaturile măsurate de senzor către Arduino printr-un anumit protocol cunoscut sub numele de 1-Wire și care va avea nevoie de o bibliotecă specială și funcții pentru Arduino IDE. Acest lucru va permite utilizarea unui singur pin Arduino pentru a conecta mai mulți senzori cu acest protocol ...
  • Pinul 3: poate fi alimentat de la 3 la 5,5v, deci îl puteți conecta la ieșirea de 5v a Arduino.

Caracteristici tehnice și fișă tehnică DS18B20

Ca întotdeauna, este interesant de cunoscut caracteristicile tehnice senzorului pentru a ști cum funcționează, pentru a nu-l deteriora și, mai presus de toate, pentru a ști unde sunt limitele sale de măsurare, deoarece valorile pe care dorim să le măsurăm nu sunt între ele, nu ne va ajuta și ar trebui să cauți o altă alternativă.

Pentru a face acest lucru, cel mai bine este să descărcați un fișier fisa tehnica a producatorului, ca cel din Dallas care puteți vedea aici. Acolo veți găsi toate informațiile necesare. Și amintiți-vă că, deși toate DS18B20 pot fi similare, în funcție de producător sau pachet, puteți găsi unele modificări ...

Dar, indiferent de ciudățenii, iată câteva date tehnice de bază:

  • Interval de temperatură: -55 până la 125 ° C, prin urmare, poate măsura în gaz sau lichid la temperaturi foarte scăzute și, de asemenea, ridicate.
  • Greșeli: DS18B20 este sensibil la zgomotul extern sau la perturbări care pot da valori eronate în măsurători. Marja de eroare este plus minus 2 ° C, deși la temperaturi cuprinse între -10 ° C și 85 ° C, adică atunci când nu suntem aproape de limite, ar putea fi doar o jumătate de grad.
  • rezoluție: Puteți lucra cu mai multe rezoluții sau variații minime pe care le puteți detecta cu pinii analogici Arduino. Suportă 9 biți, 10 biți, 11 biți și 12 biți (implicit). Adică, poate măsura de la jumătate la jumătate de grad, de la un sfert la un sfert de grad, de la 0,125 la 0,125ºC, respectiv de la 0,0625ºC. Puteți modifica această programare prin codul de programare.
  • Tensiunea de alimentare: 3 la 5,5v
  • preț: 1 până la 3 €

Integrare cu Arduino

Diagrama conexiunii Arduino - ds18b20

Deși există diferite modalități de conectare, cel mai potrivit este cel pe care îl vedeți în această diagramă. Este destul de simplu, cu pinul GND în conexiunea corespunzătoare a plăcii Arduino, aceeași putere și apoi datele către analogul Arduino pe care le-ați ales în codul de programare din Arduino IDE. Dar este, de asemenea, bine să setați un rezistor de tracțiune de 4,7k (dacă distanța cablului sondei senzorului este mai mare, rezistența ar trebui să fie mai mică, de exemplu, pentru 5m de 3,3k, pentru 10 din 2,2, XNUMXk, ...) pentru pinul de date și, astfel, păstrați-l întotdeauna ridicat.

Pentru programare în Arduino IDE și integrarea sa bună cu DS18B20 și acel protocol foarte particular, se recomandă să descărcați bibliotecile Temperatura Dallas y OneWire din mediu. Și codul de bază, ar putea fi ceva de genul acestui exemplu pe care îl arăt:

#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); 
}

Mai multe informatii - Manual de programare Arduino (PDF gratuit)


Fii primul care comenteaza

Lasă comentariul tău

Adresa ta de email nu va fi publicată. Câmpurile obligatorii sunt marcate cu *

*

*

  1. Responsabil pentru date: Miguel Ángel Gatón
  2. Scopul datelor: Control SPAM, gestionarea comentariilor.
  3. Legitimare: consimțământul dvs.
  4. Comunicarea datelor: datele nu vor fi comunicate terților decât prin obligație legală.
  5. Stocarea datelor: bază de date găzduită de Occentus Networks (UE)
  6. Drepturi: în orice moment vă puteți limita, recupera și șterge informațiile.