Picproje Elektronik Sitesi

MİKRODENETLEYİCİLER => Microchip PIC => Konuyu başlatan: picker - 20 Nisan 2009, 01:55:00

Başlık: NTC ile Sıcaklık Ölçümü
Gönderen: picker - 20 Nisan 2009, 01:55:00
Arkadaşlar,
Şu sıralar aldığım bir termometre siparişini henüz bitirdim. Bu arada, NTC ile -40 ile +100 derece arasındaki sıcaklıkları nasıl ölçebileceğimi epey bir araştırdım. Aslında burada nasıl ölçebileceğim derken, hassas ölçümden bahsediyorum. Yoksa NTC'yi lineer kabul edip 5-6 derece fark ölçmek kolay. Yine 5-10 veya 20 derece aralıklı bir tablo oluşturup 2 dereceye kadar farklı ölçmek de son derece kolay. Bahsettiğim, herhangi bir andaki derece değerini tam ölçmek ile ilgili. Ve sonunda bulup uyguladım.

Yaptığım devrenin şemasını ve kodunu elbette vermeyeceğim. (Şemanın dosyası yok çünkü şu anda).

Aşağıda anlatacağım yöntem ile sıcaklık hesabı yapıldığında devremin testlerinde şunu gördüm :

1. Kalibrasyondan sonra, civalı termometre ile aynı değerleri çok yakın aldım.
2. Piyasada satılan ticari termostatlara göre çok daha hızlı yanıt veren bir sonuç elde ettim.

Şimdi gelelim hesaplarımıza.

Bir kere, NTC direnç değerine karşılık gelen derece (kelvin cinsinden) şu aşağıdaki formüle eşit :

T=1/(A+B.ln(R) + C.ln^3(R))

Bu formül nedir? Bilindiği gibi NTC'nin sıcaklık eğrisi aşağı doğru azalan logaritmik bir eğridir. Bu formül, o eğrinin fonksiyonunu verir.
Aslında tam fonksiyon T=1/(A+B.ln(R)+C.ln^2(R)+D.ln^3(R)) dir fakat yazdığımız kadarı dahi 0.1'den daha hassas sonuç vermektedir. NTC'lerin tablolarındaki sonuçları da bire bir vermektedir.

Buradan da
1/T=A+B.ln(R) + C.ln^3(R)

olur. Bu formüldei R, o andaki ölçülen direnç değeridir.

Burada A, B ve C katsayılarını bulmamız gerekecektir.
Bunun için NTC'nin tablosuna bakacağız (hani 5 veya 10 derece aralık ile direnç değerlerini veren tablo). Buradaki derece değerlerine 273,15 ekleyerek her bir derecenin kelvin cinsinden karşılığını bulacağız.

Şimdi, 3 adet derece ve 3 adet karşılık gelen direnç değeri elimizde oldu.

Ne yapıyoruz?
3 bilinmeyenli 3 denklemimizden A, B ve C katsayılarımızı hesaplıyoruz.

Sonrasında yukarıdaki formülü aynen yazılımımızda kullanıyoruz.
Analog-Dijital çevirici portumuzdan okuduğumuz gerilimden direnç değerini hesaplayıp, formülümüz yardımıyla anında sonucu buluyoruz.

Herkese sevgiler...
Başlık: NTC ile Sıcaklık Ölçümü
Gönderen: stlg - 20 Nisan 2009, 04:02:59
Neden lm35 değil ntc eksi degerlerlemi ilgili
Başlık: NTC ile Sıcaklık Ölçümü
Gönderen: Maxim - 20 Nisan 2009, 08:54:54
birtane canlı hesaplama örneği görebilirmiyiz yukarıdaki formül için ?
Başlık: NTC ile Sıcaklık Ölçümü
Gönderen: askb - 20 Nisan 2009, 09:04:29
Arkadasım, örnek kod koysan ne olur?Paylasım formundasın.Bilgiyi paylasmaktan korkma.
Başlık: NTC ile Sıcaklık Ölçümü
Gönderen: bigbey - 20 Nisan 2009, 19:08:16
Alıntı yapılan: "stlg"Neden lm35 değil ntc eksi degerlerlemi ilgili
Evet LM35 ile bu tip uygulamalar çok kolay yapılabiliyor.
Eksi değer olarak -55 ile +150 derece LM 35 ile ilgili uygulama örneği datasheet dosyasında var.
Başlık: NTC ile Sıcaklık Ölçümü
Gönderen: transistor - 20 Nisan 2009, 19:21:29
sonuç
Başlık: NTC ile Sıcaklık Ölçümü
Gönderen: picker - 20 Nisan 2009, 20:46:24
Değerli arkadaşlar,
Öncelikle 2 soruya yanıt vereyim.

1. Neden LM35 değilde NTC?
Arkadaşlar, sıcaklığı n faklı yöntemle ölçebilirsiniz. Bunların bazıları son derece kolay, bazıları ise biraz daha meşakkatlidir. Bununla birlikte uygulamayı çalıştıracağınız ortam, koşullar sizi belli bir takım sensör tiplerini seçmeye itebilir. Bu sebeple her uygulama DS1820, LM35, DS1620, NTC veya PTC ile yapılamaz. Dolayısıyla bunun sorgulanması çok da doğru değil.

2. Neden kod vermiyorum?
Burada mevzu nasıl analog dijital dönüştürülür değil. Yukarıda yazdıklarım kod yazmak için yeterlidir. O bilgiye ulaşmak benim 2 günümü aldı yaklaşık. Ondan önce de ısı tablosu ile yapma gayretine girdim. Fakat floating point kullandığımdan dolayı bir süre sonra PIC hafızası değişken sayısını kaldırmamaya başladı. Bu sebeple ben de önce yukarıda yazdığım formülasyona ulaştım. Sonra da yaklaşık 8-10 satırlık bir kod ile her değer için hassas direnç değerini dizi değişken kullanmadan, if-then'lerle uğraşmadan, tek değişken ile çözdüm. Şimdi deniyor ki sen o kadar uğraştın, balığı tuttun, balığı bana ver... Hayır... Balığı vermeyeceğim. Ama bir arkadaşımın isteği üzerine nasıl balık tutulacağını anlatacağım... (Hesaplama örneği)

1K NTC için hesaplama örneği
NTC datasheet'inde 1K NTC için sıcaklık tablosuna bakıyoruz (Murata marka).

Şimdi üç farlı değer için (Örneğin -10, 0 ve 25 derece olsun) direnç değerlerini seçelim...
-10 Derece için 4829 Ohm
0 Derece için 2977 Ohm
25 Derece için 1000 Ohm (NTC'lerin değerleri 25 derecedeki dirençleri için verilir).

Şimdi bu derece değerlerini Kelvine çeviriyoruz.

-10 Derece : 263,15 kelvin
0 Derece : 273,15 Kelvin
25 Derece : 298,15 Kelvin

Bunlar bizim T1, T2 ve T3 değerlerimiz...
Şimdi 1/T1, 1/T2 ve 1/T3 değerlerini hesaplayalım.

Sırasıyla : 0,0038, 0,003661, 0,003354 değerlerini bulduk.

Şimdi, Ln(4829), Ln(2977) ve Ln(1000) (Bu direnç değerlerinin 10 tabanına göre logaritmalarını alıyoruz) değerlerini hesaplayalım.

Bunlar da sırasıyla
8,48
8
6,91 çıktı.

Şimdi bunların 3. kuvvetlerini (küplerini) alalım.
Sırasıyla :
610,32
511,74
329,62

değerlerini bulduk.

Dolayısıyla şu üç denklemi elde ediyoruz :
0,0038=A+8,48.B+610,32.C
0,003661=A+8.B+511,74.C
0,003354=A+6,91.B+329,62.C

Şimdi buraya kadar verdim hesabı.

Bu 3 denklemden A, B ve C'yi hesaplayıp katsayıları buluyoruz.

Devam ediyoruz.
Önce 1. denklemin tüm katsayılarını 2. denklemdeki C'nin katsayıları ile çarpıyoruz.
Sonra 2. denklemin tüm katsayılarını 1. denklemdeki C'nin katsayıları ile çarpıyoruz.
Şu çıkıyor :
1,944689127=511,7449437A+4340,822591B+312326,6113C
2,234365537=610,3169464A+4881,72468B+312326,6113C
Bu iki denklemi birbirinden çıkarıyoruz. Şunu elde ediyoruz :
-0,28967641=-98,57200268A-540,9020892B+0C

Aynı işlemi 2 ve 3. denklemler için yapıyoruz ve :
-0,794427349=-280,6990144A-1419,970714B+0C

Şimdi 2 bilinmeyenli 2 denklemimiz oldu.
Bu 2 denklemi çözdüğümüzde :
A=0,001549185
B=0,000253225

Buluyoruz.
Birinci denklemde bu değerleri yerine koyup C'yi çekiyoruz ve
C=1,68718E-07
değerini buluyoruz.

Yani bizim kelvin cinsinden sıcaklığımız
T=1/(0,001549185+0,000253225ln(R)+1,68718E-07(lnR)^3)
oluyor.

Santigrad cinsinden sıcaklığımız ise
C=[1/(0,001549185+0,000253225ln(R)+1,68718E-07(lnR)^3]-273,15 oluyor.

Şimdi bu denklemimizin doğruluğunu test edelim.

Datasheetden 40 derece için direnç nedir ona bakalım.

558 Ohm görünüyor.
Dolayısıyla
[1/(0,001549185+0,000253225ln(558)+1,68718E-07(ln(558))^3]-273,15
hesapladığımızda 40 bulmalıyız.
ln(558)=6,324358962
ln^3(R)=252,9586506

Dolayısıyla formülümüz :
[1/(0,001549185+0,001601488+4,26787E-05)]-273,15
Buradan da
1/0,003193352-273,15
=313,1505791-273,15
C=40,00057908 santigrad bulunur.
Görüldüğü gibi 10'da bir değil, yüzde bir değil, binde bir değil, 10binde 5 hata ile sonucu bulduk. (Yukarıda bazı yuvarlamaları yapmış olmasam tam sonuç bulacaktık).

Herkese sevgiler.

Not : Şu formülleri bulmak için ille de yabancı kitapları karıştırmak zorunda kalmamalı insanlar.

Ama bizde bilgi paylaşımı (Bilgi paylaşımı ile hazırcılığı burada ayırmak gerekiyor) korkulan birşey...

Umarım sizler katıldığınız diğer forumlarda bu bilgileri paylaşırsınız...
Başlık: NTC ile Sıcaklık Ölçümü
Gönderen: gallavi - 21 Nisan 2009, 09:04:34
Dediğiniz gibi kod yazmak işin kolay tarafı siz zor olanı bizimle paylaşmışsınız. İhtiyacı olan istediği dilde bunu kod'a çevirebilir. Teşekkürler
Başlık: NTC ile Sıcaklık Ölçümü
Gönderen: ErsinErce - 21 Nisan 2009, 11:46:16
Böyle bir paylaşımda bulunduğunuz için çok teşekkürler. Balığı pişirmeyi bile göstermişsiniz =)
Başlık: NTC ile Sıcaklık Ölçümü
Gönderen: tayyar - 21 Nisan 2009, 12:41:09
Alıntı yapılan: "picker"Değerli arkadaşlar,


Şimdi, Ln(4829), Ln(2977) ve Ln(1000) (Bu direnç değerlerinin 10 tabanına göre logaritmalarını alıyoruz) değerlerini hesaplayalım.

Bunlar da sırasıyla
8,48
8
6,91 çıktı.


Ln 10 tabanına göre değildir "e" tabanına göre logaritmadır.
Başlık: NTC ile Sıcaklık Ölçümü
Gönderen: picker - 21 Nisan 2009, 13:33:14
Alıntı yapılan: "tayyar"
Alıntı yapılan: "picker"Değerli arkadaşlar,


Şimdi, Ln(4829), Ln(2977) ve Ln(1000) (Bu direnç değerlerinin 10 tabanına göre logaritmalarını alıyoruz) değerlerini hesaplayalım.

Bunlar da sırasıyla
8,48
8
6,91 çıktı.


Ln 10 tabanına göre değildir "e" tabanına göre logaritmadır.

Tayyar arkadaşımız doğru söylüyor. Doğal logaritma olan ln(x) e tabanına göredir. e=2,71...
Uyarı için teşekkürler...
Başlık: NTC ile Sıcaklık Ölçümü
Gönderen: Maxim - 23 Nisan 2009, 00:01:05
picker

açıklamalar için teşekkürler.
Başlık: NTC ile Sıcaklık Ölçümü
Gönderen: askb - 23 Nisan 2009, 14:53:13
Tesekkurler.NTC lerle ılgılı gercekten detaylı bılgıler.Bircok kısıye faydası olacagı kacınılmaz.Bu tur bılgılerın paylasılması dılegıyle herkese kolay gelsın.
Başlık: daha kolayı yolu var,
Gönderen: ozcanozay - 09 Ekim 2009, 10:57:08
Sevgili konuyu açan arkadaş, NTC'nin direnç değeri bildiğin gibi sıcaklık ile değişiyor, senin hesabın  doğru ama çok uzun, NTC direncini hesaplayan 4 satır ve sıcaklığı hesaplayan tek satır kod yazdım, herşey mükemmel çalışıyor (toplam 5 satırda) ama kodu vermeyeceğim sen vermiyorsun ya hahaha
Başlık: NTC ile Sıcaklık Ölçümü
Gönderen: xenix - 09 Ekim 2009, 14:19:23
Kullandığın NTC nin K veya B (beta) olarak anılan bir katsayısı var, bunu bildikten sonra hesaplaması kolay.

NTC yi R direnci ile pull-up yaptığımızı varsayalım. NTC nin bir bacağı GND ye diğer bacağı da 8bit  analog-dijital çeviriciye gitsin. ADC sonucunu sıcaklığa şu formul ile çevirebiliriz:

T=(1/( LN( (R*ADC / (255-ADC))/R25 )/K + 1/298 ) ) - 273

Burada R25 25° deki direnç değeri, T nin birimi santigrat, ADC ise 8 bit ADC sonucu. Örneğin ben LMEM marka 5cr22 model NTC kullanıyorum. Bu NTC için K=4038, R25=10k, 3010 ohm ile pullup yapıyorum. Sıcaklık formulü:

T=(1/( LN( (3010*ADC / (255-ADC))/10000 )/4038 + 1/298 ) ) - 273
Başlık: NTC ile Sıcaklık Ölçümü
Gönderen: xenix - 09 Ekim 2009, 15:30:10
Bu mesajı yukarıdaki formulün isbatı olarak yazıyorum, ilgilenenler için :) beni matematiğe boğma diyenlerin sadece yukarıdaki formülü kulanmaları yeterli :)

NTC ler için en genel formül:

R1=R2 × exp(K×( 1/T1 - 1/T2 ))

Burada R1 T1 deki direnç değeri, R2 ise T2 deki direnç değeri. Sıcaklıklar kelvin cinsinden. Şimdi biz NTC nin 25° deki direncini biliyoruz. 25 derece 25+273=298Kelvin yapar. O zaman formül şu hale gelir.

R=R25° × exp(K×( 1/(T+273) - 1/298 ))

Bu formülde sıcaklık artık santigrad. R25 bilinen bir şey, örneğin 10k, K ise NTC nin datasheetinden bulunabilir, 10k NTC ler için 4100 civarında.

Bu formül ile sıcaklığı dirence çevirebiliriz. Ama bize lazım olan direnci sıcaklığa çevirmek. R25° karşı tarafa bölüm olarak geçirelim, iki tarafında doğal logaritmasını alalım, unutmadan ln(exp(x))=x dir.
ln(R/R25°)=ln(exp(K×( 1/(T+273) - 1/298 )))
ln(R/R25°)=K×( 1/(T+273) - 1/298 ), buradan T yi çekersek;

T=1/( (ln(R/R25°))/K + (1/298) ) -273

aradığımız formülü bulmuş oluruz. Burada R yerine voltaj bölüm formülünü koyarsak gerilimi sıcaklığa çeviren formülü elde ederiz. Gerilimi de 255 ile çarpıp 5 e bölerek ADC sonucunu sıcaklığa çeviren formülü bulabiliriz buluruz, o da bir yukarıdaki formül:

T=(1/( LN( (R*ADC / (255-ADC))/R25° )/K + 1/298 ) ) - 273
Başlık: NTC ile Sıcaklık Ölçümü
Gönderen: Maxim - 09 Ekim 2009, 16:34:13
xenix hocam ,
K değerini bilmediğimiz bir ntc nin K değerini hesaplayabilmemiz mümkünmüdür ? yoksa üreticinin verisine muhtaçmıyız ?
veya en üstteki yolumu izlemek zorundayız ,yanlışım yoksa orada K değeri kullanılmamış .
Başlık: NTC ile Sıcaklık Ölçümü
Gönderen: xenix - 09 Ekim 2009, 16:59:59
25° deki direncini biliyoruz. Bunun haricinde başka bir sıcaklıktaki direncini de bilirsek aşağıdaki formule koyup bulabiliriz.

R1=R2 × exp(K×( 1/T1 - 1/T2 ))

K=ln(R1/R2)/(1/T1- 1/T2)

Sıcaklıklar, kelvin, santigratlara 273 eklemeliyiz.
Başlık: NTC ile Sıcaklık Ölçümü
Gönderen: xenix - 09 Ekim 2009, 17:05:54
R2 ve T2 değeri olarak NTC yi kaynar suya daldırıp ölçtüğünüz değeri kullanabilirsiniz.
Başlık: NTC ile Sıcaklık Ölçümü
Gönderen: Maxim - 09 Ekim 2009, 19:27:15
formuldeki "exp" expand mi demek hocam ?
Başlık: NTC ile Sıcaklık Ölçümü
Gönderen: xenix - 10 Ekim 2009, 00:09:54
exp(x)=e^x= e üzeri x

Bütün programlama dillerinde exp(x) olarak kullanılır.
Başlık: NTC ile Sıcaklık Ölçümü
Gönderen: Maxim - 10 Ekim 2009, 01:31:00
şimdi birkaç deneme yaptım ,
sanırım bu Beta değerininde ilgili dereceler arasında hesaplanarak veriliyor
yani atıyorum beta:3810 ama hangi dereceler arasındaki beta ?

0-50 derece ise,
biz 0 - 100 derece arasındaki direnç değerlerine göre beta hesabı yapıyorsak sonuç hatalı çıkıyor ,
denedim , 0-50 derece değerleri ile neredeyse aynı çıktı , yanlışmıyım?
Başlık: NTC ile Sıcaklık Ölçümü
Gönderen: xenix - 10 Ekim 2009, 13:03:22
Bir yerlerde yanlışınız var gibi.
Şu (http://www.google.com.tr/url?sa=t&source=web&ct=res&cd=6&url=http%3A%2F%2Fwww.vishay.com%2Fdocs%2F29114%2Fntcalug.pdf&ei=-VbQSoyLMIOEmgOyy9iQAw&rct=j&q=filetype%3Apdf+ntc+table+k&usg=AFQjCNHJqx2bNUipHD6TbRzX4g3fCrJMdw&sig2=w0JK6psiMAYwAF04IV6dSA) datasheetin 3. sayfasındaki NTC ye göre hesap yaptım, şu K değerlerini buldum:

R50°-R25° → K=3933
R85°-R25° → K=3973
R100°-R25° → K=4006

aralarında fark var, hangisini kullanmalı? Özellikle hangi sıcaklık değerlerine yakın çalışacaksak onu seçmeliyiz. 100° civarında çalışacaksam, orda az hata yapmak istiyorsam K=4006 kullanırdım. Örneğin üst mesajlarda yazdığım formul 91 derece civarı olması gereken sıcaklığı K=4006 için 91,3° hesaplarken K=3933 için 92,8° hesaplıyor, yarım derece fark var, yani K daki ±100 lük değişimler sıcaklık ölçümünü pek de etkilemiyor. Zaten bu hata datasheetdeki NTC nin %3 hassasiyetinin içinde.
Başlık: Re: daha kolayı yolu var,
Gönderen: picker - 18 Ekim 2009, 02:37:30
Alıntı yapılan: "ozcanozay"Sevgili konuyu açan arkadaş, NTC'nin direnç değeri bildiğin gibi sıcaklık ile değişiyor, senin hesabın  doğru ama çok uzun, NTC direncini hesaplayan 4 satır ve sıcaklığı hesaplayan tek satır kod yazdım, herşey mükemmel çalışıyor (toplam 5 satırda) ama kodu vermeyeceğim sen vermiyorsun ya hahaha

Güzel... Benim kodumda o kadar. Yukarıdakileri tek bir formülde birleştirmenin ne kadar kolay olduğunu sanırım sen de anlamışsın...

Tebrikler ve başarılı çalışmalarının devamı dileklerimle...

ÖZLÜ SÖZ :
İnsanları köle yapmak istiyorsan onlara balığı hazır ver ki, hep sana muhtaç olsunlar.

İnsanları özgür kılmak istiyorsan, onlara balık tutmayı öğret ki kimseye bağlı kalmasınlar...
Başlık: NTC ile Sıcaklık Ölçümü
Gönderen: picker - 18 Ekim 2009, 02:48:27
Alıntı yapılan: "xenix"Bir yerlerde yanlışınız var gibi.
Şu datasheetin 3. sayfasındaki NTC ye göre hesap yaptım, şu K değerlerini buldum:

R50°-R25° → K=3933
R85°-R25° → K=3973
R100°-R25° → K=4006

aralarında fark var, hangisini kullanmalı? Özellikle hangi sıcaklık değerlerine yakın çalışacaksak onu seçmeliyiz. 100° civarında çalışacaksam, orda az hata yapmak istiyorsam K=4006 kullanırdım. Örneğin üst mesajlarda yazdığım formul 91 derece civarı olması gereken sıcaklığı K=4006 için 91,3° hesaplarken K=3933 için 92,8° hesaplıyor, yarım derece fark var, yani K daki ±100 lük değişimler sıcaklık ölçümünü pek de etkilemiyor. Zaten bu hata datasheetdeki NTC nin %3 hassasiyetinin içinde.

Yaptığınız hesap dar aralıklar için kesinlikle doğru.

Bununla birlikte tüm aralığı minimum hata ile ölçmek istiyorsanız, benim verdiğim eğri formülüyle NTC'nin genel fonksiyonunu çıkartmalısınız.

Bazı arkadaşlar sanmış ki tüm o hesaplamalar yazılıma gömülecek. Hayır, başta yapılacak ve sonrasında çıkan fonksiyon program içerisinde kullanılacak.

Eğer NTC'yi -40 +150 arasında hassas ölçümle kullanmak istiyorsanız, -40, 25 ve +150 derece değerleri için verdiğim formülden katsayıları hesapladığınızda, bütün bu aralıkta neredeyse hatasız sonuç elde ettiğinizi göreceksiniz.

Yok eğer 3-5 derece aralıkda ölçüm yapmakdan bahsediyorsak, o takdirde mutlaka xenix'in formülünü kullanırdım.
Başlık: Ynt: NTC ile Sıcaklık Ölçümü
Gönderen: ErsinErce - 18 Haziran 2010, 23:18:41
@picker hocam tekrardan Teşekkürler

Verdiğiniz formülle C# da kendimce bir program yazdım.
Formüldeki katsayıları bulup daha sonra bu katsayılar üzerinden karşılaştırma yapabiliyoruz ayrıca
Rp(pullup direnci) sayesinde adc girince hangi değerin hangi sıcaklığa karşılık geldiğini görüp tablo şeklinde çıktıda alabiliyoruz.

Programın linki NTCCalc.rar (https://www.mediafire.com/?9qs0q2402qu20ly)
rarlı 17.8 KB, açılınca 192KB

Eksik gördüğünüz veya yanlış olan bir tarafı varsa bildirirseniz sevinirim.
Başlık: Ynt: NTC ile Sıcaklık Ölçümü
Gönderen: JKramer - 19 Haziran 2010, 09:55:32
Teşekkür ederim, gayet başarılı bir program. Hatta kodları bile veriyor :). Ben de Excel'de yaptığım NTC Calc.xls dosyasını rafa kaldırabilirim artık :).
Başlık: Ynt: NTC ile Sıcaklık Ölçümü
Gönderen: Erol YILMAZ - 19 Haziran 2010, 14:05:12
cynetron;
program çok başarılı ellerine sağlık,,,

biraz da grafik olsa daha hoş olur.
Başlık: Ynt: NTC ile Sıcaklık Ölçümü
Gönderen: hopehard - 26 Haziran 2010, 19:09:38
çalışmanız güzel bende katkıda bulunayım ntc ile yaptığım kartta ısıyı ölçüp modbus üzerinden gönderebiliyorum bununla oparetör panelleri ve scada ile haberleşilebilir.
Başlık: Ynt: NTC ile Sıcaklık Ölçümü
Gönderen: SpeedyX - 26 Haziran 2010, 20:54:44
Alıntı yapılan: FxDev - 26 Haziran 2010, 19:52:47Yine de elinize, kolunuza sağlık. Yoksa kullanacağım projemde teker teker elimle yazacaktım.
Program çok güzel ama ufak bir not: bu tarz işler için genelde matlab kullanıyorum, tek tek yazmaya gerek yok, minik bir döngü herşeyi sizin yerinize hallediverir.

clc;
clear all;

Supply = 3.3;
Rp = 63.6;

fprintf('ADCTempTable[]={');
for Tx=-50:100
    R = 15*(2.71828)^(3440*(1/(273+Tx)-1/298));
    V = Supply*(R/(R+Rp));
    ADC = round(V/(Supply/1023));
%    fprintf('R=%f Temp=%d V=%f ADC=%f\n',R,Tx,V,ADC);
%    fprintf('Temp=%d ADC=%d\n',Tx,ADC);
    fprintf('%d,',ADC);
end
fprintf('};');

fprintf('\nNTable[]={');
for N=0:128; fprintf('%d,',round(((178 + 25 + (0.16)*N)^2)/178)-1); end;
fprintf('};');

fprintf('\nEnergyTable[]={');
for T=-50:100; fprintf('%1.3f,',((0.285 - 0.003135 * (T - 25.0)) * 1)); end;
fprintf('};');
Başlık: Ynt: NTC ile Sıcaklık Ölçümü
Gönderen: Maxim - 27 Haziran 2010, 11:10:12
cynetron ,

program harika eline sağlık
Başlık: Ynt: NTC ile Sıcaklık Ölçümü
Gönderen: ErsinErce - 28 Haziran 2010, 15:16:00
Asıl ben Herkese Teşekkür Ederim, elinizden geldiğince öğrenmek isteyenlere katkı sağlıyorsunuz,
çorbada ufak da olsa bir tuzumuz olduğunu ümit ediyorum.

Grafiksel olarak üzerinde pek birşey yok haklısınız biraz düzeltme yapılması lazım. Şuan ki yoğunluğumu atlatır atlamaz üzerine eğileceğim.

@FxDev hocam Pullup dirençlerinde genellikle Rp kısaltılması kullanıldığı için hızlıca onu yazdım dikkat çektiğin için teşekkürler =)

@hopehard hocam modbus ile ilgili çalışmanı eğer yayınlayabilirsen nasıl bir geliştirme yapabileceğimizi tartışabiliriz.

Son olarakda kaynak dosyası burda arkadaşlar; http://www.mediafire.com/download/bqn9yrrd3gxbzjk/NTC+Calc+Source.rar (http://www.mediafire.com/download/bqn9yrrd3gxbzjk/NTC+Calc+Source.rar)  alternatif link http://www.4shared-china.com/file/GzkW7pd6/NTC_Calc_Source.html (http://www.4shared-china.com/file/GzkW7pd6/NTC_Calc_Source.html)

Herkese İyi Çalışmalar...
Başlık: Ynt: NTC ile Sıcaklık Ölçümü
Gönderen: Maxim - 28 Haziran 2010, 18:08:01
cynetron ,
mesajlarına bakarmısın
selam
Başlık: Ynt: NTC ile Sıcaklık Ölçümü
Gönderen: rf - 01 Temmuz 2010, 19:24:28
Konuyu başından beri takip ediyorum. PT100,TC ve IC'ler üzerine bir çok çalışmam olmuştu ama NTC'ler ile yeni yeni tanışmaya başladım.


Açıkcası ilk önce yazılanları pek anlayamadım bunun nedeni B model ve Steinhart-Hart model iki farklı kalibrasyon yöntemini birbirine karıştırmış olmam.

Kendi çapımda özetlemem gerekirse NTC için bir birinden farklı doğrulukda üç farklı kalibrasyon yöntemi var.

1. NTC'nin bir bölgesini özellikle 15-55 gibi dar bir bölgesini +/- 5  derece gibi 25 dereceden uzaklaştıkca hatası artar şekilde birinci dereceden bir fonksiyonla kalibre edilmesi. (y=ax+b)
Bu yöntem daha çok masa üzeri sıcaklık göstergelerinde kullanılıyor genellikle oda sıcaklığı 25 Dereceye yakın olduğu için doğruluk yüksek oluyor.

2. B Model;
Üreticininverdiği yada sonradan hesaplanabilen bir katsayı (B değeri) ile R25 denilen 25 derecedeki direnç değeri kullanılıyor.

RT = R25 exp(B/TT - B/T25)


3.Steinhart-Hart model;
üç farklı sıcaklık ve bu sıcaklıklardaki direnç değerleri alınarak a,b,c isimli üç adet sabit katsayı elde ediliyor ve
T = (1.0/(Ra + Rb*LnRt + Rc*pow(LnRt, 3.0)))-273.15;
yerine konularak sıcaklık değeri bulunuyor.

Not:NTC'nin direnç değerinin nasıl bulundundan bahsetmiyorum!?




Aşağıdaki linkte bulunan program görsel olarak konu ile ilgili görsel iyi bir kaynak.

http://www.thinksrs.com/support/Therm%20Calc/NTCCalibrator/NTCcalculator.htm

Not: Konu ile ilgilenen arkadaşların Orhan Doğa'nın aşağıda linki blunan kitabından epeyce faydalandığını düşünüyorum. Güzel bir kaynak...

http://www.google.com/books?hl=tr&lr=&id=8hOjMFy10yIC&oi=fnd&pg=PR11&dq=Microcontroller+Based+Temperature+Monitoring+%26+Control,+Elsevier+%282002%29&ots=NGP2V0vQ-O&sig=nQEbdvV8T3LDBu_vbjVvl0fcx_0#v=onepage&q&f=false


Saygılarımla,
Başlık: Ynt: NTC ile Sıcaklık Ölçümü
Gönderen: stlg - 25 Temmuz 2010, 19:00:16
Ntc ler maksimum kac metre uzaklıkta ve ne tur kablo ile kullanılabilir
Başlık: Ynt: NTC ile Sıcaklık Ölçümü
Gönderen: Klein - 25 Temmuz 2010, 19:47:53
eğer kablo direncini kompanze edebiliyorsan  , binlerce , onbinlerce  hatta milyonlarca kilometre kablo kullanabilirsin.  Eğer uzun bir kablo kullanılacaksa blendajlı olmasında faya var.
Başlık: Ynt: NTC ile Sıcaklık Ölçümü
Gönderen: private_korsan - 07 Kasım 2010, 01:04:06
süper ötesi bir program olmuş çok teşekkürler
Başlık: Ynt: NTC ile Sıcaklık Ölçümü
Gönderen: omereliusuk - 15 Mart 2011, 00:32:13
hocam çook teşekkürler... bu bilgiler oldukça kıymetli
Başlık: Ynt: NTC ile Sıcaklık Ölçümü
Gönderen: omereliusuk - 15 Mart 2011, 00:34:40
Alıntı yapılan: xenix - 09 Ekim 2009, 17:05:54
R2 ve T2 değeri olarak NTC yi kaynar suya daldırıp ölçtüğünüz değeri kullanabilirsiniz.
arkadaşlar yalnız dikkatli olun suyun kaynama değeri yükseltiye bağlı olarak değişir. 0m'de 100 de kaynar. 1000 m'de 96 veya  97 de kaynar. hesabınızı ona göre yapın...
Başlık: Ynt: NTC ile Sıcaklık Ölçümü
Gönderen: ByTEK - 10 Haziran 2011, 20:45:28
verilen bilgiler için tşk ederim arkadaşlar.. programı tekrar yükleyebilirseniz sevinirim..

Kolay gelsin..
Başlık: Ynt: NTC ile Sıcaklık Ölçümü
Gönderen: Murat Mert - 12 Temmuz 2011, 23:15:58
S.A.
CCS C ye yeni yeni alıştırmalar yapıyorum program gayet güzel çalıştı elinize sağlık.
Başlık: Ynt: NTC ile Sıcaklık Ölçümü
Gönderen: Murat Mert - 13 Temmuz 2011, 10:45:44
Alıntı yapılan: 3L3CTRO - 10 Haziran 2011, 20:45:28
verilen bilgiler için teşekkür ederim arkadaşlar.. programı tekrar yükleyebilirseniz sevinirim..

Kolay gelsin..

S.A.
Sn. Arkadaşım prog bu linkte:
http://www.4shared.com/get/vbyvZQeO/NTC_Calc.html (http://www.4shared.com/get/vbyvZQeO/NTC_Calc.html)
Başlık: Ynt: NTC ile Sıcaklık Ölçümü
Gönderen: M_B - 13 Temmuz 2011, 15:58:01
Alıntı yapılan: mert07 - 13 Temmuz 2011, 10:45:44
Alıntı yapılan: 3L3CTRO - 10 Haziran 2011, 20:45:28
verilen bilgiler için teşekkür ederim arkadaşlar.. programı tekrar yükleyebilirseniz sevinirim..

Kolay gelsin..

S.A.
Sn. Arkadaşım prog bu linkte:
http://www.4shared.com/get/vbyvZQeO/NTC_Calc.html (http://www.4shared.com/get/vbyvZQeO/NTC_Calc.html)
Merhaba Mert07 hocam;
Dosyayı baska bir yere upload edebilirmisiniz. İndiremedim.

Teşekkürler
Başlık: Ynt: NTC ile Sıcaklık Ölçümü
Gönderen: Okan AKÇA - 13 Temmuz 2011, 17:32:32
murat07 hocamın büyük katkısıyla ntc ile sıcaklık ölçmeyi başardım yukarıda  her şey  dogru bir şekilde  ele alınmıştır. balık tutması ögretilmiştir.balıgı vermek isterdim ama benim karnım ac.. ;D
Başlık: Ynt: NTC ile Sıcaklık Ölçümü
Gönderen: Murat Mert - 15 Temmuz 2011, 10:14:00
S.A.
Yeni linkler:
http://www.upload.gen.tr/d.php/www/7u4v8d66/NTC_Calc.rar.html (http://www.upload.gen.tr/d.php/www/7u4v8d66/NTC_Calc.rar.html)

http://s2.dosya.tc/download/f3pKa5/NTCCalc.rar.html (http://s2.dosya.tc/download/f3pKa5/NTCCalc.rar.html)
Başlık: Ynt: NTC ile Sıcaklık Ölçümü
Gönderen: ALakurt - 18 Kasım 2012, 11:24:07
konuyu hortlatmak gibi olmasın ama aşağıdaki lik çoğu kişinin işine yarar.

http://www.thinksrs.com/downloads/programs/Therm%20Calc/NTCCalibrator/NTCcalculator.htm (http://www.thinksrs.com/downloads/programs/Therm%20Calc/NTCCalibrator/NTCcalculator.htm)
Başlık: Ynt: NTC ile Sıcaklık Ölçümü
Gönderen: Murat Mert - 18 Kasım 2012, 12:30:55
S.A.
Sayfa olarak güzelmiş. Yukarıdaki programda çok güzel işe yarıyor aslında.
Başlık: Ynt: NTC ile Sıcaklık Ölçümü
Gönderen: ertsen - 21 Ocak 2013, 20:41:27
arkadaşlar bu başlıktaki formülleri kullanarak 16f877 ile bir termostat yaptım. çok güzel çalışıyor. Şimdide ucuz olduğu için 16f716 aldım ancak aşağıdaki formül satırına gelince rom bellek doluyor.
"a segment or the program is too large exp"
T = (1.0/(Ra + Rb*LnRt + Rc*pow(LnRt, 3.0)))-273.15;

pow(LnRt, 3.0)
fonksiyonunu kaldırdığımda rom hatası olmuyor. internetten yaptığım araştırmalara göre bu hata bir fonksiyonun ana programdan büyük olması nedeniyle meydana geliyor. Acaba bu fonksiyonu başka türlü yazma imkanı olabilirmi. pic'imi değiştirmek gerekiyor. önerileriniz nedir?
Başlık: Ynt: NTC ile Sıcaklık Ölçümü
Gönderen: AsHeS - 21 Ocak 2013, 21:01:15
Alıntı yapılan: ertsen - 21 Ocak 2013, 20:41:27
arkadaşlar bu başlıktaki formülleri kullanarak 16f877 ile bir termostat yaptım. çok güzel çalışıyor. Şimdide ucuz olduğu için 16f716 aldım ancak aşağıdaki formül satırına gelince rom bellek doluyor.
"a segment or the program is too large exp"
T = (1.0/(Ra + Rb*LnRt + Rc*pow(LnRt, 3.0)))-273.15;

pow(LnRt, 3.0)
fonksiyonunu kaldırdığımda rom hatası olmuyor. internetten yaptığım araştırmalara göre bu hata bir fonksiyonun ana programdan büyük olması nedeniyle meydana geliyor. Acaba bu fonksiyonu başka türlü yazma imkanı olabilirmi. pic'imi değiştirmek gerekiyor. önerileriniz nedir?
en tepeye #include <math.h>   satırını koyduğunu farzederek diyebilirim ki o fonksiyonu  (LnRt*LnRt*LnRt)  bununla değiştir.Program hafızası o kütüphane fonksiyonlarına yeterli gelmiyor ya daha geniş ROM lu bir pic kullan ya da yazılımı optimize etmeye çalış ve de math.h kütühanesinden kurtularak diğer fonksiyonları ROM'a yazmasını engelle.
Başlık: Ynt: NTC ile Sıcaklık Ölçümü
Gönderen: ertsen - 22 Ocak 2013, 07:11:25
Alıntı yapılan: AsHeS35 - 21 Ocak 2013, 21:01:15
en tepeye #include <math.h>   satırını koyduğunu farzederek diyebilirim ki o fonksiyonu  (LnRt*LnRt*LnRt)  bununla değiştir.Program hafızası o kütüphane fonksiyonlarına yeterli gelmiyor ya daha geniş ROM lu bir pic kullan ya da yazılımı optimize etmeye çalış ve de math.h kütühanesinden kurtularak diğer fonksiyonları ROM'a yazmasını engelle.

math. h'ı kullanıyorum. (LnRt*LnRt*LnRt)  yide denedim ancak sonuç aynı. math.h'ı da düzenleyim gereksizleri kaldırayım dedim, oda bayağı karışık. en güzeli biraz daha büyük roma sahip bir pic'le devam etmek galiba. Teşekkür ederim.
Başlık: Ynt: NTC ile Sıcaklık Ölçümü
Gönderen: fractal - 07 Şubat 2013, 10:53:32
bir sürücüden ntc söktüm ama tipi nedir ?bilmiyorum.bu ntc lerin hepsi  aynımıdır?üzerinde kod filan yazmıyor.burdaki yazılımları bunun üzerinde uygulayabilirmiyim?

(http://g1302.hizliresim.com/16/7/jvc1j.jpg)
Başlık: Ynt: NTC ile Sıcaklık Ölçümü
Gönderen: JKramer - 07 Şubat 2013, 11:03:04
25 derecede ölçtüğünüz değer neyse ntc'nin değeri odur. Yine ölçüm yaparken ısıtın, değeri artıyorsa ptc, azalıyorsa ntc'dir. Bunların dışında kataloğuna ulaşamıyorsanız, önceki sayfadaki yöntemlerle (kaynatma,vs.) uğraşmanız gerekecek. Bilgilerine ulaşabileceğiniz bir ürün alsanız daha kolay olur sanırım :).
Başlık: Ynt: NTC ile Sıcaklık Ölçümü
Gönderen: ustad - 08 Şubat 2013, 13:31:08
Alıntı yapılan: fractal - 07 Şubat 2013, 10:53:32
bir sürücüden ntc söktüm ama tipi nedir ?bilmiyorum.bu ntc lerin hepsi  aynımıdır?üzerinde kod filan yazmıyor.burdaki yazılımları bunun üzerinde uygulayabilirmiyim?

(http://g1302.hizliresim.com/16/7/jvc1j.jpg)

Merhaba,
Lug tip diye geçer bu tip ntcler.
http://www.google.com/search?ie=UTF-8&oe=UTF-8&sourceid=navclient&gfns=1&q=lug+type+ntc (http://www.google.com/search?ie=UTF-8&oe=UTF-8&sourceid=navclient&gfns=1&q=lug+type+ntc)
Başlık: Ynt: NTC ile Sıcaklık Ölçümü
Gönderen: oyaz - 24 Nisan 2013, 09:46:02
Konuyu hortlatıyorum ama NTCCal. programı için verilen link açılmıyor.Tekrar yükleyebilecek ya da gönderebilecek olan var mı?
Başlık: Ynt: NTC ile Sıcaklık Ölçümü
Gönderen: ECHO - 08 Mayıs 2013, 18:09:18
FORM SİTELERİNDE BİLGİ PAYLAŞILIR 
BAHSEDİKEN PROJENİN KAYNAK KODLAR (SERİ DİREN 10K, NTC 25 DERECEDE 10K ) DEĞERLERİNE GÖRE HESAPLANMIŞTIR  >:(


#include <16F88.h>
#device adc=10

#FUSES NOWDT                    //No Watch Dog Timer
#FUSES XT                       //Crystal osc <= 4mhz for PCM/PCH , 3mhz to 10 mhz for PCD
#FUSES NOPUT                    //No Power Up Timer
#FUSES MCLR                     //Master Clear pin enabled
#FUSES NOBROWNOUT               //No brownout reset
#FUSES NOLVP                    //No low voltage prgming, B3(PIC16) or B5(PIC18) used for I/O
#FUSES NOCPD                    //No EE protection
#FUSES NOWRT                    //Program memory not write protected
#FUSES NODEBUG                  //No Debug mode for ICD
#FUSES NOPROTECT                //Code not protected from reading
#FUSES FCMEN                    //Fail-safe clock monitor enabled
#FUSES IESO                     //Internal External Switch Over mode enabled
#FUSES RESERVED                 //Used to set the reserved FUSE bits

#use delay(clock=4000000)

#use fast_io(a)
#use fast_io(b)
   #define use_portb_lcd TRUE   
   #define LCD_ENABLE_PIN PIN_B3
   #define LCD_RS_PIN PIN_B1
   #define LCD_RW_PIN PIN_B2
   #define LCD_TYPE 1
   #include <lcd.c>
   #include <math.h>
   
   // which analog pin to connect
   
#define THERMISTORPIN A0         // resistance at 25 degrees C
#define THERMISTORNOMINAL 10000  // temp. for nominal resistance (almost always 25 C)
#define TEMPERATURENOMINAL 25   // how many samples to take and average, more takes longer

#define NUMSAMPLES 5 // The beta coefficient of the thermistor (usually 3000-4000)
#define BCOEFFICIENT 3950  // the value of the 'other' resistor
#define SERIESRESISTOR 10000   

int samples[NUMSAMPLES];
unsigned int t ,i;
float average;
float steinhart;
   

void main()
{
   lcd_init();
   setup_adc_ports(sAN0|VSS_VDD);
   setup_adc(ADC_CLOCK_DIV_32);
   setup_spi(SPI_SS_DISABLED);
   setup_timer_0(RTCC_INTERNAL|RTCC_DIV_1);
   setup_timer_1(T1_DISABLED);
   setup_timer_2(T2_DISABLED,0,1);
   setup_comparator(NC_NC_NC_NC);
   setup_vref(FALSE);
   lcd_init();   
   set_tris_a(0xFF);
   set_tris_b(0x00);
   lcd_putc("\f");
   lcd_putc("EVRENSEL ISI KONTROL");
   delay_ms(100);
   
   
       
       while(1)   
   {
   
   set_adc_channel(0);

  for (i=0; i< NUMSAMPLES; i++)
  {
   samples = read_adc();
   delay_ms(10);
  }
 
 
  for (i=0; i< NUMSAMPLES; i++)
  {
     average += samples;
  }
  average /= NUMSAMPLES;
 
  average = 1023 / average - 1;
  average = SERIESRESISTOR / average;

  steinhart = average / THERMISTORNOMINAL;          // (R/Ro)
  steinhart = log(steinhart);                       // ln(R/Ro)
  steinhart /= BCOEFFICIENT;                        // 1/B * ln(R/Ro)
  steinhart += 1.0 / (TEMPERATURENOMINAL + 273.15); // + (1/To)
  steinhart = 1.0 / steinhart;                      // Invert
  steinhart -= 273.15;

  lcd_putc("\f");
  printf(lcd_putc,"%3.1f 'C",steinhart);
  delay_ms(1000);

   }
}
Başlık: Ynt: NTC ile Sıcaklık Ölçümü
Gönderen: mistek - 04 Nisan 2014, 23:18:18
10k NTC ile logaritmik hesaplarla uğraşmadan en kolay ve en az yer kaplayacak şekilde 0.2 derece hassasiyetle nasıl sıcaklık okuyabilirim?

Şuan logaritmik hesaplamayla sıcaklığı okuyorum ancak bu bana 2kb hafıza kaybına mal oluyor. Daha ekonomik çözümler nedir? Tablo mu yapayım ? 
Başlık: Ynt: NTC ile Sıcaklık Ölçümü
Gönderen: ErsinErce - 04 Nisan 2014, 23:28:11
tablo boyutunuz 11 bit okuma yaparsanız kafa kafaya denk geliyor.
10 bit olursa 1kB kazançtasınız tabi 1C-2C şeklinde görmek yeterliyse
diğer türlü 10 bit kafa kafaya gelir
NTC ile 0.2 derecelik yüksek çözünürlüğe ihtiyaç neden peki ?
Başlık: Ynt: NTC ile Sıcaklık Ölçümü
Gönderen: mistek - 04 Nisan 2014, 23:38:01
Yani virgülden sonrada bişeyler göstermek için aslında çokta kritik değil (Ortam sıcaklığı ölçülecek)

ADC 12bit ama Çözünürlükte çok sıkıntı değil. 1kb kazanç iyi bi değer. Bununla ilgili bir örnek var mıdır? Daha doğrusu hazır yapılmış bir tablo.
Başlık: Ynt: NTC ile Sıcaklık Ölçümü
Gönderen: ErsinErce - 04 Nisan 2014, 23:54:16
önceki sayfalarda PC yazılımı mevcut NTC nin ve pull-up direncinin değerlerini girip istediğiniz tabloyu alabilirsiniz
Başlık: Ynt: NTC ile Sıcaklık Ölçümü
Gönderen: mistek - 05 Nisan 2014, 00:13:56
Ntc_Calc programı elinde olan yükleyebilir mi? Linkler uçmuş.
Başlık: Ynt: NTC ile Sıcaklık Ölçümü
Gönderen: ErsinErce - 05 Nisan 2014, 00:15:56
https://www.mediafire.com/?9qs0q2402qu20ly (https://www.mediafire.com/?9qs0q2402qu20ly)

3 senedir hâla düzenleme yapamamışım =/
Başlık: Ynt: NTC ile Sıcaklık Ölçümü
Gönderen: mistek - 05 Nisan 2014, 00:18:20
Teşekkürler

mesaj birleştirme:: 05 Nisan 2014, 00:52:58

8bit çözünürlük yeterli geldi. Birazda ortalama aldım virgülden sonrası içinde iyi oldu. Programı yapana hayır duası gönderdim.
Başlık: Ynt: NTC ile Sıcaklık Ölçümü
Gönderen: mustafa_cmbz - 13 Ağustos 2014, 14:16:59
Yahu konu ile ilgili benimde bu aralar sıkıntılarım var ısı ile kompanze edilen bir sensörün içerisindeki ntc yi okumam gerekiyor.

Neden yapamadığım hususunda araştırmalar yapınca bu konuyu buldum.Buldum fakat temel anlatım biraz bana göre ağır matematiksel işlemler ile dolu dolu bir içeriğe sahip olduğu için işin içinden çıkamadım.


Forumda okuduklarım işin tamamen temelini anlatıyor.Fakat neyi işlemciye hesaplatıp neyi kendimizin hesaplaması gerektiğini anlayamadım.


Protonda yazıyorum bu konuda bu matematiksel işlemleri benim anlayabileceğim şekilde örnekleyebilecek varmı acaba ?
Başlık: Ynt: NTC ile Sıcaklık Ölçümü
Gönderen: ~ENES~ - 12 Ağustos 2015, 01:02:12
biraz klişe olacak ama hocam programı yeniden upload ederseniz sevinirim uçmuş yine :)
Başlık: Ynt: NTC ile Sıcaklık Ölçümü
Gönderen: ErsinErce - 12 Ağustos 2015, 11:42:41
http://www.mediafire.com/download/6uc6z3hxtb3ms9z/NTC_Calc.rar (http://www.mediafire.com/download/6uc6z3hxtb3ms9z/NTC_Calc.rar)
Başlık: Ynt: NTC ile Sıcaklık Ölçümü
Gönderen: ~ENES~ - 12 Ağustos 2015, 12:28:26
eywallah hocam teşekkür ederim
Başlık: Ynt: NTC ile Sıcaklık Ölçümü
Gönderen: shnsngl - 11 Kasım 2015, 11:53:05
konuyu hortlatmak gibi olacak ama ben arduino ile ntc dijital termometre yapmam lazım.
ntc 1K
 
25 Derece için 1000 Ohm
10 Derece için 2500 Ohm
40 Derece için 625 Ohm   
link atılan programdan A B C değerlerini A=-1.998388320     B=10.15336182   C=-50.40044718 çıktı.bu değerler bana yanlış gibi geldi yardımcı olursanız sevinirim.
Başlık: Ynt: NTC ile Sıcaklık Ölçümü
Gönderen: Maxim - 11 Kasım 2015, 17:46:19
değerler kesin yanlış
bende çıkanlar:
a:-0,00199838831952605
b:0,00101533618200839
c:-0,00000504004471834171
Başlık: Ynt: NTC ile Sıcaklık Ölçümü
Gönderen: shnsngl - 13 Kasım 2015, 12:17:51
Hata yapmisim.direnç değerlerini yanlış bulmusum.farkli sıcaklıklarda direnç değerini nasıl bulurum kolay bir yolu var mı?
Başlık: Ynt: NTC ile Sıcaklık Ölçümü
Gönderen: tekosis - 15 Kasım 2015, 00:39:39
zamanında şu şekilde bir yöntem izledim.
1 - ntc ve direnç ile bir gerilim bölücü yaptım,
2 - birinci avomotrenin termostat probu ile ntc yi aynı ketıla koydum.
3 - ikinci avometre ile gerilim bölücü gerilimini ölçtüm
4 - ketılın tuşuna bastım
5 - aynı anda hem gerilimi ölçen avometreyi hem de sıcaklığı ölçen avometreyi kameraya aldım.
6 - sonra ntc ve termostat probunu derin dondurucuya koyup(ölçü aletlerini dışarıda tutarak) yine sıcaklık ve voltaj değerlerini kameraya kaydettim.
7 - oturup pc başında videoları izleyerek gerilim - sıcaklık tablosunu çıkardım.

endüstriyel bir ürün değildi ve sanırım cihaz halen çalışıyor.
Başlık: Ynt: NTC ile Sıcaklık Ölçümü
Gönderen: Maxim - 15 Kasım 2015, 10:07:35
Alıntı yapılan: tekosis - 15 Kasım 2015, 00:39:39
zamanında şu şekilde bir yöntem izledim.
1 - ntc ve direnç ile bir gerilim bölücü yaptım,
2 - birinci avomotrenin termostat probu ile ntc yi aynı ketıla koydum.
3 - ikinci avometre ile gerilim bölücü gerilimini ölçtüm
4 - ketılın tuşuna bastım
5 - aynı anda hem gerilimi ölçen avometreyi hem de sıcaklığı ölçen avometreyi kameraya aldım.
6 - sonra ntc ve termostat probunu derin dondurucuya koyup(ölçü aletlerini dışarıda tutarak) yine sıcaklık ve voltaj değerlerini kameraya kaydettim.
7 - oturup pc başında videoları izleyerek gerilim - sıcaklık tablosunu çıkardım.

endüstriyel bir ürün değildi ve sanırım cihaz halen çalışıyor.


bu düşünce yanlıştır
aynı anda her isi sensörün okuma hızı farklı olacağından o anda not ettiğiniz sıcaklık değerleride farklı olacak

ketıldaki su ısınıyor
multimetrenin probu değeri hızlı okuyacaktır
ama ntc probunun dış metal gövdesinden içerideki sensöre kadar ilerleyen ısı gecikme oluşturacaktır

yani ısınmakta olan suda diyelim multimetre probu 62 derece gösteriyorsa
belkide o anda ntc 58 derece gösteriyordur
Başlık: Ynt: NTC ile Sıcaklık Ölçümü
Gönderen: shnsngl - 18 Kasım 2015, 19:27:51
nasıl yapıcam peki bir önerin var mı?
Başlık: Ynt: NTC ile Sıcaklık Ölçümü
Gönderen: kaganayanoglu - 18 Ocak 2016, 13:05:19
Merhaba,

Konuyu okudum ve bir şey merak ettim.

Niçin NTC lerin direnç değerleri çok değişik. Örneğin 100R NTC kullanmakla 100K NTC kullanmak arasında ne fark var?
Başlık: Ynt: NTC ile Sıcaklık Ölçümü
Gönderen: Murat Mert - 19 Ocak 2016, 11:59:57
S.A.
X1000 fark var. Isı kontrollerinde genelde hassas ısılarda 4.7k 10k, orta ısılarda 10k-22k 50 C üzerinde 47k-100k ntc kullanırlar. Klima sistemlerinde böyle.
Başlık: Ynt: NTC ile Sıcaklık Ölçümü
Gönderen: kaganayanoglu - 21 Ocak 2016, 23:28:45
Teşekkürler.

Başlık: Ynt: NTC ile Sıcaklık Ölçümü
Gönderen: temha - 13 Nisan 2017, 00:04:37
selamun aleyküm
Arkadaşlar ntc tipi sensöre seri kondansatör bağlayıp kondansatör şarj deşarj zamanı ile ölçme yapamaz mıyız.
Başlık: Ynt: NTC ile Sıcaklık Ölçümü
Gönderen: tekosis - 13 Nisan 2017, 01:30:22
dediğiniz yöntemle analog girişleri olmayan mcu'larda yapılan uygulamalar gördüm ama ne kadar sağlıklı olur bilemem.
Başlık: Ynt: NTC ile Sıcaklık Ölçümü
Gönderen: Erol YILMAZ - 13 Nisan 2017, 10:14:00
@temha,
TT Technic (https://www.google.com.tr/url?sa=t&rct=j&q=&esrc=s&source=web&cd=1&cad=rja&uact=8&ved=0ahUKEwjsrZDF8KDTAhWmBZoKHT8KDlkQFgiFATAA&url=http%3A%2F%2Fwww.hepsiburada.com%2Ftt-technic-tm-1011-sicaklik-ve-nem-olcer-pm-hrmtvtttm1011&usg=AFQjCNErHYdbt8CxKaU81THCFGcZWf41Eg&sig2=R8qkCH3tNS5aaPmheMKydQ&bvm=bv.152180690,d.bGs) marka sıcaklık nem ölçerin,[/size][/font]
NTC'ye giden kablosunu skopla incelediğim zaman bahsettiğin yöntemle okuduğunu farkettim.

Gayette güzel 0.1 derece çözünürlüklü sıcaklık okuyordu..

Bir tane alıp sen de inceleyebilirsin.
Başlık: Ynt: NTC ile Sıcaklık Ölçümü
Gönderen: AXI - 13 Nisan 2017, 12:48:12
Bildiğim kadarıyla NTC ve PTC lerin sıcaklığa tepkileri lineer değildi ve farklı fonksiyonlardan geçirilmesi gerekiyordu.

Eğer öyleyse şarj deşarla direk direnç değeri okunur ve lineer bir ölçüm yapılmış olmaz mı?
Başlık: Ynt: NTC ile Sıcaklık Ölçümü
Gönderen: Erol YILMAZ - 13 Nisan 2017, 14:19:22
Direnci doğru okudun ama NTC de sıcaklık ile direnç lineer değişmiyor.
Başlık: Ynt: NTC ile Sıcaklık Ölçümü
Gönderen: AXI - 13 Nisan 2017, 14:32:51
Alıntı yapılan: Allegro - 13 Nisan 2017, 14:19:22
Direnci doğru okudun ama NTC de sıcaklık ile direnç lineer değişmiyor.

Anlamadım.Yukarıda kondansatör deşarjı ile hassas bir NTC ölçüm yapılabileceğini söylemiştiniz?
Başlık: Ynt: NTC ile Sıcaklık Ölçümü
Gönderen: Erol YILMAZ - 13 Nisan 2017, 15:14:14
hassasiyet ve lineerlik farklı kavramlar...




25C şartlarında 0.1 C değişimi anlamak için gerekli direnç değişimi misal  10 ohm olsun.
Bu 10 ohm değişikliği olcebiliyorsan gerekli hassasiyeti sağlayabiliyorsundur...


Ama sıcaklık diyelim ki, 100 derece civarına çıktı ve 0.1 C için direnç değişimi 8 ohm oldu...
Bu da kısaca lineer olmayışın özetidir.


Ölçüm tekniği ise daha farklı bir konu...
Başlık: Ynt: NTC ile Sıcaklık Ölçümü
Gönderen: AXI - 13 Nisan 2017, 21:42:01
Peki o zaman kısaca sorayım.

Arkadaşın bahsettiği yöntem olan kondansatörün deşarjı yöntemi ile NTC kullanarak ısı ölçmek doğru mu?
Başlık: Ynt: NTC ile Sıcaklık Ölçümü
Gönderen: Erol YILMAZ - 13 Nisan 2017, 23:45:01

[size=78%][PDF] Implementing Ohmmeter/Temperature Sensor - Microchip[/size]
[/size]
[/size]http://ww1.microchip.com/downloads/en/AppNotes/00512e.pdf
[/size]
O pinin yukselis degilde dusus zamanini olcmek daha iyi diyordu Microchip...

Başlık: Ynt: NTC ile Sıcaklık Ölçümü
Gönderen: Maxim - 14 Nisan 2017, 08:16:24
ADC siz bu işi yapmak bana macera gibi geliyor, bir sürü adc li işlemci var
binlerce üretilecek ürün için belki fiyat avantajı sağlar bu seçenek
Başlık: Ynt: NTC ile Sıcaklık Ölçümü
Gönderen: Erol YILMAZ - 14 Nisan 2017, 08:55:08


Kapasitor doldurup bosaltmak kotu bi yontem degil kesinlikle.
Kapasitorun yavas deger degisiminden etkilenmez.
Beslemenin yavas degisiminden etkilenmez.
Neredeyse sadece Rref direncine bagli bi olcum saglanir.
Her 2 yontemin de ratiometric olma avantaji var. Ve 2 yontemde de olcum araligini genisletmek icin 2. Bir Rref kullanma imkani var.





Başlık: Ynt: NTC ile Sıcaklık Ölçümü
Gönderen: mertyucel - 24 Şubat 2018, 08:17:10
İlk önce merhaba ben fen lisesinde okuyorum sıcaklık ölçümü ile ilgili projem var ama ben 25A° nedir tam anlamadım
Başlık: Ynt: NTC ile Sıcaklık Ölçümü
Gönderen: JKramer - 24 Şubat 2018, 12:09:26
Forum değişikliği yapılırken bazı sembollerde sorun olmuş; 25 santigrad derece: İşte o sembol  (https://www.google.com.tr/search?q=centigrade+degree+symbol&num=50&safe=off&client=opera&hs=VEt&source=lnms&tbm=isch&sa=X&ved=0ahUKEwjP_rrYmb7ZAhXrCcAKHRxkArIQ_AUICigB&biw=1880&bih=953#imgrc=_) :) .
Başlık: Ynt: NTC ile Sıcaklık Ölçümü
Gönderen: mrtplt - 24 Şubat 2018, 18:26:29
Malzemenin cinsi senin etkiye verdiğin tepki ile benim ki bir mi? Senin elektronların çok aktif benimki daha az aktif olabilir....İki tartın var birisi 0-10 gr tartıyor 0.1 hassasiyette diğeri 100-1 kg tartıyor 200 gr hassasiyette....netice şudur ölçme nedir? sorusuna iyi vakıf olmak lazım....8 bit adc ile ölçemediğin değeri sormaz ama bunu sorarsan  olmaz..
Başlık: Ynt: NTC ile Sıcaklık Ölçümü
Gönderen: mustafa_cmbz - 22 Şubat 2019, 14:16:09
Merhabalar..

Konuyu biraz diriltelim istedim.Daha önce ntc ile uğraşma niyetinde idim fakat ara vermiştim.Şuan kaldığım yerden tekrar toparlıyım istiyorum.

Biraz üzerinde uğraştım fakat şöyle bir sıkıntı yaşadım..

  Device=18F452
  Xtal=20
 
  ADCON1 = %10000000 
   
  Adin_Res 10                    'ADC ÇÖZÜNÜRLÜĞÜ 10 BİT 0...1023
  Adin_Tad FRC
  Adin_Stime 50

  Declare LCD_Type 0
  Declare LCD_DTPin PORTB.0
  Declare LCD_ENPin PORTB.5
  Declare LCD_RSPin PORTB.4
  Declare LCD_Interface 4
  Declare LCD_Lines 2
  TRISC = 0
  PORTC=0
 
  TRISA=%00000001  'A0 analog giriş Diğerleri Digital
 
 
  Dim  Rt            As Float
  Dim  steinhart    As Float
  Dim  LnRt          As Float
  Dim  lineer        As Float
  Dim  T            As Float
 
 
  Dim  RA            As Float
  Dim  RB            As Float
  Dim  RC            As Float
 
  Dim ADC              As Float
 
   
 
      RA = 0.00115521419927516;
      RB = 0.000228409546912507;
      RC = 0.00000011773271084379;
 
 
  BASLA:
 
  Print At 1,1,"ADC: ",Dec LnRt
  Print At 2,1,"Rt: ",Dec Rt
  Print At 3,1,"ISI: ",Dec T
 
  GoSub NTC_OKU
  GoTo BASLA
 
  NTC_OKU:
       
  ADC = ADIn 0
  Rt = (10000.0 * ADC)/(1024.0 - ADC);
  LnRt = Log(Rt);
  T = (1.0/(RA + Rb*LnRt + Rc*pow(LnRt, 3.0)))-273.15;
  DelayMS 1000
  Return


kodlarım bu şekilde.

(https://i.hizliresim.com/5aELmq.png) (https://hizliresim.com/5aELmq)

başlık altında paylaşılan bir hesaplama programı vardı.Kodu zaten hazır veriyor.Proton'a çevirmesi de çok kolay.

Fakat uygulamada çok farklı değerler gösteriyor.

(https://i.hizliresim.com/V98PvV.png) (https://hizliresim.com/V98PvV)

bunun gibi bir değer okuyorum..

Nerede yanlış yapıyorum ?
Başlık: Ynt: NTC ile Sıcaklık Ölçümü
Gönderen: ErsinErce - 22 Şubat 2019, 14:25:11
http://www.mediafire.com/file/6uc6z3hxtb3ms9z/NTC_Calc.rar
Başlık: Ynt: NTC ile Sıcaklık Ölçümü
Gönderen: kimlenbu - 22 Şubat 2019, 16:12:02
Benim dc motor sürücüsünde kullandığım ntc ölçüm fonksiyonum, işine yarayan olursa :

float GetTemperature(void){

const float multiplier=(float)3300/(float)4096;
 float vo=0; //Voltage Divider Voltage
 float temp=0; //NTC Calculated Temperature
 float r0=10000; //NTC Resistance at 25 C
 float r1=0; //NTC Resistance
const float r2=10000; //NTC Series Resistance
const float vi=3300; //input voltage 3300mV
const float b=4050; //NTC coefficent
const float t0=293.15; //room temp 25 C = 293.15K
 
 // 1/T = 1/T0 + 1/B * ln(R/R0)
 // T : Temperature
 // T0: Room Temperature (293.15K)
 // B : NTC Coefficent
 // R : NTC Resistance
 // R0: NTC Resistance at 25 C
 
 //TemperatureRaw=ADC_DualConvertedValueTab[0];
 TemperatureRaw=(tmpTemperatureTotal/ADCSample); //buraya takılmayın birden fazla örnek alıp toplayıp sample sayısına bölüp daha doğru bir sonuç alınması sağlanıyor
 vo=TemperatureRaw*multiplier;
 r1=r2*((vi/vo)-1);
 temp=(1/((1/t0)+(1/b)*log(r1/r0)))-273.15;
 flagTemperatureReady=0;
 return temp;
}
(https://i.ibb.co/vqyLmVg/ntc.png) (https://ibb.co/vqyLmVg)
Başlık: Ynt: NTC ile Sıcaklık Ölçümü
Gönderen: Erol YILMAZ - 24 Temmuz 2020, 12:25:49
Aşağıdaki kod bahsi geçen NTC ile çalışır. C veya F çıkış verir.
Mcu'lar için nispeten hızlı olması için Piecewise Linear Approximation
ile yapılmıştır. Float yerine INT16 optimizasyonu yapılabilir.

// NTC : LM03-103F-B, 3435 Ozdisan
// Pull-Up : 10K %1
// ADC Resolution : 10bit
// Result : float C or F
// Fault Result: 32767

https://www.onlinegdb.com/online_c_compiler

#include <stdio.h>

// NTC : LM03-103F-B, 3435 Ozdisan
// Pull-Up : 10K %1
// ADC Resolution : 10bit
// Result : float C or F
// Fault Result: 32767

float tempC;

// lookup table....
#define NSEG 24
int adc_raw[NSEG]   = {    71,    81,    92,   106,   120,   138,   158,   181,   207,   237,   271,   308,   350,   395,  496,  549,  604,  657,  803,   844,   879,   910,   956,   973};
float  temp_C[NSEG] = { 110.4, 104.7,  99.3,  93.3,  88.2,  82.4,  76.8,  71.2,  65.7,  60.1,  54.5,  49.0,  43.4,  37.9, 26.7, 21.2, 15.5, 10.1, -6.6, -12.2, -17.7, -23.4, -34.5, -40.2};
float  temp_F[NSEG] = { 230.8, 220.5, 210.7, 200.0, 190.7, 180.3, 170.2, 160.2, 150.3, 140.2, 130.0, 120.2, 110.1, 100.1, 80.0, 70.1, 60.0, 50.1, 20.2,  10.0,   0.2, -10.1, -30.1, -40.4};

float NtcRead_NEW2(int wADCVal, char tempType){

char index;
float tmpVal0, tmpVal1;
float tmpValPropAdc;
float result;

if(wADCVal < adc_raw[0]) return(32767);
if(wADCVal > adc_raw[NSEG-1]) return(32767);

for (index=0; index<(NSEG-1); index++){

if( (wADCVal >= adc_raw[index]) && (wADCVal < adc_raw[index+1]) ){

if(tempType == 'F') { tmpVal1 = temp_F[index+1]; tmpVal0 = temp_F[index]; }
else { tmpVal1 = temp_C[index+1]; tmpVal0 = temp_C[index]; }
tmpValPropAdc = (float) (wADCVal - adc_raw[index+1]) / (float) (adc_raw[index+1] - adc_raw[index]);
result = tmpValPropAdc * (tmpVal1-tmpVal0) + tmpVal1;
return (result);
}
}
return(32767);
}

int main(){
    tempC = NtcRead_NEW2(973, 'F');
    printf("ADC 73 = %f\n", tempC);
    return 0;
}