From 72b319e7878d7abe734501c82c0d6b943cdba4e1 Mon Sep 17 00:00:00 2001 From: Barb Date: Fri, 16 Feb 2024 13:51:31 +0100 Subject: [PATCH] functional code, flashed to refrigerator feb.24 --- ...tud_fridge_compressor_timer_controller.ino | 60 +++++++++++++++++++ README.md | 3 + 2 files changed, 63 insertions(+) create mode 100644 AulaStud_fridge_compressor_timer_controller.ino create mode 100644 README.md diff --git a/AulaStud_fridge_compressor_timer_controller.ino b/AulaStud_fridge_compressor_timer_controller.ino new file mode 100644 index 0000000..2a87cbb --- /dev/null +++ b/AulaStud_fridge_compressor_timer_controller.ino @@ -0,0 +1,60 @@ +int disable = 0; +int timer = 0; +int timerMAX = 900; //(countdown in seconds) +int fan = 0; +int relayPin = 0; +int fanPin = 1; + +void setup() { + // put your setup code here, to run once: + pinMode(relayPin, OUTPUT); + pinMode(fanPin, OUTPUT); + digitalWrite(relayPin, LOW); + digitalWrite(fanPin, LOW); + timer = timerMAX; +} + +void loop() { + // put your main code here, to run repeatedly: + + // only enable fans after the compressor has been running for a while + if (timer < (timerMAX*4/5) && disable == 0) { + digitalWrite(fanPin, HIGH); + } + else if (timer == timerMAX) { + digitalWrite(fanPin, LOW); + } + + // compressor control logic + if (timer > 0 && disable == 0) { + // when compressor is active, countdown moves at 1s/cycle + timer--; + } + + else if (timer > 0 && disable == 1) { + // when compressor is off, countdown moves at 5s/cycle + timer = timer - 5; + } + + else if (timer == 0) { + // reset countdown timer to max once 0 is reached + timer = timerMAX; + + // realy control logic: warning! LOW = active! + if (disable == 0) { + disable = 1; + digitalWrite(relayPin, HIGH); + } + else if (disable == 1) { + disable = 0; + digitalWrite(relayPin, LOW); + } + } + + else { //protect against underflow or bitflip + timer = 0; + disable = 1; + } + + delay(1000); +} diff --git a/README.md b/README.md new file mode 100644 index 0000000..f636a6c --- /dev/null +++ b/README.md @@ -0,0 +1,3 @@ +Controller basato su attiny45, un relé e un FET per il frigorifero usato che abbiamo preso per l'aulastud nel '23. +Abbiamo dovuto sostituire il termostato e il design dell'evaporatore (parte fredda della serpentina) fa sì che ci sia rischio di trasporto di olio dal compressore e che si intasi il sistema se il compressore lavora per troppi minuti di fila (tipicamente dopo 30 minuti, a quel punto tocca staccare il frigo, riscaldarlo con un phon per sturare il blocco di olio, di solito nel reparto freezer, e poi riaccenderlo). +Questo controller è montato DOPO il termostato, in modo da impostare dei limiti di tempo massimo di accensione (15') e minimo di stand-by (3') del compressore. Inoltre, si occupa di accendere delle ventole nel compartimento freezer e frigo che aumentano il COP e permettono la completa evaporazione del refrigerante (butano). \ No newline at end of file