Thermocouple adc - derece çevirimi hakkında

Başlatan boreas, 21 Aralık 2017, 11:53:15

boreas

Arkadaşlar,
kendi tasarladığım opamp devresiyle thermocouple okuyorum. Okuyabildiğim thermocouple tablolarını  kaydederek gidersem sorun yok tertemiz sıcaklık sonuçlarını alıyorum. Ama dehşet hafıza tutuyor. her dereceye yaklaşım 4 byte gidiyor ve şuanda bir kaç çeşit tc. ekleyince 11000 den fazla veri girişi oluyor. Kısacası bellek yetmiyor.  Formülle hesaplayabilecek net bir bilgide bulamadım, bulduklarımın hepsi 10 dereceklik lineerizasyon ile tablo kaydetmiş. Bu işi formülle çözmenin yolu yok mu ?

Saygılar.

exmachine

Ne tür bir ısı sensörü kullanıyorsun ve hangi aralıkta ölçüm yapıyorsun ? Bunları belirtmemişsin.

Örneğin PT100 için şu pdf'deki formülü kullanabilirsin :
http://www.itsirl.com/admin/pdfmanual/1399021951CalVan.pdf

Ayrıca şu sitede bir hesaplama aracı var:
http://www.southerntemp.co.uk/reference/rtd-resistance-to-temperature/

Linkini verdiğim sitenin PT100 hesabını yapan javascript ile yazılmış fonksiyonun kodunu, "sağ tık -> sayfa kaynağını görüntüle" yordamıyla açabilirsin.
Hatta kodu buraya yerleştirdim. Buradan çıkarabilirsin. Float değişken kullanacağın için hafıza yine şişecektir ama yine de tablo yöntemine göre çok daha az hafıza kullanırsın.


//RTD calcualtion functions
    var rtdcalc = function(){
        var ptVal;
        if (document.getElementById('rb100').checked) { ptVal = 1; }
        else if (document.getElementById('rb500').checked) { ptVal = 5; }
        else if (document.getElementById('rb1000').checked) { ptVal = 10; }
        else { ptVal = 0;}
        var res = document.getElementById('rtd_resistance').value;
        var ans = document.getElementById('rtd_answer');
        if (ptVal == 0) {
            ans.innerHTML="RTD value not set";
        } else if (res == "" || res/2 == null) {
            ans.innerHTML="Invalid resistance";
        }else{
            var ohms = res / ptVal;
            var c0 = -245.19;
            var c1 = 2.5293;
            var c2 = -0.066046;
            var c3 = Number("4.0422E-3");
            var c4 = Number("-2.0697E-6");
            var c5 = Number("-0.025422");
            var c6 = Number("1.6883E-3");
            var c7 = Number("-1.3601E-6");
            var a = (ohms*c7) + c6;
            a = (a*ohms) + c5;
            a = (a*ohms) + 1;
            var b = (ohms*c4) + c3;
            b = (b*ohms) + c2;
            b = (b*ohms) + c1;
            b = b*ohms;
            b = (b/a) + c0;
            if (b < -200 || b > 850.00) {
                ans.innerHTML="Out of range";
            } else {
                b = Math.round(b * 100) / 100;
                ans.innerHTML=b + "°C";
            }
        }
        return false;
    }

boreas

Ölçümünü yapacağım sensör thermocouple ama tek bir çeşit yok tam skalada olabildiğince çok ekleyeceğim. K J T L B R S E misal

Maxim

neden max6675 gibi hazır bir entegre kullanmadınız?

boreas

max6675 k tipi ve ölçüm için 300ms. gibi sürelere ihtiyaç duyuyor. Ben cihazın bütün tiplere uygun olmasını istiyor.

Maxim

MAX31856 var, 8 farklı tc seçimi.
belki haberiniz yoktur diye yazıyorum.

ahmet_zxc

Alıntı yapılan: Maxim - 21 Aralık 2017, 13:48:30
MAX31856 var, 8 farklı tc seçimi.
belki haberiniz yoktur diye yazıyorum.
onda da bazı değerler için 8-10 dereceye varan hatalar söz konusu. ama o hataları minimize etmek daha kolay.

boreas

İşin aslı tasarımım hazır işlemciyi küçültmek istiyorum onun için araştırıyorum. Eğer formülle çözebilirsem ciddi alanım boşalacak. Ama olmayacak bir iş ise zorlamayayım