#include <Adafruit_Sensor.h>
#include <OneWire.h> // For DS18B20 sensor
#include <DallasTemperature.h>
#include <Wire.h>
#define TEMP_THRESHOLD 30 //temperature threshold in Celsius
#define DS18B20_PIN 4 // DS18B20 sensor pin (liquid temperature)
#define HEATER_PIN 14 // Heater control pin
#define PELTIER_PIN 27 // Peltier module control pin
float liquidTemperature = 0.0; // Liquid temperature from DS18B20
// Setup for DS18B20
OneWire oneWire(DS18B20_PIN);
DallasTemperature sensors(&oneWire);
void setup() {
Serial.begin(9600);
// Initialize output devices
pinMode(HEATER_PIN, OUTPUT);
pinMode(PELTIER_PIN, OUTPUT);
// Turn off all output devices initially
digitalWrite(HEATER_PIN, LOW);
digitalWrite(PELTIER_PIN, LOW);
}
void loop() {
// Read liquid temperature from DS18B20
sensors.requestTemperatures();
liquidTemperature = sensors.getTempCByIndex(0); // Assuming one DS18B20 sensor
// Print sensor readings
Serial.print("Liquid Temperature: "); Serial.print(liquidTemperature); Serial.println(" C");
// Control logic for output devices
controlHeater();
controlPeltier();
delay(2000); // Adjust delay as per required sampling rate
}
// Function to read level sensor using HC-SR04
void controlHeater() {
if (liquidTemperature < TEMP_THRESHOLD) {
digitalWrite(HEATER_PIN, HIGH); // Turn on heater if temperature is below threshold
Serial.println("Heater ON");
} else {
digitalWrite(HEATER_PIN, LOW); // Turn off heater
Serial.println("Heater OFF");
}
}
void controlPeltier() {
if (liquidTemperature > TEMP_THRESHOLD) {
digitalWrite(PELTIER_PIN, HIGH); // Cool down if temperature exceeds threshold
Serial.println("Peltier ON (Cooling)");
} else {
digitalWrite(PELTIER_PIN, LOW);
Serial.println("Peltier OFF");
}
}
Loading
ds18b20
ds18b20