MCU ile ucuz sıcaklık algılama


13

Bir MCU ile sıcaklığı algılamak için ucuz bir çözüm arıyorum. Gereksinimlerim:

  • 2 kanal
  • sıcaklık aralığı: 30-35 ° C
  • sıcaklık çözünürlüğü: 1-2 K
  • kablo mesafesi (MCU -> sensör) 10cm - 2m kabul edilebilir
  • iki kanal arasındaki bağıl sıcaklık yeterlidir, mutlak sıcaklık gerekmez

Başlangıç ​​noktam, termokupl amplifikatörlere sahip iki termokupl, ancak bu benim uygulama için aşırı dolu gibi görünüyor. Termokupllar Radiospares'da 10 $, amper 5 $ 'da çalışır ve bu da sadece bir sıcaklığı tahmin etmek için 30 $' a mal olur.

Daha ucuz bir çözüm aramak için iyi bir yön nedir. NTCS?


Düzenle 18 Temmuz 2012

StevenVh cevabını NTC'lerle elde edilebilecek yüksek doğrusallık derecesini göstermek için genişlettikten sonra, NTC'lerin daha iyi bir çözüm olmadığını düşünmek için biraz zaman harcadım.

Ancak ben yarıiletken yongaları ile karşılaştırıldığında ucuz NTC'lerle elde edilebilir hata onun muhakeme stevenvh takip edebiliyoruz emin değilim.

Bir NTC ile sıcaklığı elde etmek için aşağıdaki fonksiyonlar devreye girer:

  1. transfer fonksiyonu ortam sıcaklığını bir dirence dönüştürüyorHTaRNTC(R25,B25/85)
  2. gerilim bölücü tarafından üretilen gerilimHRNTCV(Vexcitation,RNTC,Rlin)
  3. AD dönüşümüHVbits(V,Vref,σconversion)
  4. doğrusal eğri yaklaşımı:HbitsTest(bits,σapprox)

Gördüğüm hata kaynakları:

  1. NTC değer hataları: ve değerleri için her biri% 1 : toplam yaklaşık% 2 B 25 - 85R25B2585
  2. Doğrusallaştırma direnci değeri için% 1 ve uyarma gerilimi kaynağı için% 0,5 diyelim
  3. Bir PIC16F1825 için, ADC için kullanılan dahili referans voltajı% 6 belirsizliğe sahiptir. Ek olarak, ADC'nin kendisinin her biri 1.5 lsb'lik bir seviyede integral, diferansiyel, ofset ve kazanç hataları vardır. 10 bitte, ikincisi birleştirildiğinde en fazla% 0.5'tir.
  4. Stevenvh'nin cevabında da gösterdiği gibi, doğrusal yaklaşım ilgi aralığında sadece% 0.0015'lik bir hataya sahiptir.

Sıcaklığın tahminindeki hata, bu nedenle, ADV voltaj referansının hatası ve direnç değerlerindeki hatalardan açıkça baskın olacaktır. Açıkça% 6'nın üzerinde olacak. Stevenvh'nin işaret ettiği gibi doğrusal yaklaşımdan kaynaklanan hata tamamen ihmal edilebilir.

300 Kelvin'de% 6'lık bir belirsizlik 18K'lık bir sıcaklık hatasına eşdeğerdir. Sıcaklık çipleri yaklaşık 1K'lık bir hataya sahiptir. 300K'da bu,% 0.3'lük bir belirsizliğe karşılık gelir.

Bana son derece dikkatli bir kalibrasyon ve performans doğrulaması yapmadan bunu bir NTC ile yenmenin söz konusu olmadığı anlaşılıyor. Doğrusallaştırma dirençlerindeki belirsizlik, uyarma gerilimi veya her biri ayrı ayrı görüntülenen ADC, NTC çözeltisinin belirsizliğini bunun üzerine iter. Yoksa akıl yürütmemde büyük bir hata var mı?

Şu anda NTC'lerin yüksek hassasiyetli bir sıcaklık algılama çözümü olabileceğine ikna oldum, ancak ucuza, performanslarının karanlıkta bir çekim olacağı bana geliyor.

Yanıtlar:


12

1-2 derece kolay bir çözünürlüktür (doğruluk demek istediğinizde bile aynı değildir!). LM75'i ve çeşitli klonları veya bir DS1820 / 18S20 / 18B20 / 1822'yi düşünürüm. Mikroçip, <1 $ için LM75 klonları da dahil olmak üzere birçok sıcaklık sensörüne sahiptir . Voltaj çıkış versiyonları ucuz, ama dijital olanı tercih ederim.


Bu soru üzerine aldığım tüm cevaplar çok yardımcı oldu. LM75 klonlarının kullanım kolaylığı nedeniyle bunu kabul ettim. Benim durumumda doğrusallaştırma vb. İçin endişelenmemek büyük bir artı.
ARF

Sadece merak ediyorum: Neden dijital bir sensörü tercih edesiniz?
m.Alin

5
Referanslar, doğrusallaştırma, A / D dönüştürücüyü yapılandırma ve donanım konusunda endişelenmeyin. Dezavantajı, protokol ile uğraşmak zorunda olmasıdır.
Wouter van Ooijen

15

NTC diyebilirim, evet. Bu Digikey bulabildiğim en ucuz. Yaklaşık yarım dolar, bu aynı hassasiyete sahip sıcaklık sensörü IC'lerinden çok daha ucuz. Bir NTC'nin avantajı, mikrodenetleyicinizde sadece bir seri direnç ve bir ADC girişine ihtiyaç duymasıdır, ki bu günümüzde çoğu.

Düşük fiyatın dezavantajı vardır: NTC'ler doğrusal olmaktan başka bir şey değildir. Aktarım işlevini (beğenmediğiniz bir üstel ile, ya da verilen aralık için en iyi çözüm olabilecek bir arama tablosu) kullanmanız gerekir.

düzenlemek dd. 2012-07-13
Bah, sefil bir LM75 tarafından dövüldü. Bunun geçmesine izin vermeyeceğim. :-)

Bu NTC serisinden * 103 * MT * kullanacağım . İlk olarak transfer fonksiyonu:

R=10kΩe13.4096+4481.80T150522T2+1877103T3 ,

burada , Kelvin cinsinden olup.T

Umut verici görünmüyor ve gerçekten 0 ° C ile 100 ° C arasında eğri şöyle görünüyor:

resim açıklamasını buraya girin

söylediğim gibi doğrusal bir şey değil. Bunu doğrusallaştırmaya çalışabiliriz, ancak onunla bir direnç bölücü yapacağımızı ve doğrusal da olmadıklarını unutmayın, bu nedenle şimdi herhangi bir doğrusallaştırma seri direnç tarafından mahvedilecektir. O halde dirençle başlayalım ve ne olduğunu görelim. 3,3 V'luk bir kaynağım var ve Vcc'ye 5,6 kΩ direnç seçiyorum, sonra çıkış olur

resim açıklamasını buraya girin

Hiç de fena değil! Mor eğri, ilgi alanımızdaki tanjanttır: 30 ° C ila 35 ° C. Bunu yakınlaştırılmış grafiği çizebilirim, ama bu bize iki çakışan çizgi verir, hatayı bir göz atalım:

resim açıklamasını buraya girin

Güzel görünmüyor, ancak 30 ° C ila 35 ° C arasındaki NTC karakteristiklerimize kıyasla doğrusal yaklaşıklığın göreceli hatasını veren dikey ölçeğe bakmanız gerekiyor. Hata 15 ppm'den az veya% 0.0015'dir .

Mathematica, neredeyse mükemmel doğrusal yaklaşımımız için denklemin

VOUT=0.0308 T 1V/°C+2.886 V

Bu, sırasıyla 609 ve 561 ADC okumaları ile sonuçlanacaktır. 10 bitlik ADC için. Bu, 5 ° C fark için 48 veya yaklaşık 0.1 ° C çözünürlük aralığıdır. Sadece NTC ve bir direnç.

Kimin LM75'e ihtiyacı var?



düzenlemek dd. 2012/08/13

Gerçek: NTC çözümü için kalibrasyon gerekiyor.

Arik'e hata hesaplamasına geri döneceğine söz verdim, ancak düşündüğümden çok daha karmaşık ve eksik veriler nedeniyle tamamlanamıyor. Örneğin, NTC'nin transfer fonksiyonundaki katsayılar için çok kesin rakamlarım var (7 önemli basamak numarası zaten yuvarlanmış!), Ancak doğrulukları hakkında bilgi yok. Birkaç yorum olsa.

Arik, =% 2 hatasına% 1 direnç toleransı +% 1 gibi hatalar ekler . O kadar kolay değil ve bahsettiğim komplikasyonun bir parçası. üzerinde% 1 tolerans, örneğin sonuçta% 0.1 hataya neden olur.ββ

Hatalar her zaman aynı şekilde ifade edilmez. Örneğin Maxim'in LM75 veri sayfası minimum ve maksimum hatalardan değil, üç sigma ve altı sigma değerlerinden bahsetmektedir. Öte yandan Vishay NTC veri sayfası % 1 hatadan bahsediyor . Bu altı sigma mı? Yedi sigma? Daha sonra, sıcaklık aralığında 2 ° C hassas altı sigma, hatta 3 ° C olan LM75'ten daha doğru olabilir. Bu utanılacak bir şey değil; birkaç sensör kalibrasyon olmadan çok daha iyi sonuçlar verecektir. Soru: Tolerans değerlerini nasıl karşılaştırıyorsunuz? Ve bir diğeri: Toplam bir hata elde etmek için çeşitli çan eğrisi işlevlerini nasıl birleştirirsiniz?±

PIC'nin ADC referansı oldukça kötü bir% 6 toleransa sahiptir. Arik: 300 kelvin'de% 6'lık bir belirsizlik, elbette saçma ve tamamen saçma olan 18 K sıcaklık hatasına eşdeğerdir . Hızlı bir kontrol yaptım: voltaj bölücünün çıkışını 20 ° C sıcaklık için hesapladı. Buna% 6 ilave edildi ve NTC'nin direnç değerine ve olması gereken sıcaklığa geri hesaplandı. Hata 18 ° C değil, 0 K olarak adlandırılan 1 ° C veya% 0,5'ten azdır.

Yine de,% 6 hata tamamen ilgisiz ! Direnç bölücü için ADC'nin referans voltajını kullanırsanız, voltaj hesaplamalarda bile görünmez. Hatanın% 50'si olup olmadığını umursamıyorum. Denetleyici dışında hatalı dahili başvuru yoksa başka bir başvuru kullanın. 3,3 V güç kaynağı, ya da sadece gibi herhangi diğer DC gerilimi etrafında döşeme var.

Kalibrasyon bir kerelik bir proje için istediğiniz şey değildir, ancak seri üretim için hiç endişe etmez ve özellikle her kuruşun önemli olduğu tüketici elektroniğinde NTC'yi pahalı bir LM75'ten daha fazla bulacaksınız.


3
Uzmanlara sormanın güzel yanı, her cevabı (analog ve dijitale) almanızdır, şimdi Arik sadece uzmanlar arasında seçim yapmak için bir uzmana ihtiyaç duyuyor :)
Wouter van Ooijen

Yaklaşık yarım dolar mı? Değil mi bu sen bahsedince aynı öğe? $ 0.15 / 100pcs. Ve MCP9701A yaklaşık 0.25 $ / 100pcs. Vay canına, dijital olanların her biri 2 $ veya 3 $ gibi çok pahalı olduğunu düşündüm!
abdullah kahraman

2
@abdullah - her şey göreceli. Büyük bir mühendis muhtemelen seri direnç% 1 toleransı ve 100 ppm / ° C sıcaklık katsayısını gösterecektir. Her halükarda, okuma hatalarımız varsa, bu yaklaşıma bağlı olmayacaktır! :-)
stevenvh

1
@stevenvh Genişletilmiş yanıtınız orijinal değerlendirmemi gözden geçirmem için bana neden verdi. Ancak, NTC'lerle ucuza nasıl yüksek hassasiyetli bir ölçüm yapabileceğinizi tam olarak anladığımdan emin değilim. Düzenlenmiş soruma bakıp akıl yürütmemde bir kusurum olup olmadığını söyleseniz çok memnun olurum. Yardımın için çok teşekkürler!
ARF

1
@Arik - cevabımı güncelledi. Özellikle iddia edilen 18 K hata bir yanıta ihtiyacı hissettim :-)
stevenvh

6

Bu, bir termistör veya iki termistörün daha kesin olması için bir iş gibi görünür. Yalnızca üç farklı sıcaklık durumunu ayırt etmeniz gerektiğinden ve yalnızca bağıl sıcaklık arıyorsanız, tek bir analog sinyal yapmak için iki termistörü birbirine bağlayabilirsiniz. Bu daha sonra mikro içine yerleştirilmiş bir A / D ile ölçülebilir. Çoğu mikronun A / D'si vardır, bu yüzden daha pahalıya mal olmaz. Gürültüyü azaltmak için muhtemelen düşük geçişli filtreler olarak birkaç direnç ve kapasitör ekleyeceğim.

Bir termistör yerden analog sinyale, diğeri güçten analog sinyale gider. Bazı kalibrasyonlar yapmanız gerekebilir, ancak dar sıcaklık aralığınız ve düşük çözünürlükle fantezi olmanıza gerek yoktur. Muhtemelen sadece sıfır fark voltajını korumak ve bunu gelecekteki okumadan çıkarmak yeterlidir.


Nispi bir voltajı ölçmek için voltaj bölücü yapılandırmasında iki termistörün kullanılmasıyla ilgili ipucu için teşekkür ederiz. Bunu düşünmezdim.
ARF

@Arik - serideki iki termistör sadece dirençleri sıcaklıkla doğrusal olarak değişiyorsa çalışır, bu yüzden kontrol ettiğinizden emin olun. (
Cevabımda

@stevenvh: Evet, haklısınız, ancak çok dar sıcaklık aralığına ve düşük çözünürlüğe dikkat edin. Bir kez aralığın ortasına yakın olan eşit sıcaklık kasasına kalibre edilmiş iki termistör yeterince iyi çalışmalıdır. Biri asla diğerinden 5 ° C'den fazla olmayacaktır.
Olin Lathrop

@Olin - Hepsi doğru. Sanırım "daha geniş bir sıcaklık aralığında ölçmek istediğinizde" eklemeliydim.
stevenvh

5

Eğer sıcaklık ölçümünün basan diyot akım delta-Gerilim yönteminin farkında değildir ve ısı ölçümleri ilgileniyorsanız bunu okumalısınız - bu olabilir sıcaklık ölçümü fikirlerinizi dönüşümü.


Partiye biraz geç kaldım.
Cevap şimdiye kadar kullanılacağından, büyük ölçüde sadece önemli değerlere sahip olan ancak şaşırtıcı bir şekilde ayrı formda çok az kullanılan gibi görünen alternatif bir yöntemi özetleyeceğim.

Bu yöntem IC sıcaklık ölçüm IC'lerinde yaygın olarak kullanılmaktadır, ancak yine de beklenenden daha az biliniyor gibi görünmektedir.

Bir silikon (diyelim) diyot dönüşümlü olarak bilinen iki akımla beslenirse, akımdaki değişiklikle delta voltaj değişimi mutlak sıcaklıkla ilişkilidir.

Bu yöntem (en azından) TI LM82, LM83, LM84, LM87 & LTC3880, LTC3883 ve LTC2974 sensörlerinde kullanılır.

Bu yöntemin, belirli bir akımdaki çıkarım sıcaklığına mutlak diyot ileri voltaj düşüşünü ölçme yönteminden farklı olduğuna dikkat edin. Bu yöntem hem önemli ölçüde daha doğrudur hem de sensöre özel kalibrasyon gerektirmez.

Doğruluğu yaklaşık 0.1 derece C (veya K) elde edilebilir.
Kararlar ölçüm yöntemine bağlıdır.

Sonuç, cihaz kalibrasyonu gerektirmez.
Sonuç sadece temel diyot tipine (örn. Silikon, germanyum) bağlıdır;
örn. 1 cent altı 1N4148 sinyal diyotu kullanıyorsanız, bunu başka bir 1N4148 için değiştirebilir ve yeniden kalibrasyon yapmadan aynı doğrulukları elde edebilirsiniz.

Kullanılan iki akımın ayarlanmasının kesinliği sonuç doğruluğunu etkiler ancak bunlar mevcut kaynaklara uyacak şekilde seçilebildiğinden sonuçlar çok iyi olabilir.

Bu yöntem, tüm kalıp üstü işlemci sıcaklık ölçüm sistemleri tarafından olmasa da bazıları tarafından kullanılır. Genellikle bu sistem kullanıldığında, teknik açıklamaların detay üzerinde çok hafif olduğunu ve biraz gizlendiğini göreceksiniz - yani yöntem muhtemelen 1960'ların ortalarında Widlar tarafından işe geri dönmesine rağmen, gizli tutmak istiyor gibi görünüyorlar.

Bu yöntem, NTC termistörleri veya PT100 vb.


Bu mükemmel 199 Analog Cihaz uygulama notu Bilgisayar çiplerinde sıcaklıkların hız ve doğrulukla ölçülmesi , tekniğin yeni olduğunu iddia ediyor. Doğru olduklarından hiç emin değilim - ama kesinlikle yararlı ve daha az bilinen bir şey.

I ve NI akımları ve diyot voltajı akım 1 için Cv1'i ve akım 2'de Vd2 için yukarıdaki kağıttan (hafifçe yeniden yazılmıştır):

Vd1 - Vd2 = DVd = (kT / q) ln (I / NI) = (kT / q) ln (1 / N)

N, k ve q'nun tümü bilinen sabitler olduğundan,
T = (Sabit) (DVd)

_

Mükemmel TI uygulaması notu Çoklu Uzaktan Diyot Sıcaklık Algılama

Wikipedia - Silikon bant aralığı sıcaklık sensörü

[LT AN137 Harici PN Bağlantılı Doğru Sıcaklık Algılama] http://cds.linear.com/docs/Application%20Note/an137f.pdf
Örneğin LTC3880, LTC3883 ve LTC2974'te kullanılır.


3

Termistörlü çok basit Sıcaklık (Celcius) ölçüsü (10K) B25 / 100 = 4300 Bu makalede okunan yukarıdaki yorumdan ilham aldım.

Ben her biri $ 1 DigiKey 10K% 5 termistör aldım. Yüzen ve karmaşık matematik olmadan adil bir sıcaklık ölçümü almak istedim. Aşağıdaki gibi bir Arduino'ya bağlanma: Vref to 3.3v; analog-0 A0 ile 10K direnç ve 3.3v. ; Termistör A0 toprağa. Celcius sıcaklık aşağıdaki gibi olsun: Kısmi kod: analogReference (EXTERNAL);
ADC = analogOkuma (0);
Th = 10000 / (1023 / ADC) -1; // 10000 bölende kullanılan sabit dirençtir.
T = (775-Th) / 10;

Doğruluk: 25 ° C'de +1, 20 ° C'de +0, 0 ° C'de -1, -20 ° C'de +2. 775 sabitini istediğiniz arzu aralığına yakın olacak şekilde değiştirirsiniz. Örneğin, 25C civarında 0 hatası almak için 775 yerine 765 kullanın. Bu tamsayı matematik olduğundan, yuvarlamak için 10'a bölmeden önce 5 ila 770 ekledim.

Termistör, ADC, Sıcaklık ve Hesaplanan sonuç arasındaki ilişki gösteriliyor


1

LM35DZ kullanıyorum . Sıcaklık aralığı 0 Celsius ila 100 Celsius, doğrusal çıkış ve düşük empedans ; PIC ADC girişime doğrudan bağlantı ile kullanıyorum, şimdiye kadar çok iyi çalışıyor.

Bir birim 3 USD civarındadır.


3
Ve ikisine ihtiyacı olacak. Bana ucuz bir çözüm gibi görünmüyor. Harika NTC'lerimle karşılaştırılmamış! :-)
stevenvh

LM35 çiplerini de kullanıyorum (ve onları seviyorum), ancak bu soru için biraz fazla olduklarını düşünüyorum.
Johan

0

Thermistor ile çok basit Sıcaklık (Celcius) ölçüsü ... her biri $ 1.

STM32F0 çipine ne dersiniz? ADC modülü , dahili Vref jeneratörü için iki sıcaklık noktasında dahili bir sıcaklık sensörü VE kalibre edilmiş değerler VE kalibre edilmiş değer içerir.

Tüm bunların bir araya gelmesiyle, geniş bir voltaj aralığında çok hassas bir sıcaklık sensörü - 12 bit adc ve sigma 1 lsb'nin biraz üzerinde - olarak kullanabilirsiniz.

Ayrıca özel bir sıcaklık sensörü olarak programlanabilir: çoğunlukla uykuda ve sıcaklığı okumak ve veri iletmek için uyanır ve daha sonra uyku moduna geri döner.

tüm bunlar küçük miktarlarda daha az dolar için.

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.