Cirkit Designer LogoCirkit DesignerYour all-in-one circuit design IDE Launch Cirkit Designer App

Arduino UNO Temperature-Controlled Heating System with DS18B20 and Relays

View and Edit Project In Cirkit DesignerImage of Arduino UNO Temperature-Controlled Heating System with DS18B20 and Relays

Circuit Documentation

Summary

This circuit is designed to control the temperature using an Arduino UNO and a DS18B20 temperature sensor. The circuit includes two 5V relays to control two heating mats based on the temperature readings from the DS18B20 sensor. The relays are activated or deactivated depending on the temperature to maintain a desired temperature range.

Component List

  1. Arduino UNO

    • Description: A microcontroller board based on the ATmega328P.
    • Pins: UNUSED, IOREF, Reset, 3.3V, 5V, GND, Vin, A0, A1, A2, A3, A4, A5, SCL, SDA, AREF, D13, D12, D11, D10, D9, D8, D7, D6, D5, D4, D3, D2, D1, D0
  2. DS18B20

    • Description: A digital temperature sensor.
    • Pins: signal, GND, vcc
  3. Resistor

    • Description: A resistor with a resistance of 47k Ohms.
    • Pins: pin1, pin2
    • Properties: Resistance: 47000 Ohms
  4. 5V Relay (Relay 1)

    • Description: A relay module that operates at 5V.
    • Pins: Normally Open, Common terminal, Normally Closed, In, GND, VCC
  5. 5V Relay (Relay 2)

    • Description: A relay module that operates at 5V.
    • Pins: Normally Open, Common terminal, Normally Closed, In, GND, VCC
  6. Heating Mat (Mat 1)

    • Description: A heating mat.
    • Pins: +, -
  7. Heating Mat (Mat 2)

    • Description: A heating mat.
    • Pins: +, -
  8. AC Supply

    • Description: An AC power supply.
    • Pins: +ve, -ve

Wiring Details

Arduino UNO

DS18B20

Resistor

5V Relay (Relay 1)

5V Relay (Relay 2)

Heating Mat (Mat 1)

Heating Mat (Mat 2)

AC Supply

Documented Code

/* Temperatursteuerung mit einem ArduinoUno und dem DS18B20 */

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

//===================== Einstellungen ==============================

#define DS18B20_DATA 2 //==> Daten-Pin für TemperaturSensor DS18B20

#define Relais_PIN1 5 //==> Pin für Relais
#define Relais_PIN2 6 //==> Pin für Relais

//=============================================================================
OneWire oneWire(DS18B20_DATA);
DallasTemperature sensors(&oneWire);

void setup(){
  Serial.begin(9600);
  Serial.println("Sensor temperature initialisation");
  sensors.begin();
  pinMode(Relais_PIN1, OUTPUT);
  pinMode(Relais_PIN2, OUTPUT);
  digitalWrite(Relais_PIN1,LOW);
  digitalWrite(Relais_PIN2,LOW);
}

void loop(){
  
  Serial.print("Requesting temperatures...");  
  sensors.requestTemperatures();
  Serial.println("DONE"); 
  float tempC = sensors.getTempCByIndex(0);
  
  // Check if reading was successful
  if(tempC != DEVICE_DISCONNECTED_C) 
  {
    Serial.print("Temperature for the device 1 (index 0) is: ");
    Serial.println(tempC);
    if(tempC < 37.0) 
    {
      digitalWrite(Relais_PIN1,HIGH);
      digitalWrite(Relais_PIN2,HIGH);
    } 
    else
    {
      digitalWrite(Relais_PIN1,LOW);
      digitalWrite(Relais_PIN2,LOW);
    }
  } 
  else
  {
    Serial.println("Error: Could not read temperature data");
  }
}

This code initializes the DS18B20 temperature sensor and the relays. It reads the temperature and activates or deactivates the relays based on the temperature reading to control the heating mats.