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

Test ESC a BLDC motoru

Cílem tohoto Arduino projektu je testování a kalibrace obousměrného regulátoru otáček (ESC) pomocí PWM signálu. Program simuluje sekvenci pohybů: dopředu, neutrální pozici a reverzní chod, což umožňuje ověřit správnou funkci ESC včetně přepínání směru otáčení motoru.

Laserový alarm

Cílem tohoto projektu je vytvořit jednoduchý, ale funkční bezpečnostní systém, který detekuje narušení prostoru pomocí vysílače (laserového paprsku) a přijímače (fotorezistoru). Jakmile je paprsek přerušen, Arduino to vyhodnotí jako narušení a spustí alarm – například zvukový signál pomocí piezo bzučáku.