DS18B20: një sensor i temperaturës për lëngjet

GJ18B20

Ka sensorë të ndryshëm të lagështisë dhe temperaturës, të tilla si LM35. Disa të integruara në module për përdorim specifik me Arduino. Por përgjithësisht, ato duhet të matin temperaturën e thatë, domethënë temperaturën e ajrit. Por ekziston një model konkret për të cilin funksionon mat temperaturën në lëngje dhe quhet DS18B20. Një veçanti që mund t'ju vijë në ndihmë për disa nga projektet tuaja më ekzotike të DIY, ku gjithashtu luani me një lloj lëngu për të cilin duhet të dini këtë parametër.

Në të vërtetë DS18B20 nuk mat vetëm temperaturën brenda lëngjeve, por mund të jetë shumë e dobishme për të matur temperaturën në mjedise të lagështa dhe gjithashtu nën disa lëngje. Kështu që mund ta përdorni për të matur temperaturën e ajrit nëse ambienti është mjaft i ngarkuar me lagështirë. Dhe siç thashë, tipari i të qenit në gjendje ta zhytësh atë në një lëng për të matur temperaturën e tij është një nga tiparet që e bëjnë atë tepër praktik.

Çfarë është DS18B20?

Epo, mendoj se tashmë është bërë mjaft e qartë, është një sensor elektronik i aftë për të matur temperaturën e mediave të gazta ose të lëngshme. Përveç kësaj, nuk janë kapsulim ose paketim i ndryshëm i DS18B20, siç është ai bazë që shihni në imazhin kryesor, ose mund të integrohet gjithashtu në disa PCB, sonda zhytëse, etj. Për projektin tuaj duhet të zgjidhni formatin më të përshtatshëm sipas asaj që dëshironi.

Për shembull, përveç TO-92 tipik, ekziston edhe mikroSOP. Ndoshta për tu integruar me Arduino më i përshtatshmi është TO-92, pasi që me tre kunjat e saj është shumë e lehtë të futet në pllakë për lidhje.

pinout

Ds18b20 kunjat

El DS18B20 pinout është e lehtë të identifikohet. Për shembull, duke marrë si referencë paketën Dallas TO-92, e cila është një nga më të njohurat, mund të shihni se ka tre kunja. Nëse e vendosni nga përpara, domethënë, me pjesën e rrumbullakosur mbrapa dhe duke parë fytyrën e sheshtë ku shfaqen mbishkrimet, kunja në të majtën tuaj është 1 dhe ajo në të djathtën tuaj është 3. Prandaj, 1 do të ishte për GND ose terren, 2 është për të dhëna dhe 3 për tension të furnizimit.

Këtu duhet të themi se, vlerat që duhet të dini:

  • Pin 1: duhet ta lidhni atë me pinin GND të Arduino, domethënë me 0v.
  • Pin 2: ky pin është DQ ose të dhëna, ajo që do të dërgojë temperaturat e matura nga sensori te Arduino përmes një protokolli të veçantë të njohur si 1-Wire dhe që do të ketë nevojë për një bibliotekë të veçantë dhe funksione për Arduino IDE. Kjo do të lejojë përdorimin e vetëm një kunji Arduino për të lidhur sensorë të shumtë me këtë protokoll ...
  • Pin 3: Mund të mundësohet nga 3 në 5,5v, kështu që mund ta lidhni me daljen 5v të Arduino.

Karakteristikat teknike dhe fleta e të dhënave DS18B20

Si gjithmonë, është interesante për të njohur karakteristikat teknike të sensorit për të ditur se si funksionon, në mënyrë që të mos e dëmtojë atë, dhe mbi të gjitha në mënyrë që të dimë se ku janë kufijtë e tij të matjes, pasi që nëse vlerat që duam të matim nuk janë midis tyre, nuk do të na ndihmojë dhe duhet të kërkoni një alternativë tjetër.

Për ta bërë këtë, është më mirë të shkarkoni një fleta e të dhënave të prodhuesit, si ai në Dallas që ju mund të shihni këtu Aty do të gjeni të gjithë informacionin e nevojshëm. Dhe mos harroni se megjithëse i gjithë DS18B20 mund të jetë i ngjashëm, në varësi të prodhuesit ose paketës mund të gjeni disa ndryshime ...

Por, pavarësisht nga çuditë, këtu janë disa të dhënat themelore teknike:

  • Shkallë temperature: -55 deri 125ºC, prandaj mund të matet në gaz ose lëng në temperatura shumë të ulëta dhe gjithashtu të larta.
  • gabime: DS18B20 është i ndjeshëm ndaj zhurmës së jashtme ose shqetësimeve që mund të japin vlera të gabuara në matje. Marzhi i gabimit është plus minus 2ºC, megjithëse në temperatura midis -10ºC dhe 85ºC, domethënë, kur nuk jemi afër kufijve, mund të jetë vetëm gjysmë shkalle.
  • Zgjidhje: Mund të punoni me disa rezolucione ose variacione minimale që mund t'i zbuloni me kunjat analoge Arduino. Mbështet 9-bit, 10-bit, 11-bit dhe 12-bit (parazgjedhur). Kjo do të thotë, ajo mund të matet nga një gjysmë në një gjysmë shkalle, nga një çerek në një çerek shkallë, nga 0,125 në 0,125ºC, ose nga 0,0625ºC përkatësisht. Ju mund ta ndryshoni këtë programim përmes kodit të programimit.
  • Tensioni i furnizimit: 3 deri në 5,5v
  • çmim: 1 deri në 3 €

Integrimi me Arduino

Diagrami i lidhjes Arduino - ds18b20

Edhe pse ka mënyra të ndryshme për ta lidhur atë, më i përshtatshmi është ai që shihni në këtë diagram. Quiteshtë mjaft e thjeshtë, me kunjin GND në lidhjen përkatëse të bordit Arduino, furnizimi me energji i njëjtë dhe më pas të dhënat në analogun Arduino që keni zgjedhur në kodin tuaj të programimit në Arduino IDE. Por është gjithashtu mirë të vendosni një rezistencë tërheqëse 4,7k (nëse distanca e kabllit të sondës së sensorit është më e madhe, rezistenca duhet të jetë më e ulët, për shembull, për 5m prej 3,3k, për 10 nga 2,2, XNUMXk,…) për pinin e të dhënave dhe kështu mbajeni gjithmonë të lartë.

Për programimi në Arduino IDE dhe integrimi i tij i mirë me DS18B20 dhe atë protokoll shumë të veçantë, rekomandohet që të shkarkoni bibliotekat Temperatura e Dallasit y OneWire nga mjedisi. Dhe kodi bazë, mund të jetë diçka si ky shembull që unë tregoj:

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

Me shume informacion - Manuali i Programimit Arduino (PDF falas)


Bëhu i pari që komenton

Lini komentin tuaj

Adresa juaj e emailit nuk do të publikohet. Fusha e kërkuar janë shënuar me *

*

*

  1. Përgjegjës për të dhënat: Miguel Ángel Gatón
  2. Qëllimi i të dhënave: Kontrolloni SPAM, menaxhimin e komenteve.
  3. Legjitimimi: Pëlqimi juaj
  4. Komunikimi i të dhënave: Të dhënat nuk do t'u komunikohen palëve të treta përveç me detyrim ligjor.
  5. Ruajtja e të dhënave: Baza e të dhënave e organizuar nga Occentus Networks (BE)
  6. Të drejtat: Në çdo kohë mund të kufizoni, rikuperoni dhe fshini informacionin tuaj.