Arşiv

Kategoriler

Ne Dinliyorum...

asdad


Uludağ üniversitesi 2. sınıf 1. dönem mikro işlemciler dersinde yapmış olduğum proje.

Ne iş yapar bu devre;

PIC16F877’nin A0 portuna bağlı olan LM35 elemanının sıcaklığa bağlı olarak Vout çıkışından gönderdiği analog sinyallerin okunarak sıcaklık ölçümünün yapılması. Belirlenen alt ve üst değerlerin iki sıcaklık noktası arası kontrol yapması ve okunan sıcaklığın bu değerler arasındaki bağıntıya göre değişik çıkışların aktif olması. Devrede bulunan 3 buton ile sıcaklık alt ve üst değerlerini ayarlayabiliyoruz. 1. buton menuler arası gezmek için diğer 2 buton ise sıcaklığı arttırıp yada azaltmak için. Devrede lm35 yerine herhangi bir sıcaklık sensörü kullanılabilir, yapısı basit olduğundan ben bunu kullanmıştım.

Devre Böyle Birşey;

16f877 ile iki ayarlanabilir 2 nokta arası sıcaklık kontrolü

16f877 ile iki ayarlanabilir 2 nokta arası sıcaklık kontrolü

Nasıl Çalışırmış Bu Şey;

Uygulamaya ilk enerji verildiğinde LCD’nin ekranında o anki sıcaklığı gösteren bilgiler vardır. O anki sıcaklık bizim belirlediğimiz iki nokta arasında ise Q2 çıkışı aktif olur. Bizim belirlediğimiz üst değerden fazla ise Q1 çıkışı düşük ise Q3 çıkışı aktif olur. S1 butonuna bastığımızda LCD ekranında UST DEGER  butona tekrar basarsak ALT DEGER menuleri ekrana gelir, bu sırada S2 ve S3 butonlarıyla sıcaklık sınır değerleri değiştirilebilir. Hiçbir işlem yapılmazsa (yaklaşık 0.5sn)  program menuden çıkar sıcaklık bilgilerinin gösterildiği ekrana gelir.

Bu projeyle pc kasa sıcaklığı ayarlanabilir aslınada. sıcaklık üst değerden fazlaysa fanları yüksek devirde çalıştır, sıcaklık üst değer ile alt değer arasındaysa fanları orta devirde çalıştır sıcaklık düşük değerde ise fanları çalıştırma gibi. Böylelikle enerji tasarrufu sağlanır ve sıcaklık çok yüksek değilse kasamız aşırı sessiz bile olabilir.Tabi bu işlem için çıkışlara bir kaç devre eklemek gerekir. Yada pic in analog çıkışları kullanılabilir.

Devrenin PicBasic Kodu:

Define LCD_DREG PORTD

Define LCD_DBIT 4

Define LCD_RSREG PORTE

Define LCD_RSBIT 0

Define LCD_EREG PORTE

Define LCD_EBIT 2

DEFINE LCD_BITS 4

DEFINE LCD_RWREG PORTE

DEFINE LCD_RWBIT 1

Define ADC_BITS 8

Define ADC_CLOCK 3

Define ADC_SAMPLEUS 50

ANDGR VAR BYTE

ONANDGR VAR BYTE

BKLE VAR BYTE

MENU VAR BYTE

DGRUST VAR BYTE

DGRALT VAR BYTE

MENUACIK VAR BYTE

DRMPORTD VAR BYTE

CIKIS VAR BYTE

DRMCIKIS VAR BYTE

PORT_C0_KONT VAR BIT

TRISD = %00000000

TRISC = %11111111

TRISB = %00000000

TRISA = %11111111

ADCON1 = %00000010

PAUSE 100

DGRUST = 70

DGRALT = 30

PORTD = 255

DRMPORTD = 1

DRMCIKIS = 255

ONANDGR = ANDGR + 1

BASLA: ;++++++

MENU = 0

GOTO LCDOKU

DEVAM: ;++++++

IF PORT_C0_KONT = 1 THEN GOTO PORT_C0_ATLA

BKLE = 0

;********************************************************************************

IF PORTC.0 = 0 OR MENUACIK = 1 THEN

PORT_C0_KONT = 1

MENUACIK = 1

MENU = MENU + 1

IF MENU = 1 THEN

LCDOUT $FE , 1 , “UST DEGER”

PAUSE 50

IF PORTC.1 = 0 OR PORTC.2 = 1 THEN

USTARTI: ;++++++

BKLE=0

IF PORTC.1 = 0 THEN

DGRUST = DGRUST + 1

PAUSE 50

ENDIF

USTEKSI: ;++++++

BKLE =0

IF PORTC.2 = 0 THEN

DGRUST = DGRUST – 1

PAUSE 50

ENDIF

ENDIF

IF DGRUST >= 100 THEN DGRUST= 100

IF DGRUST <= DGRALT + 1 THEN DGRUST= DGRALT+1

IF DGRUST >= 99 THEN LCDOUT $FE , 1 , “UST DEGER”

IF DGRUST = 100 THEN

LCDOUT $FE ,$C0 , #DGRUST ,” DERECE (MAX)”

ELSE

LCDOUT $FE , $C0 , #DGRUST ,” DERECE”

ENDIF

ENDIF

IF MENU = 2 THEN

LCDOUT $FE , 1 , “ALT DEGER”

PAUSE 50

IF PORTC.1 = 0 OR PORTC.2 = 1 THEN

ALTARTI: ;++++++

BKLE=0

IF PORTC.1 = 0 THEN

DGRALT = DGRALT + 1

PAUSE 50

ENDIF

ALTEKSI: ;++++++

BKLE =0

IF PORTC.2 = 0 THEN

DGRALT = DGRALT – 1

PAUSE 50

ENDIF

ENDIF

IF DGRALT = 0 THEN DGRALT=0

IF DGRALT > 100 THEN DGRALT = 0

IF DGRALT >= DGRUST-1 THEN DGRALT = DGRUST -1

IF DGRALT <= 1 THEN LCDOUT $FE , 1 , “ALT DEGER”

IF DGRALT = 0 THEN

LCDOUT $FE , $C0 , #DGRALT ,” DERECE (MIN)”

ELSE

LCDOUT $FE , $C0 , #DGRALT ,” DERECE”

ENDIF

ENDIF

IF MENU = 3 THEN

LCDOUT $FE , 1 , “HASANSAMA.COM”

LCDOUT $FE , $C0 , “SICAKLIK KONTROLU”

;PAUSE 50

ENDIF

PORT_C0_ATLA: ;++++++

IF PORTC.0 = 1 THEN PORT_C0_KONT = 0

IF MENU = 4 THEN GOTO BASLA

GOTO BEKLE

ENDIF

GOTO BASLA

;********************************************************************************

BEKLE: ;++++++

IF PORTC.0 = 0 THEN

MENUACIK = 1

GOTO DEVAM

ENDIF

IF PORTC.1 = 0 THEN

IF MENU = 1 THEN GOTO USTARTI

IF MENU = 2 THEN GOTO ALTARTI

ENDIF

IF PORTC.2 = 0 THEN

IF MENU = 1 THEN GOTO USTEKSI

IF MENU = 2 THEN GOTO ALTEKSI

ENDIF

BKLE= BKLE + 1

PAUSE 10

IF BKLE = 255 THEN

ONANDGR = ANDGR + 1

LCDOUT $FE , 1

GOTO BASLA

ENDIF

GOTO BEKLE

;********************************************************************************

LCDOKU: ;++++++

ADCIN 0, ANDGR

IF ANDGR = ONANDGR THEN GOTO LCDATLA

Lcdout $fe, 1

Lcdout “SICAKLIK: ” , DEC ANDGR ,” C”

LCDOUT $FE , $C0 , #CIKIS , “. CIKIS AKTIF”

ONANDGR= ANDGR

PAUSE 10

LCDATLA: ;++++++

MENUACIK = 0

GOTO KONTROL

;********************************************************************************

KONTROL: ;++++++

IF ANDGR > DGRUST THEN

PORTB = %11111110

PAUSE 50

CIKIS = 1

ENDIF

IF ANDGR >= DGRALT AND ANDGR <= DGRUST THEN

PORTB = %11111101

PAUSE 50

CIKIS = 2

ENDIF

IF ANDGR < DGRALT THEN

PORTB = %11111011

PAUSE 50

CIKIS = 3

ENDIF

IF DRMCIKIS = CIKIS THEN GOTO KNTATLA

LCDOUT $FE , $C0 , #CIKIS , “. CIKIS AKTIF”

DRMCIKIS =CIKIS

PAUSE 10

KNTATLA: ;++++++

MENUACIK = 0

GOTO DEVAM

END

Devre ile ilgili dosyalar ( Proteus Çizimi ve Benzetimi, Pic Basic Kodu, .hex dosyası): Tıklayın…


“PIC 16F877 ile Ayarlanabilir 2 Nokta Arası Sıcaklık Kontrolü” için 2 Yanıt

  1. 1 muhaha

    merhaba kolay gelsin..

    yukarda verdiğiniz kodu çalıştıramadım. picbasic ve microcode studio kullanıyorum. siz acaba hangi programı kullandınız.
    açık konuşmak gerekirse buna benzer bir odevim var. kodun üzerinde biraz oynayarak kendi odevimi yapabileceğimi düşünüyorum.
    yardımcı olursanız sevinirim.

    teşekkürler.

  2. 2 muhaha

    sorun halledildi.

    tekrar kolay gelsin..

Yorum Yaz