İçindekiler:

Arduino Kullanarak PT100'den Sıcaklık Ölçümü: 6 Adım (Resimli)
Arduino Kullanarak PT100'den Sıcaklık Ölçümü: 6 Adım (Resimli)

Video: Arduino Kullanarak PT100'den Sıcaklık Ölçümü: 6 Adım (Resimli)

Video: Arduino Kullanarak PT100'den Sıcaklık Ölçümü: 6 Adım (Resimli)
Video: LM35 ve LCD ile Arduino Termometre 2024, Kasım
Anonim
Arduino Kullanarak PT100'den Sıcaklık Ölçümü
Arduino Kullanarak PT100'den Sıcaklık Ölçümü

PT100, çevre sıcaklığına bağlı olarak direncini değiştiren bir direnç sıcaklık dedektörüdür (RTD), yavaş dinamik ve nispeten geniş sıcaklık aralıklarına sahip endüstriyel işlemler için yaygın olarak kullanılır. Yavaş dinamik süreçler için kullanılır, çünkü RTD'ler yavaş yanıt sürelerine sahiptir (bundan daha sonra bahsedeceğim), ancak doğrudur ve zaman içinde düşük sapmaya sahiptir. Bu Eğitilebilir Kitapta size göstereceğim şey endüstriyel standarda uygun olmayacak, ancak sizi birçok hobinin aşina olacağı LM35'i ve gösterilen devre teorisini kullanmaktan ziyade sıcaklığı ölçmek için alternatif bir yol gösterecek. diğer sensörlere uygulanabilir.

Adım 1: Bileşenler

1x PT100(İki Telli)

1x Arduino(Herhangi Bir Model)

3x 741 Çalışma Amplifikatörleri (LM741 veya UA741)

1x 80ohm Direnç

2x 3.9kohms Dirençler

2x 3.3kohm Dirençler

2x 8.2kohm Dirençler

2x 47kohm Dirençler

1x 5kohm Potansiyometre

1x İki Terminalli Güç Kaynağı veya 8x 1.5V AA Pil

İki kablolu bir PT100 kullanıyorum, üç ve dört kablolu PT100'lerin farklı devreleri olacak. Bunların çoğu için direnç değerleri yukarıdaki ile tamamen aynı olmak zorunda değildir, ancak eğer bir çift direnç varsa, yani 3.9Kohms, onları 5k diyelim, değiştirdiyseniz, her ikisini de 5k için değiştirmeniz gerekir. aynı olması gerekiyor. Devreyi aldığımızda farklı değerler seçmenin etkisini söyleyeceğim. İşlem yükselteçleri (op amp'ler) için başka op amp'ler kullanabilirsiniz ama bunlar benim kullandıklarım.

2. Adım: Wheatstone Köprüsü

Wheatstone köprüsü
Wheatstone köprüsü
Wheatstone köprüsü
Wheatstone köprüsü
Wheatstone köprüsü
Wheatstone köprüsü

Devrenin ilk kısmından bahsetmeden önce PT100 için dirençten sıcaklık elde etme formülünden bahsetmem gerekiyor, direncin formülü şu şekilde:

resim
resim

burada Rx, PT100 direncidir, R0, 0 derece C'deki PT100 direncidir, α, sıcaklık direnci katsayısıdır ve T, sıcaklıktır.

resim
resim

Bu bir PT100 olduğu için R0 100ohm'dur, eğer bir PT1000 olsaydı, R0 1000ohm olurdu. α, veri sayfasından alınan 0,00385 ohm/derece C'dir. Ayrıca burada bulunabilecek daha doğru bir formül var, ancak yukarıdaki formül bu proje için yapacak. Formülü transpoze edersek, belirli bir direnç için sıcaklığı hesaplayabiliriz:

resim
resim

Diyelim ki -51.85 ila 130 derece C sıcaklık aralığına sahip bir şeyi ölçmek istiyoruz ve PT100'ü resim 1'de gösterilen devreye yerleştirdik. Yukarıdaki denklemi ve bir voltaj bölücüden (gösterilen) voltaj denklemini kullanarak. ilk resimde) voltaj aralığını hesaplayabiliriz. T aralığının altı = -51.85(80ohms)

resim
resim

ve 130 derecede (150ohms):

resim
resim

Bu, 0.1187V'lik bir aralık ve 0.142'lik bir DC ofseti verecektir çünkü sıcaklığımızın asla -51.85 derece C'nin altına düşmeyeceğini biliyoruz, bu, bu voltajı yükselttiğimizde önemsediğimiz aralıktaki (80 ila 130ohms) hassasiyeti azaltacaktır. Bu DC ofsetinden kurtulmak ve hassasiyetimizi arttırmak için ikinci resimde gösterilen Wheatstone köprüsünü kullanabiliriz.

İkinci gerilim bölücünün (Vb-) çıkışı, daha sonra bir diferansiyel yükselteç kullanılarak birinci gerilim bölücü çıkışından (Vb+) çıkarılacaktır. Köprü çıkışının formülü sadece iki voltaj bölücüdür:

resim
resim

PT100 için çıkış voltajı 80ohm'dur ve resimdeki diğer değerleri kullanarak:

resim
resim

ve Pt100'ün 150ohm olması için:

resim
resim

Wheatstone'u kullanarak DC ofsetinden kurtulur ve amplifikasyondan sonra hassasiyeti arttırırız. Artık Wheatstone köprüsünün nasıl çalıştığını bildiğimize göre neden 80ohm ve 3.3kohm kullandığımızdan bahsedebiliriz. 80ohms, yukarıdaki formülden bir tür açıklanmaktadır, bu değeri seçin (buna ofset direnci Roff diyeceğiz) sıcaklığınızın alt aralığı veya daha iyisi, aralığınızın alt aralığının biraz altında, eğer kullanılıyorsa, bu değeri seçin. sıcaklık regülasyonu için kontrol sistemleri veya bunun gibi bir şey, sıcaklığın sizin sıcaklık aralığınızın altına ne kadar düştüğünü bilmek istersiniz. Bu nedenle, aralığınızın alt sınırı -51.85C ise, Roff'unuz için 74.975 ohm (-65 derece C) kullanın.

Akımı sınırlamak ve çıkışın doğrusallığını artırmak için iki nedenden dolayı R1 ve R3 için 3.3k seçtim. PT100 sıcaklığa bağlı olarak direnci değiştirdiğinden, içinden çok fazla akım geçmesi kendi kendine ısınma nedeniyle yanlış okumalar verecektir, bu yüzden maksimum 5-10mA akım seçtim. PT100 80ohms olduğunda akım 1.775mA'dır, bu nedenle maksimum aralığın altında güvenlidir. Duyarlılığı artırmak için direnci düşürürsünüz, ancak bunun doğrusallık üzerinde olumsuz bir etkisi olabilir, çünkü daha sonra bir çizginin denklemini kullanacağız (y=mx+c) doğrusal olmayan bir çıktıya sahip olmak hatalara neden olacaktır. Üçüncü resim, farklı üst dirençler kullanan bir köprü çıkışı grafiğine sahiptir, düz çizgi gerçek çıkıştır ve noktalı çizgi, doğrusal yaklaşımdır. Koyu mavi grafikte görebilirsiniz (R1&R3=200ohms) en büyük voltaj aralığını verir ancak çıkış en az doğrusaldır. Açık mavi (R1&R3=3.3kohms) en küçük voltaj aralığını verir ancak noktalı çizgi ve düz çizgi üst üste binerek doğrusallığının çok iyi olduğunu gösterir.

Bu değerleri uygulamanıza uyacak şekilde değiştirmekten çekinmeyin, ayrıca voltajı değiştirirseniz akımın çok yüksek olmadığından emin olun.

Adım 3: Amplifikasyon

Amplifikasyon
Amplifikasyon
Amplifikasyon
Amplifikasyon

Son adımda, çıkarılan iki voltaj bölücünün çıkış aralığının 0 ila 0.1187 olduğunu bulduk ancak bu voltajların nasıl çıkarılacağı hakkında konuşmadık. Bunu yapmak için, bir girişi diğerinden çıkaracak ve bunu amplifikatörün kazancıyla yükseltecek bir diferansiyel amplifikatöre ihtiyacımız olacak. Diferansiyel amplifikatör devresi ilk resimde gösterilmiştir. Vb+'yi ters çeviren girişe ve Vb-'yi evirici olmayan girişe beslersiniz ve çıkış Vb+ - Vb- olur ve bir kazançla yani amplifikasyon olmaz ama resimde gösterilen dirençleri ekleyerek 5.731 kazanç ekleriz.. Kazanç şu şekilde verilir:

resim
resim

Ra, R5 ve R7'dir ve Rb, R6 ve R8'dir, çıkış voltajı şu şekilde verilir:

resim
resim

Bu amfiyi sadece köprünün çıkışına bağlamakla ilgili iki sorun var, yükleme efekti ve kazancı değiştirme. Amplifikatörün kazancını değiştirmek, iki çift direnç aynı olması gerektiğinden en az iki direnci değiştirmenizi gerektirir, bu nedenle aynı değere sahip iki pota sahip olmak can sıkıcı olurdu, bu yüzden enstrümantasyon amplifikatörü adı verilen bir şey kullanacağız. aşağıda bahsettiğim. Yükleme etkisi, PT100'deki voltaj düşüşünü etkileyen amp içine giriş dirençleridir, PT100'deki voltajın değişmemesini istiyoruz ve bunu yapmak için giriş dirençleri için çok büyük dirençler seçebiliriz, böylece PT100'ün paralel direnci ve giriş direnci PT100 direncine çok yakındır ancak bu, girmeyeceğim gürültü ve voltaj çıkış ofseti ile ilgili sorunlara neden olabilir. Sadece Kohms aralığında orta aralığı seçin ama dediğim gibi, küçük dirençlere sahip olmak da kötü, bu yüzden devreyi biraz değiştireceğiz.

İkinci resimde, devrelerin iki yarısını (köprü ve amplifikasyon) ayırmak için bir tampon amfi görevi gören bir enstrümantasyon amfisine bağlı köprünün çıkışına sahibiz ve aynı zamanda sadece bir potansiyometreyi değiştirerek girişi yükseltmek için kullanıma izin verir (Regain). Enstrümantasyon amplifikatörünün kazancı şu şekilde verilir:

resim
resim

burada Rc, potun üstündeki ve altındaki iki 3.9k dirençtir.

Rgain azaltılarak, amplifikasyon artar. Daha sonra Va ve Vb (güçlendirilmiş Vb+ ve Vb-) noktasında, daha önce olduğu gibi sadece bir diferansiyel amplifikatördür ve devrenin toplam kazancı, yalnızca kazançların çarpımıdır.

resim
resim

Roff ile daha önce yaptığımız gibi bir şey yapmak istediğiniz kazancınızı seçmek için, aralığınızdaki maksimum sıcaklığınızın hemen üzerinde bir direnç seçmeliyiz, her ihtimale karşı. 5V adc'ye sahip Arduino kullandığımız için, devrenin maksimum çıkışı seçtiğiniz maksimum sıcaklıkta 5V olmalıdır. 150ohm'u maksimum direnç olarak seçelim ve yükseltilmemiş köprü voltajı 0.1187V idi, ihtiyacımız olan kazanç 42.185 (5/0.1187)

Diyelim ki Ra, Rb ve Rc'yi 8.2k, 47k ve 3.9k olarak tutuyoruz, sadece pot Rgain'in değerini bulmamız gerekiyor:

resim
resim

Bu nedenle, kullandığımız sıcaklık aralığından tam 5 volt elde etmek için, Rgain değerini 1.226k olarak değiştirin. Diferansiyel amplifikatörden çıkan çıkış voltajı şu şekilde verilir:

Adım 4: Devreye Güç Verme

Devreye Güç Verme
Devreye Güç Verme
Devreye Güç Verme
Devreye Güç Verme
Devreye Güç Verme
Devreye Güç Verme

Bu devrenin son adımı, op amp devrelerinde Vcc+ ve Vcc- fark etmiş olabilirsiniz, çünkü düzgün çalışması için hem pozitif hem de negatif voltaja ihtiyaçları var, tek raylı op-amp alabilirsiniz ama karar verdim Bu amfiyi etrafta yattığım şey olarak kullanmak için. Yani +6V ve -6V sağlayacağız, bunu yapmanın üç yolu var. Birincisi, tek bir güç kaynağından iki güç kaynağına veya iki çıkış terminaline sahip olduğumuz, her ikisinin de 6V'de ve bir pozitif çıkışın diğerinin negatifine bağlı olduğu ilk resimde gösterilmektedir. Üst kaynağın 6V'si bizim +6V'miz olacak, alt kaynağın pozitifi GND ve alt kaynağın negatifi -6V olacak. YALNIZCA İKİ SARF MALZEMESİNİN GND'LERİ AYRILMIŞSA YA DA GÜÇ KAYNAĞINIZA ZARAR VERECEKSE BAĞLAYIN. Tüm ticari güç kaynakları ayrı GND'lere sahip olacaktır, ancak kontrol etmek istiyorsanız, multimetrenizdeki süreklilik test cihazını kullanın, eğer ses çıkarsa bu kurulumu kullanmayın ve bir sonrakini kullanın. Ev yapımı tedarikimde, bunu yaparken sigortayı patlattım.

İkinci resimde sahip olabileceğimiz ikinci kurulum, bir kaynağın diğerinin iki katı voltaja sahip olmasını gerektirir, ancak GND'ler bağlıysa kaynağa zarar vermez. Biri 12V, diğeri 6V olmak üzere iki kaynağımız var. 12V bizim +6V'muz olarak hareket edecek, ikinci kaynağın 6V'si GND olarak hareket edecek ve sarf malzemelerinin iki gerçek GND'si -6V olarak hareket edecek.

Bu son kurulum sadece bir çıkışlı güç kaynakları içindir, besleme voltajının yarısını tampon amplifikatörden geçirerek sanal bir zemin oluşturmak için kazanç 1'lik bir tampon amplifikatör kullanır. Ardından 12V +6V olarak hareket edecek ve gerçek GND terminali -6V olacaktır.

Pil kullanmak istiyorsanız, ilk kurulumu öneririm, ancak pillerle ilgili bir sorun, ölmeye başladığında voltajın düşmesi ve köprüden çıkan voltajın da düşmesi, yanlış sıcaklık okumaları vermesidir. Elbette pillerden gelen voltajı okuyabilir ve bunları hesaplamalara dahil edebilir veya regülatör ve daha fazla pil kullanabilirsiniz. Sonunda, sana kalmış.

Adım 5: Tam Devre ve Kod

Tam Devre ve Kod
Tam Devre ve Kod
Tam Devre ve Kod
Tam Devre ve Kod
Tam Devre ve Kod
Tam Devre ve Kod

Devrenin tamamı yukarıda gösterilmiştir ve devreleri breadboard üzerinde oluşturmanıza, devre şemasını (resim 2'de gösterilmiştir) ve PCB şemalarını düzenlemenize izin veren Autodesk'in yeni Circuits.io'sunda yapılmıştır ve en iyi kısmı, devreyi breadboard'dan simüle etmenize ve Hatta bir Arduino'yu programlayabilir ve onu breadboard modunda bağlayabilir, sayfanın ilerisinde simülasyon vardır ve iki pot ile oynayabilirsiniz. Devreyi çoğaltmak ve kendi değerlerinizi koymak isterseniz devreyi burada bulabilirsiniz. İlk pot 70ohm'dur ve PT100'ü 80-150ohms aralığında simüle eden 80ohm'luk bir dirençle seri halindedir, ikinci pot enstrümantasyon amfisinin kazancıdır. Maalesef kodum için indirdiğim bir kütüphaneyi kullandım, bu yüzden Arduino aşağıdaki devreye dahil değil ama bağlamanız gereken sadece iki ekstra kablo var. LTspice ile daha rahatsanız, devreye bir asc dosyası ekledim.

A0 pinini Diferansiyel amplifikatörün çıkışına bağlayın

Arduino'nun GND'sini devrenin GND'sine bağlayın (-6V DEĞİL)

Ve bu devre yapıldı, şimdi koda geçelim. Daha önce y=mx+c formülünü kullanacağımızdan bahsetmiştim, şimdi m(eğim) ve c(kayma) hesaplayacağız. Arduino'da voltajı okuyacağız, ancak sıcaklık denklemi PT100'ün direncini bilmemizi gerektiriyor, bu yüzden bunu yapabilmemizin bir yolu Serial.println(temp) öğesini Serial.println(V) ile değiştirmek ve kaydetmektir. iki sıcaklıkta voltaj ve direnç. Bu testi yaparken PT100'ü bir iki dakika gibi bir süre yalnız bırakın ve herhangi bir ısı kaynağından (güneş ışığı, dizüstü bilgisayar fanı, vücudunuz vb.) uzak tutun.

Alabileceğimiz ilk nokta oda sıcaklığıdır, devreyi bağladığınızda ve çalışırken Arduino tarafından okunan voltajı (Vt1) seri monitöre kaydedin ve PT100'ü hızlı bir şekilde ayırın ve direncini (Rt1) kaydedin. direnci değiştireceğinden, bağlantıyı keserken probu elinize alın. İkinci sıcaklık için, probu buzlu suya veya sıcak suya (sıcak su kullanıyorsanız dikkatli olun) yerleştirebilir ve Vt2 ve Rt2'yi bulmadan önce yaptığımızı tekrarlayabiliriz. Probu sıvıya yerleştirdikten hemen sonra direncin oturması için bir veya iki dakika bekleyin. PT100'ün zaman tepkisi ile ilgileniyorsanız, her 2 saniyede bir seri monitörün voltajını kaydedin ve bundan bir grafik çizebiliriz ve bunu daha sonra açıklayacağım. İki voltaj ve direnci kullanarak eğimi aşağıdaki gibi hesaplayabiliriz:

resim
resim

Rt1 ve Rt2, iki sıcaklıktaki dirençlerdir ve aynı Vt1 ve Vt2 voltajları için de geçerlidir. Eğimden ve kaydettiğiniz iki nokta kümesinden birinden ofseti hesaplayabiliriz:

resim
resim

C, gerçek Roff'unuza yakın olmalı, Simülasyonumdan şu değerleri hesapladım:

resim
resim

Bu dirençten, başlangıçta sahip olduğumuz formülü kullanarak sıcaklığımızı bulabiliriz:

resim
resim

İşte bu kadar, Arduino'nun kodu aşağıda, herhangi bir sorun yaşarsanız, yorum bırakın, yardımcı olmaya çalışacağım.

Bir süre önce yaptığım devrenin resimleri yok ve artık yeniden yapıp test edecek PT100'üm yok ama işe yaradığına bana inanmanız gerekecek. Instructables'ta PT100 hakkında bulduğum pek bir şey yok, bu yüzden bunu mümkün hale getirdim.

Bir sonraki adımda PT100'ün zaman tepkisinden bahsedeceğim ve matematikle ilgilenmiyorsanız, bir sıcaklık değişimini ölçerken, okumaya başlamadan önce PT100'ün bir dakika kadar oturmasına izin verin.

Yaptığım diğer projeleri görmekle ilgileniyorsanız, ziyaret edin

Blog: Roboroblog

YouTube Kanalı: Roboro

Veya diğer Eğitilebilir Öğelerime bakın: burada

HTML aşağıdaki kodla karışırsa, kod eklenir

* Bu kod, bir PT100 kullanarak sıcaklığı hesaplar

* Yazan Roboro * Github: <a href="https://github.com/RonanB96/Read-Temp-From-PT100-… <a href="https://github.com/RonanB96/Read-Temp- From-PT100-… <a href="https://github.com/RonanB96/Read-Temp-From-PT100-… >>>>>>>>> * Circuit: <a href=" href="https://github.com/RonanB96/Read-Temp-From-PT100-… <a href=" https://github.com/ronanb96/read-temp-from-pt100-…="">>>>>>>>>> * Blog: <a href=" href="https://github.com/RonanB96/Read-Temp-From-PT100-… <a href=" https://github.com/ronanb96/read-temp-from-pt100-…="">>>>>>>>>> * Instrustable Post: <a href=" href="https://github.com/RonanB96/Read-Temp-From-PT100-… <a href=" https://github.com/ronanb96/read-temp-from-pt100-…="">>>>>>>>>> * */ //You'll need to download this timer library from here //https://www.doctormonk.com/search?q=timer #include "Timer.h" // Define Variables float V; float temp; float Rx; // Variables to convert voltage to resistance float C = 79.489; float slope = 14.187; // Variables to convert resistance to temp float R0 = 100.0; float alpha = 0.00385; int Vin = A0; // Vin is Analog Pin A0 Timer t; // Define Timer object

void setup() {

Serial.begin(9600); // Set Baudrate at 9600 pinMode(Vin, INPUT); // Make Vin Input t.every(100, takeReading); // Take Reading Every 100ms } void loop() { t.update(); // Update Timer } void takeReading(){ // Bits to Voltage V = (analogRead(Vin)/1023.0)*5.0; // (bits/2^n-1)*Vmax // Voltage to resistance Rx = V*slope+C; //y=mx+c // Resistance to Temperature temp= (Rx/R0-1.0)/alpha; // from Rx = R0(1+alpha*X) // Uncommect to convet celsius to fehrenheit // temp = temp*1.8+32; Serial.println(temp); }

Step 6: Time Response of PT100

PT100'ün Zaman Tepkisi
PT100'ün Zaman Tepkisi

PT100'ün yavaş tepki verdiğinden bahsetmiştim ama PT100 tarafından herhangi bir t anında okunan mevcut sıcaklık için bir formül elde edebiliriz. PT100'ün yanıtı, Laplace terimleriyle, yani transfer fonksiyonuyla şu şekilde yazılabilen birinci dereceden bir yanıttır:

resim
resim

burada tau(τ) zaman sabitidir, K sistemin kazancıdır ve s, ω frekans olmak üzere jω olarak yazılabilen Laplace operatörüdür.

Zaman sabiti, birinci dereceden bir sistemin yeni değerine yerleşmesinin ne kadar sürdüğünü söyler ve bir kural veya başparmak, 5*tau'nun yeni sabit duruma yerleşmesinin ne kadar süreceğini gösterir. Kazanç K size girişin ne kadar yükseltileceğini söyler. PT100 ile kazanç, direnç değişikliklerinin sıcaklık değişimine bölünmesiyle elde edilen değerdir, bu veri sayfasından iki rastgele değer seçerek 0,3856 ohm/C kazanç elde ettim.

Probu sıvıya sıcak veya soğuk koyduktan sonra 2 saniyede bir voltajı kaydedebilirsiniz demeden önce, bundan sistemin zaman sabitini hesaplayabiliriz. Öncelikle, başlangıç noktasının ve bitiş noktasının nerede olduğunu belirlemeniz gerekir, başlangıç noktası, probu sıvıya koymadan önceki voltajdır ve bitiş noktası yerleştiğindedir. Sonra onları çıkarın ve bu adımın voltaj değişimi, yaptığınız test, bir sisteme girişte ani bir değişiklik olan bir adım değişikliğiydi, adım sıcaklıktı. Şimdi grafiğinizde voltaj değişiminin %63.2'sine gidin ve bu zaman zaman sabitidir.

resim
resim

Bu değeri transfer fonksiyonuna eklerseniz, sistemlerin frekans tepkisini tanımlayan formüle sahip olursunuz, ancak şu anda istediğimiz bu değil, sıcaklıktaki bir adım için t zamanındaki gerçek sıcaklığı istiyoruz, bu yüzden gidiyoruz. sisteme bir adımın ters Laplace dönüşümünü yapmak zorunda olmak. Adım girişi olan birinci dereceden bir sistemin transfer fonksiyonu aşağıdaki gibidir:

resim
resim

Ks, adım boyutu, yani sıcaklık farkıdır. Diyelim ki sonda 20 derece C'ye yerleştirildi, 30 derece C'deki suya yerleştirildi ve sondanın zaman sabiti 8s, transfer fonksiyonu ve zaman alanı formülü aşağıdaki gibi:

resim
resim

δ(t) sadece bir dürtü anlamına gelir, yani bu durumda 20 derecelik DC ofseti, bunu hesaplarken denklemlerinize sadece 20 yazabilirsiniz. Bu, birinci dereceden bir sisteme adım için standart denklemdir:

resim
resim

Yukarıdakiler, t zamanındaki sıcaklığı hesaplar, ancak bu, birbirleriyle orantılı oldukları için voltaj için işe yarar, sadece başlangıç ve bitiş değerine, zaman sabitine ve adım boyutuna ihtiyacınız vardır. Symbolab adlı bir web sitesi, matematiğinizin doğru olup olmadığını kontrol etmek için harikadır, Laplace, entegrasyon, farklılaşma ve diğer birçok şeyi yapabilir ve size yol boyunca tüm adımları verir. Yukarıdakilerin ters Laplace dönüşümü burada bulunabilir.

Önerilen: