Sadržaj:
- Korak 1: Konfiguracija
- Korak 2: Konfiguriranje releja
- Korak 3: Kontroler histereze
- Korak 4: PID kontroler
- Korak 5: Sabirnica poruka
- Korak 6: Libs
Video: Termostat baziran na Arduinu: 6 koraka
2024 Autor: John Day | [email protected]. Zadnja izmjena: 2024-01-30 08:08
Ovaj put ćemo izgraditi termostat zasnovan na Arduinu, temperaturnom senzoru i releju. Možete pronaći na githubu
Korak 1: Konfiguracija
Cijela konfiguracija pohranjena je u Config.h. Možete promijeniti PIN -ove kontrolirajući releje, temperaturu očitavanja, pragove ili vrijeme.
Korak 2: Konfiguriranje releja
Pretpostavimo da bismo željeli imati 3 releja:
- ID: 0, PIN: 1, zadana temperatura: 20
- ID: 1, PIN: 10, zadana temperatura: 30
- ID: 2, PIN: 11, Zadana temperatura: 40
Prvo morate biti sigurni da PIN po vašem izboru nije već zauzet. Svi pinovi se mogu pronaći u Config.h, definirani su varijablama koje počinju s DIG_PIN.
Morate urediti Config.h i konfigurirati PIN -ove, pragove i količinu releja. Očigledno da neka svojstva već postoje, pa ih morate samo 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;
Sada moramo postaviti releje i kontroler, to se događa u 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
Korak 3: Kontroler histereze
To je onaj odabran u gornjem primjeru, ima nekoliko dodatnih konfiguracija:
const static uint32_t RELAY_DELAY_AFTER_SWITCH_MS = 300000; // 5 minutaconst static uint32_t RHC_RELAY_MIN_SWITCH_MS = 3600000;
RELAY_DELAY_AFTER_SWITCH_MS daje vrijeme čekanja za prebacivanje sljedećeg releja. Zamislite da bi konfiguracija iz našeg primjera počela raditi u okruženju od 40 stepeni. To bi rezultiralo uključivanjem sva tri releja u isto vrijeme. To bi na kraju moglo dovesti do velike potrošnje energije - ovisno o tome što kontrolirate, na primjer, električni motor troši više energije tijekom pokretanja. U našem slučaju sklopni releji imaju sljedeći tok: prvi relej ide, pričekajte 5 minuta, drugi se uključuje, pričekajte 5 minuta, treći se uključuje.
RHC_RELAY_MIN_SWITCH_MS definira histerezu, to je minimalna frekvencija za promjenu stanja releja. Kada se uključi, ostat će uključena barem još neko vrijeme, zanemarujući promjene temperature. Ovo je tiho, korisno ako upravljate elektromotorima, jer svaki prekidač negativno utječe na vrijeme rada.
Korak 4: PID kontroler
Ovo je napredna tema. Implementacija takvog kontrolera je jednostavan zadatak, a pronalaženje ispravnih postavki amplitude je druga priča.
Da biste koristili PID kontroler, morate promijeniti initRelayHysteresisController (…..) u initRelayPiDController (….) I trebate pronaći odgovarajuće postavke za njega. Kao i obično, pronaći ćete ih u Config.h
Implementirao sam jednostavan simulator u Javi, tako da je moguće vizualizirati rezultate. Može se pronaći u mapi: pidsimulator. Ispod možete vidjeti simulacije za dva kontrolera PID i P. PID nije savršeno stabilan jer nisam primijenio nikakav sofisticirani algoritam za pronalaženje pravih vrijednosti.
Na obje parcele potrebna temperatura je postavljena na 30 (plavo). Trenutna temperatura označava liniju za čitanje. Relej ima dva stanja ON i OFF. Kada je omogućeno, temperatura pada za 1,5, a kada je onemogućeno, raste za 0,5.
Korak 5: Sabirnica poruka
Različiti softverski moduli moraju međusobno komunicirati, nadam se ne u oba smjera;)
Na primjer:
- modul statistike mora znati kada se određeni relej uključuje i isključuje,
- pritiskom na dugme mora se promijeniti sadržaj prikaza, a mora se i obustaviti usluge koje bi trošile mnoge cikluse procesora, na primjer očitavanje temperature sa senzora,
- nakon nekog vremena očitavanje temperature mora biti obnovljeno,
- i tako dalje….
Svaki modul je spojen na sabirnicu poruka i može se registrirati za određene događaje te može proizvesti bilo koje događaje (prvi dijagram).
Na drugom dijagramu možemo vidjeti tok događaja pritiskom na dugme.
Neke komponente imaju neke zadatke koje je potrebno povremeno izvršavati. Njihove odgovarajuće metode mogli bismo nazvati iz glavne petlje, budući da imamo sabirnicu poruka, potrebno je samo propagirati desni događaj (treći dijagram)
Korak 6: Libs
- https://github.com/maciejmiklas/Thermostat
- https://github.com/milesburton/Arduino-Temperature…
- https://github.com/maciejmiklas/ArdLog.git
Preporučuje se:
Samoupravljajući automobil baziran na Arduinu: 8 koraka
Arduino samovozeći automobil: Dobro došli u moj prvi Instructable! Nedavno mi je dodijeljen projekt samovozećeg automobila kao projekt mog semestra. U ovom projektu moj zadatak je bio dizajnirati automobil koji bi mogao raditi sljedeće: Može se kontrolirati glasovnim komandama putem Android telefona
PIR senzor pokreta baziran na Arduinu: 4 koraka
Arduino PIR senzor pokreta: Uz pomoć ovog projekta možete kontrolirati visoko stanje i osjetljivost PIR -a
Generator trofaznih sinusnih valova baziran na Arduinu Due: 5 koraka
Generator trofaznih sinusnih valova temeljen na Arduino Due: svrha ovog udjela je pomoći nekome tko pokušava iskoristiti Dueove bolje performanse + nedostatak referenci + nepotrebne podatkovne tablice. Ovaj projekt može generirati do 3 fazne sinusne valove @ 256 uzorci / ciklus na niskim frekvencijama (<1 kHz) i 16 s
DRO baziran na Arduinu za GRBL CNC stroj: 3 koraka (sa slikama)
Arduino bazirani DRO za GRBL CNC stroj: Ovaj sam projekt započeo s jednim ciljem na umu. Htio sam jednostavan, ali efikasan način pregledavanja informacija o mojoj CNC mašini, dok stojim za CNC mašinom, umjesto da iskrivim vrat u gotovo iskrivljenim položajima i žmirim kao
Kompletan GPS+GPRS sistem protiv krađe vozila baziran na Arduinu: 5 koraka (sa slikama)
Kompletan GPS+GPRS sistem protiv krađe za vozila baziran na Arduinu: Zdravo svima! Htio sam izgraditi cjelovito rješenje za uređaj protiv krađe vozila sa GPS-om, koji bi bio: što jeftiniji, što potpuniji, koliko funkcionira -ne postoji ništa drugo za učiniti pa sam završio sa izgradnjom rješenja zasnovanog na Arduinu