
Bu devrede PIC16F84A mikroişlemcisi ve DS18B20 ısı sensörü kullanılarak ısı bilgisi elde edilir. Elde edilen ısı bilgisi 16X2 LCD ekranda gösterilerek kullanıcının belirttiği ısı değeri aşıldığında sesli olarak uyarı verir. Ortamdaki ısı değeri istenen seviyeye düşünceye kadar fanın çalışmasını sağlar. Ayrıca kullanıcının belirttiği ısı değeri eeproma kaydedilerek herhangi bir elektrik kesintisinde bilgilerin kaybolması engellenmiştir.Artı(+) ve eksi(-) butonları fanın çalışması için gereken sıcaklık seviyesini ayarlamanızı sağlar.
PIC16F84A ve DS18B20 ısı sensörü ile fan kontrol devresinde kullanılan malzemeler;
- 1 Adet PIC16F84A mikroişlemci
- 1 Adet 16X2 LCD
- DS18B20 ısı sensörü
- 1 Adet 1K direnç
- 3 Adet 10K direnç
- 1 Adet 4.7K direnç
- 1 Adet 330Ω direnç
- 1 Adet LED diyod
- 1 Adet BC237 transistör
- 1 Adet Buzzer
- 1 Adet 4Mhz kristal osilatör
- 2 Adet 22pF kondansatör
- 2 Adet buton
Kaynak Kodlar
Devreye ait mikroişlemci kodları MicroCode Studio Plus PIC BASIC PRO derleyicisinde yazılmış ve derlenmiştir. Derleme işlemi için bilgisayarınızda PBP246 ve MPASM assembly derleyici dosyaları bulunmalıdır.
================================================================================= ’****************************************************************
'* Proje Adı: FAN KOTROL DEVRESİ *
'* Yazar : HASAN ÜZÜLMEZ *
'* Not : DS18B20 Isı sensörü ile fan kontrolü *
'* Tarih : 10.09.2008 *
'****************************************************************
DEFINE LCD_DREG PORTA 'LCD data bacakları hangi porta bağlı?
DEFINE LCD_DBIT 0 'LCD data bacakları hangi bitten başlıyor?
DEFINE LCD_RSREG PORTA 'LCD RS Bacağı Hangi Porta bağlı ?
DEFINE LCD_RSBIT 4 'LCD RS bacağı Hangi Bite bağlı ?
DEFINE LCD_RWREG PORTB
DEFINE LCD_RWBIT 1
DEFINE LCD_EREG PORTB 'LCD Enable Bacağı Hangi Porta bağlı?
DEFINE LCD_EBIT 0 'LCD Enable Bacağı Hangi bite bağlı ?
DEFINE LCD_BITS 4 'LCD 4 bit mi yoksa 8 bit olarak bağlı?
DEFINE LCD_LINES 2 'LCD Kaç sıra yazabiliyor
TRISA=0
TRISB=%01111000
K VAR WORD
SICAK VAR WORD
SICAK1 VAR WORD
A VAR BYTE
command VAR BYTE ' Komut bilgisi
i2 VAR BYTE ' Sayıcı bilgisi
temp VAR WORD ' Isı bilgisi
DQ VAR PORTB.7 ' DS1820 data pin
DQ_DIR VAR TRISB.7 ' DS1820 data komut pini
Deg CON 223
SICAK1=0
K=300
PAUSE 500 ' LCD nin başlatılması için bekle
LOW PORTB.1
READ 0,SICAK ' Eepromdan sıcaklık bilgisi al
mainloop:
GOSUB init1820 ' DS1820 başlat
command = $cc
GOSUB write1820
command = $44 ' Isı dönüşümünü başlat
GOSUB write1820
PAUSE 500 ' Isı dönüşümünün bitmesini bekle
GOSUB init1820
command = $cc ' ROM bilgisi al
GOSUB write1820
command = $be ' Isı oku
GOSUB write1820
GOSUB read1820
KONTROL:
LCDOUT $FE,1
LCDOUT $FE,$80,"SICAKLIK=>" , DEC (temp >> 4 ), ".", DEC (temp.1 * 5),deg,"C"
LCDOUT $FE,$C0,"FAN=>",DEC2 SICAK,deg,"C"
IF PORTB.3=0 THEN SICAK=SICAK+1:WRITE 0,SICAK
IF PORTB.4=0 THEN SICAK=SICAK-1:WRITE 0,SICAK
IF (TEMP >> 4)<=SICAK THEN LOW PORTB.1
IF (TEMP >> 4)>=SICAK THEN GOTO MOTOR
LOW PORTB.1
GOTO mainloop ' Devam et
' DS18B20 okuma işlemleri
init1820:
LOW DQ
PAUSEUS 500
DQ_DIR = 1
PAUSEUS 100
IF DQ = 1 THEN
LCDOUT $fe,1,"ISI SENSORU"
LCDOUT $fe,$c0,"HAZIR DEGIL"
PAUSE 500
GOTO mainloop
ENDIF
PAUSEUS 400
RETURN
write1820:
FOR i2 = 1 TO 8
IF command.0 = 0 THEN
GOSUB write0
ELSE
GOSUB write1
ENDIF
command = command >> 1
NEXT i2
RETURN
write0:
LOW DQ
PAUSEUS 60
DQ_DIR = 1
RETURN
write1:
LOW DQ
@ nop
DQ_DIR = 1
PAUSEUS 60
RETURN
read1820:
FOR i2 = 1 TO 16
temp = temp >> 1
GOSUB readbit
NEXT i2
RETURN
readbit:
temp.15 = 1
LOW DQ
@ nop
DQ_DIR = 1
IF DQ = 0 THEN
temp.15 = 0
ENDİF
PAUSEUS 60
RETURN
'Fan aktif hale gelince sesli uyarı verir
MOTOR:
HIGH PORTB.1
SOUND PORTB.6,[120,60]
GOTO mainloop
END
Projenin Kaynak Simülasyon pcb ve kod;

