All for Joomla All for Webmasters
Yapabilecekleriniz hayal gücünüz kadar geniştir.
STM32
ARDUINO
ONUR KÖSE
Kişisel Blog

PIC LM35 ile Sıcaklık Ölçümü

Yarı iletken bir yapıya sahip olan LM35 ısı sensörüdür. Hassas ve küçük değerli sıcaklık ölçümleri için ideal bir sensördür.

-55 derece ile 150 derece arasında çalışabilen LM35 ısı sensörü çıkış geriliminin sıcaklık farkına göre değişmesi prensibi ile çalışır. Bir derece değişim çıkış voltajını 10 mV değiştirir. 4 ile 20 V  arasında giriş voltajı uygulanabilen sensör, 0.5 derece hassasiyete sahiptir.

Örneğin: Sensör çıkışı 328mV ise elde edilen sıcaklık 32.8’C dir.

PIC’in analog pinlerinden sensör çıkışı okunur. Bit seviyesine göre okunan değerle çarpılır ve 1000 ile çarpılır. Son olarak 10 ile bölünerek sıcaklık değeri elde edilmiş olur.

 

Devremiz Aşağıdaki gibi tasarlanmıştır. Pin_a0 analog pininden sensör gerilimi okunup dönüştürme formülü ile 2×16 LCD de sıcaklık olarak gösterilecektir.

Yazılım;

Komutlara sırayla bakacak olursak;

Komutu ile adc çeviri işleminin 10bit olarak yapılacağı belirtilmiştir. Yani dönüşümde hesaplanan adım büyüklüğü; 5/2^10 = 0,0048828125 V olur.

Komutu ile pin_a0 pini giriş, diğer port_a pinleri çıkış olarak ayarlanmıştır.

Komutu ile ADC çalışma frekansı fosilatör/32 olarak ayarlanmıştır.

Komutu ile pin_a0 pini analog okuma olarak kullanılacağı belirtilmiştir.

Komutu ile dönüşüm işlemi LCD de hızlı olarak gösterilmek istendiği için bir kez ilk satıra “Sicaklik” kelimesi yazılır.

Komutu analog okuma için ayarlanan pin_a0 pinini okur  ve işaretsiz 16 bit bilgi değişkenine atar.


*Niye değişken 8 bit değilde 16 bit?

Çünkü 8 bit seçilseydi işaretsiz int8 aralığı = 0 – 255, işaretli int8 aralığı = -128 – 127 dolaysıyla 10 bit ADC çevrim sonucu çıkan dijital sonuç (min 0, max 1024) değişken limitini aşmaktadır, overflow hatası verir. Bu yüzden max limiti 1024den büyük olan veri tipi seçmemiz gerekir. int16 ve yukarısı seçilmelidir.


Komutu ile okunan bilgi değişkeni adım büyüklüğü ile çarpılır ve sonuç 1000 ile çarpılır float voltaj değişkenine atanır.
Komutu ile voltaj değişkeni 10a bölünerek derece hesaplanmış olur.
Void Main() dönügü içinde ilk satıra bir kez Sicaklik yazılmıştı. Çünkü değişen kısım sadece sicaklik kelimesinden sonra gelen derece kısmıdır. Böyle yazmayıp tek satırda Sicaklik = (Derece) komutu yazılsaydı LCD sürekli yenileneceği için ekranda yazı okunmazdı delay_ms(x) komutu kullanılması gerekirdi.

lcd_gotoxy(10,1) komutu sicaklik kelimesinden sonraki karakter konumuna gider. (Sicaklik = 8 karakter + 1 boşluk = 1 karakter)

Komutu ile sicaklik değişkeni ekrana yazılmaktadır. “%0.1f” komutu değişkenin float olduğunu (f), baştan boşluk bırakılmayacağını (0) ve virgülden sonra 1 karakter alınacağını (.1) belirtmiştir.

About the author

2 Responses
  1. 1-) #include şeklinde kütüphane ekleyemiyorum.

    2-)#device adc=10 yazdığımda expecting a( gibi bi hata alıyorum, kabul etmiyor. Yardımcı olursanız çok sevinirim.

Leave a Reply

Merhaba

Bloguma Hoşgeldiniz.

Kategoriler

Çevrimiçi Kişiler

3 Misafir
%d blogcu bunu beğendi: