Ana Sayfa PIC|ULAK PIC|ULAK ile Saatli Masa Termometresi

PIC|ULAK ile Saatli Masa Termometresi

8 min read
0
0
4,538

Merhaba arkadaşlar,

Bu yazımızda, MekatronikLAB firmasının üretmiş olduğu  PIC mikrodenetleyiciler ile proje geliştirme kiti PIC|ULAK ile rtc(real time clock) ve lm35 sensörünü kullanarak saatli masa termometresi adını verdiğim uygulamyı gerçekleştirdik. 🙂

Öncelikle rtc(real time clock) modülü ve lm35 sıcaklık sensörüyle ilgili bikaç bilgi verelim.

RTC(Real Time Clock) modülü,  DS1302 entegresi gerçek-zaman saati (RTC) olarak çalışır. Saniyeyi, dakikayı, saati, günü, ayı, yılı, haftanın gününü sayar. 2100 yılına kadarki tarih bilgileri entegrenin içinde kayıtlıdır. Her ayın sonunda otomatik olarak ay ve gün bilgisini ayarlar. Örneğin 29 Şubat 2008 tarihinden sonra 1 Mart 2008 tarihine geçer. 2 V ile 5 V arasındaki gerilimlerde çalışan entegrede, 31 baytlık RAM bölgesi vardır. 2 V besleme geriliminde çalışırken 300 nA’den daha az akım çeker.

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.

Malzemeler

  • pic|ulak
  • rtc modülü
  • lm35
  • 4*20 lcd

Bağlantı Şeması

???????????????????????????????????????

 

CCS C Kodları

[php]

#include <18f2550.h> // kullanılan denetleyici
#device ADC=10 //10 bitlik adc kullanıyor.
#fuses XT,NOWDT,NOPROTECT,NOBROWNOUT,NOLVP,NOPUT,NOWRT,NODEBUG,NOCPD // Denetleyici konfigürasyon ayarları
#use delay (clock=4M) // Gecikme fonksiyonu için kullanılacak osilatör frekansı belirtiliyor.
#define use_portb_lcd TRUE // LCD B portuna bağlı
#include <lcd420.c> // LCD.c dosyası programa ekleniyor
#include <ds1302.c>// ds1302.c dosyası programa ekleniyor

unsigned long int bilgi; // bilgi değişkeni tanımlanıyor.
float sicaklik, volt; // sıcaklık ve volt değişkeni tanımlanıyor.
byte saniye,dakika,saat,gun,ay,yil,haftanin_gunu; // byte türünde değişkenler tanımlanıyor

//******************* ANA PROGRAM FONKSİYONU *******************
void main ()
{

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_adc_ports(NO_ANALOGS); // ANALOG giriş yok
setup_adc(ADC_OFF); // ADC birimi devre dışı
setup_CCP1(CCP_OFF); // CCP1 birimi devre dışı
setup_CCP2(CCP_OFF); // CCP2 birimi devre dışı

set_tris_a(0x01); // RA0 ucu giriş
setup_adc(adc_clock_div_32); // adc frekansı.
setup_adc_ports(AN0); // RA0 pini analog giriş

set_adc_channel(0); // ADC işlemi uyulanıyor
delay_us(20); // gecikme.

lcd_init(); // LCD başlangıç ayarları yapılıyor
rtc_init(); // DS1302 başlangıç ayarları yapılıyor

rtc_set_datetime(02,03,16,4,22,44,); // Tarih ve Saat ayarları yapılıyor

while(1)
{
bilgi=read_adc(); // okunan adc bilgi değişkenine aktarılıyor.
volt= (0.0048828125*bilgi)*1000; // volt mV cinsinden ayarlanıyor.
sicaklik=(volt/10)+2; // 1mViçin 1C ayarlanıyor.

rtc_get_time(saat,dakika,saniye); // DS1302’den saat,dakika,saniye bilgileri alınıyor
rtc_get_date(gun,ay,yil,haftanin_gunu); // DS1302’den gün,ay,yil ve günün isim bilgisi alınıyor

lcd_gotoxy(1,1);
printf(lcd_putc,"TARIH:%02d/%02d/20%02d ",gun,ay,yil,); //LCD’ye gün,ay,yıl bilgileri yazdırılıyor

lcd_gotoxy(1,3);
switch(haftanin_gunu) // DS1302’den sayısal olarak alınan haftanın günü bilgisine
{
// metin olarak karşılık atanıyor
case 1: printf(lcd_putc,"PAZAR"); break; // Eğer "1" ise LCD’ye PAZ yaz
case 2: printf(lcd_putc,"PAZARTESI"); break; // Eğer "2" ise LCD’ye PZT yaz
case 3: printf(lcd_putc,"SALI"); break; // Eğer "3" ise LCD’ye SAL yaz
case 4: printf(lcd_putc,"CARSAMBA"); break; // Eğer "4" ise LCD’ye CRS yaz
case 5: printf(lcd_putc,"PERSEMBE"); break; // Eğer "5" ise LCD’ye PER yaz
case 6: printf(lcd_putc,"CUMA"); break; // Eğer "6" ise LCD’ye CUM yaz
case 7: printf(lcd_putc,"CUMARTESI"); break; // Eğer "7" ise LCD’ye CTS yaz
}

lcd_gotoxy(1,2);
printf(lcd_putc,"SAAT:%02d:%02d:%02d",saat,dakika,saniye); // LCD’ye saat,dakika ve saniye değerlerini yaz
lcd_gotoxy(1,4);
printf(lcd_putc,"SICAKLIK:%5.1f%cC",sicaklik,223); //lcd ye sıcaklık değeri yazdırılıyor.

}
}

[/php]

Devrenin Çalışma Videosu

 

Buna Benzer Yazılar Göster !
Daha Fazlasını Yükle - Sinan Sözügüzel
Daha Fazla Göster -  PIC|ULAK

Bir cevap yazın

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

Bak Bakalım ?

PIC|ULAK ile Gece Lambası

Merhaba arkadaşlar, Bu yazımızda, MekatronikLAB firmasının üretmiş olduğu  PIC mikrodenetl…