Obsah:

Termostat založený na Arduine: 6 krokov
Termostat založený na Arduine: 6 krokov

Video: Termostat založený na Arduine: 6 krokov

Video: Termostat založený na Arduine: 6 krokov
Video: STC-3028 Thermostat with Heat and Humidity Fully Explained and demonstrated 2024, November
Anonim
Termostat na báze Arduina
Termostat na báze Arduina
Termostat na báze Arduina
Termostat na báze Arduina
Termostat na báze Arduina
Termostat na báze Arduina

Tentokrát budeme stavať termostat na báze Arduina, teplotného senzora a relé. Nájdete na github

Krok 1: Konfigurácia

Konfigurácia
Konfigurácia

Celá konfigurácia je uložená v Config.h. PIN môžete ovládať pomocou relé, teploty čítania, prahových hodnôt alebo časovania.

Krok 2: Konfigurácia relé

Predpokladajme, že by sme chceli mať 3 relé:

  • ID: 0, PIN: 1, Nastavená teplota: 20
  • ID: 1, PIN: 10, Nastavená teplota: 30
  • ID: 2, PIN: 11, Nastavená teplota: 40

Najprv sa musíte uistiť, že vami zvolený PIN ešte nie je zadaný. Všetky piny nájdete v Config.h, sú definované premennými začínajúcimi na DIG_PIN.

Musíte upraviť Config.h a nakonfigurovať PINy, prahové hodnoty a počet relé. Niektoré vlastnosti už existujú, takže ich musíte len upraviť.

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;

Teraz musíme nastaviť relé a ovládač, to sa deje v programe RelayDriver.cpp

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

Krok 3: Regulátor hysterézie

Je to ten, ktorý bol vybraný v príklade vyššie, má niekoľko ďalších konfigurácií:

konštantná uint32_t RELAY_DELAY_AFTER_SWITCH_MS = 300000; // 5 minutesconst static uint32_t RHC_RELAY_MIN_SWITCH_MS = 3600000;

RELAY_DELAY_AFTER_SWITCH_MS poskytuje čas čakania na prepnutie ďalšieho relé. Predstavte si, že konfigurácia z nášho príkladu by začala fungovať v 40 -stupňovom prostredí. Výsledkom by bolo povolenie všetkých troch relé súčasne. To môže nakoniec viesť k vysokej spotrebe energie - v závislosti od toho, čo ovládate, napríklad elektrický motor spotrebuje počas štartu viac energie. V našom prípade majú spínacie relé nasledujúci tok: prvé relé rozbehne, počkajte 5 minút, druhé zapne, počkáte 5 minút, tretie zapne.

RHC_RELAY_MIN_SWITCH_MS definuje hysterézu, je to minimálna frekvencia pre konkrétne relé na zmenu stavu. Akonáhle je zapnutý, zostane zapnutý ešte najmenej toto časové obdobie, pričom ignoruje zmeny teploty. Je tiché, že ovládate elektrické motory, pretože každý spínač má negatívny vplyv na živý čas.

Krok 4: PID regulátor

PID regulátor
PID regulátor
PID regulátor
PID regulátor

Toto je pokročilá téma. Implementácia takéhoto ovládača je jednoduchá úloha, nájsť správne nastavenia amplitúdy je iný príbeh.

Aby ste mohli používať PID regulátor, musíš zmeniť Ako obvykle ich nájdete v Config.h

Implementoval som jednoduchý simulátor v Jave, aby bolo možné vizualizovať výsledky. Nachádza sa v priečinku: pidsimulator. Nasledujú simulácie pre dva regulátory PID a P. PID nie je úplne stabilný, pretože som na nájdenie správnych hodnôt nepoužil žiadny sofistikovaný algoritmus.

Na oboch grafoch je požadovaná teplota nastavená na 30 (modrá). Aktuálna teplota indikuje čítací riadok. Relé má dva stavy ZAP a VYP. Keď je povolená, teplota klesne o 1,5, keď je deaktivovaná, zvýši sa o 0,5.

Krok 5: Zbernica správ

Zbernica správ
Zbernica správ
Zbernica správ
Zbernica správ
Zbernica správ
Zbernica správ
Zbernica správ
Zbernica správ

Rôzne softvérové moduly musia medzi sebou komunikovať, dúfajme, že nie oboma spôsobmi;)

Napríklad:

  • štatistický modul musí vedieť, kedy sa konkrétne relé zapína a vypína,
  • stlačením tlačidla sa zmení obsah zobrazenia a tiež sa musia pozastaviť služby, ktoré by spotrebovali mnoho cyklov CPU, napríklad čítanie teploty zo senzora,
  • po určitom čase sa hodnoty teploty musia obnoviť,
  • a tak ďalej….

Každý modul je pripojený k zbernici správ a môže sa registrovať pre konkrétne udalosti a môže vytvárať akékoľvek udalosti (prvý diagram).

Na druhom diagrame vidíme tok udalostí po stlačení tlačidla.

Niektoré komponenty majú niektoré úlohy, než je potrebné vykonávať pravidelne. Ich zodpovedajúce metódy by sme mohli nazvať z hlavnej slučky, pretože máme zbernicu správ, je potrebná iba na šírenie správnej udalosti (tretí diagram)

Krok 6: Libs

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

Odporúča: