Code For Heat Transfer Project
Code For Heat Transfer Project
h>
#include <DallasTemperature.h>
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
// I2C LCD
LiquidCrystal_I2C lcd(0x27, 16, 2);
// Pins
#define ONE_WIRE_BUS 2
#define FLOW_SENSOR_PIN 3
#define RELAY_PIN 7
// Temperature sensors
OneWire oneWire(ONE_WIRE_BUS);
DallasTemperature sensors(&oneWire);
DeviceAddress tempSensor1, tempSensor2;
// Flow sensor
volatile int pulseCount = 0;
float flowRate = 0;
unsigned long oldTime = 0;
// Constants
const float calibrationFactor = 4.5;
const float Cp = 4186; // J/kg°C
const float waterDensity = 1.0; // kg/L
// Variables
float tempInlet = 0;
float tempOutlet = 0;
float deltaT = 0;
float energyTransfer = 0; // in Watts
void setup() {
Serial.begin(9600);
sensors.begin();
lcd.init();
lcd.backlight();
pinMode(FLOW_SENSOR_PIN, INPUT_PULLUP);
attachInterrupt(digitalPinToInterrupt(FLOW_SENSOR_PIN), countPulse, RISING);
pinMode(RELAY_PIN, OUTPUT);
digitalWrite(RELAY_PIN, LOW); // Relay off initially
lcd.setCursor(0, 0);
lcd.print("Heat Exchanger");
delay(2000);
lcd.clear();
lcd.setCursor(0, 1);
void loop() {
static unsigned long lastFlowTime = 0;
static unsigned long lastTempReadTime = 0;
// Energy calculation
energyTransfer = Cp * waterDensity * flowRateLps * deltaT;
// LCD Display
displayOnLCD(tempInlet, tempOutlet, flowRate, energyTransfer);
lcd.setCursor(0, 1);
lcd.print("F:");
lcd.print(flow, 1);
lcd.print(" ; ET = ");
lcd.print(energyTransfer, 0);
void countPulse() {
pulseCount++;
}