Ovládání teploty pomocí relé a senzoru DS18B20


Tento projekt umožňuje měřit teplotu pomocí senzoru DS18B20, zobrazit ji na I2C LCD displeji, a ovládat relé podle teplotních limitů. Relé bude aktivní, když je teplota mezi 0 a 22 stupni Celsia. Projekt může sloužit k ovládání topení, ventilace nebo jiného zařízení podle okolní teploty.

Co potřebuji?

  • Arduino Uno (Může být i klon, v našem případě UNO R3)
  • DS18B20 (teplotní senzor)
  • I2C LCD displej 16x2
  • Relé modul
  • Drátky
  • Rezistor 4,7 kΩ

Zapojení: (Viz schéma):

  1.  DS18B20 teplotní senzor:
    • Data pin připojíme k D2 na Arduinu.
    • Připojíme rezistor 4,7 kΩ mezi datový pin a napájení 5V.
    • Napájení senzoru je na 5V a GND.
  2. I2C LCD displej:
    • Napojíme piny SDA a SCL (SDA -> A4, SCL -> A5).
  3. Relé modul:
    • Napájecí piny připojíme na 5V a GND.
    • Pin IN připojíme na D8 na Arduinu

Knihovny:

Aby kód fungoval, bude potřebovat následující knihovny:

  • OneWire: Pro komunikaci s DS18B20.
  • DallasTemperature: Pro snadné čtení teploty ze senzoru DS18B20.
  • LiquidCrystal_I2C: Pro ovládání LCD displeje přes I2C.

Kód:

Následující kód načítá teplotu, zobrazuje ji na displeji a podle nastaveného limitu ovládá relé. Relé se zapne, když je teplota mezi 0 a 22 °C, a vypne, pokud přesáhne 22 °C

#include <Wire.h>
#include <OneWire.h>
#include <DallasTemperature.h>
#include <LiquidCrystal_I2C.h>

LiquidCrystal_I2C lcd(0x27, 16, 2);  // Nastavení LCD displeje (0x27 je běžná adresa)
#define ONE_WIRE_BUS 2               // Datový pin DS18B20
OneWire oneWire(ONE_WIRE_BUS);
DallasTemperature sensors(&oneWire);

#define RELAY_PIN 8                  // Pin pro relé modul
#define TEMPERATURE_MIN 0.0          // Dolní limit pro aktivaci relé
#define TEMPERATURE_MAX 22.0         // Horní limit pro aktivaci relé

unsigned long previousMillis = 0;
const long interval = 1000;          // Interval aktualizace (1 sekunda)

void setup() {
  Serial.begin(9600);
  lcd.init();
  lcd.backlight();
  sensors.begin();
  
  pinMode(RELAY_PIN, OUTPUT);        // Nastavení pinu relé jako výstup
  digitalWrite(RELAY_PIN, LOW);      // Relé vypnuto při spuštění
}

void loop() {
  unsigned long currentMillis = millis();

  // Aktualizace každou sekundu
  if (currentMillis - previousMillis >= interval) {
    previousMillis = currentMillis;

    // Načtení teploty ze senzoru
    sensors.requestTemperatures();
    float temperatureC = sensors.getTempCByIndex(0);

    if (temperatureC != DEVICE_DISCONNECTED_C) {
      // Zobrazení teploty na displeji
      lcd.clear();
      lcd.setCursor(0, 0);
      lcd.print("Teplota:");
      lcd.setCursor(0, 1);
      lcd.print(temperatureC);
      lcd.print(" C");

      Serial.print("Teplota: ");
      Serial.print(temperatureC);
      Serial.println(" C");

      // Ovládání relé podle teplotního rozsahu
      if (temperatureC >= TEMPERATURE_MIN & temperatureC <= TEMPERATURE_MAX) {
        digitalWrite(RELAY_PIN, HIGH); // Zapne relé
        lcd.setCursor(10, 1);
        lcd.print("Zap.");
      } else {
        digitalWrite(RELAY_PIN, LOW);  // Vypne relé
        lcd.setCursor(10, 1);
        lcd.print("Vyp.");
      }
    } else {
      lcd.clear();
      lcd.setCursor(0, 0);
      lcd.print("Senzor odpojen!");
      Serial.println("Chyba: Senzor DS18B20 není připojen.");
    }
  }
}

Vysvětlení kódu:

  • Inicializace a nastavení: Kód zapne LCD displej, teplotní senzor a relé.
  • Čtení teploty: Funkce sensors.requestTemperatures() načítá aktuální teplotu.
  • Zobrazení na LCD: Teplota se každou sekundu zobrazí na displeji a sériově odešle do monitoru sériového portu.
  • Ovládání relé: Pokud je teplota mezi 0 a 22 °C, relé se zapne. Pokud teplota překročí 22 °C, relé se vypne. Na displeji se ukazuje stav relé („Zap.“ nebo „Vyp.“).

Praktické využití:

Projekt lze použít k automatickému řízení teploty například v malých sklenících, teráriích nebo akváriích. Senzor DS18B20 poskytuje stabilní měření teploty a LCD displej umožňuje přehledně zobrazit aktuální stav. Relé modul může spínat ventilátor nebo topné těleso a udržovat teplotu v daném rozsahu.

Další podobné články

Bezpečnostní dveře

Cílem projektu bylo vytvořit inteligentní systém, který detekuje otevřené a zavřené dveře na základě senzoru detekce překážek a umožňuje manuální ovládání pomocí tlačítek. Tento systém je navržen tak, aby zlepšil bezpečnost a kontrolu přístupu do prostorů, kde se pohybuje VZV, aby byl řidič VZV informován zvukovou signalizací o přítomnosti osoby v konkrétním sektoru.