avatar_Hattuşa

termokupl mV tablosu kullanımı

Başlatan Hattuşa, 24 Nisan 2018, 22:08:55

Hattuşa

slm ETE hocam;
J tipi bir termokupl dan okunan adc değerini mV tablosunda nasıl bir katsayı haline getirip kullanmalıyım?
devre içerisinde bulunan başka bir ısı sensörü ile elde ettiğim ısı değerine göre ekteki kullandığım termokulpun mV tablosunu nasıl kullanmalıyım. hazır bişeyler varmı diye baktım ama bulamadım. sizin bir tecrübeniz varmıdır?

F®T

Selami hocam ;
Bana kalırsa hiç uğraşma lookup tablosu ile işi bitir.Çünkü liner bir artış veya düşüş yok.bir yere kadar düşüş bir yerden sonra artış yapıyor.
"Hakk" şerleri hayr eyler Zannetme ki gayr eyler Ârif anı seyreyler Mevlâ görelim neyler Neylerse güzel eyler.

Maxim

tc icin bence en mantıklı is hazır entegrelerden kullanmaktır.
thermocouple da olay sadece düşük voltajı yükseltmek değil

Hattuşa

Alıntı yapılan: Maxim - 25 Nisan 2018, 05:55:25
tc icin bence en mantıklı is hazır entegrelerden kullanmaktır.
thermocouple da olay sadece düşük voltajı yükseltmek değil

önüme gelen devrede J tipi termokupl +opamp şeklinde geldi. bu sebeble mecburen eldeki imkanlarla ölçümlemeye çalışıyorum

ete

Yapılacak iş tablo oluşturmak başka bir şey değil. Ancak o tabloda kesin 255 adet den fazla bilgi var. Bu durumda iki tablo yada ihtiyaca göre 3 tablo oluşturman gerekebilir.
Daha sonra o tablodan bilgi nasıl bulunacak yada o mv ları nasıl okuyacaksın. O kadar küçük değerler varki pic bunları o kadar hassas okuyabilecekmi. denemeden anlaşılmaz. dene ve gör derim. Muhtemelen birerbir aynı değerleri okuyamayacaksın okuyamayınca da tablodaki karşılığını alman çok zor olacak. En güzeli v.rgülden sonra 2 veya 3 haneye kadar okumaya çalışıp kalanını atacaksın ve tabloyuda o şekilde hazırlayacaksın. Böylece bulman kolaylaşır.
Unutma Max31856 diye bir entegre var her türlü termokupl'u digital olarak okuyabiliyor tavsiye ederim.

Ete

ademgolcuk

#5
aşağıdaki kodları kullanarak j tipi termokupl dan veri okuyabilirsiniz. Bunun için float değişken desteği olan bir dil(proton, ccs gibi) kullanmalısınız. ekteki tezde daha detaylı bilgi mevcuttur.

a0 = -0.048868252
a1 = 19873.14503
a2 = -218614.5353
a3 = 11569199.78
a4 = -264917531.4
a5 = 2018441314

termocouple_oku:
    For i=0 To 19
         HAM_tmcp =ADIn 0
         DelayUS 10
    Next
   
    For i=0 To 18
      For j=i+1 To 19
         If HAM_tmcp >HAM_tmcp[j] Then
            temp=HAM_tmcp
            HAM_tmcp =HAM_tmcp[j]
            HAM_tmcp[j]=temp
         EndIf
      Next j
    Next i
   
    vd = 5.0*HAM_tmcp[10]/1024.0
    vt = vd/105.0 '101
    'temp =a0+vt*(a1+vt*(a2+vt*(a3+vt*(a4+a5*vt))))
    temp= a4+a5*vt
    temp=temp*vt+a3
    temp=temp*vt+a2
    temp=temp*vt+a1
    temp=temp*vt+a0
Return

ademgolcuk

Alıntı yapılan: ete - 25 Nisan 2018, 16:36:07
Yapılacak iş tablo oluşturmak başka bir şey değil. Ancak o tabloda kesin 255 adet den fazla bilgi var. Bu durumda iki tablo yada ihtiyaca göre 3 tablo oluşturman gerekebilir.
Daha sonra o tablodan bilgi nasıl bulunacak yada o mv ları nasıl okuyacaksın. O kadar küçük değerler varki pic bunları o kadar hassas okuyabilecekmi. denemeden anlaşılmaz. dene ve gör derim. Muhtemelen birerbir aynı değerleri okuyamayacaksın okuyamayınca da tablodaki karşılığını alman çok zor olacak. En güzeli v.rgülden sonra 2 veya 3 haneye kadar okumaya çalışıp kalanını atacaksın ve tabloyuda o şekilde hazırlayacaksın. Böylece bulman kolaylaşır.
Unutma Max31856 diye bir entegre var her türlü termokupl'u digital olarak okuyabiliyor tavsiye ederim.

Ete

hocam Max31856 entegresini kullandınız mı hiç. Proton basic için bir kütüphanesi mevcut mu? İnternette arduino için yapılmış bir sürü video ve kütüphane var ama pic için bir çalışma bulamadım şimdilik. kütüphane yoksa bile SPI ile veri okuduktan sonra bu veriyi dereceye nasıl dönüştüreceğiz.

ete

Max31856 entegresini bir arkadaşın projesinde kullandım. Aliexpress den hazır br kart aldık 3-5 USD civarında bir fiyatı vardı. Entegre zatenbu fiyatlarda olduğu için ucuz geldi. Sonra bir kod yazdım ve yaklaşık 1250 dereceler civarını ölçtük sonu olumlu ve yeterince hassas. Yaklaşık  Bir yıl kadar oldu detayları pek hatırlamıyorum ama Data sheet'i inceeleyip kodu geliştirdiğimi hatırlıyorum.
Kullandığım komut ve detayı şöyle;
 LOW CS
          shiftin DTA, CLK,0,[OKUNAN\16,ORTAM\16]     
          HIGH CS 
          HAMISI=OKUNAN :HAMORTAM=ORTAM                           
          TEMP=((OKUNAN.BYTE0 & %00001100)>>2 )*25
          ORTAM=ORTAM>>8
         
          ISI = (OKUnan >> 4)   
   
Bu entegre hem ortam ısısını hemde ölçüm noktasındaki ısıyı okuyabilmektedir. Sanırım Thermocupl ilk (ısıl çift şeklindeki kablosundan) ve son noktalardaki ısıyı okuyor.

Bu kodu aynen Proton da kullanabilirsin sanırım.
Ete

Maxim

ete abi, max31855 kullanmış olabilirmisiniz?
zira max31856 hem pahalı hemde ciddi hassas bir entegre, 19bit hassasiyetinde.

ete

Sanırım 31855 kullandık. Aradakı farkı görmemişim bir şemamda 31855 diğerinde 31856 yazmışım. Amakodlar 31855'e göre burası kesin.
Ete

fofo

ETE hocam, max31855'te negatif ısıyı nasıl okuyabiliriz.

ete

Bu entegrede okunan 2 adet word değeri var. Toplamı 32 bit ediyor.
Okuma 39-16 bir word ve 15-0 ikinci word şeklinde oluyor.
Burada 39-16 arasındaki 16 bitklik sayı bizim okunacak sıcaklığımız oluyor. Bu sıcaklığın 16-ve 17 ci bitlerini atlıyoruz.
Bunun için Okunan=Okunan>>2 şeklinde bir ifade ile 2 bit sağa kaydırıyoruz. Böylece elimizde 14 bitlik data kalıyor. Bu bilginin sondaki iki biti bize sıcaklığın ondalık kısmını veriyor. Bunu desimal olarak okuyup 25 ile çarparak buluyoruz.
Böylece sayının tam sayı kısmını bulmak için 14 bitlik sayıyı 2 bit daha sağa kaydırarak ondalık kısmından da kurtuluyoruz.
Böylece elimizde 12 bitlik bilgi kalmış oluyor. 12. bit (orjinal okunan değerin 31. ci biti) bize okunan sıcaklığın artı mı yokse eksimi olduğunu söylüyor. Şayet bu bit 1 ise sıcaklık eksi, 0 ise sıcaklık artı demek oluyor.
Sıcaklık artı ise sağda kalan 11 bit bize direk sıcaklık tam sayı değerini veriyor.
Sıcaklık eksi ise değeri hesaplamak için ilk 10 bitini alıyoruz. Bunu 1023 den çıkartıp 1 ekliyoruz (yada direk 1024 den çıkartıyoruz ancak 1024, 11 bitlik bir sayıdır bu nedenle 1023 den çıkartıp 1 eklemek en doğrusu olacaktır). Sebebi şu. Binary matematikte eksi sayılar 2 ye tümleyeni şeklinde gösterilirler. Örnek verelim 1111 1011 sayısı -5 dir. Bu sayı aslında 251 sayısıdır ama işaretsiz sayı sisteminde 251 işaretlide ise -5 dir. Tümleyeni ni bulmak için 256 dan çıkartılırsa 00000101 elde edilir.
Bu durumda eksi sıcaklık okuyup hesaplamak için; öncelikle en soldaki bite bakıyoruz bu 1 ise sayımız (sıcaklığımız) eksidir.
Geriye sıcaklığı hesaplamak kalıyor. Bunun için  OKUNAN=OKUNAN & %0011111111  işlemi ile sayının 10 bittlik kısmını alıyoruz. Bunu 1023 den çıkartıyoruz ve 1 ekliyoruz. Ekrana da başına - işreti koyarak yazdırıyoruz.
Hepsi bu kadar.

Ete

Powered by EzPortal