PIC 16F84 İLE SICAKLIK ÖLÇER DEVRESİ YAPIMI

PIC 16F84 İLE SICAKLIK ÖLÇER

      

 

Şemadan göreceğiniz gibi bir adet pic ve termistör ile PC seri portuna sıcaklık bilgisini ölçüp, yollayabiliyoruz. Bundan ucuzu can sağlığı…

Termistör elemanı ısıyla direnci değişen bir dirençtir. Termistörün direnci ısı yükseldikçe düşer. Buraya kadar herşey gayet güzel, bir ohmmetre sorunu çözecek gibi görünüyor ama pek öyle kolay değil çünkü termistör LM35 ısı sensörünün aksine linear değil non-linear çalışır. Linear çalışma her 1 birime karşılık 1 birimlik değişim demektir. Non-Linear çalışma ise 1 birime karşılık 10 birim veya daha farklı bir değişim miktarının gözlenmesidir. Böyle bir özellikte algılayıcıyı bir mikroişlemci ile kullanmanın birkaç yolu vardır. En basit yöntem bir look-up yani karşılaştırma tablosu yapmaktır. Bu tabloda her birime karşılık gelen değer belli bir aralıkla yer alır ve mikroişlemci girişte olan sinyali bu tablodaki değerlerle karşılaştırıp buna göre çıkışın ne olması gerektiğine karar verir. Giriş ve karşılık çıkış değerleri denemelerle tek tek bulunmalı ve mikroişlemci programına yazılmalıdır. Bu hem çok zahmetli hem de çok program hafızası kullanan bir yöntemdir. PIC 16F84 ne yazık ki böyle bir yöntemi uygulmak için çok küçük bir hafızaya sahip…

İkinci yöntem ise giriş ile çıkış arasındaki ilişkiyi matematiksel olarak ifade etmek ve bu ifadenin denklemini kullanarak mikroişlemcinin hesap yaparak giriş değerine karşılık gelen çıkış değerini bulmasını sağlamaktır. Tabii bu N- serisinden bir non-linear polinomun bir mikroişlemci tarafından hesap yapma yöntemi olarak benimsenmesi demektir. Buradaki zorluk makine kodu ile çalışan ve çarpma yapmayı bile tek komutla beceremeyen bir aptala kare aldırmaktır. Kısaca termistorden gelen değerler incelendiğinde denklem:
 

ÇIKIŞ DEĞERİ =   Cn * (Rt)^n 
Rt = Termistör Direnci


Şeklinde n dereceli polinom bir denkleme uyduğunu gösterir. Burada n terim sayısıdır. PIC eğer bir PENTIUM olsaydı terim sayısını arttırıp hassasiyeti de o oranda arttırabilirdik ama biz üç terimli bir polinom ile yetinirsek  C0 + C1* Rt + C2*Rt^2  gibi üç katsayılı yani üçüncü dereceden bir polinom kullanabiliriz. Burada en büyük sorun C0,C1,C2 sabitlerinin değerlerini bulmakta… Bu kısmı anlatmak bu yazıyı sıkıcı hale getirmekten başka bir işe yaramayacağı için geçersek sonuçta C0 = 162,9763, C1 = -1,117476, C2 = 0,0024 bulunur.

PIC üzerinde bu işlemi yapmaksa başka bir başağrısı ama hafıza alanı yetip iş bitince tüm zorluklar unutulur.

Bir direnç değerini pic ile okumanın en klasik yolu bir kondansatörü şarj edip direnç üzerinden boşaltarak boşalma zamanını ölçmektir. Bu zaman direnç değeriyle doğru orantılıdır.

Devre şemadan görüldüğü gibi yaptığı işe oranla çok basittir. Ölçülen değerleri bir COM port aracılığıyla PC terminal emülasyon programında görebilirsiniz. 

Daha evvel yayınladığım RS232 uygulamalarını okuyanlar bu iş için en uygun programın win95/98 içinde bulunan accessories deki HYPER-TERMINAL olduğunu hatırlayacaklardır.

Devreyi hatasız yapıp voltaj vermeden önce bazı ayrıntılara dikkatinizi çekmek istiyorum:

  • PC  RS232 (COM) portuna bağlantı konektörünü takarken PC yada PICden en az birinin enerji almaması gerekir aksi halde RS232 portunun arızalanması işten bile değildir.

  • DB9 konnektör kullanırsanız COM1, DB25 konnektörünü  kullanırsanız  COM2 portunu işgal etmeniz gerekir. PIC için hangi COM portun kullanıldığının önemi yoktur, bu terminal programının sorunudur.

  • RS232 (COM) portun bacaklarının kesinlikle kısa devre olmasına izin vermeyin ,aksi takdirde port arızalanır.

Şimdi terminal programının SETUP’ına göz atalım:
 

  • COM1 veya COM2 yi seçin. (Hangisini kullandıysanız)

  • 2400 baud ,8Bit, No parity, 1 Stop bit seçeneklerini ayarlayın.

  • Terminal emülasyon tipini TTY olarak seçin.

  • Sistem Half duplex ve tek yönlü çalışacağından half duplex yada full duplex olması farketmez.
    TERMO ZİP Hex Dosyası

Bu yazı Uncategorised kategorisine gönderilmiş. Kalıcı bağlantıyı yer imlerinize ekleyin.

Bir Cevap Yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir