LM35 kullanımı

Başlatan hiddenman32, 14 Aralık 2004, 09:45:04

hiddenman32

Sayın arkadaşlar. Daha önce adc ile çalışmadım. Bana - ve + sıcaklık değerlerini ölçecek termometre gerekli. Bu konuda araştırma yaptım. LM35 kullanmayı istiyorum. (ekonomik olduğu için LM35 tercihim i2c ile çalışan sensörler kullandım ama fiyatları çok pahalı) Bu elemana Vss uygulaması ile - degerler ölçülebiliyor. Fakat benim sizlerden öğrenmek istediğim şu:

LM35'i full range çalışacak şekilde bağladıktan sonra hem - hemde + olarak gelen değerleri adc entegresi kullanmadan örneğin 16f877 ile ölçmek istersem bunu nasıl yapacağım.

-vref +vref uçlarını mı kullanmam gerekiyor yoksa farklı bir yöntem varmı. yardımcı olursanız sevinirim. Bu konuda kaynak yok yada ben bulamadım.

Ayrıca tek kaynaktan -Vss elde etmek için (simetrik besleme) hangi yöntemi önerirsiniz. Ben devredeki max232'nin boşta kalan bacağından
-13 elde edip onu 7905 ile -5v'ta düşürerek kullanmayı düşünüyorum daha uygun bir yöntem varmı veya bunun bir mahsuru olurmu?

Yardımlarınız için teşekkürler. Hepinize başarılar.

Veli B.

-  değer gelmiyor.Eğer - değerleri ölçmek istiyorsan.1 yada 2 diyot ile şase seviyesini yukarı çekerek çıkışı diyot bariyeri kadar(600-700mv) öteliyorsun.Yani 0 derecede 600 mv -20 derecede 400mv çıkış alıyorsun.Gerisi 877 ve senin programına kalmış.

Veli B.

Bir de burada detaylı bir şekilde tartışmışız.Arama sonucu buldum. ;)

https://www.picproje.org/index.php/topic,297&postdays=0&postorder=asc&start=0

hiddenman32

Arkadaşım teşekkürler. Aslında bu verdiğin linki incelemiştim. Fakat sanırım benim internet ile olan sorunumdan dolayı ikinci sayfa açılmamıştı. Sanırım cevabım burada olacak. Yani öteleme. Birazdan deneyeceğim. Fakat örnek olarak yaptığın ve lm35.rar olarak picprojeup1're gönderdiğin örnek yok tekrar gönderebilirmisin.

İlgine teşekkürler. Çalışmalarında başarılar.

Not: Lm35 datasheet'inde diyotla yapılan bağlantı gösterilmiş ama hem - hem + çıkış gözüküyor. sadece + ucu'mu kullanılacak?

Veli B.

Lazım olmadığı için gruba aktardıktan sonra silmiştim ama gerekli ise bir ara yeniden hazırlayayım.Mantığı basit, bir pic ile donanımsal(yazılımsal da olabilir emin değilim) PWM ile 0-2,5 v çıkış almıştım hatırladığım kadarı ile. Bir pot ile PWM' i ayarlayarak asıl pice uyguluyordum.
+ çıkışı kullanman yeterli.

oyhan

Negatif ısı ölçen tipteki lm35ler $3.28 civarında..
dz seriler ile sadece 0 - 100C arası ölçülüyor ama fiyatı uygun.
http://www.national.com/pf/LM/LM35.html
BİRLİKTEN KUVVET DOĞAR:

rf

Lm35 ler ile ilgili sole bir  olaylar  yasiyorum

16f876 ra0 ve ra1 ucuna  ikitane lm35 dz bağliyorum ve birinin  değeri
22 birininki 20 bazen 1 derece bazen 2 derece fark ediyor
    bootloader kullanıyorum ,pbp2.45
kullandığum kod:
   Define    OSC      20      ' Set Xtal Frequency
   DEFINE  LOADER_USED 1
   Define adc_bits 10 ' ADC sonucu 10 bitlik
   Define ADC_CLOCK 3 ' ADC saat kaynagi( foscillator/8 )
   Define ADC_SAMPLEUS 50 ' ADC örnekleme zamani us cinsinden
   ADCON1 = %10000010
   TRISA = %11111111 ' Port A giris


lm35:
   Adcin 0, ic ' Read channel 0 to AD_Rez (0-1023)
       ic = (ic */ 500) >> 2   ' equates to: AD_Rez * 500)/1024
   Adcin 1, dis ' Read channel 0 to AD_Rez (0-1023)
       dis = (dis */ 500) >> 2   ' equates to: AD_Rez * 500)/1024

   Lcdout $fe, $c0 ,"In:", dec2 ic, %11011111, "C"
   Lcdout $fe, $c0 + 8,"Out:",dec2 dis, %11011111, "C"
return

-Lm 35 lerin yerinide değiştirdim hala ayni
-ısı sabit değil saniyede bir olcum yapiyorum
her olcumde 1 derece yukarı yada assaği cıkıyor  
-birde lm35dz yi kablo ile 15 cm uzağa taşıyorum normal değerler olcemiyorum orn: 17-35-22-28- falan   rc filitresi denedim değişiklik yok.

İyi çalışmalar...
KOSGEB Girişimcilik Desteği Bilgi ve Paylaşım Platformu http://www.girisimcilikdestegi.com/

ete

@rf,

Programda adc okuma bölümünün tamamını verdinmi bilmiyorum ama verdiğin bölümde adc okuma işleminin tamamlandığını kon trol eden bölüm eksik. Veya bu bölüm olmadan yeterli gecikme koyulması gerekir. Bu durumda okuma işleminde tamamlanmadan elde edilen değerler gelip neticeye etki ediyordur. Birde aşağıdaki şekilde dene;

lm35:
       Adcin 0, ic ' Read channel 0 to AD_Rez (0-1023)
BAK: IF ADCON0.2=1 THEN BAK
        PAUSE 5
        ic = (ic */ 500) >> 2 ' equates to: AD_Rez * 500)/1024

        Adcin 1, dis ' Read channel 0 to AD_Rez (0-1023)
Yine:  IF ADCON0.2=1 THEN Yine
         PAUSE 5
         dis = (dis */ 500) >> 2 ' equates to: AD_Rez * 500)/1024
..
.

ETE
Bilgi hazinedir paylaştıkça büyür.            http://etepic.com

oyhan

ete hocam
Lm35 in kullandığı bu kodu izah edebilirmisin acaba?
BİRLİKTEN KUVVET DOĞAR:

Veli B.

Kodtan kastın adcon0.2 ise bu kesmenin bitip bitmediğini gösteren bayrak.
dönüşüm esnasında 1 olur.
pbp için bu biti kontrol etmene gerek olduğunu düşünmüyorum.kendisi bunu yapıyor tahminimce, çünki pbp ile de lm35 kullandım ve herhangi bir sorun yaşaamdaım. clock olarak ben 1 kullanıyorum genelde, 3 rc için.
Diğer konularda yorum yapabilmem için kodu görmeme lazım. Bu arada  mesafe sorun değil çünki 15 metre mesafeden gayet sağlıklı sonuçlar alıyoruz.Sadece kablo ekranlı olsun bu biraz fark yapıyor. :D

ete

@Oyhan,

Kodun en önemli bölümünü Katana izah etmiş. Daha açıkça söylemek gerekirse, ADC işleminde chip içinde bir kondansatörün önce deşarj edilerek sonrada şarj olma süresi hesap ediliyor. İlgili kondansatör tam şarj olmadan sen süreyi alır isen (ADC değerini) her seferinde değişik bir değer elde edebilirsin. Halbuki chip, içinde bir sistemle sarj olma süresini kontrol ediyor.
ADC işlemine başlarken ADCON0 registerinin 2 biti (Adcon0.2) high yapılıyor chip tafaından. Sonra çevirim işi bitinceye kadar yani kondansatör şarj oluncaya kadar bu bit high da tutuluyor. İşlem tamamlanınca LOW'a çekiliyor. BUda ADC değerini artık alabilirsin anlamına geliyor. Verdiğim kod bu işi yapmaktadır.
Sevgili Katana PBP da bu işe gerek yok demiş ama tahminde bulunmuş. Bende tahminde bulunuyorum ve karşılaştığım bazı sorunları bu komutu vererek aştığımı biliyorum. Mantık olarak Katana'nın söylediklerine katılıyorum. Ancak PBP bu biti kontrol imkanı vermiş ise bununda bir sebebi vardır belki diyerek senin için denemekte fayda var diyorum.

ETE
Bilgi hazinedir paylaştıkça büyür.            http://etepic.com