Diyot Sensörden Isı Okuma Konusunda Yardım Lütfen

Başlatan ErsinErce, 18 Haziran 2008, 12:28:00

ErsinErce

Merhaba elimde ısıyı okuyup ona göre bikaç işlem yapan bir kart var fakat ısıyı göstermiyor. Elimde bulunan başka bir sensöre göre referans alıp hangi ısıda hangi değerleri çıkardığını buldum fakat verdiği grafik doğrusal değil eğri şeklinde gidiyor. Sensörümüz bir Diyot ama adı sanı belli değil. Diyot a 5v girlerek 5k1 ile gnd ye çekiliyor. Grafiği ve voltajlar alttaki resimde mevcut. Tabi değerler ortalama değerler grafik biz inişli çıkışlı o yüzden. Bu voltajı picle okumaya çalışıyorum ama sonucunda Derece cinsinden göstermem gerekiyor eğri şeklinde olduğundan bir formül çıkarmaya çalıştım fakat rakamlar çok uçuk çıktı. Bunu yapmamın kolay bi yolu veya formülü var mı? Devreye malesef harici bi sensör koyamıyorum mevcut sensörün voltajından okumam gerekiyor.


İyi Çalışmalar

picusta

Look-up table + enterpolasyon yöntemini deneyebilirsin.
Islemcinin yeteri kadar bos hafizasi var mi?
illa formül diye tutturuyorsan Matlab'da Curve Fitting yapmayi dene.

Erol YILMAZ

Bunu yapmanın birçok yolu var.

Öncelikle Mcu nun birçok iş içinde bunun için de yeterli işlem gücüne sahip olduğunu varsayalım,

1. Değerleri gayet güzel çıkartmışsın ki, işin en zor tarafı burasıydı.

2. Bu eğimi bir fonksiyon şeklinde ifade etmenin yolunu bulman gerekiyor.
Casio nun Algebra hesap makinelerinde
MATLAB ta, ve bazı özel programlarda olan bir özellik ile
bu eğriyi istediğin dereceden bi fonksiyona çevirebilirsin !!!!

3. Sonra bunu PIC içine yazıp giriş sinyalini uygunlaştırdıktan sonra bu fonksiyona (veya tersine) giriş değerini girip sonuç değerini alırsın.

4. Bu kadar basit :)

ErsinErce

@picusta ve @Allegro cevaplarınız için çok teşekkürler

lookup table ilk başta düşündüm fakat virgülden sonra 1 hane daha göstermem gerekiyor, o aralığıda işin içine katınca çok büyük bir table çıkıyor ortaya.

işin kötü tarafı Matlabı kullanmayı bilmiyorum (En yakın zamanda öğrenmem lazım heryerde karşıma çıkıyor :) )

@Allegro matlab haricindeki o diğer özel yazılımlara bir isim ya da link verebilir misiniz?

Tekrardan çok teşekkürler

ErsinErce

enterpolasyon yöntemini atlamışım pardon :) doğrusal gitse evet olabilir ama doğrusal gitmiyor,3.0 da mesela 2200 verdiğinde, 3.1 de mesela 2300 verirken 3.2 de 2400 değil 2450 veriyor oda hatayı arttırıyor.

İşlemcinin yapacağı tek işlem bu veriyi ortaya çıkarmak olacak o yüzden yeterince yer var, işlemciyi gerekirse değiştirebilirimde şuanlık 452 kullanıyorum

Erol YILMAZ


picusta

enterpolasyon'u verdigin tablodaki degerler arasina dogru çekmek gibi görmelisin.
örnegin tablonda 3 : 1280  ve 4:1320 var.
Bu iki nokta arasinda dogru varmis gibi düsün. y =ax+b deki a ve b'yi bu iki nokta sayesinde çözeceksin. sonra x'i verip y'yi bulacaksin (veya tersi).
45- 46 araliginda ise tekrar a ve b'yi hesaplayacaksin (bu araliga özgün) ve formülü hesaplayacaksin.
Look-up mantigi budur.

mikromuh

Elimko marka isi kontrol cihazinda 1n4148 un termokupullar icin cold-junction sicakliini olcmek icin kullanildigini gordum.Bekli yardimci olur.

ErsinErce

@Allegro,@picusta,@mikro muh gerçekten çok teşekkür ederim

Excel de çözdüm @Allegronun verdiği yöntemle ne kadar teşekkür etsem azdır grafik ve formülü aşağıdaki şekilde çıktı.



İyi Çalışmalar

picusta

sormasi ayip hangi programlama dilini kullaniyorsun?
hesaplama islemlerin floating point mu fixed point mu olacak ? kaç bit degisken kullanacaksin?
Hesaplama zamani kisitli olacak mi?

ferdem

Çözümü bulduğunuzu yazmışsınız ama ben yine de yazayım:

Ölçüm sonuçları oldukça doğrusal(lineer). Bu sonuçları y=ax+b ye uydurduğunuzda yaptığınız azami(max) hata -ki 29 derece civarlarında- tolere edilemiyor mu? Edilemiyorsa ben olsaydım bir değil birden çok doğru kullanırdım(linear splines), örnek: -4 20 arasına bir doğru 20-50 arasında bir doğru ve 50-70 arasına bir doğru şeklinde. Kolay gelsin.

ErsinErce

Proton+ basic kullanıyorum şuan için bir ay sonra kısmetse C ile devam edeceğim.
Evet Float kullanmayı düşünüyorum ama değerleri hesaplatınca rakamlar baya büyük gözükücek gibi, eğer sığmazsa fixed ile işi bitirmeye çalışacağım. Pic 10 bit olacağını için mecburen 10 bit ama istediğimi alamazsam 12 bit veya üstü adc kullanmayı planlıyorum. Evet hesaplama zamanı kısıtlı aynı anda 7segment display de süreceği için. İşin diğer bir kötü tarafıda sensörden 2 tane olması :) 2 sinide okuyup göstericem

picusta

Alıntı yapılan: "ferdem"Çözümü bulduğunuzu yazmışsınız ama ben yine de yazayım:

Ölçüm sonuçları oldukça doğrusal(lineer). Bu sonuçları y=ax+b ye uydurduğunuzda yaptığınız azami(max) hata -ki 29 derece civarlarında- tolere edilemiyor mu? Edilemiyorsa ben olsaydım bir değil birden çok doğru kullanırdım(linear splines), örnek: -4 20 arasına bir doğru 20-50 arasında bir doğru ve 50-70 arasına bir doğru şeklinde. Kolay gelsin.

Benim anlatmak istedigim olay look-up tablosundaki her iki deger arasi için bir dogru kullanmak, tabloda n deger var ise n-1 dogru olacak (dogrunun a ve b parametreleri dinamik olarak hesaplanacak).

Fixed-Point'un kötü tarafi overflow ve underflow sorunlari, bunlari her zaman kontrol etmelisin ve degiskenlerin uzunlugunu buna göre belirlemelisin (ve katsayilarla çarpmalisin).
Floating point ne kadar zaman alir (ve hafizada yer tutar) onu bilmelisin.

ferdem

@picusta
Tabii ki öyle daha doğru(accurate) olacaktır ama bu kadar doğruluk gerektiren bir uygulama mı? Benim de demek istediğim her iki noktadan bir doğru üretmektense(ki komuşu 2 doğru hemen hemen aynı doğru) seçilen 4 noktadan üretilen 3 doğru yeterli hassasiyeti verebilir. Nitekim bu ölçüm sonuçlarına göre her iki noktadan üretilen doğruların vereceği y değerleri ile uygun seçilmiş sadece 4 noktadan üretilmiş doğruların vereceği y değerleri arasındaki fark muhtemelen 10 bitlik bir adc tarafından fark edilemeyecek(0-5V arasında). İyi çalışmalar dilerim.

askuzucu

merhabalar
1n4148' i zamanında kuluçka makinası için sensor olarak kullanmıştım.ama bu diyotun sıcaklık voltaj grafiğini düzleştirmek için  sabit akım  kaynağı ile sürmek gerekiyor.bir de bu şekilde deneyin.her bir derece için 2 mV artış sağlamıştım.En büyük avantajı soğuma tepkisinin hızı idi.
selamlar...