JBC istasyon yapımı konulu yazı dizisine devam ediyorum. Bu yazının konusu uç sıcaklığının ölçülebilmesi. Bunu yapabilmek için metalurji, elektronik, MySQL, Excel ve elbette matematik kullanıyoruz.

 

JBC uçlarda sıcaklık ölçümü

Uçların içinde ısıtıcı elementle birlikte yer alan bir termokupl bulunmakta. Bu termokupla erişme konusu kendi içinde biraz detay barındırsa da kullanılabilecek bağlantı yollarından biri şu şekilde:

jbctip

+ ve – yazan terminaller hem ısıtıcı elemente, hem de termokupla bağlı. Yani ya ucu ısıtabilir ya da sıcaklığı okuyabilirsiniz, ikisi aynı anda yapılamıyor. (C245 serisi uçlar için C1 ve C2 arasından da okumanız mümkün)

Termokuplun okunması

Termokupl (thermocouple), iki farklı türden metalin birleşimi sonucunda elde edilen, uygulanan sıcaklığa gerilim üreterek tepki veren bir malzeme. Fiziksel olarak çalışması “Seebeck effect” denilen prensibe bağlı; meraklısını Wikipedia’ya davet ediyoruz.

Birçok kişinin atladığı önemli bir nokta da şu; birazdan okuyacağınız tüm elektronik ve matematik hesapları yapsanız da bir termokupldan kesin bir sıcaklık değeri okuyamazsınız. Zira termokupl soğuk ayağına (cold junction) göre bağıl (göreli) bir değer verir. Yani termokupl aslında sıcaklık farkı okur, kesin sıcaklık vermez. Kesin sıcaklık elde etmek istiyorsanız, ortam sıcaklığını (cold junction) da hesabın içine katmanız gerekiyor. Ortam sıcaklığı + TC’dan okunan değer size kesin sıcaklığı verecektir.

Bu malzemenin kullanılması konusunda yaşanacak olan iki temel sıkıntı var. Birincisi elektronik kısım, diğeri ise matematiksel.

 

Termokuplun sıcaklığa tepki olarak gerilim ürettiğini söylemiştim. Fakat bu gerilim (örneğin K tipi termokupl için) 1 santigrad derece için 41 µV gibi, düşük bir gerilim. Bunu (maksimum hassasiyet için ADC’nizin rangeına uygun) bir şekilde yükseltip öyle okumanız gerekiyor. Anlayacağınız 200+ kazançlı opamplar devreye giriyor. Benim nasıl yaptığımı yazı dizisinin devamında ele alacağım.

 

Matematiksel açıdan thermocouple bağlantısı

Thermocoupleın verdiği gerilimi santigrad cinsinden sıcaklığa çevirmeniz gerektiğinde işin içine matematik giriyor. Basit olarak üstünden geçmek gerekirse, piyasada bulunan thermocoupleların tipleri var, bu tiplere göre de gerilim/sıcaklık eğrileri var. En sık kullanılanı K tipi, yukarıda yazdığım gibi 41 µV artış yaklaşık 1 derece santigrada tekabül ediyor. Yaklaşık diyorum çünkü termokupllar lineer çıkış vermiyor. 41 µV hesabı basitleştirir, belki çoğu iş için de yeterli kalacaktır ancak hassas bir değer okumanız gerektiğinde iş karışıyor.

 

NIST ITS-90 Thermocouple Database

http://srdata.nist.gov/its90/main/ adresinden erişilebilen sayfada NIST (Amerikan Ulusal Standartlar ve Teknoloji Enstitüsü, bizdeki TSE) tarafından hazırlanan tablolar bulacaksınız. Misal http://srdata.nist.gov/its90/type_k/0to300.html adresine gittiğinizde, K tipi bir termokuplun 0-300C aralığında vereceği gerilim değerlerinin bir listesini bulacaksınız. Eğer hassas bir okuma yapmak istiyorsanız bu tablodaki değerlerden faydalanmanız gerekiyor. Nasıl faydalanacaksınız derseniz, ya lineer interpolasyon, eğri uydurma ya da NIST tarafından verilen polynomial coefficientları kullanarak misal K tipi için 0.06C hassasiyette veri elde edebiliyorsunuz.

 

Peki elinizdeki termokuplun ne tip olduğu belli değilse?

JBC uçlarının içinde ne tip bir termokupl kullanıldığı belli değil. Bu durumda NIST tabloları bize yardımcı olmuyor, iş başa düşüyor. Bilinen bir ölçümle referans aldırarak elimizdeki JBC uçları için bir referans çıkarmaya çalışıyoruz.

 

Bu işi yapabilmek için masamın üstünü şu hale getirdim:

IMG_0148_pt

En önde JBC sap ve bir adet uç takılı, uçta ısı transferini artırabilmek adına biraz lehim var, ayrıca bu lehim topu içine gömülü bir termokupl var. Bu beyaz kablo ile bağlı gözüken termokuplun K tipi olduğunu biliyorum. Dolayısıyla hesap kitabını yaparak relative bir değer okumam mümkün. Havya ucu içindekinin hesabını yapamadığımı söylemiştim yukarıda, hesabını yapabildiğim diğer termokupl sayesinde referans alarak onu da hesaplayabilir noktaya gelmeye çalışıyoruz. Kullandığım termokupl ziyadesiyle dandik (çin malı avometrelerin içinden çıkanlardan), ama elimde sadece bu var.

Ayrıca havya ucunu süren ve uç içindeki termokuplu okuyan devre, onun arkasında K tipi thermocouple bağlantısını kolaylaştırmak için kullandığım MAX6675 ve bütün bunları okuması için bir adet Arduino var. Okunan değerleri loglayıp sonra üzerinde işlem yapabilmemin önünü açabilmesi için bir adet bilgisayar ve log alma işinden sorumlu CoolTerm isimli terminal programı da açık durumda. Uç 14V’da 8A civarı çektiğinden, masanın alev almaması için dandiğinden bir adet otomotiv tipi sigorta da fotoğrafta görülebiliyor.

 

Arduino üzerinde koşan yazılım; ucu kademeli olarak 460C’a kadar ısıtıp hem uç içindeki termokupldan, hem de dışarıdan dokundurduğumuz termokupldan örnekler alıp terminale yazıyor. JBC için okuduğumuz değer 0-1024 arası (10 bit ADC çözünürlüğü), termokupldan okuduğumuz değer ise santigrad derece. Bu sayede JBC termokupl gerilimini ADC value cinsine çevirme işini de atlamış oluyorum.

Sistem çalıştığında verdiği çıkışı görmek isteyenler için buraya da yüklüyorum. CoolTerm Capture 2016-07-03 18-24-28

 

Bahsettiğim prosedürü ortalamasını alabilmek adına 3 kere çalıştırdım. Oluşan dosyaları da bir MySQL veritabanı yaratıp içine gömdüm. Bir SQL sonrasında referans tablom hazırdı.

Excel’de yapılıyordur bu kesin ama ben bilmiyorum, bilen okuyucular yorum alanına bekleniyor.

 

adccalc

 

Tabii ki hayat hiçbir zaman bu kadar kolay olmadı, yüksek sıcaklıklarda sapan değerlerim ortaya çıktı. >200C değerler için 5-10 kere daha örnekleme yapıp veritabanına ekledim Sonrasında okuduğum verileri Excel’de grafiğe döktüm ve trend line çizdirdim. Scatterplot içindeki kırmızı çizgi trend linemız. Üstünde de hesabı için ikinci dereceden polinomumuz yer alıyor.

Plotun çok dağılmış olmasının sebebi benim ölçüm tekniğim ve elektriksel gürültü. Her yerde uçan kablolar ve referans aldığımız TC’a bağlı olan MAX6675 SMD bacaklarına 30AWG modwire ile Arduino soketine tutturulmuş şekilde çalışıyor 🙂

excel

 

Excel’in bize çıkarttığı polinomal denklem sayesinde artık 0-1000 arası ADC değerlerinin kaç derece santigrada tekabül ettiğini hesaplamamız mümkün. Formülde eksik olan tek şey, cold junction. Şu ana kadar hiç hesaba katmamıştık; formül sonundaki toplama işlemindeki sabit zaten oda sıcaklığı manasına geliyor (tam olarak değil, ama idare eder). Ekstra bir sensörden okunan ambient temperature değeri bu hesaba girilebilir. Ben ölçümleri yaparken oda 30 derece sıcaklıkta idi, sabitimiz de 34.5 zaten.

Mikrokontrolcü üzerinde polynomial hesap yapmak istemiyorsak 0-1024 arası çizdirip içinden örneğin 100 örnek alarak, bunu lineer interpolasyon ile de kullanmamız mümkün. Henüz ben de hangi yolu kullanacağıma karar vermedim, PIC’de hardware multiplier yoktu en son, ama ATMega32’de çalışacak bu uygulama ve onda var, dolayısıyla tercih edilebilir. Saniyede 10+ kere ADC değerinden C’a çevrim yapılacak, hangisi mikrokontrolcümüzü daha az kasarsa onu tercih edeceğim. Buna takılıyorum çünkü MCU aynı anda PID hesabına bağlı interrupt bazlı PWM üretimi, OLED ekran sürme, rotary encoder okuma, 32x ADC oversampling  vb. gibi işlerle de meşgul.

 

Gördüğünüz gibi bir sıcaklık kolay ölçülmüyor. 😀 Projenin devamı yolda.