İçindekiler:
- Adım 1: Yapılandırma
- Adım 2: Röleleri Yapılandırma
- Adım 3: Histerezis Denetleyicisi
- Adım 4: PID Denetleyicisi
- Adım 5: Mesaj Yolu
- Adım 6: Lib'ler
Video: Arduino Tabanlı Termostat: 6 Adım
2024 Yazar: John Day | [email protected]. Son düzenleme: 2024-01-30 13:21
Bu sefer Arduino, sıcaklık sensörü ve röle tabanlı bir Termostat kuracağız. Github'da bulabilirsiniz.
Adım 1: Yapılandırma
Tüm konfigürasyon Config.h'de saklanır. Röleleri kontrol eden PIN'leri, okuma sıcaklığını, eşikleri veya zamanlamaları değiştirebilirsiniz.
Adım 2: Röleleri Yapılandırma
3 röleye sahip olmak istediğimizi varsayalım:
- ID:0, PIN: 1, Sıcaklık ayar noktası: 20
- ID:1, PIN: 10, Sıcaklık ayar noktası: 30
- ID:2, PIN: 11, Sıcaklık ayar noktası: 40
Öncelikle, seçtiğiniz PIN'in henüz alınmadığından emin olmalısınız. Tüm pinler Config.h'de bulunabilir, DIG_PIN ile başlayan değişkenler tarafından tanımlanırlar.
Config.h'yi düzenlemeniz ve PIN'leri, eşikleri ve röle miktarını yapılandırmanız gerekir. Açıkçası bazı özellikler zaten var, bu yüzden onları düzenlemeniz gerekiyor.
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;
Şimdi röleleri ve denetleyiciyi kurmamız gerekiyor, bu RelayDriver.cpp'de oluyor
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
Adım 3: Histerezis Denetleyicisi
Yukarıdaki örnekte seçilendir, birkaç ek konfigürasyonu vardır:
const statik uint32_t RELAY_DELAY_AFTER_SWITCH_MS = 300000; // 5 dakikaconst statik uint32_t RHC_RELAY_MIN_SWITCH_MS = 3600000;
RELAY_DELAY_AFTER_SWITCH_MS, bir sonraki röleyi değiştirmek için bekleme süresi verir. Örneğimizdeki konfigürasyonun 40 derecelik bir ortamda çalışmaya başlayacağını hayal edin. Bu, üç rölenin de aynı anda etkinleştirilmesiyle sonuçlanacaktır. Bu, nihayetinde yüksek güç tüketimine yol açabilir - neyi kontrol ettiğinize bağlı olarak, örneğin elektrik motoru çalıştırma sırasında daha fazla güç tüketir. Bizim durumumuzda anahtarlama rölelerinin akışı şu şekildedir: birinci röle gider, 5 dakika bekler, ikincisi geçer, 5 dakika bekler, üçüncü geçer.
RHC_RELAY_MIN_SWITCH_MS histerezisi tanımlar, belirli bir rölenin durumunu değiştirmesi için minimum frekanstır. Açıldıktan sonra, en azından bu süre boyunca, sıcaklık değişimlerini göz ardı ederek açık kalacaktır. Bu, elektrik motorlarını kontrol ettiğinizde oldukça kullanışlıdır, çünkü her bir anahtarın canlı zaman üzerinde olumsuz etkisi vardır.
Adım 4: PID Denetleyicisi
Bu ileri düzey bir konu. Böyle bir denetleyiciyi uygulamak basit bir iştir, doğru genlik ayarlarını bulmak farklı bir hikaye.
PID denetleyicisini kullanmak için initRelayHysteresisController(…..) öğesini initRelayPiDController(….) olarak değiştirmeniz ve bunun için doğru ayarları bulmanız gerekir. Her zamanki gibi bunları Config.h'de bulacaksınız.
Java'da basit bir simülatör uyguladım, böylece sonuçları görselleştirmek mümkün. Klasörde bulunabilir: pidsimulator. Aşağıda iki PID ve P kontrolörünün simülasyonlarını görebilirsiniz. PID tam olarak kararlı değil çünkü doğru değerleri bulmak için herhangi bir karmaşık algoritma uygulamadım.
Her iki grafikte de gerekli sıcaklık 30'a (mavi) ayarlanmıştır. Mevcut sıcaklık okuma satırını gösterir. Rölenin AÇIK ve KAPALI olmak üzere iki durumu vardır. Devredeyken sıcaklık 1,5 düşer, devre dışıyken 0,5 yükselir.
Adım 5: Mesaj Yolu
Farklı yazılım modüllerinin birbirleriyle iletişim kurması gerekir, umarım her iki şekilde de olmaz;)
Örneğin:
- istatistik modülü, belirli bir rölenin ne zaman açılıp kapanacağını bilmek zorundadır,
- bir düğmeye basmak ekran içeriğini değiştirmeli ve ayrıca sensörden sıcaklık okuma gibi birçok CPU döngüsü tüketecek hizmetleri askıya almalıdır.
- bir süre sonra sıcaklık okumasının yenilenmesi gerekir,
- ve bunun gibi….
Her modül Message Bus'a bağlıdır ve belirli olaylar için kayıt yapabilir ve herhangi bir olay üretebilir (ilk diyagram).
İkinci diyagramda butona basıldığında olay akışını görebiliriz.
Bazı bileşenlerin periyodik olarak yürütülmesi gereken bazı görevleri vardır. Karşılık gelen yöntemleri ana döngüden çağırabiliriz, çünkü Message Bus'a sahip olduğumuz için sadece doğru olayı yaymak gerekir (üçüncü diyagram)
Adım 6: Lib'ler
- https://github.com/maciejmiklas/Thermostat
- https://github.com/milesburton/Arduino-Sıcaklık…
- https://github.com/maciejmiklas/ArdLog.git
Önerilen:
Wokwi-2020'den Web Tabanlı Arduino Simülatörü: 5 Adım
Wokwi-2020'den Web Tabanlı Arduino Simülatörü: Wokwi Arduino Simülatörü, AVR8js platformunda çalışır. Web tabanlı bir Arduino Simülatörüdür. Arduino Simülatörü web tarayıcısında çalışır. bu nedenle, bu daha fazla dikkat çekiyor ve dürüst olmak gerekirse, mevcut diğer simülatörlere kıyasla birçok olumlu noktası var
Arduino Tarayıcı Tabanlı Uzaktan Kumanda (linux): 9 Adım (Resimli)
Arduino Tarayıcı Tabanlı Uzaktan Kumanda (linux): Çocuklarımız var. Ben onları çok seviyorum ama çocuk kanallarını açtıklarında uydu ve TV için uzaktan kumandayı saklıyorlar. Bunun birkaç yıl boyunca her gün gerçekleşmesinden sonra ve sevgili eşimin bana bir
Arduino Tabanlı Telefon (Prototip): 7 Adım
Arduino Tabanlı Telefon (Prototip): Herkese merhaba, Bugün bu derste arduino tabanlı telefon hakkında bilgi vereceğiz. Bu telefon hala geliştirilmekte olan bir prototip. Kaynak kodu açık kaynak kodludur, herkes kodu değiştirebilir. Telefondaki özellikler:1. Müzik 2. Videolar 3.
Arduino Tabanlı Kendin Yap Oyun Denetleyicisi - Arduino PS2 Oyun Denetleyicisi - DIY Arduino Gamepad ile Tekken Oynamak: 7 Adım
Arduino Tabanlı Kendin Yap Oyun Denetleyicisi | Arduino PS2 Oyun Denetleyicisi | Tekken'i DIY Arduino Gamepad ile Oynamak: Merhaba arkadaşlar, oyun oynamak her zaman eğlencelidir ama kendi DIY özel oyun Controller'ınızla oynamak daha eğlencelidir. Bu yüzden bu talimatta arduino pro micro kullanarak bir oyun Controller yapacağız
Arduino Tabanlı Temassız Kızılötesi Termometre - Arduino Kullanan IR Tabanlı Termometre: 4 Adım
Arduino Tabanlı Temassız Kızılötesi Termometre | Arduino Kullanan IR Tabanlı Termometre: Merhaba arkadaşlar, bu talimatta arduino kullanarak temassız bir Termometre yapacağız. Bazen sıvının/katının sıcaklığı çok yüksek veya çok düşük olduğundan, onunla temas kurmak ve okumak zordur. o sahnede sıcaklık