Ceyhun TOPÇUOĞLU Kişisel Web Sitesi

LCD’li Termostat Devresi Role Ekli [ Pic Basic ]

Dün arşivimde gözüme çarpan LCD’ li termostat devreresini derleyip sizlerle paylaşıyorum. Evinizde kullanabileceğiniz veya ödev olarak sunabileceğiniz güzel bir devre olduğunu düşünüyorum. PCP çizimini 5×10 plakete çizdim biraz fazla atlatma oldu fakat boyut olarak her yerde kullanılabilecek bir estetik bir devre oldu. Devreyi kolay kullanımı açısından LCD’ li olarak tasarladım.

Kısaca devrenin çalışmasından bahsediyim; Devrede bir sıcaklık değeri belirliyoruz ortam sıcaklığı o değeri geçerse bir role enerjilendiriyoruz. Devre kararsız çalışmaması için set edilen sıcaklık değeri ortam sıcaklığının ondalık değerini ihmal ederek sorguluyor böylece ufak değişimlerle kararsız çalışma önlenmiş oluyor.Ayrıca rolenin Normalde Açık ( NO ) ve Normalde Kapalı ( NC ) bacaklarını bir klemense taşıdım ihtiyaç dahilinde ikisinden birisini kullanabilirsiniz. Ortak ucu klemensin ortasındaki uç.

Ayarla – Arttır – Azalt adında 3 adet butonumuz var, Ayarla butonu ile set değerini değiştirme ekranına geçiyoruz, Set değerini Arttır ve Azalt butonları ile ayarlayıp tekrar Ayarla butonuna basarak devrenin çalışmasına devam ediyoruz.

Sıcaklık sensörü olarak DS18b20 kullandım. Bu sensör aslnda çok harika bir sensör. 3 bacağı bulunuyor ( VSS,Data, VDD ) aynı hat üzerine 64 adet DS18b20 kullanabiliyoruz. Biz devremizde sadece bir tane kullandık ama aslında çoğaltılabilir ve farklı yerlerin sıcaklığı tek bir mikrodenetleyici ile tek hat üzerinden ölçülebilir. Sensör bize bir ID ile peşiden ölçüm değerini gönderiyor, Her sensör 64 bitlik bir ID’ye sahip biz bu ID leri kullanarak sensörleri birbirinden ayırabiliyoruz.

Mikrodenetleyici olarak PIC16F628 kullandım. Pic programını Pic Basic ile yazdım. Devrenin çizimlerini Proteus ile hazırladım. Tüm çizimler ve program tarafıma aittir. Ticari amaçla kullanımında hakkımı helal etmiyorum.Devrede her hangi bir sorunla karşılaşanlar sayfanın altındaki yorum bölümünden sorununu aktarabilirler elimden geldiğince hızlı cevap vermeye çalışırım. Kaynak göstermek şartıyla kullanabilirsiniz.

DS18B20-pinout

DS18B20 Bacak Bağlantısı

ISIS Şeması:

termostat-isis

Ares Şeması :

termostat-ares

 

Devrenin Üstü Görünüşü :

termostat-ustgorunus

downloadDevrenin Şemaları ve Kaynak Kodları İçin Tıkla

Admin Hakkında
Kocaeli Üniversitesinde Mekatronik Mühendisliği hazırlık sınıfı öğrencisiyim. Nefes Doğa ve Kamp Grubu yöneticisi. #Camping #Vb.net #SolidWorks #PHP #SQL #ComputerSecurity... Ayrıntılı bilgi için tıklayın

  1. Özkan diyor ki:

    mikro denetleyici yazılı mı nedir acaba ?

  2. Ercan diyor ki:

    Ellerine sağlık arkadaşım güzel bir devre yapmışsın. ben kristal’in kaç mhz olduğunu merak ettim.

    • Ceyhun TOPÇUOĞLU diyor ki:

      Öncelikle Teşekkür ederim. Devrede 4mhz kullandım dilerseniz dahili osilatörünün de kullanabilirsiniz veya daha fazlada kullanabilirsiniz lakin kullandığınız kristali programda da belirtmeniz gerekmektedir. define osc4 olan kısmı değiştirerek halledebilirsiniz. Mesela 8mhz için define osc8 gibi.

      • Ercan diyor ki:

        Teşekkür ederim. Son olarak sıcaklık sensörü olarak ds1820 yerine lm35 kullanabilir miyiz, yada kullanırsak programda bir değişiklik yapmamız gerekir mi? Sorularım biraz amatör olabilir belki bilmiyorum ama sonuçta yeniyim bu işte olacak o kadar 🙂

        • Ceyhun TOPÇUOĞLU diyor ki:

          Estağfurullah sorun yok. DS18B20; biz onu uyardığımızda bize sıcaklık değerini bildiren bir data gönderiyor.Yani Dijital çalışıyor.LM35 ise direkt olarak bağlandığında 1 derecelik artış başına 10mv gerilim üretiyor.Yani analog çalışıyor.Haliyle programın sensör okuma kısmını değiştirmeniz gerekiyor. Hiç lm35 ile bir çalışmam olmadığı için size örnek kod veremicem.LM35’in Bağlantı şekli aynı fakat ds18B20 de +5 volt girişine paralel olarak bağladığım 10k direnci sökmeniz gerekmektedir.

          • Ercan diyor ki:

            Anladım, o halde hiç değiştirmeye gerek yok bu şekilde devreyi kurayım. Teşekkür ederim.

  3. ibrahim diyor ki:

    selamun aleykum usta eline sağlık güzel olmuş,benim isteğim bunun üzerinde biraz daha oynayıp kuluçka termostatına cevirebilirmiyiz,hem ısı ölçsün hem nemi hemde takılan motoru çevirsin,bu devreyi ücret karşılı çizermisin ve hatta eğer vaktin varsa üretir misin ?

  4. ahmet diyor ki:

    slm. hocam bana istediğim günden geriye doğru gün gün düşerek saycak bir devre lazım. gün sıfır olduğunda röle aktif hale gelecek. en yüksek gün 30 olabilir. nette araştırıyorum hep saniye dakika veya en fazla saatli. bu devreye ds1302 gibi bir gerçek zman entegresi lazım sanırım. yardımcı olurmusunuz.

    • Ceyhun TOPÇUOĞLU diyor ki:

      E-mail ile Dönüş yapılmıştır.

      • ahmet diyor ki:

        teşekkürler hocam mail geldi. ben bunu protona uyarlamaya çalışacağım. onu öğrenmek için ilk derslere başladım. sizin bana verdiğiniz sadece 1302 kullanımı sanırım değil mi? 2 li 7segement display kullanıp sadece 0-99 gün isteğimiz günden düşüm başlayacak. 0 olunca röle aktif olcak. artır azalt okey tuşu olsa kafi sanırım.

  5. emir diyor ki:

    ceyhun abi öncelikle selamın aleyküm sana birkaç sorum olacak bu PIC i nasıl kodluyoruz bir de PCB şema atarmısın ütü ile basmak için saygılar emir

    • Ceyhun TOPÇUOĞLU diyor ki:

      Merhaba Pic dediğimiz aslında MikroDenetleyici’ dir. Microchipin PIC serisi o kadar çok alışılagelmiş ki artık PIC diye bahsediyoruz bkz(PIC16F877a). Programlana bilen mikrodenetleyiciler ile istediğin her şeyi yapabilirsin. Visual Programlama da olduğu gibi mikro denetleyici programlamada bir çok farklı dil seçeneği var. CCS, Pic Basic, Assembly gibi aslından diğer fonksiyonel programlama dilleri de assemblyden ibaret. PCB şemaya gelince sitede projeleri incelersen pcb çizimleri ile birlikte paylaştım.

  6. ismail diyor ki:

    selamün aleyküm.. hocam reset tuşu ne için anlayamadım. teşekkür ederim.

    • Ceyhun TOPÇUOĞLU diyor ki:

      Olası bir durumda beslemeyi kesip yeniden vermek yerine reset ilk en baştan işletebiliyoruz. Bir hata çıkar veya program takılırsa reset kolaylık sağlar. Eğer kullanmak istemiyorsanız reset bacağına 10 k direnc bağlayarak diğer ucuna +5v verin.

  7. sadi diyor ki:

    selam yazılımdaa ufak bir degişiklik yaparmısınız,fan ısı konturolu için set edilen degere gelince çalişsa yapabilirmisiniz. yardım ederseniz çok teşekkür ederim.

    • Ceyhun TOPÇUOĞLU diyor ki:

      Programda Isı istenilen değere geldiğinde çıkış pasif duruma geçiyor. Isı istenilenden aşağıya düştüğünde aktif ediliyor. Siz tam tersini istediğiniz için şu alt tarafda ki kısmı bulun.
      ‘***********************
      if ISI=>set then
      porta.3=0
      else
      porta.3=1
      endif
      ‘***********************

      ve bu kod ile yer değiştirin;

      ‘***********************
      if ISI=>set then
      porta.3=1
      else
      porta.3=0
      endif
      ‘***********************
      dikkatli incelerseniz porta.3 pinini sizin söylediğiniz gibi ters çalışması için bitleri tersledim.

  8. sadi diyor ki:

    ceyhun bey cevabınız için teşekkür ederim sizin devereyi yaptım ve ısı set degerine gelince röle aktif oluyordu bende ete beyin termo alarm devresini yaptım ama oda ısıtmayla ilgili yapmış yazılımın neresinde degişiklik yapabilirim yardımcı olabilirmisiniz

  9. Abdullah diyor ki:

    Ceyhun bey sensörü kart üzerine değil de kablo ile prob şeklinde uzatsak sıcaklık ölçümlerinde bir sorun olurmu yada yanlış ölçümler yaparmı cevaplarsanız çok mutlu olurum.

    • Ceyhun TOPÇUOĞLU diyor ki:

      Daha önceden 3,5 metre kablo ile bağlamıştım. Cat5 kablo kullandım power ve gnd yi birer kablodan, data kablosunu ise 6 kabloyu iki taraflı kısa devre etme suretiyle kullandım bir problem yaşamamıştım. Data kablosundan seri bilgi gönderildiği için ne kadar uzun tutulursa o kadar fazla parazite maruz kalır ve yanlış ölçme ihtimali artal eğer böyle bir şey söz konusu olur ise kameralarda kullanılan izalotör kablo işinizi görücektir.

  10. mehmet diyor ki:

    bu devrenin dört farklı cihaz için yani röle kontrolü için ayrı ayrı ayarlanıp çalışanı var mı acaba

  11. Burak diyor ki:

    merhaba hocam,
    bana min 2lt max 30 lt olan suyun sıcaklığının belirlenen ondalık değerde(örneğin 52.4C) sabit tutması için gereken termostat devrenin programını yazıp tasarlayabilir misiniz?

    • Ceyhun TOPÇUOĞLU diyor ki:

      Dediğiniz olay biraz hassas bir olay. Sanırım endüstriyel alanda kullanıcaksınız. Kademeli olarak resistansın sürülmesi gerekli lakin resistansın enerjisini kesseniz bile resistansın kendi ısısı ile su eşitlenene kadar bir transferi olucak ve istediğiniz ondalık değerde tutmak biraz uğraşılması gereken bir iş. Eğer kendiniz yapmak isterseniz ancak fikir olarak yardımcı olabilirim, bu işler ile uğraşıcak vaktim bu aralar çok kısıtlı.

  12. mahmut diyor ki:

    Akvaryumun sıcaklığını ölçmek için ds18b20 su geçirmez ısı sensörünü kullandım.Devreyi kurdum ve tek seferde çalıştı.Bu güzel ve bilgi veren paylaşımlarınız için teşekkür ederim.

  13. Recep diyor ki:

    Ceyhun bey bu devre ayarladığımız sıcaklıkta alarm verebilir mi ? Devreyi hobi için yapmayı düşünüyorum elektirik elektronik öğrencisiyim.

  14. Recep diyor ki:

    Ceyhun bey cevabınız için reşekkür ederim ben bu devreyi yapmak istiyoru pic porogramlamayı bilmiyorum nasıl ayarlarız?

  15. Recep diyor ki:

    İncelemeye çalıştım fakat ben proteus 7 kullanıyorum açamadım

  16. Recep diyor ki:

    Bu devrenin malzemeleri nekadar tuttu?

    • Ceyhun TOPÇUOĞLU diyor ki:

      Programın bir üst versiyonu edinmeniz gerekiyor. Malzeme fiyatını hatırlamıyorum çok önceden yaptığım bir devre. Malzemelerin adı ile internette arama yaparak fikir sahibi olabilirsiniz.

  17. ufuk bekiroğlu diyor ki:

    merhaba arkadaşlar. ben elektronik bölümü öğrencisiyim. hoca bir ödev verdi herhangi bir motorun hız değişimini,çalışma anındaki sıcaklığını gösteren LCD’li PIC programlama devresi. daha önce aranızda yapan var mı? ya da konuyla ilgili bana yardımcı olabilecek biri var mı? şimdiden teşekkür ederim

    • Ceyhun TOPÇUOĞLU diyor ki:

      Merhaba burası bir forum değil, bir kişisel blog. Sitemde ufak çaplı bir araştırma ile daha önce tasarlamış olduğum Hall Efekt Sensörlü Devir Sayıcı ve LCD’li Termostat Devresini harmanlayarak ihtiyacınız olanı elde edebilirsiniz. Eğer herhangi bir sorun veya yardıma ihtiyacınız olursa, İletişim bölümünden ulaşabilirsiniz.

  18. Çağrı GÖKTEPE diyor ki:

    Ceyhun Bey öncelikle teşekkürler güzel bir paylaşım olmuş.bu projeyi kuluçka makinasında uygulayacağım.
    merak ettiğim şey ise yazının başında 64 e kadar ds18b20 bağlanabileceğini söylemişsiniz.
    mesela ben 2 tane ds18b20 bağlamak istiyorum aynı pic ten nasıl kontrolünü sağlayabilirim programda ne gibi değişiklikler yapmalıyım
    tabi ki bu işlemi sizin yapmanızı istemiyorum biraz bilgi birikimim var sizinde yönlendirmeleriniz olursa bunu yapmak isterim
    İYİ ÇALIŞMALAR..

    • Ceyhun TOPÇUOĞLU diyor ki:

      DS1820 sensörlerinin her birine ait benzersiz seri numarası var (Family Code). ilk önce elindeki sensörlerin ID’sini öğrenmek için aşağıda ki kodu kullanabilirsin. Daha sonra hangi sensörü okumak istiyorsan o kodu gönderip gelen sıcaklığı ilgili yere işlemelisin.
      ‘———————
      include “modedefs.bas”
      DEFINE LCD_DREG PORTB
      DEFINE LCD_DBIT 4
      DEFINE LCD_RSREG PORTB
      DEFINE LCD_RSBIT 2
      DEFINE LCD_EREG PORTB
      DEFINE LCD_EBIT 3

      DEFINE OSC 4
      DQ VAR PortA.0
      ID VAR BYTE[8]
      LCDOUT $FE,1
      LCDOUT “SENSOR ROM OKUMA”
      PAUSE 2000
      LCDOUT $FE,1
      BASLA:
      PAUSE 500

      CEVIRIME_BASLA:
      OWOUT DQ, 1, [$33]

      ID_DONGU:
      OWIN DQ, 0, [STR ID\8]
      lcdout $fe,2
      lcdout “Family Code: “,hex2 ID[0],”h”
      lcdout $fe,$c0
      lcdout “Ser : “,HEX2 ID[1],HEX2 ID[2],HEX2 ID[3],HEX2 ID[4],HEX2 ID[5],HEX2 ID[6],”h”
      lcdout $fe,$94
      lcdout “CRC Value = “,HEX2 ID[7],”h”

      ID_CIHAZ:
      IF ID[0] = $5 THEN
      lcdout $fe,$d4
      lcdout “CIHAZ = BUTON ”
      ENDIF
      IF (ID[0] = $28) OR (ID[0] = $22)OR (ID[0] = $10) THEN
      lcdout $fe,$d4
      lcdout “CIHAZ=SCKLIK SENSORU”
      ENDIF
      IF ID[0] = $01 THEN
      lcdout $fe,$d4
      lcdout “CIHAZ = IBUTON ”
      ENDIF
      PAUSE 1000
      GOTO CEVIRIME_BASLA

      END
      ‘———————

  19. Harun diyor ki:

    Ceyhun bey bu devreyi daha hassasiyetli yanı 0.2 derece artırmak istiyorum programında nasi bir değişiklik yapmam gerekiyor

    • Ceyhun TOPÇUOĞLU diyor ki:

      Elimde ETE hocanın yazmış olduğu 0.1 hassasiyetli alt program mevcut siz dilerseniz bu şekilde dilerseniz modifiye ederek 0.2 hassasiyetle okutabilirsiniz.
      Değişken tanımlamada eklenecekler.
      ‘===========================================
      SENSOR VAR PORTB.0 ‘Sensör PORTB.0’ye bağlı
      Busy VAR BYTE ‘Çeşitli değişken tanımlamaları
      BILGI VAR WORD
      ISARET VAR BYTE
      ARA VAR WORD
      DEGER VAR BYTE
      ONDA1 VAR WORD
      ONDA2 VAR WORD
      A VAR BYTE
      I VAR WORD

      AltProgram;
      ‘===========================================
      SENSOROKU:
      ISARET=”+”
      OWOUT SENSOR,1,[$CC,$44] ‘Sensöre sıcaklığı okumasını söyle.
      BEKLE: ‘Sensör hazır olana kadar bekle.
      OWIN SENSOR,4,[Busy]
      IF Busy=0 THEN
      GOTO BEKLE
      ENDIF
      OWOUT SENSOR,1,[$CC,$BE] ‘Sensöre okuduğu değeri göndermesini söyle.
      ‘OWIN SENSOR,2,[BILGI] ‘Gelen 16 bitlik bilgiyi al.
      OWIN SENSOR,2,[BILGI.LOWBYTE,BILGI.HIGHBYTE] ‘Gelen 16 bitlik bilgiyi al.
      IF BILGI.BIT13=1 THEN ‘Sıcaklık negatif ise
      ISARET=”-” ‘İşaret artık + değil –
      BILGI=~BILGI ‘Gelen bilgideki bitleri tersle, 1->0, 0->1
      BILGI=BILGI+1 ‘Bilgiyi 1 arttır.
      ENDIF
      ARA=BILGI*625 ’12 bit hassasiyet kullandığımız için her değer 0.0625 santigrat dereceye denk geliyor.
      DEGER=DIV32 10000
      ARA=BILGI*625
      ONDA1= DIV32 1000
      ARA=BILGI*625
      ONDA2= DIV32 100
      ONDA1=ONDA1-(DEGER*10)
      ONDA2=ONDA2-((dEGER*100)+(ONDA1*10))
      LCDOUT $FE,$C0,” ” ‘LCD ekranın alt satırını temizle
      LCDOUT $FE,$C0,”SIC. = “,ISARET,#DEGER,”,”,dec1 ONDA1,” “,0,”C”
      RETURN

  20. ferhat diyor ki:

    devre simülasyonda sıcaklık değerini bir türlü okumadı??

    • Ceyhun TOPÇUOĞLU diyor ki:

      Eğer ayrıntılı şekilde hatanızı bildirmezseniz size nasıl yardımcı olabilirim ?

      • ferhat diyor ki:

        proteusta devreyi çalıştırdığımda, ds1820 deki sıcaklık değerini değiştirsemde LCD de bi türlü o değeri alamıyorum?? yani ds1820 herhangi bi derece gösterirken ,LCD sürekli -1.C gösterio??

        • Ceyhun TOPÇUOĞLU diyor ki:

          Proteus 7.10 ve Proteus 8 Sürümlerinde tekrardan denedim hiçbir sorun yok. DS18B20 Kütüphanesinin programınıza dahil olduğundan emin olun. Veya başka bir sürüm kurmayı deneyin.

  21. M.Kasım diyor ki:

    öncelikle eline sağlık benim sorum buradaki bazı arkadaşlar gibi bunu kuluçka makinası için kullanmak istiyorum ne tür bi değişiklik yapmam lazım sadece nem ve ısı ölçmesi yeterli motor vs. o tarz bişi kullanmayacağım

    • Ceyhun TOPÇUOĞLU diyor ki:

      Teşekkürler, bu devreyi modifiye ederek ısı ve nem ölçtürmek biraz uğraş verici olur. O yüzden hem ısı hemde nem ölçen bir modul var SHT11 adında onun örnek devrelerine bakabilirsiniz.

  22. Mehmet diyor ki:

    Merhaba devreniz çok güzel fakat ben bu devreye bir röle daha takmak istiyorum bana yardımcı olurmusunuz.
    Mail ile dönüşünüzü bekliyorum detaylar için.

  23. Mehmet diyor ki:

    Kısaca.
    Biz ısıyı 25 dereceye ayarladık ve tolerans değeri 0.5 derece verdik buna göre devre 25.6 derecede röleyi devreye alıyor bunda sıkıntı yok fakat ısı 24.4 olduğunda ikinci rölenin devreye girmesini istiyorum.
    Yardımcı olursanıx sevinirim
    Devreyi sizde yapıp göndere bilirsiniz satın alabilirim.

  24. Ahmet diyor ki:

    Kardesım eline sağlık guzel Çalışma devrenin malzeme listesi varmı ??

  25. oğuz diyor ki:

    kardeşim senin bu devreni yaptım ben ama devreyi çalıştıramadım.
    lcd ye yazılar gelmiyor.

    • Ceyhun TOPÇUOĞLU diyor ki:

      Çalışmamasının birçok sebebi var. LCD ye güç geliyor mu, Pic’e programın doğru atıldığına emin misiniz, reset devresinde hata olup olmadığını kontrol edin.

  26. Mustafa diyor ki:

    set değerini buçuklu sayılar yani x.5 gibi değer nasıl verilir ve pot ne işe yarıyor

    • Ceyhun TOPÇUOĞLU diyor ki:

      Set adında byte bir değişken tanımladım. Bunu direk olarak buçuklu yapmazsınız. Ayrı bir değişken daha tanımlayıp ondalık olarak onu arttırıp 10 olduğunda ham ısıyı arttırıcaksınız. Kontrol ederken de hem ham ısıyla karşılaştırıp hemde Float adındaki ısının ondalık değeriyle karşılaştıracaksınız. Pot LCD’nin karakter parlaklığını kontrol ediyor. dilerseniz direk 4k7 bağlayabilirsiniz.

  27. Ahmet Aksoy diyor ki:

    İyi Günler, Benim bitirme çalışmamda bi ortamdaki sıcaklığı ölçüp mikro denetleyici yoluyla belirli bir uzaklıktaki bilgisayar veya cep telefonuna bilgileri aktarmam gerekiyor. Bana yardımcı olabilir misiniz acaba ?

    Kaynak: http://ceyhuntopcuoglu.com/lcdli-termostat-devresi-role-ekli-pic-basic.html

  28. Mustafa diyor ki:

    Devreye enerji verdiğim an da röle çalışıyor böyle olmaması gerekir ve lcd ekrani mc2002 kullancam bi sıkıntı olurmu

    • Ceyhun TOPÇUOĞLU diyor ki:

      Eğer simulasyonda ds18b20’nin değeri 20’nin altında ise role ilk başta elbette çekecek. Programda set değerini ilk başta 20 olarak tanımladım. Eğer devreyi kurduysanız ortamın sıcaklığı 20 derecenin altında ise yine role direk olarak çeker. Eğer söylediklerim dışında hâla sorun devam etmekte ise transistörün bozulmuş olma ihtimali var. Mc2002 ile çalışıcaktır, datasheetinde bacakları aynı.
      http://www.angliac.com/bona/datasheets/MC2002-01.pdf

  29. ENES diyor ki:

    hocam kolay gelsin devrenizde kendime göre eklemelr yapmak istiyodum ancak micro code aktarıyorum hiç düzletme yapdan dahi 140 tane error verdi neden olabilir sizce

  30. Nuri diyor ki:

    Selamın aleyküm hocam ben bu hem higrostat hemde termostat özelliği olan bi devre yapmak istiyorum kuluçka makinesi için siz yardımcı olur musunuz not: elektronik bilgim= 0 ? teşekkür ederim

Bir Yorum Yazın

Doğrulama Kodu : (Verilen işlemde boş bırakılan yeri doldurun) * Time limit is exhausted. Please reload CAPTCHA.