El DS18B20 sensors ir ieguvusi popularitāti, pateicoties tā uzticamībai un daudzpusībai temperatūras mērīšanai. To plaši izmanto elektronikas projektos ar tādiem mikrokontrolleriem kā Arduino, PIC vai ESP8266, pateicoties tā lietošanas vienkāršībai un iespējai savienot vairākus sensorus vienā kopnē, kas padara to par ideālu iespēju gan amatieriem, gan profesionāļiem.
Viena no šī sensora galvenajām atrakcijām ir tā, ka tas izmanto tikai vienu kabeli datu pārraidei, izmantojot protokolu 1 vadu, kas atvieglo tā integrāciju visdažādākajos projektos. Turklāt DS18B20 var darboties līdz pat diviem dažādiem jaudas režīmiem, padarot to vēl elastīgāku. Šajā rakstā mēs padziļināti paskaidrosim, kā tas darbojas, kā var savienot vairākus sensorus un kā optimizēt temperatūras mērījumus.
DS18B20 funkcijas
DS18B20 ražojis Maxim Integrated, cita starpā, un tiek prezentēts dažādās iekapsulās, formātam ir LĪDZ 92 XNUMX (līdzīgi kā daudziem tranzistoriem) viens no visizplatītākajiem. Turklāt to var atrast arī noslēgtās un ūdensnecaurlaidīgās versijās, padarot to ideāli piemērotu temperatūras mērīšanai skarbā vai mitrā vidē.
Starp DS18B20 ievērojamākajām funkcijām ir:
- Temperatūras diapazons, no kura tas var izmērīt, aptver -55°C līdz 125°C, padarot to piemērotu rūpnieciskiem un sadzīves lietojumiem.
- Su programmējama izšķirtspēja var atšķirties starp 9 un 12 biti, kas ļauj precīzi pielāgot katra projekta vajadzībām.
- Katram sensoram ir unikāla adrese 64 biti, atvieglojot vairāku sensoru identificēšanu, kas pievienoti vienā kopnē.
DS18B20 barošanas režīmi
Sensors var darboties divos jaudas režīmos, nodrošinot elastību, integrējot to dažādos projektos, katram ir savas priekšrocības.
Barošana, izmantojot datu tapu (Parasite Power)
Šis režīms ir ideāli piemērots, ja ir ierobežota vieta vai ir nepieciešami tālsatiksmes savienojumi. DS18B20 patērē strāvu tieši no datu kontakta, kad tā ir augsta, un saglabā jaudu nelielā kondensatorā, ja datu līnija ir zema. Šāda veida diētu sauc Parazītu spēks.
Tomēr ir svarīgi atzīmēt, ka, lai tas darbotos pareizi, ir nepieciešams savienot tapas GND y VDD krastā. Turklāt ir ieteicams iekļaut tranzistoru MOSFET kas palīdz situācijās, kad temperatūras pārveidošanai nepieciešama lielāka strāva.
Barošana, izmantojot ārēju avotu
Visizplatītākais un ieteicamākais veids, kā barot DS18B20, ir ārējais avots, kas savienots ar tapu VDD. Šī metode garantē stabilu spriegumu neatkarīgi no datu plūsmas 1-Wire kopnē, kas ir izdevīga projektiem, kuriem nepieciešama pastāvīga precizitāte.
Kā lietot DS18B20 ar Arduino
Lai strādātu ar šo sensoru Arduino platformā, ir jāizmanto divas pamata bibliotēkas: OneWire y Dalasas temperatūra. Šīs bibliotēkas atvieglo saziņu un ļauj viegli veikt nolasīšanu un konfigurēšanu.
OneWire bibliotēka: Ļauj sazināties, izmantojot 1-Wire protokolu. To var lejupielādēt no GitHub krātuve.
Dalasas grāmatnīcas temperatūra: Tajā ir funkcijas, kas nepieciešamas temperatūras nolasīšanai un sensora konfigurēšanai. Lejupielādējiet to no šī saite.
Kad esat instalējis abas bibliotēkas, varat sākt strādāt ar sensoru bez sarežģījumiem. Tālāk ir sniegti daži piemēri, kā nolasīt temperatūru un kā strādāt ar vairākiem sensoriem.
1. piemērs: Temperatūras nolasīšana ar vienu sensoru
Lai veiktu temperatūras nolasīšanu ar vienu DS18B20, kas savienots ar Arduino, pamata shēmā ir vienkārši jāpievieno sensora datu tapa digitālā tapa 2 Arduino kopā ar rezistoru Uzvilkt no 4.7kΩ.
Šis ir pamata kods sensora temperatūras nolasīšanai:
#include <OneWire.h> #include <DallasTemperature.h> OneWire ds(2); DallasTemperature sensors(&ds); void setup() { Serial.begin(9600); sensors.begin(); } void loop() { sensors.requestTemperatures(); float tempC = sensors.getTempCByIndex(0); Serial.print("Temperatura= "); Serial.print(tempC); Serial.println(" °C"); delay(1000); }
Kods ir diezgan vienkāršs. Lai pieprasītu temperatūru un nolasītu to, galvenajā cilpā ir vajadzīgas tikai dažas rindiņas, padarot to ļoti viegli ieviešanu un pielāgošanu dažādiem lietojumiem.
2. piemērs. Vairāku sensoru izmantošana uz dažādām tapām
Strādājot ar vairāk nekā vienu DS18B20, ir divi veidi, kā savienot sensorus. Pirmais ir, katram sensoram piešķirot citu Arduino digitālo tapu. Šajā gadījumā katram sensoram būs nepieciešams 4.7 kΩ Pull-Up rezistors.
Šeit mēs parādīsim piemēru, kā strādāt ar diviem sensoriem, kas savienoti ar dažādām tapām:
#include <OneWire.h> #include <DallasTemperature.h> OneWire ds1(2); OneWire ds2(3); DallasTemperature sensors1(&ds1); DallasTemperature sensors2(&ds2); void setup() { Serial.begin(9600); sensors1.begin(); sensors2.begin(); } void loop() { sensors1.requestTemperatures(); float temp1 = sensors1.getTempCByIndex(0); sensors2.requestTemperatures(); float temp2 = sensors2.getTempCByIndex(0); Serial.print("Temperatura 1 = "); Serial.print(temp1); Serial.print(" °C Temperatura 2 = "); Serial.println(temp2); delay(1000); }
3. piemērs: vairāki sensori, kas savienoti ar vienu tapu
Otra iespēja projektā savienot vairākus DS18B20 ir to darīt, izmantojot vienu tapu un vienu un to pašu 1 vadu kopni visiem. Šajā gadījumā katram sensoram ir jābūt savam unikālais identifikācijas numurs, kas ir piešķirts rūpnīcā. Šeit mēs izskaidrojam, kā iegūt šīs adreses, izmantojot šādu kodu:
#include <OneWire.h> OneWire ds(2); void setup(void) { Serial.begin(9600); } void loop(void) { byte address[8]; if (!ds.search(address)) { Serial.println("No more addresses."); ds.reset_search(); delay(250); return; } Serial.print("Address: "); for (int i = 0; i < 8; i++) { Serial.print(address[i], HEX); if (i < 7) Serial.print(", "); } Serial.println(); delay(250); }
Kad jums ir visu sensoru adreses, varat nolasīt konkrēto sensoru, izmantojot tā unikālo adresi. Šis kods parāda, kā to izdarīt:
#include <DallasTemperature.h> OneWire ds(2); DallasTemperature sensors(&ds); DeviceAddress sensor1 = {0x28, 0xFF, 0xCA, 0x4A, 0x5, 0x16, 0x3, 0xBD}; DeviceAddress sensor2 = {0x28, 0xFF, 0x89, 0x3A, 0x1, 0x16, 0x4, 0xAF}; void setup() { Serial.begin(9600); sensors.begin(); } void loop() { sensors.requestTemperatures(); float temp1 = sensors.getTempC(sensor1); float temp2 = sensors.getTempC(sensor2); Serial.print("Temp sensor 1: "); Serial.println(temp1); Serial.print("Temp sensor 2: "); Serial.println(temp2); delay(1000); }
Šīs metodes priekšrocības ir tādas, ka jūs saglabājat tapas Arduino un varat savienot daudzus sensorus paralēli vienai un tai pašai datu kopnei.
Izmantojot šos piemērus, varat redzēt sensora DS18B20 daudzpusību un jaudu. To ir ļoti viegli ieviest, un, ja jums ir nepieciešams savienot vairākus sensorus, jums ir pilnīga elastība, lai to izdarītu dažādos veidos. DS18B20 ir viens no uzticamākajiem temperatūras mērīšanas sensoriem, un, pateicoties tā zemajam enerģijas patēriņam un vienkāršajai programmēšanai, tas ir lieliski piemērots visu veidu projektiem.
DS18B20 sensors ir ne tikai viegli lietojams ar Arduino, bet to var izmantot arī plašā klāstā rūpnieciskām un dzīvojamajām vajadzībām, piemēram, temperatūras uzraudzībai gaisa kondicionēšanas sistēmās, iekārtās vai pat siltumnīcās.