Turinys:
- 1 žingsnis: konfigūravimas
- 2 veiksmas: relių konfigūravimas
- 3 žingsnis: histerezės valdiklis
- 4 žingsnis: PID valdiklis
- 5 veiksmas: pranešimų magistralė
- 6 žingsnis: Libs
Video: Termostatas, pagrįstas „Arduino“: 6 žingsniai
2024 Autorius: John Day | [email protected]. Paskutinį kartą keistas: 2024-01-30 10:48
Šį kartą mes sukursime termostatą, pagrįstą „Arduino“, temperatūros jutikliu ir relė. Galite rasti „github“
1 žingsnis: konfigūravimas
Visa konfigūracija saugoma Config.h. Galite pakeisti PIN kodus, valdančius relės, skaitymo temperatūrą, slenksčius ar laiką.
2 veiksmas: relių konfigūravimas
Tarkime, kad norėtume turėti 3 relės:
- ID: 0, PIN: 1, Temperatūros nuostata: 20
- ID: 1, PIN: 10, Temperatūros nustatyta vertė: 30
- ID: 2, PIN: 11, Temperatūros nustatyta vertė: 40
Pirmiausia turite įsitikinti, kad pasirinktas PIN kodas dar nėra paimtas. Visus kaiščius galima rasti „Config.h“, juos apibrėžia kintamieji, prasidedantys DIG_PIN.
Turite redaguoti Config.h ir sukonfigūruoti PIN kodus, slenksčius ir relių kiekį. Akivaizdu, kad kai kurios savybės jau egzistuoja, todėl turite jas tiesiog redaguoti.
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;
Dabar turime nustatyti relės ir valdiklį, tai atsitinka „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
3 žingsnis: histerezės valdiklis
Tai tas, kuris pasirinktas aukščiau pateiktame pavyzdyje, jis turi keletą papildomų konfigūracijų:
const static uint32_t RELAY_DELAY_AFTER_SWITCH_MS = 300000; // 5 minutesstatinis statinis uint32_t RHC_RELAY_MIN_SWITCH_MS = 3600000;
RELAY_DELAY_AFTER_SWITCH_MS suteikia laukimo laiko, kol bus perjungta kita relė. Įsivaizduokite, kad konfigūracija iš mūsų pavyzdžio pradėtų veikti 40 laipsnių aplinkoje. Dėl to visos trys relės būtų įjungtos vienu metu. Galų gale tai gali lemti dideles energijos sąnaudas - priklausomai nuo to, ką valdote, pavyzdžiui, elektrinis variklis paleidžia daugiau energijos. Mūsų atveju perjungimo relės turi tokį srautą: pirmoji relė eina, palaukite 5 minutes, antra įsijungia, palaukite 5 minutes, trečia įsijungia.
RHC_RELAY_MIN_SWITCH_MS apibrėžia histerezę, tai yra minimalus dažnis, kuriuo tam tikra relė gali pakeisti savo būseną. Įjungus, jis liks veikti mažiausiai tokį laiką, nepaisydamas temperatūros pokyčių. Tai tylu, nes jūs valdote elektros variklius, nes kiekvienas jungiklis turi neigiamos įtakos veikimo laikui.
4 žingsnis: PID valdiklis
Tai pažangi tema. Įdiegti tokį valdiklį yra paprasta užduotis, rasti tinkamus amplitudės nustatymus yra kita istorija.
Norėdami naudoti PID valdiklį, turite pakeisti „initRelayHysteresisController“(…..) į „initRelayPiDController“(…) ir jums reikia rasti tinkamus jo nustatymus. Kaip įprasta, juos rasite Config.h
„Java“įdiegiau paprastą simuliatorių, kad būtų galima vizualizuoti rezultatus. Jį galima rasti aplanke: pidsimulator. Žemiau galite pamatyti dviejų PID ir P valdiklių modeliavimą. PID nėra visiškai stabilus, nes netaikiau jokio sudėtingo algoritmo tinkamoms vertėms rasti.
Abiejuose sklypuose reikiama temperatūra yra 30 (mėlyna). Dabartinė temperatūra rodo skaitymo eilutę. Relė turi dvi būsenas: ON ir OFF. Įjungus, temperatūra nukrinta 1,5, o išjungus - 0,5.
5 veiksmas: pranešimų magistralė
Skirtingi programinės įrangos moduliai turi bendrauti tarpusavyje, tikiuosi ne abiem būdais;)
Pavyzdžiui:
- statistikos modulis turi žinoti, kada įjungiama ir išjungiama tam tikra relė,
- paspaudus mygtuką, turi būti pakeistas ekrano turinys, taip pat turi būti sustabdytos paslaugos, kurios sunaudotų daug procesoriaus ciklų, pvz., temperatūros nuskaitymas iš jutiklio,
- po kurio laiko temperatūra turi būti atnaujinta,
- ir taip toliau….
Kiekvienas modulis yra prijungtas prie pranešimų magistralės ir gali registruotis tam tikriems įvykiams ir gali sukurti bet kokius įvykius (pirmoji diagrama).
Antroje diagramoje matome įvykių srautą paspaudus mygtuką.
Kai kurie komponentai atlieka tam tikras užduotis, nei reikia atlikti periodiškai. Mes galėtume paskambinti atitinkamais jų metodais iš pagrindinės kilpos, nes mes turime pranešimų magistralę, tik reikia skleisti teisingą įvykį (trečioji diagrama)
6 žingsnis: Libs
- https://github.com/maciejmiklas/Thermostat
- https://github.com/milesburton/Arduino-Temperature…
- https://github.com/maciejmiklas/ArdLog.git
Rekomenduojamas:
Kambario termostatas - „Arduino + Ethernet“: 3 žingsniai
Kambario termostatas-„Arduino + Ethernet“: Kalbant apie techninę įrangą, projekte naudojami: „Arduino Uno“/ „Mega 2560 Ethernet“skydas „Wiznet W5100“/ „Ethernet“modulis „Wiznet W5200-W5500 DS18B20“temperatūros jutiklis ant „OneWire“magistralės relės SRD-5VDC-SL-C, naudojamas katilui perjungimas
Išmanusis termostatas ESP8266: 6 žingsniai (su nuotraukomis)
Išmanusis termostatas ESP8266: Bienvenue sur ce nouvel straipsnis. On se retrouve aujourd'hui pour un projet que j'ai réalisé durant tout ce temps libre que m'a offert le encinement. Siūlome pasiūlyti vieną, bet ne vieną efektyvią déménager dans une vieille maison et l
„HestiaPi Smart“termostatas FR4: 3 žingsniai
„HestiaPi Smart Thermostat FR4“dėklas: „HestiaPi“yra atviras išmanusis termostatas, skirtas jūsų namams. Jis veikia „OpenHAB“įrenginyje „Raspberry Pi Zero W“, jame yra jutiklinis ekranas, temperatūros/drėgmės jutiklis ir relės, kurios maitinamos tiesiogiai iš esamos jūsų namų elektros instaliacijos. buvo paleistas
„Arduino Kombucha“termostatas: 3 žingsniai (su nuotraukomis)
„Arduino Kombucha“termostatas: Aš visada mylėjau „Kombucha“, tačiau parduotuvėje jis toks brangus. Maždaug 4 USD už 12 oz. niekaip negalėčiau sau leisti jo gerti tiek, kiek norėjau. Aš pradėjau gaminti savo kombucha ir supratau, kad tai nebuvo taip sunku ir nereikalavo
„Arduino“HVAC servo termostatas/valdiklis: 5 žingsniai (su paveikslėliais)
„Arduino“HVAC servo termostatas/valdiklis: Sveiki atvykę į mano „žalią“instrukciją! Aš jums parodysiu, kaip naudoti „Arduino“, du servo variklius, temperatūros jutiklį ir šiek tiek metalo (arba medžio), kad būtų sukurtas skaitmeninis termostatas per sieninį ŠVOK įrenginį. Pasak CB Richard Ellis (pagrindinis tikrasis