Arduino alapú termosztát: 6 lépés
Arduino alapú termosztát: 6 lépés
Anonim
Arduino alapú termosztát
Arduino alapú termosztát
Arduino alapú termosztát
Arduino alapú termosztát
Arduino alapú termosztát
Arduino alapú termosztát

Ezúttal egy termosztátot építünk az Arduino, a hőmérséklet -érzékelő és a relé alapján. Megtalálható a github -on

1. lépés: Konfiguráció

Konfiguráció
Konfiguráció

A teljes konfigurációt a Config.h tárolja. Módosíthatja a reléket, az olvasási hőmérsékletet, a küszöbértékeket vagy az időzítéseket vezérlő PIN -kódokat.

2. lépés: A relék konfigurálása

Tegyük fel, hogy 3 relét szeretnénk:

  • ID: 0, PIN: 1, Hőmérséklet alapjel: 20
  • ID: 1, PIN: 10, Hőmérséklet alapjel: 30
  • ID: 2, PIN: 11, Hőmérséklet alapjel: 40

Először győződjön meg arról, hogy a választott PIN -kódot még nem vette fel. Minden csap megtalálható a Config.h -ban, ezeket a DIG_PIN -vel kezdődő változók határozzák meg.

Módosítania kell a Config.h -t, és be kell állítania a PIN -kódokat, a küszöbértékeket és a relék mennyiségét. Nyilvánvaló, hogy néhány tulajdonság már létezik, ezért csak szerkeszteni kell őket.

const static uint8_t DIG_PIN_RELAY_0 = 1; const static uint8_t DIG_PIN_RELAY_1 = 10; const static uint8_t DIG_PIN_RELAY_2 = 11;

const static uint8_t RELAYS_AMOUNT = 3;

const static int16_t RELAY_TEMP_SET_POINT_0 = 20;

const static int16_t RELAY_TEMP_SET_POINT_1 = 30; const static int16_t RELAY_TEMP_SET_POINT_2 = 40;

Most be kell állítanunk a reléket és a vezérlőt, ez történik a RelayDriver.cpp fájlban

initRelayHysteresisController (0, DIG_PIN_RELAY_0, RELAY_TEMP_SET_POINT_0); initRelayHysteresisController (1, DIG_PIN_RELAY_1, RELAY_TEMP_SET_POINT_1); initRelayHysteresisController (2, DIG_PIN_RELAY_2, RELAY_TEMP_SET_POINT_2);

xxx

3. lépés: Hiszterézis szabályozó

Ezt választotta a fenti példában, kevés további konfigurációval rendelkezik:

const static uint32_t RELAY_DELAY_AFTER_SWITCH_MS = 300000; // 5 perces statikus uint32_t RHC_RELAY_MIN_SWITCH_MS = 3600000;

A RELAY_DELAY_AFTER_SWITCH_MS várakozási időt ad a következő relé kapcsolására. Képzelje el, hogy a példánkból származó konfiguráció 40 fokos környezetben kezd működni. Ez azt eredményezné, hogy mindhárom relé egyszerre engedélyezhető. Ez végül nagy áramfogyasztáshoz vezethet - attól függően, hogy mit vezérel, például az elektromos motor több energiát fogyaszt az indítás során. Esetünkben a kapcsolórelék a következő áramlást mutatják: az első relé megy, várjon 5 percet, a második megy tovább, várjon 5 percet, a harmadik tovább.

Az RHC_RELAY_MIN_SWITCH_MS definiálja a hiszterézist, ez az a minimális frekvencia, amely az adott relé állapotának megváltoztatásához szükséges. Ha be van kapcsolva, akkor legalább ennyi ideig bekapcsolva marad, figyelmen kívül hagyva a hőmérsékletváltozásokat. Ez csendes, hasznos, ha elektromos motorokat vezérel, mivel minden kapcsoló negatív hatással van az élő időre.

4. lépés: PID vezérlő

PID vezérlő
PID vezérlő
PID vezérlő
PID vezérlő

Ez egy fejlett téma. Egy ilyen vezérlő megvalósítása egyszerű feladat, a megfelelő amplitúdó beállítások megtalálása más történet.

A PID vezérlő használatához az initRelayHysteresisController (…..) értéket az initRelayPiDController (…) formátumra kell cserélnie, és meg kell találnia a megfelelő beállításokat. Szokás szerint ezeket a Config.h oldalon találja

Egy egyszerű szimulátort valósítottam meg a Java -ban, hogy az eredmények láthatóvá váljanak. Ez a mappában található: pidsimulator. Az alábbiakban két PID és P kontroller szimulációit láthatja. A PID nem tökéletesen stabil, mert nem használtam kifinomult algoritmust a megfelelő értékek megtalálásához.

Mindkét parcellán a kívánt hőmérséklet 30 (kék). Az aktuális hőmérséklet az olvasási sort jelzi. A relének két állapota van BE és KI. Ha engedélyezve van, a hőmérséklet 1,5 -gyel csökken, kikapcsolt állapotban pedig 0,5 -rel emelkedik.

5. lépés: Üzenetbusz

Üzenet busz
Üzenet busz
Üzenet busz
Üzenet busz
Üzenet busz
Üzenet busz
Üzenet busz
Üzenet busz

A különböző szoftvermoduloknak kommunikálniuk kell egymással, remélhetőleg nem mindkét irányban;)

Például:

  • a statisztikai modulnak tudnia kell, hogy mikor kapcsol be és ki az adott relé,
  • egy gomb megnyomásával meg kell változtatni a kijelző tartalmát, és fel kell függesztenie azokat a szolgáltatásokat is, amelyek sok CPU -ciklust fogyasztanak, például a hőmérséklet -leolvasást az érzékelőből,
  • egy idő után meg kell újítani a hőmérsékletet,
  • stb….

Minden modul csatlakozik az Üzenetbuszhoz, és regisztrálhat bizonyos eseményekre, és bármilyen eseményt előállíthat (első diagram).

A második diagramon láthatjuk az eseményfolyamot a gomb megnyomására.

Egyes összetevőknek bizonyos feladataik vannak, mint amelyeket rendszeresen végre kell hajtani. Hívhatjuk a megfelelő módszereket a főhurokból, mivel van üzenetüzenetünk, csak a megfelelő esemény propagálására van szükség (harmadik diagram)

6. lépés: Libs

  • https://github.com/maciejmiklas/Thermostat
  • https://github.com/milesburton/Arduino-Temperature…
  • https://github.com/maciejmiklas/ArdLog.git

Ajánlott: