Senzorul de temperatura DS18B20

In acest articol vom folosi senzorul de temperatura DS18B20.

Acest senzor poate citi valorile intre -55 si +125 grade Celsius.

Acurtetea acestui senzor este de + 0,5 grade Celsius iar alimentarea lui se face intre 3,3 si 5V.

Acest senzor vine in formatul TO-92 (casula uzuala a unui tranzistor de semnal mic) si are nevoie de un rezistor pullup de 4,7 KiloOhmi intre terminalul de date si pinul de alimentare.

De asemenea acest senzor se mai gaseste incapsulat pentru a putea fi folosit in diferite lichide.

Pentru a putea folosi acest senzor vom avea nevoie de 2 biblioteci aditionale: OneWire Library si Dallas Library

 Conectarea la Arduino se face pe un singur fir si se poate folosi orice pin digital avem la dispozitie. In cazul nostru vom conecta senzorul la pinul D22 al Arduino Mega.

Sketchul folosit pentru monitorizarea temperaturii pe terminalul serial este urmatorul:

#include <OneWire.h>
#include <DallasTemperature.h>
#define ONE_WIRE_BUS 22  //pinul digital unde conectam senzorul
#define TEMPERATURE_PRECISION 9
OneWire oneWire(ONE_WIRE_BUS);
DallasTemperature sensors(&oneWire);
DeviceAddress senzor; 

void setup(void)
{
  Serial.begin(9600);
  Serial.println("Testare senzor DS18B20 impreuna cu Arduino");
  sensors.begin();
}

void loop(void)
{ 
  Serial.print("Citire temperatura...");
  sensors.requestTemperatures(); 
  Serial.println("OK");
   if (sensors.getAddress(senzor, 0)) {
    float tempC = sensors.getTempC(senzor);
    Serial.print("Temp: ");
    Serial.print(tempC);
    Serial.print(" ºC");
    Serial.print(" Temp: ");
    Serial.print(DallasTemperature::toFahrenheit(tempC));
    Serial.println(" ºF");    
   }

  delay(1000);
}

 De asemenea putem afisa temperaturile si pe un display LCD 2004. 

Conectarea displayului este conform informatiilor din acest articol.

Codul folosit este in sketchul de mai jos:

 

#include <LiquidCrystal.h>
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
#include <OneWire.h>
#include <DallasTemperature.h>
#define ONE_WIRE_BUS 22  //pinul digital unde conectam senzorul
#define TEMPERATURE_PRECISION 9
OneWire oneWire(ONE_WIRE_BUS);
DallasTemperature sensors(&oneWire);
DeviceAddress senzor; 
byte celsius[] = {
  B00110,
  B01001,
  B01001,
  B00110,
  B00000,
  B00000,
  B00000,
  B00000
};

void setup()
{
  sensors.begin();
  lcd.begin(16,4); 
  lcd.setCursor ( 0, 0 ); 
  lcd.print (" www.");  
  lcd.setCursor (0, 1 ); 
  lcd.print ("electronicstore");
  lcd.setCursor (0, 2 );
  lcd.print ("            .ro");
  lcd.setCursor (0, 3 );
  lcd.print ("****************");
  delay (1000); 
  lcd.clear(); 
  lcd.setCursor ( 0, 0 ); 
  lcd.print ("Testarea senzor");  
  lcd.setCursor (0, 1 ); 
  lcd.print ("DS18B20 ");
  lcd.setCursor (0, 2 );
  lcd.print ("");
  lcd.setCursor (0, 3 );
  lcd.print ("****************");
  delay (1000);
  lcd.clear();
  lcd.createChar(0, celsius); 
}
void loop() {
  //lcd.clear();
  sensors.requestTemperatures(); 
  if (sensors.getAddress(senzor, 0)) {
    float tempC = sensors.getTempC(senzor);
    lcd.setCursor (0, 0 );
    lcd.print ("Temperatura...  ");
    lcd.setCursor(0, 1);
    lcd.print(tempC);
    lcd.print(" ");
    lcd.write(byte(0));
    lcd.print("C");
    lcd.setCursor(0, 2);
    lcd.print(DallasTemperature::toFahrenheit(tempC));
    lcd.print(" ");
    lcd.write(byte(0));
    lcd.print("F");
  } else {
    lcd.clear();
  lcd.setCursor (0, 0 );
  lcd.print ("Senzor defect!");
  }
  delay (100);
  }

 Mai jos un filmulet cu montajul in functiune:

Nu sunt comentarii in “Senzorul de temperatura DS18B20”

Lasa un comentariu

Raspuns lui Some User

ESP32

ESP32 impreuna cu un senzor de lumina

    Pentru a detecta prezenta sau absenta luminii de catre ESP32 vom folosi un fotorezistor. Iar in acest articol vom folosi un modul detector de lumin cu fotorezistor.     Acest modul se poate alime...

ESP32 si un led

    Pentru a semnaliza o anumita stare dintr-un program executat de catre ESP32 puem folosi ca martor indicator un led. In acest exemplu vom folosi un led conectat cu anodul la pinul GPIO_25 al ESP32,...

ESP32 si comunicarea seriala

    Daca dorim sa vedem diferite date returnate de catre ESP32 putem folosi terminalul serial pentru a realiza acest lucru. Folosirea acestuia este destul de simpla, de fapt fiind acelasi cod sursa fo...

More Articles

Mai multe de la: ESP32

Autentificare