Industriële fabricage
Industrieel internet der dingen | Industriële materialen | Onderhoud en reparatie van apparatuur | Industriële programmering |
home  MfgRobots >> Industriële fabricage >  >> Manufacturing Technology >> Productieproces

Centrale Verwarming Slim Maken met Arduino en OpenTherm

Onderdelen en benodigdheden

Arduino UNO1
Arduino OpenTherm Shield1
24V voeding1

Over dit project

Heb je je ooit afgevraagd wanneer en waarom je ketel brandt? Wil je je verwarming automatiseren met Arduino? De OpenTherm shield is hiervoor ontworpen. Hiermee monitor en controleer je je OpenTherm-ketel met een Arduino.

Achtergrond

Vorig jaar wilde ik mijn gasketel koppelen aan een haardregelaar. Mijn BAXI-ketel en thermostaat zijn slim, dus ik wilde de ketel uitbreiden om de haard te sturen. Officiële BAXI-uitbreidingen waren te duur. Ik bouwde zelf een OpenTherm-gateway die de communicatie tussen thermostaat en ketel afving en een algoritme toevoegde om te kiezen tussen ketel of haardwarmte. Omdat veel mensen dit wilden, maakte ik een Arduino-shield voor iedereen.

Wat kan de shield?

  • Eigen ketel bouwen met een bestaande OpenTherm-thermostaat (onwaarschijnlijk maar mogelijk).
  • Eigen thermostaat bouwen om de ketel en huisverwarming volledig over te nemen. Ideaal voor home automation. Alleen 5V voeding nodig.
  • Monitor maken door de shield tussen ketel en thermostaat te plaatsen. Bekijk wanneer en hoe de ketel brandt. Communicatie onderscheppen voor draadloze besturing.
  • Gateway/Regelaar OpenTherm staat een man-in-the-middle apparaat toe dat met zowel ketel als thermostaat communiceert. Zo bouwde ik mijn OpenTherm-regelaar.

Beschikbare data en commando's

  • Kamertemperatuur
  • Temperatuurinstelling (setpoint)
  • Voertemperatuur verwarmingswater
  • Retourtemperatuur verwarmingswater
  • Tapwatertemperatuur*
  • Tapwaterdruk*
  • Tapwaterdoorstroom*
  • Buitentemperatuur*
  • Ketelstatus (draait / niet draait / fout)
  • Modulatie-niveau
  • Roooktemperatuur*
  • Statistieken: hoe lang de ketel draaide

* Alleen beschikbaar als de ketel de benodigde accessoires heeft.

De shield bouwen

De elektronica is gebaseerd op het OpenTherm Gateway project (PIC microcontroller), aangepast voor Arduino met een nette UNO-compatibele layout. Je kunt het schema en Gerber-bestanden gebruiken om de shield zelf te maken. Ik laat mijn printplaten maken bij PCBWay - snel, goedkoop, blauwe soldermasker zonder extra kosten. Of bestel een DIY-kit.

De shield gebruiken als thermostaat

Benodigd: OpenTherm-ketel, Arduino UNO (of compatibel met interrupt op pin 2 en 3), 5V voeding (geen 24V nodig).

Sluit de ketel aan op de shield, montageer de shield op de Arduino, en begin programmeren. De Arduino OpenTherm IO library bevat een voorbeeld om met de ketel te communiceren:

void loop() {
  if (OPENTHERM::isIdle()) {
    message.type = OT_MSGTYPE_READ_DATA;
    message.id = OT_MSGID_SLAVE_CONFIG;
    message.valueHB = 0;
    message.valueLB = 0;
    OPENTHERM::send(BOILER_OUT, message);
  } else if (OPENTHERM::isSent()) {
    OPENTHERM::listen(BOILER_IN, 800);
  } else if (OPENTHERM::getMessage(message)) {
    OPENTHERM::stop();
    OPENTHERM::printToSerial(message);
    delay(100);
  } else if (OPENTHERM::isError()) {
    OPENTHERM::stop();
    Serial.println("<- Timeout");
  }
}

Eerst checken of er geen lopend commando is met OPENTHERM::isIdle. Vervolgens een verzoek sturen (hier: slave configuratie vlaggen). Na succesvol zenden luisteren naar antwoord met OPENTHERM::listen. OPENTHERM::getMessage geeft true bij antwoord, OPENTHERM::isError bij timeout/fout. De library decodeert het protocol automatisch.

De shield als monitor, gateway of regelaar

Benodigd: OpenTherm-thermostaat, 24V 500mA voeding.

Plaats de shield in de bus tussen ketel en thermostaat. De communicatie is nu verbroken, tenzij je gateway-software uploadt die commando's en antwoorden doorstuurt. Er is een uitstekend voorbeeld in de library:

void loop() {
  if (mode == MODE_LISTEN_MASTER) {
    if (OPENTHERM::isSent() || OPENTHERM::isIdle() || OPENTHERM::isError()) {
      OPENTHERM::listen(THERMOSTAT_IN);
    } else if (OPENTHERM::getMessage(message)) {
      OPENTHERM::send(BOILER_OUT, message);
      mode = MODE_LISTEN_SLAVE;
    }
  } else if (mode == MODE_LISTEN_SLAVE) {
    if (OPENTHERM::isSent()) {
      OPENTHERM::listen(BOILER_IN, 800);
    } else if (OPENTHERM::getMessage(message)) {
      OPENTHERM::send(THERMOSTAT_OUT, message);
      mode = MODE_LISTEN_MASTER;
    } else if (OPENTHERM::isError()) {
      mode = MODE_LISTEN_MASTER;
    }
  }
}

De gateway luistert naar thermostaat-commando's, stuurt ze door naar de ketel, wacht op antwoord (max 800ms) en stuurt dat terug. Zowel ketel als thermostaat merken niets van de tussenpersoon. Er is ruimte voor eigen code om berichten te lezen, informatie te halen (temperaturen, status, statistieken) of commando's over te schrijven.

In een volgende artikel laat ik meer praktische toepassingen zien in mijn OpenTherm-regelaar.

Code

OpenTherm IO library voor Arduino: GitHub

Schema's

Zie het bijgevoegde schakelschema van de OpenTherm shield.

Productieproces

  1. Uw centrale verwarmingsketel monitoren met een Raspberry Pi – Hardware, software en installatiegids
  2. Een Betaalbaar Draadloos Sensornetwerk Bouwen voor Uw Huis
  3. Een TGS2600 Gassensor Aansluiten op een Raspberry Pi voor Schadelijke Gasdetectie
  4. Bouw een Internet-gecontroleerde Video-streamende Robot met Arduino & Raspberry Pi
  5. Je plafondventilator bedienen met Alexa: Stap-voor-stap handleiding
  6. Bluetooth-gecontroleerde Arduino Spybot bouwen
  7. FlickMote: Gebarengecontroleerde IR-afstandsbediening voor Slimme Huizen
  8. Dynamische Marquee LED-verlichting maken met Arduino Nano en NeoPixels
  9. Monitor Je Huistemperatuur Overal met Arduino Cloud Integratie
  10. GrabCAD Print verbinden met je Stratasys 3D-printer — stapsgewijze handleiding
  11. Bedrijfswinst Maximeren: Bewezen Strategieën Voor Verwarmingsolie-efficiëntie