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

ROBOTICKÉ RAMENO

Stavebnice obsahuje všechny potřebné díly na sestavení robotnického ramene včetně spojovacího materiálu, pouze je nutné dokoupit čtyři kusy MIKRO SERV SG90. Dále je nutné dokoupit řídící jednotku já jsem použil domácí zásoby ARDUINO NANO a pro něho pak modul ARDUINO NANO IO SHIELD pro jednoduchost zapojení. Díly pro sestavení ramene jdou dobře tzv. vylamovat „vypadávají skoro sami. K servům pokud použijete nové tak doporučuji je před montáží odzkoušet zda jsou funkční v plném rozsahu tj. od 0° do 180°, po namontování a zjištění že servo nefunguje to pak opravdu dost zahýbá s nervy. 

Electronic TiltMaze

Cílem tohoto projektu je vytvoření jednoduchého ovládacího systému, který umožňuje naklápění dvou servomotorů pomocí analogového joysticku. Platforma řízená servomotory může simulovat pohyb například v ose X a Y — tedy naklánění doleva/doprava a dopředu/dozadu. Tento systém může sloužit jako základ pro různé aplikace:

- Manuální ovládání kamery nebo senzoru (např. na pohyblivé konstrukci nebo robotovi)
- Interaktivní ovládací panel pro školní projekty nebo herní ovladač