Bu projenin öyküsü 1 yıl öncesine kadar uzanmaktadır. Geçtiğimiz yıl Eylül -Ekim aylarıydı. Çalıştığım iş yerinde soğuktan etkilenecek-donacak boruların çevresine ısıtıcı rezistans monte etmiş ve bunlara termostat bağlamıştık.
Termostat; üzerinde ayar butonları ve küçük 7 segment 4 adet display olan bir cihazdı. Çalıştırmak, durdurmak, çalışıp-çalışmadığını takip etmek ve sıcaklığını gözlemek için termostatın yanına kadar gitmek gerekiyordu.
Termostat bulunduğu yerde başka cihazlarda bulunmakta, bunların kontrolü için de geliniyor ve kontrol yapılıyor ama bu benim düşünceme tamamen ters bi durum. Yani 8-10 lokasyon alanında kameradan pompalara aydınlatmalardan transdüserlere kadar herşeyin uzaktan izlenebildiği bir yere getirip ilkel bi termostat takılması bence çok yanlıştı.
Kendimce buna nasıl bi çözüm bulabileceğimi araştırmaya başladım. İlk aklıma gelen, daha önce çalıştığım jeotermal serada uygulamaya koyduğum dorji modülleri ile uzaktan kontrol etmekti. Çünkü burada düşüncem, her Termostat başına pic+dorji kullanırım, komutların başına da termostat ayrımı yapacak id eklerim, tüm dorjilere göderirim ve sonrasında alıcı devrelerde id'si uyuşan devreyi aktif ederim diye düşünüyordum. Yani I2C iletişim mantığını değiştirip RF de uygulamak istiyordum. Fakat sonra bundan da vazgeçmek zorunda kaldım, çünkü atladığım bir konu vardı. Ortamda çok fazla gürültüye neden olacak etmenler vardı. Bu da güvensiz bir kontrol sistemi olacaktı.
Bu ve buna benzer sorunların en iyi çözümünün yerel ağ bağlantısı üzerinden kontrol etmek olduğuna karar verdim. Bunu da microchip firmasının üretmiş olduğu ENC28J60 Ethernet - Spi dönüştürücüsü ile yapabilirdim. Çünkü kullandığım CCS C Compilers içerisinde kütüphanesi mevcuttu.
ENC28J60:
| Enc28J60 |
Enc28J60 için Datasheet sayfa 7'de bağlantı şeması bu şekilde verilmiş.
Burada;
Mcu: 18F4620
I/O = SPİ iletişiminin CS (chip Select) pinidir. Ben C0 pinini kullandım.
SCK = SPİ iletişiminin clock pinidir.
SDO = SPİ iletişiminin data çıkış pinidir.
SDI = SPİ iletişiminin data giriş pinidir.
Ben, birde ENC devresi ile uğraşmamak ve PCB ebatım büyümesin fazladan para ödemeyim diye şu modülü kullandım.
| PCB çizimini Diptrace ile yaptım |
| PCB 3D görüntüsü (Diptrace) |
| PCB 'leri çinde yaptırdım. Site ismi JLCPCB 10x10 cm ölçülerde 10 ad pcb 2$, Gönderi 12,8 $ tuttu. Gerçekte sanki tam tersi gibi neyse artık o konuya girmeyelim. |
| JLCPCB tüm PCB aşamalarını takip etmemizi sağlıyor. |
![]() |
| Nihayet PCB elime ulaştı, Gayet iyi görünüyor. |
![]() |
| PCB arka tarafı. |
![]() |
| Birkaç eleman lehimledim. Test aşamasında şuan çalışıyor. |
![]() | ||
| Arka taraf. Renkli kablolar icsp bağlantısı. kırmızı soket Rs232 bağlantısı(opsiyonel). |
WEB:
18F4620 içerisine yazdığım program bu haliyle 3 ayrı ısıtıcıyı kontrol edebiliyor. Bunlar sayfanın üst kısmında Isıtıcı A, B ve C sekmelerinden yapılıyor. Isıtıcıya lokal ip ile 192.168.2.55 adresi üzerinden bağlanıyorum. Bu ip programlama esnasında ne yazarsanız odur. istersek modemden oto ip alacak şekilde de yapılabilir fakat her seferinde modem farklı ip vereceğinden sorun olur.
Sayfa da herbir ısıtıcı (A,B,C) nın ölçülen sıcaklık değeri, ayarlanan sıcaklık değeri ve ısıtıcı durumu gibi bilgiler yer almaktadır. Bu bilgiler silinmemesi için MCU'nun eeprom belleğinde saklanmaktadır. Bu nedenle enerji kesilse bile silinmez ve MCU işleme kaldığı yerden devam edebilir. Aynı şekilde web sayfası ilk açıldığında HTML alanlarının boş kalmaması için javascript kodu içerisine eklediğim sorgu fonksiyonu MCU dan değerleri alıp sayfayı doldurmaktadır. Bu sayede MCU içerisindeki ayar parametreleri görülmektedir. Eğer web sayfasına MCU içerisinde değerleri sorup doldurmasaydık aşağıdaki gibi hoş olmayan görüntü olacaktı.
Yukarıda görüldüğü üzere sayfada boşluklar var. Sayfa açıldığında ilk değerleri istemek bu nedenle önemli.
Isıtıcı durumu kısmında iki farklı fonksiyon bulunmaka. Bunlar,
OTO: Isıtıcının otomatik modda; yani, set değerini gözeterek ısıtıcıyı devreye sokup çıkartıyor.
MAN: Isıtıcının manuel modda; ısıtıcı, ISITICI ON ve ISITICI OFF butonları ile devreye alınır. Set değerine bakılmaksızın ssdece verilen komutu uygular. Oto moddayken bu butonlar komut almaz.
Yesil Renk: Üzerinde yazan OTO-MAN durumuna göre ısıtıcının şuan devrede olduğunu gösterir.
Kırmızı Renk: Üzerinde yazan OTO-MAN durumuna göre ısıtıcının şuan devre dışı olduğunu gösterir.
Ayrıca bir diğer özellik ise manuel moddan otomatik moda alındığında , manuel konumdayken ısıtıcının on yada off durumu neyse, otomatik moddan manuel moda alınca eski manuel çalışma şekline devam eder.
| 18F4620 içerisine yazdığım program bu haliyle 3 ayrı ısıtıcıyı kontrol edebiliyor. |
Lokal ip dışında internet üzerinden kontrol etmek için modem üzerinden 80 portunu 192.168.2.55 adresine yönlendirmemiz gerekmektedir.





Hiç yorum yok:
Yorum Gönder
Not: Yalnızca bu blogun üyesi yorum gönderebilir.