Tartalomjegyzék:

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

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

Videó: Arduino alapú termosztát: 6 lépés
Videó: Control Position and Speed of Stepper motor with L298N module using Arduino 2024, Július
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: