Sisukord:
- Samm: seadistamine
- 2. samm: releede seadistamine
- 3. samm: hüstereesikontroller
- 4. samm: PID -kontroller
- 5. samm: sõnumibuss
- Samm 6: Libid
Video: Arduino baasil valmistatud termostaat: 6 sammu
2024 Autor: John Day | [email protected]. Viimati modifitseeritud: 2024-01-30 08:49
Seekord ehitame termostaadi, mis põhineb Arduino, temperatuurianduril ja releel. Leiad githubist
Samm: seadistamine
Kogu konfiguratsioon on salvestatud Config.h. Saate muuta relee, lugemistemperatuuri, künniseid või ajastusi juhtivaid PIN -koode.
2. samm: releede seadistamine
Oletame, et sooviksime kolme releed:
- ID: 0, PIN: 1, temperatuuri seadepunkt: 20
- ID: 1, PIN: 10, temperatuuri seadepunkt: 30
- ID: 2, PIN: 11, Temperatuuri seadeväärtus: 40
Kõigepealt peate veenduma, et teie valitud PIN -koodi pole juba võetud. Kõik tihvtid leiate Config.h -st, need on määratletud muutujatega, mis algavad tähega DIG_PIN.
Peate muutma Config.h -d ja konfigureerima PIN -koodid, künnised ja releede hulga. Ilmselt on mõned atribuudid juba olemas, seega peate neid lihtsalt muutma.
const staatiline uint8_t DIG_PIN_RELAY_0 = 1; const staatiline uint8_t DIG_PIN_RELAY_1 = 10; const staatiline uint8_t DIG_PIN_RELAY_2 = 11;
const staatiline uint8_t RELAYS_AMOUNT = 3;
const staatiline int16_t RELAY_TEMP_SET_POINT_0 = 20;
const staatiline int16_t RELAY_TEMP_SET_POINT_1 = 30; const staatiline int16_t RELAY_TEMP_SET_POINT_2 = 40;
Nüüd peame seadistama releed ja kontrolleri, see juhtub saidil 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. samm: hüstereesikontroller
See on ülaltoodud näites valitud, sellel on vähe lisakonfiguratsioone:
const staatiline uint32_t RELAY_DELAY_AFTER_SWITCH_MS = 300000; // 5 minuti staatiline uint32_t RHC_RELAY_MIN_SWITCH_MS = 3600000;
RELAY_DELAY_AFTER_SWITCH_MS annab järgmise relee lülitamiseks ooteaja. Kujutage ette, et meie näite konfiguratsioon hakkaks töötama 40 -kraadises keskkonnas. Selle tulemusel lubatakse kõik kolm releed korraga. See võib lõppkokkuvõttes kaasa tuua suure energiatarbimise - olenevalt sellest, mida te kontrollite, tarbib näiteks elektrimootor käivitamise ajal rohkem energiat. Meie puhul on lülitusreleedel järgmine vool: esimene relee läheb, oodake 5 minutit, teine läheb edasi, oodake 5 minutit, kolmas läheb edasi.
RHC_RELAY_MIN_SWITCH_MS määratleb hüsterees, see on konkreetse relee oleku muutmise minimaalne sagedus. Kui see on sisse lülitatud, jääb see vähemalt sellel ajavahemikul sisselülitatuks, eirates temperatuurimuutusi. See on vaikne, kui kasutate elektrimootoreid, kuna igal lülitil on negatiivne mõju reaalajas toimuvale ajale.
4. samm: PID -kontroller
See on arenenud teema. Sellise kontrolleri rakendamine on lihtne ülesanne, õigete amplituudiseadete leidmine on teine lugu.
PID -kontrolleri kasutamiseks peate muutma initRelayHysteresisController (…..) väärtuseks initRelayPiDController (…) ja leidma selle jaoks õiged seaded. Nagu tavaliselt, leiate need Config.h -st
Olen rakendanud Java -s lihtsa simulaatori, nii et tulemusi oleks võimalik visualiseerida. Selle võib leida kaustast: pidsimulator. Allpool näete kahe kontrolleri PID a P simulatsioone. PID ei ole täiesti stabiilne, kuna ma ei rakendanud õigete väärtuste leidmiseks ühtegi keerukat algoritmi.
Mõlemal proovitükil on nõutav temperatuur 30 (sinine). Praegune temperatuur näitab lugemisjoont. Releel on kaks olekut ON ja OFF. Kui see on lubatud, langeb temperatuur 1,5 võrra, väljalülitamisel tõuseb see 0,5 võrra.
5. samm: sõnumibuss
Erinevad tarkvaramoodulid peavad omavahel suhtlema, loodetavasti mitte mõlemal viisil;)
Näiteks:
- statistikamoodul peab teadma, millal konkreetne relee sisse ja välja lülitub,
- nupu vajutamine peab muutma kuvasisu ja peatama ka teenused, mis kulutaksid palju protsessoritsükleid, näiteks temperatuuri lugemine andurilt,
- mõne aja pärast tuleb temperatuurinäitu uuendada,
- ja nii edasi….
Iga moodul on ühendatud sõnumibussiga ja saab registreeruda teatud sündmuste jaoks ning toota mis tahes sündmusi (esimene skeem).
Teisel skeemil näeme nupu vajutamisel sündmuste voogu.
Mõnel komponendil on teatud ülesanded, kui seda tuleb perioodiliselt täita. Võiksime kutsuda nende vastavaid meetodeid põhiahelast, kuna meil on sõnumibuss, on vaja ainult õiget sündmust levitada (kolmas skeem)
Samm 6: Libid
- https://github.com/maciejmiklas/Thermostat
- https://github.com/milesburton/Arduino-Temperature…
- https://github.com/maciejmiklas/ArdLog.git
Soovitan:
DIY Lab - HD -tsentrifuug Arduino baasil: 3 sammu
DIY Lab - HD Centrifuge Arduino Põhineb: PT // Construimos uma centrífuga utilizando um HD velho com control of velocidade baseado em Arduino. ET // Ehitasime tsentrifuugi, kasutades vana HD -d koos kiiruse reguleerimisega, mis põhineb Arduino -l
Kana ukseuks - Arduino baasil: 5 sammu (piltidega)
Chicken Coop Door - Arduino Põhineb: kõigepealt on minu emakeel hollandi keel, nii et vabandage võimalike kirjavigade pärast. Kui midagi pole selge, jätke kommentaaridesse sõnum. See on minu esimene arduino projekt. Kuna mu naine oli väsinud iga päev käsitsi avama kapiukse
Raudtee automaatne skeem, mis sõidab kahe rongiga (V2.0) - Arduino baasil: 15 sammu (piltidega)
Raudtee automaatne skeem, mis sõidab kahe rongiga (V2.0) | Arduino baasil: Raudteemudelite paigutuse automatiseerimine Arduino mikrokontrollerite abil on suurepärane võimalus ühendada mikrokontrollerid, programmeerimine ja mudeli raudtee ühendamine üheks hobiks. Saadaval on hulk projekte rongi iseseisva sõitmise kohta raudteemudelil
Dirt Odavad mustuse-O-meeter-$ 9 Arduino baasil kuuldav kõrgusmõõtja: 4 sammu (piltidega)
Dirt Odav Dirt-O-meeter-9 dollarit Arduino baasil kuuldav kõrgusmõõtja: Dytters (A.K.A kuuldavad kõrgusmõõturid) päästis langevarjurite elu nii paljudeks aastateks. Nüüd säästab ka Audible Abby neile raha. Basic Dyttersil on neli häiret, üks ülespoole ja kolm allapoole. Lennukisõidul peavad langevarjurid teadma, millal
Arduino baasil põhinev intelligentne Romote auto: 5 sammu
Intelligentne Romote auto, mis põhineb Arduino'l: see projekt põhineb nutika auto valmistamiseks Arduino UNO arendusplaadil. Autol on Bluetooth-juhtmevaba juhtimine, takistuste vältimine, helisignaal ja muud funktsioonid ning see on nelikveoline auto, mida on lihtne pöörata