Mündəricat:
- Addım 1: Konfiqurasiya
- Addım 2: Röleləri konfiqurasiya edin
- Addım 3: Histerezis Nəzarətçisi
- Addım 4: PID nəzarətçisi
- Addım 5: Mesaj Avtobusu
- Addım 6: Libs
Video: Arduino əsasında Termostat: 6 addım
2024 Müəllif: John Day | [email protected]. Son dəyişdirildi: 2024-01-30 07:48
Bu dəfə Arduino, temperatur sensoru və röle əsasında bir Termostat quracağıq. Github -da tapa bilərsiniz.
Addım 1: Konfiqurasiya
Bütün konfiqurasiya Config.h -də saxlanılır. Röleləri, oxu temperaturunu, eşikləri və ya vaxtları idarə edən PIN kodlarını dəyişə bilərsiniz.
Addım 2: Röleləri konfiqurasiya edin
Tutaq ki, 3 röleyə sahib olmaq istərdik:
- ID: 0, PIN: 1, İstilik təyin nöqtəsi: 20
- ID: 1, PIN: 10, İstilik təyin nöqtəsi: 30
- ID: 2, PIN: 11, İstilik təyin nöqtəsi: 40
Əvvəlcə seçdiyiniz PİN kodunun alınmadığından əmin olmalısınız. Bütün sancaqlar Config.h -də tapıla bilər, DIG_PIN ilə başlayan dəyişənlərlə təyin olunur.
Config.h -i redaktə etməli və PİN -ləri, eşikləri və rölelərin miqdarını konfiqurasiya etməlisiniz. Aydındır ki, bəzi xüsusiyyətlər artıq mövcuddur, buna görə onları sadəcə redaktə etməlisiniz.
const statik uint8_t DIG_PIN_RELAY_0 = 1; const statik uint8_t DIG_PIN_RELAY_1 = 10; const statik uint8_t DIG_PIN_RELAY_2 = 11;
const statik uint8_t RELAYS_AMOUNT = 3;
const statik int16_t RELAY_TEMP_SET_POINT_0 = 20;
const statik int16_t RELAY_TEMP_SET_POINT_1 = 30; const statik int16_t RELAY_TEMP_SET_POINT_2 = 40;
İndi röle və nəzarətçi qurmalıyıq, bu RelayDriver.cpp -də olur
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
Addım 3: Histerezis Nəzarətçisi
Yuxarıdakı nümunədə seçilmiş, bir neçə əlavə konfiqurasiyaya malikdir:
const statik uint32_t RELAY_DELAY_AFTER_SWITCH_MS = 300000; // 5 dəqiqə statik uint32_t RHC_RELAY_MIN_SWITCH_MS = 3600000;
RELAY_DELAY_AFTER_SWITCH_MS, növbəti röleyi dəyişdirmək üçün gözləmə vaxtı verir. Nümunəmizdəki konfiqurasiyanın 40 dərəcə bir mühitdə işə başlayacağını düşünün. Bu, hər üç rölin eyni vaxtda işə salınması ilə nəticələnəcək. Bu, nəticədə yüksək enerji istehlakına səbəb ola bilər - nəzarət etdiyiniz şeydən asılı olaraq, məsələn, elektrik mühərriki işə salındıqda daha çox enerji istehlak edir. Bizim vəziyyətimizdə keçid rölesi aşağıdakı axına malikdir: birinci röle gedir, 5 dəqiqə gözləyin, ikinci davam edir, 5 dəqiqə gözləyin, üçüncüsü davam edir.
RHC_RELAY_MIN_SWITCH_MS histerezisi müəyyən edir, xüsusi rölin vəziyyətini dəyişməsi üçün minimum tezlikdir. Açıldıqdan sonra temperatur dəyişikliyinə məhəl qoymadan ən az bu müddət ərzində qalacaq. Elektrik mühərriklərini idarə etməyiniz çox faydalıdır, çünki hər bir keçid canlı vaxta mənfi təsir göstərir.
Addım 4: PID nəzarətçisi
Bu inkişaf etmiş bir mövzudur. Belə bir nəzarətçini tətbiq etmək sadə bir işdir, doğru amplituda parametrlərini tapmaq fərqli bir hekayədir.
PID nəzarətçisini istifadə etmək üçün initRelayHysteresisController (…..) parametrini initRelayPiDController (….) Olaraq dəyişdirməlisiniz və bunun üçün doğru parametrləri tapmalısınız. Həmişə olduğu kimi bunları Config.h -də tapa bilərsiniz
Nəticələri görselleştirmek üçün Java -da sadə bir simulyator tətbiq etdim. Aşağıdakı qovluqda tapıla bilər: pidsimulator. Bunun altında iki nəzarətçi üçün simulyasiyalar görə bilərsiniz PID a P. PID mükəmməl sabit deyil, çünki doğru dəyərləri tapmaq üçün hər hansı bir inkişaf etmiş alqoritm tətbiq etməmişəm.
Hər iki sahədə tələb olunan temperatur 30 (mavi) olaraq təyin olunur. Cari temperatur oxu xəttini göstərir. Relay -ın iki vəziyyəti ON və OFF -a malikdir. İşə salındıqda temperatur 1,5 azalır, söndürüldükdə isə 0,5 yüksəlir.
Addım 5: Mesaj Avtobusu
Fərqli proqram modulları bir -biri ilə ünsiyyət qurmalıdır, inşallah hər iki şəkildə deyil;)
Misal üçün:
- statistika modulu müəyyən bir rölin nə vaxt açılacağını və ya söndüyünü bilməlidir.
- bir düyməyə basmaq ekran məzmununu dəyişdirməli və eyni zamanda bir çox CPU dövrü istehlak edəcək xidmətləri dayandırmalıdır, məsələn, sensordan temperaturun oxunması,
- bir müddət sonra temperaturun oxunması yenilənməlidir.
- və s….
Hər bir modul Mesaj Avtobusuna bağlıdır və müəyyən hadisələr üçün qeydiyyatdan keçə bilər və hər hansı bir hadisə (ilk diaqram) hazırlaya bilər.
İkinci diaqramda düyməni basaraq hadisənin gedişatını görə bilərik.
Bəzi komponentlərin vaxtaşırı yerinə yetirilməsi lazım olan bəzi vəzifələri var. Mesaj Avtobusuna sahib olduğumuz üçün onların uyğun metodlarını əsas döngədən çağıra bilərik (yalnız üçüncü hadisəni) təbliğ etmək lazımdır.
Addım 6: Libs
- https://github.com/maciejmiklas/Thermostat
- https://github.com/milesburton/Arduino-Temperature…
- https://github.com/maciejmiklas/ArdLog.git
Tövsiyə:
Toyuq Coop Qapısı - Arduino əsasında: 5 addım (şəkillərlə)
Chicken Coop Door - Arduino əsaslıdır: Hər şeydən əvvəl mənim ana dilim holland dilidir, buna görə yazım səhvləri üçün üzr istəyin. Bir şey aydın deyilsə, şərhlərdə bir mesaj buraxın. Bu mənim ilk arduino layihəmdir. Həyat yoldaşım hər gün qapı qapısını əl ilə açmaqdan yorulduğu üçün
Arduino əsasında Ağıllı Romote Avtomobil: 5 addım
Arduino -ya əsaslanan Ağıllı Romote Avtomobil: Bu layihə, ağıllı bir avtomobil etmək üçün Arduino UNO inkişaf lövhəsinə əsaslanır. Avtomobil Bluetooth simsiz idarəetmə, maneələrdən qaçma, səs siqnalı və digər funksiyalara malikdir və dönmək asan olan dörd təkərli avtomobildir
ESP8266 Shield əsasında Arduino üçün Serial UDP/IP Gateway: 8 Addım
ESP8266 Shield əsasında Arduino üçün Serial UDP/IP Gateway: Mən artıq 2016 -cı ildə bu təlimatlı "Arduino -nu IP Şəbəkəsinə bağlamaq üçün öz Wi -Fi keçidinizi necə düzəltmək olar" dərc etmişəm. Bəzi kod təkmilləşdirmələri etdiyimdən və hələ də bu həlli istifadə etdiyimdən buna baxmayaraq, indi bəzi ESP8266 qalxanları var
Arduino Due əsasında 3 fazalı sinus dalğa generatoru: 5 addım
Arduino Due-yə əsaslanan 3 Fazlı Sinus Dalğa Generatoru: bu paylaşımın məqsədi Due-nin daha yüksək performansını istifadə etmək istəyənlərə kömək etməkdir + istinad olmaması + faydalı olmayan məlumat cədvəli. nümunələr / dövrü aşağı frekansda (< 1kHz) və 16 saniyədə
Arduino əsasında Robot Qolu ilə Əlverişli Vizyon Həll: 19 Addım (Şəkillərlə birlikdə)
Arduino -ya əsaslanan Robot Qolu ilə Əlverişli Vizyon Həll: Maşın görmə qabiliyyətindən bəhs edərkən həmişə bizim üçün əlçatmaz hiss olunur. Hər kəs üçün çox asan olacaq açıq mənbəli bir görmə demosu hazırladıq. Bu videoda, OpenMV kamerası ilə, qırmızı kubun harada olmasından asılı olmayaraq, robot