Kazalo:
- 1. korak: Konfiguracija
- 2. korak: Konfiguriranje relejev
- 3. korak: Krmilnik histereze
- 4. korak: PID krmilnik
- 5. korak: vodilo sporočil
- 6. korak: Ustnice
Video: Termostat na osnovi Arduina: 6 korakov
2024 Avtor: John Day | [email protected]. Nazadnje spremenjeno: 2024-01-30 12:07
Tokrat bomo zgradili termostat na osnovi Arduina, temperaturnega senzorja in releja. Najdete ga na githubu
1. korak: Konfiguracija
Celotna konfiguracija je shranjena v Config.h. Kode PIN lahko spremenite z upravljanjem relejev, temperature branja, pragov ali časov.
2. korak: Konfiguriranje relejev
Predpostavimo, da bi radi imeli 3 releje:
- ID: 0, PIN: 1, nastavljena temperatura: 20
- ID: 1, PIN: 10, nastavljena temperatura: 30
- ID: 2, PIN: 11, nastavljena temperatura: 40
Najprej se morate prepričati, da PIN po vaši izbiri še ni sprejet. Vse zatiče lahko najdete v Config.h, opredeljeni so s spremenljivkami, ki se začnejo z DIG_PIN.
Urediti morate Config.h in konfigurirati kode PIN, pragove in količino relejev. Očitno nekatere lastnosti že obstajajo, zato jih morate le urediti.
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;
Zdaj moramo nastaviti releje in krmilnik, to se zgodi v 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. korak: Krmilnik histereze
Ta je izbran v zgornjem primeru in ima nekaj dodatnih konfiguracij:
const static uint32_t RELAY_DELAY_AFTER_SWITCH_MS = 300000; // 5 minut const static uint32_t RHC_RELAY_MIN_SWITCH_MS = 3600000;
RELAY_DELAY_AFTER_SWITCH_MS daje čakalni čas za preklop naslednjega releja. Predstavljajte si, da bi konfiguracija iz našega primera začela delovati v okolju 40 stopinj. To bi povzročilo, da bi hkrati omogočili vse tri releje. To bi lahko sčasoma privedlo do velike porabe energije - odvisno od tega, kaj nadzirate, na primer električni motor med zagonom porabi več energije. V našem primeru imajo stikalni releji naslednji tok: prvi rele gre, počakajte 5 minut, drugi se vklopi, počakajte 5 minut, tretji se vklopi.
RHC_RELAY_MIN_SWITCH_MS opredeljuje histerezo, to je najmanjša frekvenca za spreminjanje stanja določenega releja. Ko je vklopljen, bo ostal vklopljen vsaj še nekaj časa, ne da bi upošteval temperaturne spremembe. To je tiho uporabno, če upravljate elektromotorje, saj vsako stikalo negativno vpliva na čas v živo.
4. korak: PID krmilnik
To je napredna tema. Izvajanje takega krmilnika je preprosta naloga, iskanje pravih nastavitev amplitude je druga zgodba.
Če želite uporabljati krmilnik PID, morate spremeniti initRelayHysteresisController (…..) v initRelayPiDController (….) In zanj morate najti ustrezne nastavitve. Kot ponavadi jih najdete v Config.h
Uporabil sem preprost simulator v Javi, tako da je mogoče vizualizirati rezultate. Najdete ga v mapi: pidsimulator. Spodaj si lahko ogledate simulacije dveh krmilnikov PID in P. PID ni popolnoma stabilen, ker nisem uporabil nobenega sofisticiranega algoritma za iskanje pravih vrednosti.
Na obeh ploskvah je zahtevana temperatura nastavljena na 30 (modra). Trenutna temperatura označuje vrstico za branje. Rele ima dva stanja VKLOP in IZKLOP. Ko je omogočen, temperatura pade za 1,5, ko je onemogočen, se dvigne za 0,5.
5. korak: vodilo sporočil
Različni programski moduli morajo komunicirati med seboj, upam, da ne v obe smeri;)
Na primer:
- statistični modul mora vedeti, kdaj se določen rele vklopi in izklopi,
- s pritiskom na gumb morate spremeniti vsebino zaslona in ustaviti tudi storitve, ki bi porabile veliko ciklov procesorja, na primer odčitavanje temperature s senzorja,
- čez nekaj časa je treba obnoviti odčitek temperature,
- in tako naprej….
Vsak modul je povezan z vodilom sporočil in se lahko registrira za določene dogodke ter lahko proizvede vse dogodke (prvi diagram).
Na drugem diagramu lahko vidimo tok dogodkov ob pritisku na gumb.
Nekatere komponente imajo nekatere naloge, ki jih je treba občasno izvajati. Njihove ustrezne metode bi lahko poklicali iz glavne zanke, saj imamo Message Bus, potrebno je le razširjanje desnega dogodka (tretji diagram)
6. korak: Ustnice
- https://github.com/maciejmiklas/Thermostat
- https://github.com/milesburton/Arduino-Temperature…
- https://github.com/maciejmiklas/ArdLog.git
Priporočena:
Telefon na osnovi Arduina (prototip): 7 korakov
Telefon na osnovi Arduina (prototip): Pozdravljeni vsi, danes bomo v tem navodilu videli o telefonu, ki temelji na arduinu. Ta telefon je prototip, ki se še razvija. Izvorna koda je odprta koda, ki jo lahko spremeni vsak. Funkcije v telefonu: 1. Glasba 2. Video posnetki 3.
Vrata kokošinjca - na osnovi Arduina: 5 korakov (s slikami)
Vrata kokošinjca - Arduino temelji: Najprej je moj materni jezik nizozemščina, zato se opravičujem za morebitne pravopisne napake. Če kaj ni jasno, pustite sporočilo v komentarjih. To je moj prvi projekt arduino. Ker se je moja žena naveličala vsak dan ročno odpirati prtljažnik
Ploter za jajca na osnovi Arduina: 17 korakov (s slikami)
Ploter za jajca na osnovi Arduina: ploter za jajca je umetniški robot, ki lahko črpa na predmete sferične oblike, kot so jajca. S tem strojem lahko črpate tudi žoge za namizni tenis in žoge za golf. Lahko uporabite domišljijo pri oblikovanju, ki ste ga dali, lahko na primer naredite
Inteligentni avtomobil Romote na osnovi Arduina: 5 korakov
Inteligentni avtomobil Romote, ki temelji na Arduinu: Ta projekt temelji na razvojni plošči Arduino UNO za izdelavo pametnega avtomobila. Avtomobil ima brezžično krmiljenje Bluetooth, izogibanje oviram, zvočni signal in druge funkcije, gre za avtomobil s štirikolesnim pogonom, ki ga je enostavno obrniti
Brezkontaktni infrardeči termometer na osnovi Arduino - IR termometer na osnovi Arduina: 4 koraki
Brezkontaktni infrardeči termometer na osnovi Arduino | IR -termometer z uporabo Arduina: Pozdravljeni fantje, v tem navodilu bomo naredili brezkontaktni termometer z arduinom. Ker je včasih temperatura tekočine/trdne snovi previsoka ali prenizka, potem pa je težko priti v stik z njo in prebrati temperatura v tem prizorju