Un proiect accesibil de tip DIY care optimizează și automatizează funcționarea centralelor termice (fiind ideal în special pentru modelele mai vechi de generație clasică). Dacă te confrunți cu facturi mari la încălzire sau termostatul clasic de ambient nu oferă confortul dorit, acest circuit propune o abordare alternativă inteligentă bazată pe cicluri orare bine definite.

1. Conceptul Proiectului

Ideea de bază constă în înlocuirea sau completarea termostatului clasic cu un temporizator orar precis, care activează încălzirea la intervale prestabilite. Scopul este atingerea unui confort termic optim în locuință pe perioada sezonului rece, reducând în același timp consumul inutil de combustibil.

Provocare / Detaliu ascuns: Am lăsat intenționat un detaliu tehnic în afara articolului — un truc care crește randamentul acestui montaj. Dacă identificați despre ce este vorba, lăsați un mesaj în secțiunea de comentarii!

Arhitectura este compactă și accesibilă: un microcontroler fiabil, un modul de ceas în timp real (RTC) de mare precizie și un modul releu cu consum minim. Buget estimat: aproximativ 50 – 70 RON.

2. Componente Hardware Necesare

Sistemul este compus din următoarele module:

A. Placă de dezvoltare Arduino Nano V3 (Type-C, CH340, ATmega328P) 

Specificații: Microcontroller ATmega328P-AU la 16 MHz, 14 pini digitali (dintre care 6 pini suportă PWM), 32 KB memorie Flash și interfață USB Type-C prin convertorul CH340 pentru încărcare rapidă a codului prin Arduino IDE. Alimentare: Funcționează la nivel logic de 5V și poate fi alimentat direct prin portul Type-C sau pinul VIN. Deși placa oferă o multitudine de funcții, pentru acest proiect vom utiliza doar o fracțiune din capabilitățile sale.

B. Modul Ceas în Timp Real (RTC) DS3231

Pentru o precizie ridicată a orei și datei, am integrat modulul DS3231. Acesta dispune de un oscilator intern compensat termic (TCXO) și baterie proprie de rezervă pentru a păstra ora exactă chiar și în cazul căderilor de tensiune de la rețea. Notă tehnică: Evitați modulele RTC ieftine echipate cu quartz clasic (cum ar fi DS1307), deoarece acestea tind să piardă sau să câștige secunde zilnic odată cu variațiile de temperatură. Circuitul integrat DS3231 garantează o stabilitate pe termen lung.

C. Modul Releu de 5V cu Optocuplor (1 Canal)

Modul de releu pe 5V cu izolație galvanică prin optocuplor și nivel de declanșare selectabil (High / Low). În cadrul acestui proiect, jumper-ul este configurat pe nivel High. Contactele libere de potențial (normal deschis – NO / comun – COM) se leagă direct la intrarea de termostat de ambient a centralei termice. (Acea mufă din centrală conține din fabrică o punte/ștrap metalic dacă nu a fost montat anterior un termostat).

D. Sursă de Alimentare USB 5V (≥ 1A)

Toate modulele selectate funcționează nativ la tensiunea de 5V DC. Datorită consumului total extrem de redus (< 100 mA în sarcină maximă cu releul cuplat), circuitul poate fi alimentat fără probleme de la orice încărcător standard de telefon de 5V / 1A.

E. Comutator Rotativ cu 4 Poziții

Pentru comutarea manuală și rapidă a modurilor de funcționare, folosim un comutator rotativ conectat direct la pinii de intrare ai plăcii Arduino.

3. Schema de Conectare și Cablare

 

4. Logica de Funcționare

În loc să lăsăm centrala să pornească aleatoriu la cea mai mică histerezis a aerului din cameră, am definit ferestre specifice de funcționare și cicluri periodice pornit/oprit.  

Exemplu de profil activ (Modul SMART):  

  • Dimineața (înainte de plecare): 06:30 – 07:30 → ON Continuu.  

  • Perioada de zi: Oprit (centrala rămâne în Standby pe timpul absenței locatarilor).  

  • După-amiaza (întoarcerea de la birou): 17:30 – 18:30 → ON Continuu.  

  • Seara (înainte de culcare): 21:30 – 22:30 → ON Continuu.  

  • Noaptea (22:30 – 06:30): Ciclu de întreținere termică format din 15 minute ON urmate de 45 minute OFF la fiecare oră.  

Deși este un algoritm pur determinist bazat pe timp, oferă o predictibilitate mult mai bună a consumului și a confortului comparativ cu termostatele clasice.  

5. Mediu de Dezvoltare și Software

Platformă Software:

  • Arduino IDE (v2.x sau mai nou).

  • Driver USB: WCH CH340 USB-to-Serial Driver.

  • Bibliotecă de dependență: RTClib (dezvoltată de Adafruit), instalabilă direct prin meniul Library Manager din Arduino IDE.

  • Configurație compilare / încărcare:

    • Board: Arduino Nano

    • Processor: ATmega328P (selectați ATmega328P (Old Bootloader) în cazul în care primiți eroare de comunicare la încărcare)

6. Codul Sursă

Pasul 1: Sincronizarea inițială a ceasului RTC DS3231

Încărcați mai întâi acest sketch simplu pentru a seta data și ora exactă preluate automat din calculator în momentul compilării:

#include <Wire.h>

#include “RTClib.h”

RTC_DS3231 rtc;

void setup() {

  Serial.begin(9600);

  if (!rtc.begin()) {

    Serial.println(“Eroare: Modulul RTC nu a fost detectat! Verificati conexiunile I2C.”);

    while (1);

  }

  // Linia urmatoare seteaza ceasul RTC la data si ora compilarii din PC

  rtc.adjust(DateTime(F(__DATE__), F(__TIME__)));

  Serial.println(“Ceasul a fost setat cu succes la ora calculatorului!”);

}

void loop() {

  // Citire si afisare la fiecare secunda in Serial Monitor pentru verificare

  DateTime now = rtc.now();

  Serial.print(now.hour());

  Serial.print(“:”);

  if (now.minute() < 10) Serial.print(“0”);

  Serial.print(now.minute());

  Serial.print(“:”);

  if (now.second() < 10) Serial.print(“0”);

  Serial.println(now.second());

  delay(1000);

}

Pasul 2: Programul Principal de Control al Centralei

După verificarea ceasului, încărcați programul principal care gestionează comutatorul de moduri și temporizarea releului:

#include
 #include “RTClib.h”

// ============================================================================
 // 1. CONFIGURARE PINI HARDWARE
 // ============================================================================
 const int RELAY_PIN = 2; // Pin comanda Releu
 const int MODE_POW
ER_PIN = 4; // Pozitia 1 a comutatorului
 const int MODE_ECO_PIN = 5; // Pozitia 2 a comutatorului
 const int MODE_SMART_PIN = 6; // Pozitia 3 a comutatorului
 const int MODE_OFF_PIN = 7; // Pozitia 4 a comutatorului

// ============================================================================
 // 2. CONFIGURARE PROGRAM SMART (Intervale orare)
 // ============================================================================
 // Dimineata inainte de plecare: 06:30 – 07:30
(ON Continuu)
 const int MORNING_START_HOUR = 6;
 const int MORNING_START_MIN = 30;
 const int MORNING_END_HOUR = 7;
 const int MORNING_END_MIN = 30;

// Intoarcere de la serviciu: 17:30 – 18:30 (ON Continuu)
 const int ARRIVE_START_HOUR = 17;
 const int ARRIVE_START_MIN = 30;
 const int ARRIVE_END_HOUR = 18;
 const int ARRIVE_END_MIN = 30;

// Inainte de culcare: 21:30 – 22:30 (ON Continuu)
 const int BEDTIME_START_HOUR = 21;
 const int BEDTIME_START_MIN = 30;
 const int BEDTIME_END_HOUR = 22;
 const int BEDTIME_END_MIN = 30;

// Ciclu de noapte: 22:30 – 06:30 (15 min ON / 45 min OFF la fiecare ora)
 const int NIGHT_START_HOUR = 22;
 const int NIGHT_START_MIN = 30;
 const int NIGHT_END_HOUR = 6;
 const int NIGHT_END_MIN = 30;

// ============================================================================
 // 3. LOGICA PRINCIPALA A SISTEMULUI
 // ============================================================================
 RTC_DS3231 rtc;

void setup() {
 pinMode(RELAY_PIN, OUTPUT);
 digitalWrite(RELAY_PIN, LOW); // Stare initiala sigura (Releu decuplat)

// Activare rezistente interne pull-up pentru citirea comutatorului
 pinMode(MODE_POWER_PIN, INPUT_PULLUP);
 pinMode(MODE_ECO_PIN, INPUT_PULLUP);
 pinMode(MODE_SMART_PIN, INPUT_PULLUP);
 pinMode(MODE_OFF_PIN, INPUT_PULLUP);

if (!rtc.begin()) {
 while (1); // Oprire de siguranta in cazul unei erori I2C
 }
 }

void loop() {
 DateTime now = rtc.now();
 int hour = now.hour();
 int min = now.minute();

bool heatingOn = false;

// Evaluare mod comutator (Active-LOW datorita rezistentelor INPUT_PULLUP)
 if (digitalRead(MODE_POWER_PIN) == LOW) {
 // MODUL 1: POWER (Incalzire continua pe intervalul de noapte/seara 20:00 – 02:00)
 if (hour >= 20 || hour < 2) { heatingOn = true; } else {
heatingOn = false; } } else if (digitalRead(MODE_ECO_PIN) == LOW) { // MODUL 2: ECO (Functionare 30 min ON / 30 min OFF pe intervalul 13:00 – 18:00) if (hour >= 13 && hour < 18) {
 heatingOn = (min < 30); } else { heatingOn = false; } } else if (digitalRea
d(MODE_SMART_PIN) == LOW) { // MODUL 3: SMART (Programul personalizat pe ferestre orare) // A. Dimineata (06:30 – 07:30) if ((hour == MORNING_START_HOUR && min >= MORNING_START_MIN) ||
 (hour == MORNING_END_HOUR && min < MORNING_END_MIN)) { heatingOn = true
; } // B. Intoarcere de la serviciu (17:30 – 18:30) else if ((hour == ARRIVE_START_HOUR && min >= ARRIVE_START_MIN) ||
 (hour == ARRIVE_END_HOUR && min < ARRIVE_END_MIN)) { heatingOn = true; } // C. Inainte de culcare (21:30 – 22:30) else if ((hour == BEDTI
ME_START_HOUR && min >= BEDTIME_START_MIN) ||
 (hour == BEDTIME_END_HOUR && min < BEDTIME_END_MIN)) { heatingOn = true; } // D. Cicluri nocturne de intretinere (22:30 – 06:30) else if ((hour == NIGHT_START_HOUR && min >= NIGHT_START_MIN) ||
 (hour > NIGHT_ST
ART_HOUR) ||
 (hour < NIGHT_END_HOUR) ||
 (hour == NIGHT_END_HOUR && min < NIGHT_END_MIN)) {
 // Regula: Activ doar in primele 15 minute ale fiecarei ore din interval
 heatingOn = (min < 15);
 }
 // E. Standby in restul orelor
 else {
 heatingOn = false;
 }
 }
 else
if (digitalRead(MODE_OFF_PIN) == LOW) {
 // MODUL 4: SYSTEM OFF (Modul de Vara – Centrala oprita permanent)
 heatingOn = false;
 }
 else {
 // Masura de protectie cand comutatorul se afla fizic intre pozitii
 heatingOn = false;
 }

// Comandare releu (HIGH comanda pornirea centralei)
 digitalWrite(RELAY_PIN, heatingOn ? HIGH : LOW);

// Interval de reverificare a starii: la fiecare 5 secunde
 delay(5000);
 }

7. Concluzii

Acest montaj oferă o alternativă simplă, robustă și extrem de rentabilă pentru gestionarea încălzirii locuinței. Așa cum menționam mai sus, există un aspect tehnic care daca se implementeaza transformă această schemă într-una extrem de economică. Dacă ai identificat elementul ce trebuie modificat sau vrei să împărtășești ideile tale de optimizare, lasă un comentariu mai jos!

Subscribe
Notify of
0 Comments
Oldest
Newest Most Voted
back to top
0
Would love your thoughts, please comment.x
()
x