CCS C ile LM35 Uygulaması

pr_01_37_max

 

National şirması taraşından üretilen LM35 sıcaklık sensörü, analog tipte olup santigrad derece başlına 10 milivolt gerilim üretir. Yani, sıcaklığın her 1°C artışına karşlılık, çıkış gerilimi 10mV artar. Örneğin, 20°C için çıkış gerilimi 200mV iken, 100°C için çıkış gerilimi 1V’dur. LM35 sıcaklık sensörünün pek çok tipi vardır. Her bir modelin sıcaklık ölçüm aralığı ve doğruluğu farklıdır. Örneğin, LM35DZ adlı sensör, 0°C ile 100°C arasındaki sıcaklıkları ölçer ve son derece doğrusal bir karakteristiğe sahiptir.

/******************************************************
 PIC16F877 ile LM35 Sıcaklık Sensörü Uygulaması
PIC PROG/DEKA : Port B jumper'ı LCD konumunda olmalı
*******************************************************/
#include <16f877.h> // Kullanılacak denetleyicinin başlık dosyası tanıtılıyor.

#device ADC=10 // 10 bitlik ADC kullanılacağı belirtiliyor.

// Denetleyici konfigürasyon ayarları
#fuses XT,NOWDT,NOPROTECT,NOBROWNOUT,NOLVP,NOPUT,NOWRT,NODEBUG,NOCPD

#use delay (clock=4000000) // Gecikme fonksiyonu için kullanılacak osilatör frekansı belirtiliyor.

#use fast_io(a) //Port yönlendirme komutları A portu için geçerli

#define use_portb_lcd TRUE // LCD B portuna bağlı

#include <lcd.c> // lcd.c dosyası tanıtılıyor

unsigned long int bilgi; // İşaretsiz 16 bitlik tam sayı tipinde değişken tanımlanıyor
float voltaj,sicaklik; // ondalıklı tipte değişkenler tanıtılıyor

//********** ANA PROGRAM FONKSİYONU*******

void main ( )
{
 setup_psp(PSP_DISABLED); // PSP birimi devre dışı
 setup_timer_1(T1_DISABLED); // T1 zamanlayıcısı devre dışı
 setup_timer_2(T2_DISABLED,0,1); // T2 zamanlayıcısı devre dışı
 setup_CCP1(CCP_OFF); // CCP1 birimi devre dışı
 setup_CCP2(CCP_OFF); // CCP2 birimi devre dışı

 set_tris_a(0x01); // RA0 Giriş olarak yönlendiriliyor

 setup_adc(adc_clock_div_32); // ADC clock frekansı fosc/32
 setup_adc_ports(AN0); //RA0/AN0 girişi analog

 lcd_init(); // LCD hazır hale getiriliyor

 set_adc_channel(0); // RA0/AN0 ucundaki sinyal A/D işlemine tabi tutulacak
 delay_us(20); // Kanal seçiminde sonra bu bekleme süresi verilmelidir

 printf(lcd_putc,"\fSicaklik="); // LCD'ye yazı yazdırılıyor
 while(1) // sonsuz döngü
 {
 bilgi=read_adc(); // ADC sonucu okunuyor ve bilgi değişkenine aktarılıyor

 voltaj=(0.0048828125*bilgi)*1000; // Dijitale çevirme işlemine uğrayan sinyalin mV olarak gerilimi hesaplanıyor
 sicaklik=(voltaj/10)+2; // Her 10mV'ta 1 derece artma

 lcd_gotoxy(10,1); // İmleç 1. satır 10.sütunda
 printf(lcd_putc,"%5.1f'C",sicaklik); // LCD'ye sıcaklık değeri yazdırılıyor
 // Gösterilecek ondalıklı değerin toplam basamak sayısı 5 olacak.
 // Gösterilecek değerin ondalıklı kısmı ise 1 basamak olacak. %5.1f
 // komutu ile bu işlemler yaptırılmıştır.
 delay_ms(100); // 100 msn gecikme
 }
}


LM35 Uygulaması

Bu yazı CCS C Örnekleri kategorisine gönderilmiş ve , ile etiketlenmiş. Kalıcı bağlantıyı yer imlerinize ekleyin.