Bir termistörü kalibre etmenin en basit yolu nedir?


11

Laboratuar ekipmanına erişimi olmayan bir hobi olarak, sahip olduğum termistörü kalibre edebilmem gerçekten imkansız görünüyor.

Tabii ki DS18B20 gibi kalibre edilmiş sıcaklık sensörleri var, ancak Aruino UNO gibi yavaş MCU'larda (yeni MCU'lara kıyasla) özel olarak termistörler daha hızlı.

Laboratuar ekipmanı kullanmadan bir termistörü kalibre etmek için hangi seçeneklere sahibiz?


1
Termistörün bir özelliğini almak için DS18B20 olarak kalibre edilmiş bir sensör kullanın.
Janka

"Snappier" ile ne demek istiyorsun? Termistörde yazılım düzeltmesi yapmanız gerekiyorsa iyi bir gerekçe gibi görünmüyor, ancak bir DS18B20 ile değil.
Elliot Alderson

DS18B20'nin tam çözünürlükte bir saniye gecikmesi endişe ediyorsanız, pil monitörü onewire sensörlerinden birini kullanın, örneğin DS2438. Çip üzerinde hızlı bir sıcaklık sensörüne sahiptir.
Janka

2
@newbie Doğruluk için sıcaklık kalibrasyonu genellikle zordur. Bazı aralıklar diğerlerinden daha zordur. Yaygın olarak bulunan malzemelerin donma noktaları çok yardımcı olabilir, bu nedenle aralığınız bunlardan daha fazlasını içeriyorsa. Ancak doğru referanslar, bir yerde bir laboratuvarda tutulan ve bir veya iki fizikçi tarafından yönetilen NIST veya DIN (veya benzer bir grup) standartlarına göre izlenebilir. Sıcaklık aralığını ve bu aralıkta aradığınız doğruluk ve hassasiyeti belirlediyseniz sorunuz yardımcı olacaktır.
jonk

1
@Newbie Ama evde mi? Saflığı arayın ve sonra buz / sıvı kombinasyonları veya başka saf yoğuşmalı kazanlar oluşturun. Örneğin, su ile karıştırılan buz çok yaygın olarak kullanılır - ancak yeterince yardımcı olup olmayacağı doğruluk rakamlarınıza ve gitmek istediğiniz işe bağlı olabilir. Ayrıca, bir Floransa şişesinin dibinde yoğunlaşmasına izin verilen kaynar su veya sülfürik asit de kullanabilirsiniz. (Her ikisini de kullandım.) Ancak sonuçlar ayrıca safsızlıklara ve atmosferik basınç değişimlerine ve diğer faktörlere de bağlıdır. Homebrew girişimleri için neler önerilebileceğine dair gereksinimleriniz çoktur.
jonk

Yanıtlar:


5

Bir termistörü (veya çoğunlukla bu konudaki herhangi bir sensörü) kalibre etmek iki aşamalı bir işlemdir:

  1. Kalibrasyon verilerini ölçün
  2. bu verilere uyan bir kalibrasyon yasası hazırlayın

İlk adım en zor ve ne yazık ki en az deneyime sahip olduğum adım. O zaman sadece çok genel terimlerle anlatacağım. İkinci adım çoğunlukla matematiktir.

Kalibrasyon verilerinin ölçülmesi

Bir tabloyu (T, R) çiftleriyle, yani bilinen sıcaklıklarda ölçülen direnç değerleri ile doldurmanız gerekir. Kalibrasyon verileriniz, gerçek kullanımda ihtiyaç duyacağınız tüm sıcaklık aralığını kapsamalıdır. Bu aralığın dışına çıkan veri noktaları çok kullanışlı değildir. Aksi takdirde, ne kadar çok veri noktasına sahip olursanız o kadar iyidir.

Termistörün direncini ölçmek için, ben tavsiye karşı bir ohmmetre kullanarak. Bunun yerine, gerçek kalibrasyon sonrası ölçümleri için kullanacağınız kurulumun aynısını kullanın. Bu şekilde, direnç ölçümündeki (ADC ofseti ve kazanç hataları gibi) sistematik hatalar kalibre edilecektir.

Sıcaklığı bilmek için iki seçeneğiniz vardır: sabit sıcaklık noktaları kullanın (örn. Kaynar su veya eriyen buz gibi) veya önceden kalibre edilmiş bir termometre kullanın. Sabit noktalar sıcaklık kalibrasyonunun altın standardıdır, ancak bunları düzeltmek zordur ve muhtemelen önem verdiğiniz sıcaklık aralığında bunların çoğunu bulamazsınız.

İyi bilinen bir termometre kullanmak daha kolay olacaktır, ancak yine de birkaç uyarı vardır:

  • termistör ve referans termometrenin aynı sıcaklıkta olduğundan emin olmalısınız
  • bu sıcaklığı her ikisi de termal dengeye ulaşacak kadar uzun süre sabit tutmalısınız.

Her ikisini de birbirine yakın tutmak, yüksek termal ataletli (buzdolabı veya fırın) bir muhafaza içine koymak burada yardımcı olabilir.

Açıkçası, referans termometrenin doğruluğu burada çok önemli bir faktördür. Son ölçüm doğruluğunuzla ilgili gereksinimlerinizden çok daha doğru olması gerekir.

Bir kalibrasyon yasasının yerleştirilmesi

Şimdi verilerinize uyan bir matematiksel fonksiyon bulmanız gerekiyor. Buna “ampirik uyum” denir. Prensip olarak, herhangi bir yasa veri noktalarına yeterince yakın olduğu sürece yapabilir. Polinomlar burada bir favori, çünkü uyum her zaman yakınsar (çünkü fonksiyon katsayılarına göre doğrusaldır) ve düşük mikrodenetleyicide bile değerlendirmek ucuzdur. Özel bir durum olarak, doğrusal bir regresyon deneyebileceğiniz en basit yasa olabilir.

Bununla birlikte, çok dar bir sıcaklık aralığıyla ilgilenmediğiniz sürece, bir NTC termistörünün yanıtı oldukça doğrusal değildir ve düşük dereceli polinom uyumlarına çok uygun değildir. Ancak, değişkenlerin stratejik bir şekilde değiştirilmesi hukukunuzu neredeyse doğrusal ve uyumu çok kolay hale getirebilir. Bunun için bazı temel fizik yoluyla bir saptırma yapacağız ...

Bir NTC termistöründeki elektrik iletimi, termal olarak etkinleştirilen bir işlemdir. İletkenlik daha sonra bir Arrhenius denklemi ile modellenebilir :

G = G exp (−E a / (k B T))

G, burada “pre-üstel faktör” olarak adlandırılır, E bir olan aktivasyon enerjisi , k, B ise Boltzmann sabiti , T mutlak sıcaklıktır.

Bu, doğrusal bir yasa olarak yeniden düzenlenebilir:

1 / T = A + B günlüğü (R)

B = k B / E , bir ; A = B günlüğü (G ); ve log () doğal logaritmadır.

Kalibrasyon verilerinizi alır ve 1 / T'yi log (R) fonksiyonu olarak (temel olarak eksenleri değiştirilmiş bir Arrhenius grafiği ) alırsanız, neredeyse düz bir çizgi olduğunu fark edeceksiniz. Doğrusallıktan ayrılma esas olarak üstel öncesi faktörün biraz sıcaklığa bağlı olmasından kaynaklanır. Bununla birlikte, eğri, düşük dereceli bir polinom tarafından kolayca takılabilecek kadar pürüzsüzdür:

1 / T = c 0 + c 1 log (R) + c 2 log (R) 2 + c 3 log (R) 3 + ...

İlgilendiğiniz sıcaklık aralığı yeterince kısaysa, doğrusal bir yaklaşım sizin için yeterince iyi olabilir. Daha sonra β katsayısının 1 / B olduğu “β modeli” kullanırsınız. Üçüncü dereceden bir polinom kullanırsanız, c 2 katsayısının ihmal edilebileceğini fark edebilirsiniz. Eğer ihmal ederseniz, ünlü Steinhart – Hart denklemine sahipsiniz .

Genel olarak, polinom derecesi ne kadar yüksek olursa, verilere o kadar iyi uymalıdır. Ancak derece çok yüksekse, aşırı takmaya son vereceksiniz . Her durumda, uyumdaki serbest parametre sayısı hiçbir zaman veri noktası sayısını geçmemelidir. Bu sayılar eşitse, yasa verilere tam olarak uyacaktır , ancak uyumun iyiliğini değerlendirmenin hiçbir yolu yoktur. Bu termistör hesaplayıcısının (bir açıklama ile bağlantılı olarak) üç katsayı sağlamak için yalnızca üç veri noktası kullandığını unutmayın. Bu, yaklaşık bir yaklaşık kalibrasyon için tanrıdır, ancak doğruluğa ihtiyaç duyarsam buna güvenmem.

Burada uygunluğu nasıl gerçekleştireceğimi tartışmayacağım. Rasgele veri uydurma yazılım paketleri boldur.


İyi ayrıntılı ve açıklanmış cevap için teşekkürler. yan soru; Sıcaklık okuma kaynağım olarak bir DS18B20 sensörü kullandım ve termistör okumasının yaklaşık 2,2 derece kapalı olduğunu fark ettim. Daha sonra termistör sıcaklığı hesaplamasında 2.2 dereceyi ekledim. şimdi hem ds18b20 hem de termistör okumaları neredeyse aynı. Sıcaklık değişimini 25 ila 35 derece aralığında test ettim ve termistör sıcaklık değişikliklerine daha duyarlı olmasına rağmen sonuçta neredeyse aynı oldu. kullandığım bu yöntemin aşağı tarafı nedir?
ElectronSurf

2
@newbie: “Termistör okuması yaklaşık 2.2 derece kapalı” anlamıyorum. Bir termistör derece olarak okuma yapmaz. Yani 2.2 ° C okuma sağlayan bazı kalibrasyon yasasını (nereden geliyor?) Denediniz mi? Durum böyleyse ve bu ofset kesinlikle sabitse, yaklaşımınız ekstra aritmetik bir adımla daha karmaşık bir dönüşüm yasasına sahip olmanın küçük dezavantajına sahiptir. Ofset kesinlikle sabit değilse, uyumun yeniden yapılması size daha iyi sonuçlar vermelidir.
Edgar Bonet

11

Termistör okumak biraz zor. Yukarıdaki kalibrasyon yöntemi, bir hata tespitine verim vermez, Bir logaritmik eğrinin (termistör tepki eğrisi) iki noktası oluşturur.

Bu, her 0.1 ° C sıcaklık değişimi için, karşılık gelen direnç değiştirme sıcaklığı, sıcaklık aralığına bağlı olarak değişecektir. resim açıklamasını buraya girin

İlk başta, gerçek sıcaklıktan yaklaşık 2 ila 5 ° C'lik bir hataya bakabilirsiniz, ancak hata yok, sadece kötü bir okuma.

Bu termistörü nasıl okuduğunuz hakkında herhangi bir ayrıntı göndermiyorsunuz, Arduino olabilir mi? Söylemeliyim ki, bazı kütüphaneler hiç çalışmıyor, bu yüzden bunu yapmak için özel bir işlev oluşturmalısınız.

Bir termistörün nasıl karakterize edileceği ve okunacağı hakkında ayrıntılı açıklama yayınlayın. Gönderi İspanyolca, ancak kod etiketlerinde, tüm açıklamalar düz İngilizce'dir.

ABC katsayılarını elde ettikten sonra, hatanız 6 metrelik bir LAN kablosunda bile başka bir ölçümden yaklaşık 0.1 ° C olacaktır.

4 termistör üzerinde bir test Bu testi aynı anda 4 termistör okudum, 2 sıcaklıktan küçük bir sıcaklık farkı görebiliyorum parmaklarımda kısaca tutuyordum.


@newbie Bu doğru yaklaşım. Talimatları takip edemiyorsanız, bir gün içinde bana cevap verin ve arduino kodumu arayacağım ve içerdiği referanslara bakacağım ve buraya bir cevap yazacağım.
piojo

1
Bağlantılar ölür ve bu cevabın gelecekte bir çözüm üretme kabiliyeti büyük ölçüde aktif kalmaya bağlıdır. Cevabınıza adımlar ekleyebilir misiniz?
Keeta - Monica

Cevabın kod bölümünü kopyalayıp yapıştırıyorum; // Bu bir termistörün, "Thermimistor.h" Lib'in nasıl okunacağına dair bir örnek kod sadece Beta // katsayılarını kabul ediyor ve benim durumumda yanlış sonuçlara verim, bu // termistörü okumak için daha doğru bir yol , tek veya yanlış ölçümleriniz varsa lütfen aşağıdaki adımları izleyin: // // Bu kod için doğru sonuçları elde etmek için ihtiyacınız olacak; // bir multymeter, bir NTC termistörü, başka bir doğru sıcaklık aralığı // prob ölçer. // Adım 1.
Alejandro Santiago

// Adım 2. - Termistörün gerçek direncini ve gerçek sıcaklığı okuyun ve anotate yapın (1 dakika boyunca kararlı ölçüm elde edin). // Biraz Sıcak su ve bir fincan. // Adım 3. - her iki sensörü de (Termistör ve sıcaklık probu, ortam sıcaklığında su içeren bir alıcıya yerleştirin). // Başka bir kapta biraz su ısıtın. // Sıcaklık probunu 10 ° C'den daha fazla ısıtıncaya kadar sıcak su ekleyin, // kararlı ölçümleri bekleyin ve sıcaklığı ve direnci anotlayın. // Elemanı ilk ölçümden 20 ° ısıtmak için daha fazla su ekleyin. // Sıcaklığı not edin ve direnin
Alejandro Santiago

1
@newbie Bir NTC termistörünüz varsa, bir dirençten bir sıcaklığı çözmek için A, B ve C sabitlerini hesaplamanız ve Steinhart Hart Denklemine takmanız gerekir. Bu sabitleri bulmak için üç sıcaklık / direnç ölçümüne ihtiyacınız vardır. (Sabitler termistör başına farklıdır ve sabitleri bulmak kalibrasyonunuzdur.) Bu makale nasıl yapılacağını gösterir, ancak matris matematiği kullandığından çevrimiçi bir hesap makinesi bulmanızı öneririm. thinksrs.com/downloads/pdfs/applicationnotes/…
piojo

9

Bir bardağı buz küpleriyle doldurun ve ağzına kadar doldurun. Ara sıra karıştırın. Buz erimeye başladığında 0 ° C'de olacaksınız. Sensörü suya yapıştırın ve bir okuma yapın.

Sensörünüz tolere edebilirse, kaynar su ısıtıcısına bırakın. Deniz seviyesinde size 100 ° C referans okuması verecektir.

Su geçirmezlik için sensörünüzü ısıtmanız gerekiyorsa, okuma için dengelenmesi için biraz zaman ayırmanız gerekir.

şematik

bu devreyi simüle et - CircuitLab kullanılarak oluşturulan şematik

Şekil 1. Basit doğrusal kalibrasyon eğrisi.

  • y1, 0 ° C'de direnç, voltaj veya ADC okumasıdır.
  • y2, 100 ° C'de direnç, voltaj veya ADC okumasıdır.

T=100yy1y2y1

Yorumlarda belirtildiği gibi, bir termistör kullanıyorsanız, veri sayfasını doğrusallık açısından kontrol etmeniz gerekecektir. Bu basit yaklaşım yeterince iyi değilse, bir mikro denetleyicide bir polinom hesaplaması veya bir arama tablosu kullanmanız gerekecektir.


3
Bu size bu iki sıcaklık için beta hesaplamak için kullanabileceğiniz iki nokta verecektir. Bu aralıktaki tepki doğrusal hiçbir yerde olmayacaktır (OP'nin ona "termistör" dediğinde anlamına geldiği varsayılır),
Scott Seidman

1
@ newbie: Güncellemeye bakın.
Transistör

5
Transistörün sonunda yazdığı gibi, bu yaklaşım yeterince iyi olmayabilir. Açıkçası, yeterince iyi olacağını hayal bile edemiyorum. Bu yaklaşımın sizi alacağı tek şey tekrarlanabilirliktir (40 ° C'nin her zaman aynı 40 ° C olduğu varsayılır, ancak gerçekten 20 ° C veya 60 ° C olabilir).
piojo

2
Basınç 1.01325 bar veya 1013.25 milibar veya hektopaskal ise saf su 100 ° C'de kaynar. Deniz seviyesindeki basınç hava durumuna bağlıdır.
Uwe

1
@newbie. Yararlı görünüyor. Çalışırsanız, sorunuza veya yanıt olarak bazı örnek kodlar gönderin. Eminim başkaları benim cevabımdan daha yararlı bulacaktır.
Transistör

2

Doğrusallaştırılmış termometreler bir kazanç ve ofset hatasına sahiptir.

  • Bipolar sarf malzemeleri muhtemelen 0V'da ofset boş olacaktır.
  • tek besleme köprülerinde, bu tenezzül sıcaklığında ofset boşaltılan bir miktar Vref veya R oranı Vref veya Vcc olacaktır. Genellikle bu simetriktir, bu nedenle tasarım aralığınızın orta noktasına karşılık gelir.
  • termistörler 25 ° C'de 2 değişkenli spesifik bir duyarlılık eğrisi ile kalibre edilir.

  • kalibre etmek için sadece 2 ölçüme ihtiyacınız var

    • Hata voltajının = null = 0, Vt = Vref olduğu yerde sıfır ayarı
    • T maks'de kazanç ayarı
      • tipik bir 4 R köprüsü için, bu genellikle orta nokta sıcaklığıdır.
  • Kalibrasyon için daha iyi bir termometre kullanın veya
    • 0, 100'C için buzlu su ve kaynar su kullanın
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.