Satura rādītājs:
- 1. darbība: konfigurēšana
- 2. darbība. Releju konfigurēšana
- 3. solis: Histerēzes kontrolieris
- 4. solis: PID kontrolieris
- 5. darbība. Ziņojumu kopne
- 6. darbība: Libs
Video: Termostats, kura pamatā ir Arduino: 6 soļi
2024 Autors: John Day | [email protected]. Pēdējoreiz modificēts: 2024-01-30 10:57
Šoreiz mēs izveidosim termostatu, kura pamatā ir Arduino, temperatūras sensors un relejs. Jūs varat atrast vietnē github
1. darbība: konfigurēšana
Visa konfigurācija tiek saglabāta Config.h. Jūs varat mainīt PIN, kas kontrolē relejus, lasīšanas temperatūru, sliekšņus vai laiku.
2. darbība. Releju konfigurēšana
Pieņemsim, ka mēs vēlētos, lai mums būtu 3 releji:
- ID: 0, PIN: 1, Temperatūras uzdotā vērtība: 20
- ID: 1, PIN: 10, Temperatūras uzdotā vērtība: 30
- ID: 2, PIN: 11, Temperatūras uzdotā vērtība: 40
Vispirms jums jāpārliecinās, ka jūsu izvēlētais PIN nav jau ņemts. Visas tapas var atrast Config.h, tās nosaka mainīgie, kas sākas ar DIG_PIN.
Jums ir jārediģē Config.h un jākonfigurē PIN, sliekšņi un releju daudzums. Acīmredzot daži rekvizīti jau pastāv, tāpēc tie ir tikai jārediģē.
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;
Tagad mums ir jāiestata releji un kontrolieris, tas notiek vietnē 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. solis: Histerēzes kontrolieris
Tas ir tas, kas izvēlēts iepriekšējā piemērā, tam ir dažas papildu konfigurācijas:
const static uint32_t RELAY_DELAY_AFTER_SWITCH_MS = 300000; // 5 minūšu statiskais statiskais uint32_t RHC_RELAY_MIN_SWITCH_MS = 3600000;
RELAY_DELAY_AFTER_SWITCH_MS dod gaidīšanas laiku nākamā releja pārslēgšanai. Iedomājieties, ka konfigurācija no mūsu piemēra sāktu darboties 40 grādu vidē. Tādējādi visi trīs releji tiktu iespējoti vienlaicīgi. Tas galu galā var izraisīt lielu enerģijas patēriņu - atkarībā no tā, ko jūs kontrolējat, piemēram, elektromotors startēšanas laikā patērē vairāk enerģijas. Mūsu gadījumā pārslēgšanas relejiem ir šāda plūsma: pirmais relejs iet, pagaidiet 5 minūtes, otrais ieslēdzas, pagaidiet 5 minūtes, trešais ieslēdzas.
RHC_RELAY_MIN_SWITCH_MS definē histerēzi, tā ir minimālā frekvence, kādā konkrētais relejs var mainīt savu stāvokli. Kad tas ir ieslēgts, tas paliks ieslēgts vismaz šo laika periodu, neņemot vērā temperatūras izmaiņas. Tas ir kluss un noderīgs, vadot elektromotorus, jo katram slēdzim ir negatīva ietekme uz dzīvo laiku.
4. solis: PID kontrolieris
Šī ir uzlabota tēma. Šāda kontroliera ieviešana ir vienkāršs uzdevums, pareizo amplitūdas iestatījumu atrašana ir cits stāsts.
Lai izmantotu PID kontrolieri, jums ir jāmaina initRelayHysteresisController (…..) uz initRelayPiDController (…), un jums ir jāatrod tam piemēroti iestatījumi. Kā parasti, tos atradīsit Config.h
Esmu ieviesis vienkāršu simulatoru Java, lai būtu iespējams vizualizēt rezultātus. To var atrast mapē: pidsimulator. Zemāk jūs varat redzēt simulācijas diviem kontrolieriem PID a P. PID nav pilnīgi stabils, jo es neizmantoju sarežģītu algoritmu, lai atrastu pareizās vērtības.
Abos parauglaukumos nepieciešamā temperatūra ir iestatīta uz 30 (zila). Pašreizējā temperatūra norāda nolasīšanas rindu. Relejam ir divi stāvokļi ON un OFF. Ja tas ir iespējots, temperatūra pazeminās par 1,5, bet atspējota - par 0,5.
5. darbība. Ziņojumu kopne
Dažādiem programmatūras moduļiem ir jāsazinās savā starpā, cerams, ka ne abos virzienos;)
Piemēram:
- statistikas modulim ir jāzina, kad konkrētais relejs ieslēdzas un izslēdzas,
- nospiežot pogu, ir jāmaina displeja saturs, kā arī jāpārtrauc pakalpojumi, kas patērētu daudzus CPU ciklus, piemēram, temperatūras nolasīšana no sensora,
- pēc kāda laika temperatūras rādījums ir jāatjauno,
- un tā tālāk….
Katrs modulis ir savienots ar ziņojumu kopni un var reģistrēties noteiktiem notikumiem, kā arī var radīt jebkādus notikumus (pirmā diagramma).
Otrajā diagrammā mēs varam redzēt notikumu plūsmu, nospiežot pogu.
Dažām sastāvdaļām ir daži uzdevumi, nekā nepieciešams periodiski izpildīt. Mēs varētu izsaukt viņu atbilstošās metodes no galvenās cilpas, jo mums ir ziņojumu kopne, ir nepieciešams tikai izplatīt pareizo notikumu (trešā diagramma)
6. darbība: Libs
- https://github.com/maciejmiklas/Thermostat
- https://github.com/milesburton/Arduino-Temperature…
- https://github.com/maciejmiklas/ArdLog.git
Ieteicams:
Tālrunis, kura pamatā ir Arduino (prototips): 7 soļi
Arduino balstīts tālrunis (prototips): Sveiki visiem! Šodien šajā pamācībā mēs redzēsim par tālruni, kura pamatā ir arduino. Šis tālrunis ir prototips, kas joprojām tiek izstrādāts. Avota kods ir opensource ikviens var modificēt kodu. Tālruņa funkcijas: 1. Mūzika 2. Video 3
Ar internetu kontrolēta gaismas diode, izmantojot tīmekļa serveri, kura pamatā ir ESP32: 10 soļi
Ar internetu kontrolēta gaismas diode, izmantojot tīmekļa serveri, kura pamatā ir ESP32: Projekta pārskats Šajā piemērā mēs izdomāsim, kā izveidot uz ESP32 balstītu tīmekļa serveri, lai kontrolētu LED stāvokli, kas ir pieejams no jebkuras vietas pasaulē. Šim projektam jums būs nepieciešams Mac dators, taču jūs varat palaist šo programmatūru pat i
Zemu izmaksu IoT gaisa kvalitātes monitors, kura pamatā ir RaspberryPi 4: 15 soļi (ar attēliem)
Zemu izmaksu IoT gaisa kvalitātes monitors, kas balstīts uz RaspberryPi 4: Santjago, Čīlē ziemas vides ārkārtas situācijā, ir privilēģija dzīvot vienā no skaistākajām pasaules valstīm, bet diemžēl tas nav viss rozes. Čīle ziemas sezonā daudz cieš no gaisa piesārņojuma, šodien
Ar kustību iedarbināts mūzikas atskaņotājs, kura pamatā ir sensori: 3 soļi
Uz sensoru balstīts kustības izraisīts mūzikas atskaņotājs: manā bakalaura koledžā mums bija jāizveido oriģināls projekts, kuru visi studenti varēja izvēlēties paši. Savā projektā, jo es vienmēr klausos mūziku un man vienmēr liekas, ka ir pārāk daudz problēmu ieslēgt skaļruni, kuru es
Pulkstenis, kura pamatā ir ESP32: 4 soļi
Pulkstenis uz ESP32 bāzes: apmācība, kā izveidot pulksteni, kura pamatā ir esp32 ar iebūvētu OLED displeju, ar skārienjūtīgu pogu, bez citām detaļām, nav nepieciešama elektroinstalācija/lodēšana