Arduino uno'da çok kanallı termostat. Sıcaklığa bağlı olarak Arduino kullanan fan. PID denetleyicinin bileşenleri

Arduino UNO, LM325 temel alınarak ve 1602A ekranla oluşturulmuş, sıcaklık göstergeli, ev yapımı dört kanallı bir termostatın şematik diyagramı, dört ayrı yükü kontrol etmenizi sağlar.

Burada, sıcaklığı pasif olarak ölçme ve göstermenin yanı sıra, dört farklı yerde ayarlanan sıcaklığı korumak için dört ısıtıcıyı da kontrol edebilen, ilk versiyonda yalnızca sıcaklık ölçümünün mümkün olduğu cihazın yükseltilmiş bir versiyonunu açıklıyoruz.

Dört kanallı bir termometrenin çalışması ve programı önceki makalede (L.1) ayrıntılı olarak anlatılmıştır, bu nedenle burada yalnızca dört kanallı bir termostatın çalışmasını uygulamaya yönelik değişikliklerden bahsedeceğiz.

Şematik diyagram

Şematik diyagram Şekil 1'de gösterilmektedir.

Pirinç. 1. Arduino UNO, LM325 üzerinde 1602A ekranlı bir termostatın şematik diyagramı.

İlk devreden (L.1) farklı olarak, burada dört farklı ısıtma cihazını (H1-H4) kontrol eden K1-K4 röle sargılarına yüklenmiş dört transistör anahtarı vardır. Bu tuşlara yönelik kontrol komutları, ARDUINO UNO kartının dört dijital bağlantı noktası D9-D12'den gelir.

programı

Program Tablo 1'de gösterilmektedir.

Tablo 1.

İlk fark, ısıtıcıların kontrol edilmesi için portların sağlanmasıdır. Bunlar D9-D12 bağlantı noktalarıdır, burada belirtilmiştir:

pinMode(12, ÇIKIŞ);

pinMode(11, ÇIKIŞ);

pinMode(10, ÇIKIŞ);

pinMode(9, ÇIKIŞ);

Diğer boş dijital bağlantı noktalarını seçebilirsiniz; göstergeyi bağladıktan sonra hala D8 ve D13 kaldı. Ancak yazar şunları seçmiş: D9, D10, D11, D12. İkinci fark ise ısıtıcıları kontrol etmek için if karşılaştırıcı fonksiyonunun kullanılmasıdır. Hatta:

eğer(sıcaklık< -15)digitalWrite(12, HIGH);

if(temp > -15)digitalWrite(12, LOW);

if(tempi< 1)digitalWrite(11, HIGH);

if(tempi > ​​1)digitalWrite(11, LOW);

eğer(temp2< 20)digitalWrite(10, HIGH);

if(temp2 > 20)digitalWrite(10, LOW);

eğer(temp3< 10)digitalWrite(9, HIGH);

if(temp3 > 10)digitalWrite(9, LOW);

Bu çizgiler, ilgili bağlantı noktasında hangi sıcaklıkta, hangi mantıksal seviyenin olması gerektiğini gösterir. Örneğin ilk sensörün (T1) sıcaklığı -15°C'nin altındaysa D12 portunda mantıksal bir sensör bulunacaktır. İkinci sensörün (T2) sıcaklığı 1°C'nin altına düştüğünde D11 portunda mantıksal bir sensör bulunacaktır.

Üçüncü sensörün (TZ) sıcaklığı 20°C'nin altına düştüğünde D10 portunda mantıksal bir sensör bulunacaktır. Dördüncü sensörün (T4) sıcaklığı 10°C'nin altına düştüğünde D9 portunda mantıksal bir sensör bulunacaktır. Elbette tamamen farklı sıcaklıklar ayarlayabilirsiniz - bu cihazın özel uygulaması için gereken sıcaklıklar.

Üstelik zaten bitmiş cihazda, gerekirse kolayca değiştirilebilirler. Bunu yapmak için, kişisel bir bilgisayarı ARDUINO UNO kartının USB bağlantı noktasına bağlamanız ve sıcaklık eşikleriyle ilgili diğer verileri içeren bir program yüklemeniz gerekir. Prensip olarak, bunun için bitmiş cihazın gövdesine bir USB konektörü sağlayabilirsiniz.

Genellikle "tipik" bir termostatta bir histerezis döngüsü, yani ısıtıcının açıldığı sıcaklık ile kapandığı sıcaklık arasında bir fark yaratan bir devre bulunur. Bu, ısıtıcının çok sık açılıp kapanmaması için gereklidir. Isıtıcı bir elektromanyetik röle tarafından kontrol ediliyorsa bu özellikle önemlidir.

Çünkü röle kontakları bu çalışma moduna uygun olarak tasarlanmamıştır ve kıvılcım nedeniyle yanma nedeniyle hızla arızalanabilir. Ancak histerezis termostatın çalışmasında bir hataya neden olur. Burada histerezis yaratmamaya, ancak röle kontaklarının çok sık değişmemesini sağlamak için cihazın çalışmasını yavaşlatmaya karar verildi. Bunu satırda yapmak için:

Gösterim süresi üç saniyeye çıkarıldı. Sonuç olarak ölçümler üç saniyelik aralıklarla tekrarlanır ve her durumda röle üç saniyede bir defadan fazla anahtarlama yapamaz.

Detaylar

Herhangi bir K1-K4 elektromanyetik rölesi, 12V sargılarla ve belirli ısıtıcıları kontrol etmeye yetecek kadar güçlü kontaklarla kullanılabilir.

Çıkış aşamaları diğer devreler kullanılarak, örneğin opto-mistörler kullanılarak yapılabilir. Bu durumda, optosimitörlerin LED'leri veya sözde "katı hal röleleri", akım sınırlayıcı dirençler aracılığıyla ARDUINO UNO kartının ilgili bağlantı noktalarına bağlanır.

Karavkin V.RK-08-17.

Literatür: 1. Karavkin V. - ARDUINO UNO, RK-06-17'de dört kanallı termometre.

Buzdolabı kontrol ünitesinin ana görevi, odadaki ayarlanan sıcaklığı korumaktır. Sıcaklık kontrol cihazı bunu Peltier modülündeki elektrik gücünü değiştirerek yapacaktır.

Önceki derste bir güç regülatörü geliştirdik. Güç ve sıcaklık regülatörleri arasındaki bağlantı şuna benzer.

  • Sıcaklık kontrol cihazı ölçülen sıcaklığı alır, bunu ayarlanan sıcaklıkla karşılaştırır ve güç kontrol cihazı için ayarlanan güç değerini hesaplar.
  • Güç regülatörü belirtilen güce karşılık gelen PWM üretir.

Güç regülatörünü integral yönetmelik kanununa göre yaptık. Sıcaklığı dengelemek için daha karmaşık bir kontrol algoritması - orantısal-integral-türev (PID) kontrolörü kullanacağız.

PID denetleyicisi.

Önceki dersimizde detaylı olarak bahsetmiştim. Avantajlarını ve dezavantajlarını vurguladı.

Bu prensiple çalışan bir regülatörün doğruluğu yüksektir. Düzenlemenin kalitesine ilişkin geri kalan kriterler (hız ve istikrar) aynı seviyede değil.

Tüm kriterlerde yüksek performans elde edebilmek için farklı düzenleyici kanunları birleştiren bir regülatör kullanılması gerekmektedir.

Orantılı-integral-türev (PID) kontrolörü tam da böyle bir cihazdır. Farklı transfer özelliklerine sahip üç bileşenin toplamı olan bir çıkış sinyali üretir. Bu sayede PID denetleyici şunları sağlar: yüksek kalite düzenleme ve yönetimi bireysel kriterlere göre optimize etmenize olanak tanır.

PID kontrol cihazının çıkış sinyalinin oluşturulmasında aşağıdakiler yer alır:

  • Orantılı bileşen– değer, uyumsuzluk hatasıyla orantılıdır (kontrol edilen parametrenin belirtilen ve gerçek değerleri arasındaki fark).
  • Bileşeni entegre etme– uyumsuzluk hatası integrali.
  • Farklılaştırıcı bileşen– uyumsuzluk hatasının türevi.

PID denetleyici yasasını yazmanın matematiksel şekli şöyledir:

o(t) = P + ben + D = K p e(t) + K ben ∫e(t)dt + K d de(t)/dt

  • o(t) – çıkış sinyali;
  • P – orantılı bileşen;
  • I – entegre bileşen;
  • D – farklılaştırıcı bileşen;
  • Kp, Ki, Kd – orantılı, entegre, farklılaştırıcı bağlantıların katsayıları;
  • e(t) – uyumsuzluk hatası.

Şematik formda PID kontrolörü aşağıdaki gibi temsil edilebilir.

PID voltaj regülatörü U'nun blok şeması şuna benzer.

  • Ölçülen gerilim Ureal(t) verilen Uset'ten çıkarılır.
  • Ortaya çıkan uyumsuzluk hatası e(t) orantılı, entegre ve farklılaştırıcı bağlantılara beslenir.
  • Bileşenlerin toplamı sonucunda kontrol elemanına uygulanan bir kontrol eylemi o(t) elde edilir.

Yazılımda bir PID kontrol cihazı uygulandığında, çıkış sinyalinin hesaplamaları düzenli aralıklarla yapılır. Onlar. Kontrolör zaman açısından ayrıktır. Bu nedenle ayrıca şu ifadeleri kullanacağım: önceki sinyal durumu, önceki değer vb. Sistemin önceki zaman örnekleme noktasındaki durumundan bahsediyoruz.

PID denetleyicinin bileşenleri.

Tekrar. PID kontrol cihazının çıkış sinyali üç bileşenin toplamıdır:

  • orantılı;
  • entegre;
  • farklılaştırıcı.

Orantılı bileşen.

P(t) = K p * e(t)

Hafızası yok, yani. çıkış sinyalinin değeri sistemin önceki durumuna bağlı değildir. Basitçe aşağıdaki hata bir faktörle çarpılarak çıkışa iletilir. Çıkış sinyali, kontrol edilen parametrenin sapmasını telafi eder. Uyumsuzluk hatası ne kadar büyük olursa sinyal de o kadar büyük olur. Hata 0 ise çıkış sinyali de 0'dır.

Oransal bileşen hatayı tamamen telafi edemez. Bu formülden görülebilir. Çıkış sinyali hatanın Kp katıdır. Uyumsuzluk hatası 0 ise kontrolörün çıkış sinyali 0'dır. Ve o zaman telafi edilecek hiçbir şey yoktur.

Bu nedenle oransal kontrolörlerde her zaman statik hata adı verilen bir hata vardır. Kp katsayısının arttırılmasıyla azaltılabilir ancak bu durum sistemin kararlılığının azalmasına ve hatta kendi kendine salınımlara yol açabilir.

Oransal kontrolörlerin dezavantajları şunlardır:

  • statik düzenleme hatasının varlığı;
  • Artan katsayı ile düşük stabilite.

Önemli bir avantaj var:

  • Yüksek hız düzenlemesi. Oransal kontrolörün bir sonraki hataya tepkisi yalnızca sistemin örnekleme zamanı ile sınırlıdır.

Yalnızca orantısal kanuna göre çalışan düzenleyiciler nadiren kullanılır.

PID denetleyicideki oransal bileşenin asıl görevi performansı arttırmaktır.

Bileşenin entegre edilmesi.

ben(t) = K ben ∫e(t)dt

Uyumsuzluk hatasının integraliyle orantılıdır. Kontrolörün zaman ayrıklığını hesaba katarak şunu yazabiliriz:

I(t) = I(t -1) + K i * e(t)

  • I(t-1) – önceki zaman örnekleme noktasındaki I değeri.

Uyumsuzluk hatası bir katsayı ile çarpılır ve entegre bağlantının önceki değerine eklenir. Onlar. çıkış sinyali sürekli birikir ve zamanla nesne üzerindeki etkisini artırır. Böylece uyumsuzluk hatası, hatanın ve Ki katsayısının küçük değerleri için bile tamamen telafi edilir. Kararlı durumda kontrolörün çıkış sinyali tamamen entegre bileşen tarafından sağlanır.

Entegre regülatörün dezavantajları şunları içerir:

  • düşük performans;
  • ortalama stabilite.

İtibar:

  • Herhangi bir kazançta uyumsuzluk hatasını tamamen telafi etme yeteneği.

Pratikte entegre kontrolörler (sadece entegre bileşen) ve oransal entegre kontrolörler (integral ve orantısal bileşenler) sıklıkla kullanılır.

PID denetleyicideki entegre bağlantının ana görevi statik hatayı telafi etmek ve yüksek kontrol doğruluğunu sağlamaktır.

Farklılaştırıcı bileşen.

D(t) = K d de(t)/dt

Aşağıdaki hatanın değişim hızıyla orantılıdır. Uyumsuzluk hatasının hızlanmasının bir nevi göstergesi. Farklılaştırıcı bileşen, kontrol edilen parametrenin gelecekteki sapmalarını tahmin eder ve bu sapmayı ortadan kaldırır. Kural olarak, regülatörün nesne üzerindeki etkisindeki gecikmeleri telafi eder ve sistemin kararlılığını arttırır.

Kontrolörün zaman ayrılığı dikkate alınarak farklılaştırıcı bileşen aşağıdaki şekilde hesaplanabilir:

D(t) = K d * (e(t) - e(t -1))

Kontrolörün ayrıklığının bir zaman birimi boyunca uyumsuzluk hata değerinin ne kadar değiştiğini gösterir.

Tek bir farklılaştırıcı bağlantıdan oluşan düzenleyiciler yoktur.

PID denetleyicideki farklılaştırıcı bağlantının ana görevi kararlılığı arttırmaktır.

PID denetleyicisini ayarlama.

PID kontrolörlerinin kontrol kalitesi büyük ölçüde katsayıların ne kadar optimal seçildiğine bağlıdır. PID denetleyicinin katsayıları pratikte gerçek nesneli bir sistemde seçim yoluyla belirlenir. Farklı kurulum yöntemleri vardır. Sadece genel prensiplerden bahsedeceğim.

Düzenlemenin kalitesi, düzenleyicinin geçici yanıtıyla değerlendirilir. Onlar. Kontrol edilen parametrenin zaman içindeki değişim grafiğine göre.

PID denetleyici ayarlama sırasının geleneksel noktalarına, öncelikle hangi kontrol kalitesi kriterlerinin tercih edilebilir olduğuna karar verilmesi gerektiğini eklemek isterim.

Önceki derste bir güç regülatörü tasarlarken öncelikle doğruluk ve kararlılıkla ilgileniyorduk. Hatta performansı yapay olarak düşürdük. Bazı regülatörler ciddi gürültü koşulları altında çalışır ve stabilite onlar için daha önemliyken, diğerleri doğruluk pahasına bile yüksek performans gerektirir. Optimizasyon kriterleri farklılık gösterebilir. Genel olarak PID denetleyiciler, tüm kontrol kalitesi kriterlerinin yüksek seviyede olmasını sağlayacak şekilde yapılandırılır.

PID denetleyicinin bileşenleri ayrı ayrı yapılandırılır.

  • Birleştirici ve farklılaştırıcı bağlantılar kapatılır ve orantılı bağlantının katsayısı seçilir. Kontrolör orantılı entegre ise (farklılaştırıcı bağlantı yoksa), o zaman geçici yanıtta salınımların tamamen yokluğu elde edilir. Denetleyiciyi yüksek hıza ayarlarken salınımlar kalabilir. Farklılaştırıcı bağlantı bunları telafi etmeye çalışacaktır.
  • Ayırıcı bağlantı bağlıdır. Katsayısı kontrol parametresindeki dalgalanmaları ortadan kaldırmayı amaçlamaktadır. Bu başarısız olursa, orantısal katsayıyı azaltın.
  • Entegre bağlantı nedeniyle artık uyumsuzluk hatası ortadan kaldırılır.

PID denetleyicisinin ayarlanması doğası gereği yinelemeli bir işlemdir. Onlar. Katsayıların seçimine yönelik puanlar, kabul edilebilir bir sonuç elde edilene kadar birçok kez tekrarlanabilir.

Yüksek performansları ve çok yönlülükleri nedeniyle PID kontrolörleri endüstriyel otomasyon sistemlerinde yaygın olarak kullanılmaktadır.

Bir sonraki derste bir PID sıcaklık kontrol cihazı geliştireceğiz.

Termal sensör, LCD ekran ve elbette Arduino kullanarak akıllı bir fan dönüş kontrol cihazı oluşturma deneyimini sizinle paylaşacak.

Birkaç ay önce Arduino ile ilgili bir dizi makale okudum ve bu cihazla çok ilgilenmeye başladım ve kısa süre sonra onu satın almaya karar verdim. Mikroelektronikten uzak olduğumu belirtmekte fayda var, bu yüzden öncelikle göreceli kullanım kolaylığı nedeniyle anakartı beğendim. LED'ler ve "Merhaba dünya" sistemleriyle uğraştıktan sonra pratik bir şeyler yapmak ve aynı zamanda Arduino'nun yeteneklerine daha aşina olmak istedim. 2010 yılının anormal derecede sıcak yazını akılda tutarak, sıcaklığa bağlı olarak ilgili tüm özelliklerin LCD'de görüntülendiği daha soğuk bir hız kontrol cihazı monte etme fikri ortaya çıktı. Bu şemanın veya varyasyonlarının birilerine faydalı olacağını umuyorum, bu yüzden eskizlerimi yayınlamaya karar verdim.

Bu şema için ihtiyacımız olacak:

  • Aslında tahtanın kendisi arduino veya benzeri;
  • Ekmek tahtası devre bileşenlerinin montajı için;
  • Trim direnci açıkken WH1601A-NGG-CT'yi görüntüleyin 20 kOhm veya benzeri;
  • Dirençler – 220Ohm, 10 kOhm, 4,7 kOhm;
  • Bipolar transistör SS8050D veya benzeri;
  • Dijital sıcaklık sensörü DS18B20;
  • Diyot 1N4148 veya eşdeğer;
  • Fan eksenel üç telli (12V), örneğin - bilgisayar;
  • Jak konektörü beslenme 2,1/5,5 mm.

Bilgisayar soğutucusu var üç tel bunlardan ikisi kırmızı (+12V) ve siyah (GND) güç kaynağı için kullanılır ve üçüncüsü (sarı) Hall elemanı üzerine kurulu bir takometreye bağlanır. Ne yazık ki, karttan gelen 5V bizim için açıkça yeterli değil, ancak 6 Arduino dijital çıkışı PWM modunda çalışabilir (kartın üzerinde beyaz kareler veya PWM harfleriyle işaretlenmiştir), böylece karttan gelen sinyal beslemesini düzenleyebiliriz fana sağlanan voltajın değişmesinden sorumlu olacak röleye.

Uygulamaya dayalı olarak değiştirilmiş bir yöntem kullanarak takometrenin üçüncü telinden devirler hakkında bilgi alacağız kesintiye uğrarÇoğu Arduino için 2 (kesinti 0) ve 3 (kesinti 1) dijital pinlerine gelebilir. Bu arada Arduino Mega'da kesinti alma özelliğine sahip 4 ek pin var.

Şimdi konumlandırmanız gerekiyor dijital sıcaklık sensörü verilerini PWM ile dijital çıkışa sağlanan voltajı düzenlemek ve dolayısıyla fan voltajı kanalını "açmak" için kullanacağız. Dallas sensörlerinin kendi Arduino kütüphanesi vardır - DallasTemperature, bunu daha sonra çizimde bağlayacağız. Kütüphane arduino-0018/libraries/ dizinine açılmalıdır.

Geriye kalan son şey LCD'yi bağlayın sıcaklık ve fan hızıyla ilgili tüm güncel bilgileri görüntüleyeceğimiz yer. Derleme için WH1601A ekranını kullandığım için satırların görüntülenmesiyle ilgili bilinen sorunlar olabilir. Bunları ortadan kaldırmak için arduino-0018/libraries/ dizinine de açılması gereken LiquidCrystalRus kütüphanesini kullanacağız.

//Sıcaklık sensörü için kütüphaneyi bağlayın#katmak //LCD için kitaplığı bağlayın#katmak #define PowerPin 9 // fan gücünü kontrol etmek için pin#define HallSensor 2 // fan hız sensörü pini (kesme)#define TempPin 7 // sıcaklık sensörü pini LiquidCrystalRus lcd(12, 11, 10, 6, 5, 4, 3); //LCD Dallas'ı bağlayınTemperature tempSensor'u bağlayın; int NbTopsFan, Calc, fadeValue; //hesaplamalar için tamsayı değişkenlerşamandıra öfkesi; //sıcaklığı depolayacak gerçek değişken typedef yapısı ( // Hayranlar için yeni bir değişken türü tanıtın karakter fantazisi; imzasız int fandiv; )hayran spesifikasyonu; //Yeni tip değişkenlerin dizisi fanspec hayran alanı=((0,1),(1,2),(2,8)); //Fan sensörü tipinin seçiminden sorumlu değişken (1 – tek kutuplu Hall sensörü, 2 – iki kutuplu Hall sensörü) karakter fanı = 2; //Bu fonksiyon her kesmemizde çağrılacak void rpm() (NbTopsFan++;) // PWM ile dijital bir pine uygulanan voltajı hesaplama fonksiyonu void temp() ( fadeValue = min(int(temper*7),255); // Sıcaklığı katsayı ile çarpın, // çarpımdan bir tam sayı alıyoruz } // Çünkü maksimum PWM değeri 255'tir, o zaman daha fazlasını sağlamanın bir anlamı yoktur - minimum iki tane alın geçersiz kurmak() (tempSensor.begin(TempPin); //Sıcaklık sensörünü başlat lcd.begin(16, 2); //LCD özelliklerini ayarlayın lcd.setDRAMModel(LCD_DRAM_WH1601); //Ve pinMode tipini göster (HallSensor, INPUT ); //Pini kesintileri alacak şekilde yapılandır attachInterrupt(0, rpm, YÜKSELEN); //0 kesme sayısını fonksiyonumuza bağladık ve sinyal her değiştiğinde hesaplanacak) geçersiz döngü() ( öfke = tempSensor.getTemperature(); // Sıcaklığı al sıcaklık(); // PWM'ye sağlanan voltajı hesaplayın analogWrite(PowerPin, fadeValue); // Onu besle NbTopsFan = 0; // Devirleri içeren değişkeni sıfıra sıfırlayın gecikme(1000); //1 saniye bekle Calc = ((NbTopsFan * 60)/fanspace.fandiv); //60 saniyelik RPM değerini fan çarpanına bölerek hesaplayalım lcd.print(Hesap, DEC); //Hesaplanan değerin ondalık biçimde çıktısı lcd.print("rpm-"); lcd.print(temper); //Çıkış sıcaklığı lcd.home(); )

Başlığın ilk bölümünü okuduğunuzda çoğunuz muhtemelen uzun süredir acı çeken Arduino'da başka bir termostat olduğunu düşünmüşsünüzdür. Ve... Bu doğru - evet, bu başka bir kazan, başka bir ev için başka bir termostat, ancak bu yalnızca kısmen doğru - makalede cihazın kendisine konsantre olmak istemiyorum - gerçekten onlardan çok sayıda var (makaleler) ). Elbette termostatı anlatacağım ama mikrokontrolcünün kendisini kazana nasıl bağladığımdan daha fazla bahsetmek istiyorum. Peki ilgilenenler için lütfen...

Hepsi nasıl başladı

Öncelikle şunu söylemek isterim ki, kesinlikle bir programcı değilim ve daha önce gerçek bir mikrodenetleyici ile hiç uğraşmadım. AVR MK (ve genel olarak MK) ile ilk tanışmam, bu gizemli şeyin gerçekte nasıl çalıştığını bilmek istediğim zaman lise yıllarımdaydı. Birkaç makale okudum ve o zamandan beri hafızamda yalnızca iki kelimeyle (DDR ve PORT) tanımlanabilecek parçalar var ve bilgim burada sona erdi. Daha sonra üniversite 5. sınıf - “Mikrodenetleyicilerin programlanması” vardı ve burada hepimiz sanal ortamda MSC51 ile tanıştık. Zaten kesintiler, zamanlayıcılar ve diğer her şey vardı. Bu kadar bilgiyle soruna ulaştım. Bu otobiyografik notu bitirelim ve daha ilginç kısma geçelim.

Peki, aslında, termostatın yaratılması nerede başladı - gaz kazanlı otonom bir ısıtma sistemi kurduktan sonra, çoğu kişi gibi ben de olağan sorunlarla karşılaştım - evdeki sıcaklık dışarıdaki havaya çok bağlıydı - don - bu Dairede soğuk, pillerdeki soğutucunun sıcaklığını artırmanız gerekiyor, ısındı - tam tersine. Tefle böyle danslar bana pek yakışmadı çünkü... Kazanın ayarlanması, bir kapının arkasına monte edilmiş olması ve kapının, üzerinde bir sürü çöp bulunan bir mikrodalga fırınla ​​desteklenmesi nedeniyle karmaşıktı. Peki, fikri anladınız - yumurtanın içinde iğne, ördeğin içinde yumurta vb.

Bu sorun, kazana bağlanan ve soğutma suyu sıcaklığını dış sıcaklığa bağlı olarak otomatik olarak ayarlamasına olanak tanıyan bir OTC (Dış Sıcaklık Telafisi) sensörüyle çok basit bir şekilde çözüldü. Sorun çözülmüş gibi görünüyordu, ancak kazanın (Ferolli Domiproject C24D) servis kılavuzunu okumak umutlarımı hızla alt üst etti - bu modelde harici bir sıcaklık sensörünün bağlanması sağlanmamıştır. Tüm? Tüm. Ve şimdi, muhtemelen bitirebilirdik, ancak yazın, fırtına sırasında, kontrol panosu hala kazanda benim için belirsiz bir şekilde yanıyor ve servis elemanıyla konuşurken (tahta Daha sonra tamir edildi), OTC'yi kazanıma bağlamanın mümkün olup olmadığını sordum. Harici termostatlar kullanarak bağlandıklarını söyledi. Bu aklımda kaldı ama soğuk havalar gelene kadar buna pek konsantre olamadım ve sonra hala aynı sorun devam etti.

Aynı servis talimatlarını incelerken termostatın nasıl bağlandığını görmek amacıyla “OpenTherm regülatörünün” aynı terminallere bağlı olduğunu fark ettim. İşte o zaman farkettim ki, bu BT! Google'da "OpenTherm Arduino" araması beni yine hayal kırıklığına uğrattı; özellikle mantıklı bir şey değildi. Bir mesaj monitörü vardı ama mesele bu değil, dinleyecek bir şeyim yok, sadece bir termostata ihtiyacım var.

Önce Arduino'da basit bir şey inşa edelim. İÇİNDE bölüm 12 Tamamen analog bileşenler kullanan termostatları zaten icat ettik. Şimdi bu faydalı işe dijital teknolojiyi nasıl dahil edebileceğimizi görelim.

Daha önce de belirttiğimiz gibi (bkz. 18. bölüm), AVR denetleyicilerinin 10 bitlik çok kanallı bir ADC içerdiğini. Arduino kartlarında, pinleri analog girişler olarak özel olarak işaretlenmiştir (harf ile) A sıfırdan beşe kadar sayılarla). Lütfen bunların 14'ten 18'e kadar rakamlarla normal dijital olarak da kullanılabileceğini ve bunları bu kapasitede kullanacağımızı unutmayın. Bu girişlerden birini sıcaklığı ölçmek için kullanacağız ve yük bağlantısını dijital çıkışların birinden kontrol edeceğiz.

Toplamda ihtiyacımız olacak:

□ Arduino Uno kartı (başka herhangi biri iş görür);

Sıcaklık sensörü olarak bir termistörüm var. Uygun, örneğin mevcut

□ 25 °C'de 10 kOhm nominal dirence sahip “Amperke” В57164‑К 103‑J - özellikleri şurada verilmiştir: bölüm 13 termistörlerin özelliklerinin bir örneği olarak;

□ değişken direnç 10 kOhm, sabit direnç 620Ohm;

□ yürütme rölesi – elektromanyetik (mutlaka yükseltici bir transistör anahtarıyla, aşağıya bakın) veya katı hal.

Arduino çıkışlarından kontrol için özel olarak tasarlanmış 5 volt elektromanyetik rölelere dayalı modüller satışa sunulmaktadır. Elektromanyetik rölelerin kendileri oldukça büyük bir kontrol akımı gerektirir (ve röle ne kadar güçlü olursa o kadar güçlü olur; yalnızca en düşük güçlü reed röleler doğrudan mantıktan çalışabilir), bu nedenle bu tür röle modüllerinin tümü bir transistör amplifikatör anahtarına sahip olmalıdır. Örneğin Amperka, HLS8L‑DC5V‑S‑C rölesini temel alan böyle bir modül satıyor. Elektromanyetik röleden memnun değilseniz ve devrenin aşırı basitliği için çabalıyorsanız, katı hal rölelerini arayabilirsiniz - örneğin, Crydom'dan CX240D5R veya 3-15 V çalışma voltajına sahip benzerleri uygundur. Kontrol akımları girişte 5 voltta yaklaşık 15 mA'dır ve bu AVR'ler için kabul edilebilirdir, çünkü kontrol girişleri doğrudan Arduino dijital çıkışına bağlanabilir. Doğru, 220 volt voltajda CX240D5R, bir kilovattan daha fazla güce sahip bir yükü değiştiremez, ancak bu görev için daha fazlasına ihtiyacımız yok.

Arduino Uno'daki termostat devresi Şekil 1'de gösterilmektedir. 21.2.

Pirinç. 21.2. Termostat diyagramı açık Arduino Uno

Diyagramda, K1 röle sargısı (normalde açık kontaklarla) geleneksel olarak doğrudan Arduino'nun dijital çıkışına bağlanır - bunun ya daha önce belirtilen gerekli özelliklere sahip katı hal rölesi ya da sadece kontrol girişi olduğu varsayılır. bitmiş bir röle modülü kartı. Devrenin durumunu izlemek için ısıtıcıyla aynı anda bir LED etkinleştirilir. Bu şemaya göre termostat programı son derece basittir:

Direnç değerleri, 25 °C'de (103‑J) 10 kOhm nominal dirençle belirtilen termistör B57164‑K'ye ayarlanır. Programa uygun olarak röle, ADC çıkış değeri olan 500'e yakın bir yerde çalışacaktır. Bu, yaklaşık olarak 10 bitlik aralığın ortasıdır (tüm ölçek 1024 derecedir), yani bu değer, üst ve alt dirençler AO girişine göre yaklaşık olarak eşittir (bu durumda bu girişteki voltaj yaklaşık 2,5 volt olacaktır).

Lütfen her iki işlevin de olduğunu unutmayın. eğer her zamanki gibi bitmesin başka. Tıkırdamayı önlemek için programa histerezis eklenmiştir: kod değeri 510'u aştığında röle açılır, 490'a düştüğünde kapanır. Bu arada önceki durumunu koruyacaktır. Yirmi birim kod (içinde ne var?) bölüm 12 Biz aradık ölü bölge) yaklaşık 10 milivolta karşılık gelir, yani 30-40 derece aralığındaki bir sıcaklıkta histerezis derecenin onda birinden biraz daha az olacaktır (Tablo 13.1'i kullanarak kendiniz kontrol edin). bölüm 13).

Bu parametrelerle R2 direncini kullanarak tepki sıcaklığının ayarlanması yaklaşık 22 ila 96 °C aralığında mümkündür. Elbette pratikte bu kadar geniş bir ayar aralığına gerek yoktur, dolayısıyla R2 değerinin düşürülmesi tavsiye edilir. R1 değeri, R1 ve R2'nin nominal değerinin toplamı istenen sıcaklık aralığının alt değerindeki termistör direncine eşit olacak şekilde seçilir (Tablo 13.1'e uygun olarak). Daha doğru bir uyum için, belirlenen sıcaklığı normal bir termometre ile ölçerek programdaki eşik değerlerini kalibre edebilir ve değiştirebilirsiniz.

Bu devrede başka sensörler kullanırsanız sıcaklık katsayısının işaretini unutmayın. Diyot bağlantısında sıradan bir diyot veya transistör (devrelerde olduğu gibi) bölüm 13) ayrıca karakteristikte negatif bir eğime sahiptir, bu nedenle programda onlar için yalnızca yanıt eşiğinin sayısal değerlerini değiştirmeniz gerekecektir. Ancak TMP35 gibi yarı iletken sensörler (bkz. bölüm 13) veya basitçe metal dirençli termometreler (yapılan tasarımda olduğu gibi) bölüm 17) pozitif bir sıcaklık katsayısına sahip olduğundan çalışma koşullarının tersine çevrilmesi gerekecektir. Ve sadece "daha fazla" yı "daha az" olarak değiştirmekle kalmayıp, aynı zamanda histerezis eşiklerinin oranını da değiştirin - yeni durumda, değer daha küçük eşikten düşükse ısıtıcının açılması ve açılması gerekecektir. daha büyük olandan daha fazlaysa kapalı.


Tepe