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

Sluit uw centrale verwarming aan op Arduino

Componenten en benodigdheden

Arduino UNO
× 1
Arduino OpenTherm-schild
× 1
24V voeding
× 1

Over dit project

Heb je je ooit afgevraagd wanneer en waarom je cv-ketel draait en je huis verwarmt? Wilt u uw verwarmingssysteem automatiseren met Arduino? Het OpenTherm-schild is voor jou ontworpen. Hiermee kunt u uw OpenTherm-ketel bewaken en besturen met Arduino.

Achtergrond

Vorig jaar wilde ik mijn gasgestookte ketel combineren met een haardregelaar. Mijn BAXI-ketel en thermostaat zijn behoorlijk slim, dus ik wilde natuurlijk de ketel uitbreiden om ook de haard te kunnen bedienen. Ik had genoeg van al die dure officiële BAXI-extensies waarmee ik dat kon doen.

Dus bouwde ik voor mezelf een OpenTherm-gateway waarmee ik de communicatie tussen thermostaat en boiler kon onderscheppen en een algoritme kon plaatsen dat ofwel een boiler zou aansteken of warmte van de haard zou gebruiken - [meer over de regelaar].

Omdat er veel mensen waren die iets soortgelijks wilden, heb ik besloten een module te maken - Arduino-schild - waarmee iedereen heel gemakkelijk zijn huisverwarming kan regelen.

Waar is het schild goed voor?

  • Maak je eigen Arduino-gebaseerde ketel met een bestaande OpenTherm thermostaat. Het is zeer onwaarschijnlijk dat iemand dat zou doen, maar het is mogelijk.
  • Gebruik het schild om je eigen Arduino-gebaseerde thermostaat te bouwen om uw cv-ketel en woningverwarming volledig over te nemen. Perfect voor domotica. Deze applicatie vereist alleen een externe 5V voeding.
  • Plaats een OpenTherm-afscherming in de leidingen tussen de bestaande ketel en thermostaat en creëer een monitor om te zien wanneer en hoe de ketel je huis verwarmt. Je kunt zelfs de communicatie onderscheppen om bijvoorbeeld de verwarming draadloos aan te sturen.
  • OpenTherm maakt het mogelijk om een ​​man-in-the-middle (gateway) te hebben ) apparaat dat communiceert met zowel de ketel als de thermostaat. Zo heb ik het schild gebruikt om een ​​OpenTherm-regelaar te maken.

Beschikbare gegevens en opdrachten

  • kamertemperatuur
  • instelpunt kamertemperatuur
  • temperatuur verwarmingswater
  • temperatuur retourwater
  • temperatuur huishoudelijk warm water*
  • druk huishoudelijk warm water*
  • debiet huishoudelijk warm water*
  • buitentemperatuur*
  • ketelstatus (in bedrijf / niet in bedrijf / fout)
  • modulatieniveau
  • uitlaattemperatuur*
  • statistieken hoe lang de ketel in bedrijf was

* let op:deze zijn alleen beschikbaar als uw ketel is uitgerust met de benodigde accessoires

Het schild bouwen

Het elektronische circuit is gebaseerd op het OpenTherm-gatewayproject dat gebruikmaakt van een PIC-microcontroller. Ik heb het aangepast voor de Arduino en een mooie Arduino UNO-compatibele lay-out gemaakt.

U kunt het bovenstaande schema en Gerber-bestanden gebruiken om het schild zelf te maken. Ik maak mijn boards door PCBWay - PCB-prototype op de gemakkelijke manier. Je kunt ze binnen een week deze mooie blauwe schoonheden laten maken en verzenden. Het blauwe soldeermasker is dezelfde prijs als het basisgroen! Ik hou ook van hun klantenservice, niets is een probleem. Of je kunt een voorverpakt doe-het-zelfpakket bestellen.

Het schild gebruiken om een ​​thermostaat te maken

In het eerste voorbeeld ziet u hoe u het schild kunt gebruiken om uw eigen aangepaste thermostaat te maken. Wat je nodig hebt:

  • OpenTherm-ketel
  • Arduino UNO, WeMos D1 of een Arduino UNO-compatibel bord. De enige vereiste voor het bord is de ondersteuning van pin-interrupt op pin 2 en 3.
  • 5V voeding. In deze opstelling is geen 24V-voeding nodig, omdat deze alleen nodig is als je communiceert met een thermostaat.

Sluit je ketel aan met Arduino OpenTherm shield zoals op de afbeelding hierboven te zien is, bevestig de shield op je Arduino en je kunt beginnen met programmeren. Arduino OpenTherm IO-bibliotheek bevat het volgende voorbeeld om u te laten zien hoe u met de ketel communiceert.

void loop() { if (OPENTHERM::isIdle()) { message.type =OT_MSGTYPE_READ_DATA; message.id =OT_MSGID_SLAVE_CONFIG; bericht.waardeHB =0; bericht.waardeLB =0; Serial.print("-> "); OPENTHERM::printToSerial(bericht); Serieel.println(); OPENTHERM::send(BOILER_OUT, bericht); // stuur bericht naar boiler } else if (OPENTHERM::isSent()) { OPENTHERM::listen(BOILER_IN, 800); // wacht tot de boiler reageert } else if (OPENTHERM::getMessage(message)) { // boiler reageerde OPENTHERM::stop(); Serial.print("<- "); OPENTHERM::printToSerial(bericht); Serieel.println(); Serieel.println(); vertraging (100); // minimale vertraging voor de volgende communicatie } else if (OPENTHERM::isError()) { OPENTHERM::stop(); Serial.println ("<- Time-out"); Serieel.println(); }} 

Controleer eerst of er geen wachtend commando is met OPENTHERM::isIdle . Zo niet, dan kun je de volgende sturen. In dit voorbeeld vraagt ​​u de slave-configuratievlaggen aan. Als het commando succesvol is verzonden, moet je beginnen met luisteren naar een antwoord van de ketel met OPENTHERM::listen telefoongesprek. Methode OPENTHERM::getMessage zal true retourneren zodra er een wachtend antwoord van de slave is en als er iets mis is gegaan of een time-out is opgetreden method OPENTHERM::isError waar terugkeren. De bibliotheek bevat OpenTherm-berichtenstructuur die gedecodeerde gegevens van het protocol bevat, zodat u zich helemaal geen zorgen hoeft te maken over de indelingen. Bekijk de broncode, deze is goed gedocumenteerd. Alle soorten berichten worden vermeld in de constanten of u kunt de OpenTherm-documentatie raadplegen.

struct OpenthermData { bytetype; byte-ID; bytewaardeHB; bytewaardeLB; zweven f88(); void f88 (floatwaarde); uint16_t u16(); ongeldig u16 (uint16_t-waarde); int16_t s16(); void s16(int16_t waarde);} 

Het schild gebruiken om een ​​monitor, gateway of regelaar te maken

In het tweede voorbeeld zie je hoe je een man-in-the-middle-apparaat aansluit op de OpenTherm-bus om de ketel en thermostaat te bewaken of hun communicatie te onderscheppen. Wat je nodig hebt:

  • OpenTherm-thermostaat
  • 24V 500mA voeding

Sluit de afscherming aan op de bus tussen de ketel en de thermostaat zoals op de afbeelding hierboven. Je kunt zien dat het de bus tussen deze twee apparaten onderbreekt. Nu is je communicatie verbroken, tenzij je een gateway-software uploadt naar je Arduino die commando's en antwoorden van de thermostaat naar de ketel zal doorsturen en vice versa. Wederom is er een uitstekend voorbeeld in de Arduino OpenTherm IO-bibliotheek.

void loop() { if (mode ==MODE_LISTEN_MASTER) { if (OPENTHERM::isSent() || OPENTHERM::isIdle() || OPENTHERM::isError()) { OPENTHERM::listen( THERMOSTAT_IN); } else if (OPENTHERM::getMessage(message)) { Serial.print("-> "); OPENTHERM::printToSerial(bericht); Serieel.println(); OPENTHERM::send(BOILER_OUT, bericht); // stuur bericht door naar ketelmodus =MODE_LISTEN_SLAVE; } } else if (mode ==MODE_LISTEN_SLAVE) { if (OPENTHERM::isSent()) { OPENTHERM::listen(BOILER_IN, 800); // antwoord moet binnen 800 ms worden teruggestuurd } else if (OPENTHERM::getMessage(message)) { Serial.print("<- "); OPENTHERM::printToSerial(bericht); Serieel.println(); Serieel.println(); OPENTHERM::send(THERMOSTAT_OUT, bericht); // stuur bericht terug naar thermostaatmodus =MODE_LISTEN_MASTER; } else if (OPENTHERM::isError()) { mode =MODE_LISTEN_MASTER; Serial.println ("<- Time-out"); Serieel.println(); } }} 

De gateway begint gewoon te luisteren naar thermostaatcommando's. Als er een verzoek wordt gedetecteerd, zal het het ontleden en doorsturen naar de ketel. Gateway zal nu in plaats daarvan gaan luisteren naar het antwoord van de ketel. Als er een antwoord binnen 800 ms wordt ontvangen, stuurt de gateway het antwoord terug naar de thermostaat. Zowel thermostaat als boiler zullen nooit weten dat er iets extra's tussen zit. Zoals je ziet is er voldoende ruimte om je eigen code te schrijven die de berichten kan opvangen en er nuttige informatie uit kan lezen (status, temperaturen, druk, statistieken,...). Je kunt zelfs verzoeken of antwoorden die je niet leuk vindt negeren of weggooien.

Zoals je kunt zien, is het heel eenvoudig om met je slimme verwarmingssysteem te communiceren en het nog slimmer te maken. In het volgende artikel zal ik je meer praktisch gebruik van deze hardware in mijn OpenTherm-regelaar laten zien.

Code

Opentherm IO-bibliotheek voor Arduino
https://github.com/jpraus/arduino-opentherm

Schema's


Productieproces

  1. Mijn cv-ketel bewaken
  2. Een draadloos sensornetwerk in uw huis bouwen
  3. Sluit een sensor aan op je Raspberry Pi om je te waarschuwen wanneer er schadelijke gassen in de buurt zijn!
  4. Bouw uw internetgestuurde videostreamingrobot met Arduino en Raspberry Pi
  5. Hoe u GrabCAD Print verbindt met uw Stratasys 3D-printer
  6. Tips voor het verbeteren van het rendement van stookolie voor uw bedrijf
  7. Schakel Alexa Control in op je plafondventilator
  8. Arduino Spybot
  9. FlickMote
  10. Voeg geanimeerde (tent)verlichting toe aan uw projecten
  11. Ken de temperatuur van uw huis overal met Arduino Cloud!