Elektronik / Mikrodenetleyici Projeleri/

PIC16F84A ile Lcd Göstergeli Fan Kontrol Devresi

Sponsorlu Bağlantılar

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.

Devre Şeması
fan kontrol devre şeması

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

Proteus Ares PCB Çizimi
fan kontrol devresi proteus pcb

Projenin Kaynak Simülasyon pcb ve kod dosyaları PIC16F84A ile Lcd Göstergeli Fan Kontrol Devresi

Dosya indirme LINK listesi (TXT formatında) link-3385.zip şifre-pass: 320volt.com

  • Ramazotti

    Acaba bu proje DS1620 ve DS1621 ısı sensörleri ile de çalışır mı.Teşekkürler.

  • Konyalı

    ısı bilgisini gönderme sistemleri aynı ise büyük ihtimalle çalışır ama ısı okuma kodları bu sensörlere görede düzenlenebilir. sonuçta aynı firmanın sensörleri.

  • Hüseyin

    merahaba projeyi ödev olara yaptım ama hex kodunda bi sorun var isis’te çalışıyor ama pıc’in içine programı atamıyoruz hata veriyor neden böyle bi sorun oluyor yardımcı olursanız sevinirim teşekkürler…

  • Konyali

    picbasic kodlarını tekrar derleyip hex haline çevirmeyi denediniz mi? programlayıcınızıda kontrol etmenizi tavsiye ederim kolay gelsin

  • kamil

    herşeyi denedim ama hata veriyor proteusta.. yardımcı olursanız sevinirim

  • Kamil bey neleri denediniz hata nedir bilgi vermeniz gerekli

  • kamil

    herşeyi denedim derken dier arkadsların sölediklerini yaptım yani hex. dosyası falan o tip şeyler.. ama hala pproteusta hata verio anlamış deilim..

  • kamil

    ayrıca proteusta bu hatayı veriyo: Internal exception:access violation in module ” verdiği hata aynen bu ing. bilmediğim için:S

  • fırat

    bu devreyi proteusta uygulama yapmadan çalıştıran var mı
    saygılar

  • xerox

    Ben bu devreyi gerçekte yaptım. Fakat sınır değerin dışına çıkıldığında çıkış vermiyor

  • fırat

    sınır değer nedir anlayamadım.derece mi?
    saygılar

  • fatih

    dostum bana bu devrenin çalışan asm , hex kodu lazım.hem de çok acele.internette bu devreden başka lcd göstergeli fan kontrol bulamadım…lütfenyardım!!!!

  • fırat

    Ben deveyi hex koduna çeviremedim pıc basic proyu nasıl hex koduna çevirebilirim bilmiyorum

  • asa

    ben isis devreyi calıstırdım termo metreye baglı r1 direncini silince calısıyor. dirençle ilgili birsey heralde

  • fırat

    arkadaşlar ben devreyi plakete kurdum fakat çalışmadı transistör ısınıyor hatayı bulamadım yardımcı olursanız sevinirim ayrıca lcd ekran ısınıyor +5 voltta sebebi bulamadım

  • konyalı

    arkadaşlar sınır değerde çıkış vermemesinin sebebi başlangıçta eepromda ff değeri(255) okuyor olması pici programlarken eeproma herhangi 0-99 arası set değeri yazarsanız düzgün çalışacaktır. Devre ilk çalışmasında zaten 55 değeri gösteriyor yani 255’in 55’i elle bu değeri sıfırlarsanız yine sonuca ulaşırsınız. Proteus problemide büyük ihitmalle sensörle ilgili dosyaların eksik olmasından kaynaklanıyordur gerekli dosyaları bulup tekrar denerseniz çalıştığını görürsünüz. ;)

  • Mehmetc

    Arkadaşlar Verilen Baskı devre ile açık şema bir birini tutmuyor. ve LCD ye hiç görüntü gelmiyor. Bana kesin çalışan bu devreden lazım çok acil

  • Şükrü

    Arkadaşlar Mehmetc nin dediği gibi baskı devre ile şema birbirini tutmuyor bir çogunun yeri yok devreyi yapan arkadaşa ulaşılıp bu konuyla ilgilenirse çok sevineceğiz hepimizin işini görecek bu devre çünki

    similasyon çalışıyor sadece ısı sensörünün .dll sini bulup yüklemeniz gerekiyor

  • mecnun

    basic de hex kodları MicroCode Studio ile çıkartılıyor.

    arkadaşlar bende rf ds18b20li çift lcd li termometre var ve buna 20 derece üstünde fan açılmasını istiyorum nasıl yapabilirim.hoca if else dedi ama olmuyor

  • Ertan

    http://b1108.hizliresim.com/11/8/2/319.png

    bu hata nedir acaba

  • tayfun

    merhaba acaba malzemelerin plaket üzerindeki yerlerini gosteren bir resım ekler misiniz sıze zahmet..şimdiden teşekkürler

  • Teskban

    Ben bu çıkışı ile ilgili sorunlar sıcaklığını ayarlamak için aktif değil var, ve Proteus plaka da çalışıyor ama yürümez, kod benim e-posta doğru olup olmadığını görmek için PBP kodda gönderebilir CONESTEBAN@GMAIL.COM olduğunu

  • murat

    proje isisde çalışıyor fakat belirli süre sonra-1dk sonra- lcd’de tuhaf harfler çıkıyor ama devre işlevini kaybetmiyor anlamadım gitti

  • muhammet ali

    selam.hocam rica etsem bana bu devrenin ccsc dilinde yazılmış programını verebilirmisin

  • OrcunOzen Offical

    devre çalışmıyor paranıza emeğinize yazık. yapmayın benim gibi dersten kalırsınız.