DS18B20: Karakteristike temperaturnog senzora

  • Senzor DS18B20 može mjeriti temperature od -55°C do 125°C sa podesivom rezolucijom od 9 do 12 bita.
  • Može se napajati preko svog pina za podatke ili koristiti vanjski izvor za veću stabilnost.
  • Omogućava povezivanje više senzora na jednu magistralu, od kojih je svaki identifikovan svojom jedinstvenom 64-bitnom adresom.
  • Kompatibilan je sa Arduinom koristeći OneWire i DallasTemperature biblioteke.

ds18b20

El DS18B20 senzor je stekao popularnost zahvaljujući svojoj pouzdanosti i svestranosti za mjerenje temperature. Široko se koristi u projektima elektronike s mikrokontrolerima kao što su Arduino, PIC ili ESP8266 zbog svoje jednostavnosti upotrebe i mogućnosti povezivanja više senzora na istoj magistrali, što ga čini idealnom opcijom i za amatere i za profesionalce.

Jedna od glavnih atrakcija ovog senzora je da koristi samo jedan kabel za prijenos podataka putem protokola 1-Wire, što olakšava njegovu integraciju u širok spektar projekata. Uz to, DS18B20 može raditi u do dva različita načina napajanja, što ga čini još fleksibilnijim. Kroz ovaj članak ćemo detaljno objasniti kako funkcionira, kako možete povezati više senzora i kako optimizirati mjerenja temperature.

Karakteristike DS18B20

Nije pronađen nijedan proizvod.

DS18B20 proizvodi Maxim Integrated, između ostalih, i predstavljen je u različitim inkapsulacijama, format je TO-92 (slično kao kod mnogih tranzistora) jedan od najčešćih. Osim toga, može se naći iu zatvorenim i vodootpornim verzijama, što ga čini idealnim za mjerenje temperatura u teškim ili vlažnim okruženjima.

Među najznačajnijim karakteristikama DS18B20 su:

  • Opseg temperature koji može mjeriti pokriva -55°C do 125°C, što ga čini pogodnim za industrijsku i kućnu primjenu.
  • Su programabilna rezolucija može varirati između 9 i 12 bita, što omogućava precizno prilagođavanje prema potrebama svakog projekta.
  • Svaki senzor ima jedinstvenu adresu 64 bita, olakšava identifikaciju više senzora povezanih na istoj magistrali.

DS18B20 Načini napajanja

ds18b20 pin-out

Senzor može raditi u dva načina napajanja, pružajući fleksibilnost pri integraciji u različite projekte, od kojih svaki ima svoje prednosti.

Napajanje preko podatkovnog pina (Parasite Power)

Ovaj način rada je idealan kada je prostor ograničen ili kada su potrebne veze na velike udaljenosti. DS18B20 crpi napajanje direktno iz podatkovnog pina kada je visok i pohranjuje snagu u malom kondenzatoru kada je linija podataka niska. Ova vrsta dijete se zove Parazitska moć.

Međutim, važno je napomenuti da je za ispravan rad potrebno spojiti pinove GND y VDD na obali. Dodatno, preporučljivo je uključiti tranzistor MOSFET što pomaže u situacijama kada je za pretvorbu temperature potrebna veća struja.

Napajanje pomoću vanjskog izvora

Najčešći i preporučeni način napajanja DS18B20 je preko vanjskog izvora spojenog na pin VDD. Ova metoda garantuje stabilan napon neovisno o prometu podataka na 1-Wire magistrali, što je povoljno za projekte koji zahtijevaju konstantnu preciznost.

Kako koristiti DS18B20 sa Arduinom

arduino veza

Za rad sa ovim senzorom na Arduino platformi, potrebno je koristiti dvije osnovne biblioteke: OneWire y DallasTemperature. Ove biblioteke olakšavaju komunikaciju i omogućavaju lako izvođenje očitavanja i konfiguracije.

OneWire biblioteka: Omogućava komunikaciju koristeći 1-Wire protokol. Može se preuzeti sa GitHub spremište.

Dallas Bookstore Temperatura: Sadrži funkcije potrebne za očitavanje temperature i konfiguraciju senzora. Preuzmite ga sa Ova veza.

Nakon što instalirate obje biblioteke, možete početi raditi sa senzorom bez komplikacija. U nastavku objašnjavamo neke primjere kako očitati temperaturu i kako raditi s više senzora.

Primjer 1: Očitavanje temperature s jednim senzorom

Za očitavanje temperature s jednim DS18B20 spojenim na Arduino, osnovno kolo uključuje jednostavno povezivanje pina za podatke senzora na digitalni pin 2 Arduina, zajedno sa otpornikom Povuci od 4.7kΩ.

Ovo je osnovni kod za očitavanje temperature senzora:

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

Kod je prilično jednostavan. Potrebno je samo nekoliko redaka u glavnoj petlji da biste zatražili temperaturu i pročitali je, što ga čini vrlo lakim za implementaciju i prilagođavanje za različite namjene.

Primjer 2: Korištenje više senzora na različitim pinovima

Kada radite sa više od jednog DS18B20, postoje dva načina za povezivanje senzora. Prvi je dodjeljivanjem drugog Arduino digitalnog pina svakom senzoru. U ovom slučaju, za svaki senzor će biti potreban 4.7kΩ Pull-Up otpornik.

Ovdje vam pokazujemo primjer rada sa dva senzora povezana na različite pinove:

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

Primjer 3: Više senzora povezanih na jedan pin

Druga mogućnost povezivanja nekoliko DS18B20 u projekat je da se to uradi pomoću jednog pina i iste 1-Wire sabirnice za sve njih. U tom slučaju svaki senzor mora imati svoj jedinstveni identifikacioni broj, koji je dodijeljen u fabrici. Ovdje objašnjavamo kako dobiti te adrese koristeći sljedeći kod:

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

Kada dobijete adrese svih senzora, možete očitati određeni senzor koristeći njegovu jedinstvenu adresu. Sljedeći kod vam pokazuje kako to učiniti:

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

Prednosti ove metode su što spremate pinove na Arduino i možete povezati mnogo senzora paralelno na istu sabirnicu podataka.

Na ovim primjerima možete vidjeti svestranost i snagu senzora DS18B20. Vrlo je jednostavan za implementaciju, a ako trebate povezati više senzora, imate punu fleksibilnost da to učinite na različite načine. DS18B20 je jedan od najpouzdanijih senzora za mjerenje temperature, a zahvaljujući niskoj potrošnji energije i jednostavnom programiranju, savršen je za sve vrste projekata.

Senzor DS18B20 nije samo jednostavan za korištenje sa Arduinom, već se može koristiti i u širokom spektru industrijskih i stambenih aplikacija kao što je praćenje temperature u sistemima klimatizacije, mašinama ili čak staklenicima.


Dodaj kao preferirani izvor na Googleu