Elektronik / Mikrodenetleyici Projeleri/

RF Deniz Suyu Termometresi Tarih Saat Isı Picbasic

Sponsorlu Bağlantılar

Deniz suyu termometresi projesinde; birbirlerinden en az 30 cm uzaklığa yerleştirilmiş olan 2 sıcaklık algılayıcısı yardımı ile deniz içinde farklı derinliklerde ölçülen suyun sıcaklığını, karada yaklaşık 50 metre uzaktaki ekranda sürekli güncelleyecek bir sistem oluşturulmuştur. 50 metre uzaklığa verinin iletimi, RF alıcı-verici kullanılarak gerçekleştirilmiştir. Ayrıca yukarıda bahsedilen sisteme ek olarak hava sıcaklığı, güncel takvim ve saat bilgileri de ekranda dönüşümlü olarak yer almaktadır.

Proje Tanıtımı, Akış Şeması ve Malzeme Listesi : Deniz suyu termometresi projesi, denize kıyısı olan yerleşim yerlerinde farklı derinliklerde deniz suyunun sıcaklığını ve havanın sıcaklığını ölçüp; 50 metreden fazla olmamak kaydı ile herhangi bir uzaklığa yerleştirilmiş ekranda görüntülemek için tasarlanmıştır. Aynı zamanda, saat ve takvim bilgilerini de ekranda güncelleyen sistem, saat devresini kullanarak günün saatine göre günaydın, iyi akşamlar gibi mesajları da ekranda gösterebilmektedir.

malzeme-listesi-termometre

Akış Diyagramı
proje-akis-diagrami

LM35 Sıcaklık Algılayıcısı

LM35 tümdevresi; algıladığı sıcaklığı, belirli bir katsayı ile çarparak çıkış gerilimi olarak aktaran, Celcius tipi derece ile çalışan bir sıcaklık algılayıcısıdır. Celcius tabanlı ölçüm yapması nedeniyle kullanım kolaylığı sağlar ve bu projede kullanılmasının nedenlerinden biri budur. Ayrıca düşük güç gereksinimi nedeniyle uzaktan kontrollü uygulamalarda LM35 tercih edilmektedir.

Tümdevre, her 1 °C sıcaklık artışında çıkış gerilimini 10mV artırmaktadır. Besleme gerilimi 4 Volt ile 30 Volt arasında seçilebilmektedir. Bu projede besleme gerilimi 5 Volt olarak seçilmiştir. -55 °C ile + 150 °C arasında sıcaklık ölçümü yapabilen devre, oda sıcaklığı civarında en fazla ± 0.5 °C hatalı ölçüm yapabileceği, üretici firma tarafından garanti edilmektedir ayrıca yapılan deneylerde de bu hata payı doğrulanmıştır. Tümdevreye ait 2 görünüm Şekil 1.1’de verilmiştir. Güç tüketimi, devre şeması ve diğer algılayıcı modelleri gibi ek bilgilere ulaşmak için devrenin kataloğu incelenmelidir.

LM35 Sıcaklık Algılayıcısı Üstten ve Yandan Görünüm
lm35-dis-gorunus

LM7805 5Volt Gerilim Düzenleyici

LM78XX serisi pozitif gerilim düzenleyicileri, elektronik elemanların güç tüketimlerinin hızla azalmaya devam ettiği günümüzde, devre tasarımında sıklıkla kullanılmaktadır. Ayrıca LM79XX serisi negatif gerilim düzenleyicileri de bulunmaktadır.

Bir LM7805 devresi, girişine uygulanan 15 Volt’luk gerilimi, 5Volt’a düşürüp sabitlerken; LM7905 devresi, aynı gerilim girişine uygulandığında bu gerilimi -5 Volt’a düşürmektedir. Model olarak; 5, 6, 8, 9, 10, 12, 15, 18, 24 Volt çıkış gerilimi verebilen modeller bulunmaktadır. Ayrıca LM117XX serisi gerilim düzenleyiciler 1.2 Volt’ tan 57 Volt’a kadar çıkış gerilimi sağlayabilmektedirler.

Bu projede kullanılan gerilim düzenleyici modeli LM7805 modelidir. 3 bacağa sahip olan devrede giriş gerilimi 5 Volt ile 24 Volt arası seçilebilmektedir. Soğutucu blok ile devrenin ısınma problemine karşı önlem alınmakla birlikte; 24 Voltu aşan giriş gerilimi değerlerinde, devre aşırı ısınma sorunu ile karşı karşıya kalmaktadır ve soğutucu blok yeterli olamamaktadır. Aşağıda resmi görülen devrenin en üstteki bacağı, düzenlenmiş çıkış bacağıdır. En alttaki bacak pozitif doğru gerilim girişi, ortadaki bacak ise toprağa veya 0 Volt gerilime bağlanması gereken giriştir.

LM7805 Tümdevresi
lm7805

HD44780 2×16 Likit Kristalli Ekran

HD44780 likit kristalli ekran; günlük yaşamda cep telefonlarında, beyaz eşyalarda, güvenlik sistemlerinde ve birçok elektronik sistemde kullanılan ve kendi karakter hafızası bulunan bir birimdir. 2X16; 2 satır ve 16 sütundan oluşan bir ekran anlamına gelmektedir. Likit kristalli ekran 16 adet bağlantıya sahiptir. Bu bağlantılar aşağıda açıklanmıştır.

1.ve 2. bacaklar güç kaynağı hatları yani Vss ve Vdd’ dir. Vdd bacağının pozitif gerilime, Vss’ nin de 0 V’ a veya toprağa bağlanması gerekir. Likit kristalli ekran birimleri veri kitapçıklarının çoğunda kaynak / besleme gerilimi 5V gösterilmesine rağmen, 6V ve 4.5V’luk beslemelerde de oldukça iyi çalışmaktadır. Hatta bazı ekran birimlerinde besleme gerilimi 3V’a kadar düşmektedir. Bu nedenle ekran birimleri etkin ve ekonomik olarak pil / batarya ile beslemek de mümkündür.

3. bacak yani Vss, ekranın parlaklığını ayarlamaya yarayan bir kontrol ucudur. Bu bacak değişken bir gerilim kaynağına veya besleme hatları arasına bağlanan bir ayarlı direncin orta ucuna bağlanarak bu ayar yapılabilmektedir. Ancak bazı likit kristalli ekran birimlerinin -7 V’a varan gerilimlere ihtiyaç duyduğu da göz önüne alınırsa, en basit olarak bu bacağın 0V’a bağlanması en uygunudur. 4., 5. ve 6. bacaklar komut kontrol bitleri olarak isimlendirilebilirler.

Bunlardan 4. bacak yani RS yazmaç seçme bitidir ve bu komut kontrol bacaklarının ilkini oluşturur. Bu hat düşük (Lojik 0) yapıldığı durumda ekrana aktarılan veri bitleri komut olarak algılanır ve gerekli işlem yerine getirilir. Bu durumda ekrandan okunan veri bitleri ise, ekranın durumu hakkında bilgi verir. Bu hattın yüksek (Lojik 1) yapılması ile de, birime karakter veri transferi veya alımı yapılacağı anlaşılır. Kısa ve basitçe özetlemek gerekirse, ekranda bir karakter yazmak veya ekrandan bir karakter okumak için RS hattı yüksek, ekrana bir komut yollamak veya ekranın durumu hakkında bilgi almak istersek RS hattını düşük yapmamız gerekmektedir.

5. bacak yani R/W hattı, kısaca oku / yaz anlamına gelmektedir. Eğer ekrana karakter veri
transferi yapılacaksa veya bir komut yollanacaksa düşük, karakter veri alımı yapılacaksa veya yazmaçlardan durum bilgisi okunacaksa yüksek yapılır. 6. bacak yani E ise komut kontrol bitlerinin sonuncusunu oluşturur ve yetki biti olarak isimlendirilebilir. Bu giriş, birim ve veri hatları arasında, komutların veya karakter verilerinin, gerçek anlamda aktarımını başlatmak için kullanılır. Ekrana yazılırken, veri aktarımı sadece bu işaretin düşen kenarında gerçekleşir. Bununla birlikte, ekrandan okuma yapılırken, veri yükselen kenar hemen kısa bir süre sonra hazır olur ve işaret tekrar düşünceye kadar hatta kalır. 7. ile 14. bacaklar arasındaki uçlar sekiz adet veri hattıdır. Veri ekrana, ya 8 bit’lik tek bir byte olarak yada, içi 4 bit’lik nibble’lar olarak aktarılır veya ekrandan okunur. Bu ikinci durumda, sadece üst dört veri hattı (D4′ den D7′ ye ) kullanılır.

Bu 4 bit modu, bir mikrodenetleyici kullanıldığında, daha az giriş / çıkış hattına gerek olduğundan kullanışlıdır. 15. ve 16. bacaklar ise aydınlatma girişleridir. 15. bacak +5 Volt gerilime, 16. bacak ise toprak hattına bağlandığında ekran ışıklı hale gelmektedir.

ARX-34 RF Alıcı

Udea Elektronik firmasının üretmiş olduğu ARX-34 radyo frekanslı alıcı devresi, 433 MHz frekansında çalışmaktadır. Küçük fiziksel boyutu ve düşük güç tüketimi sayesinde uzaktan kontrol sistemleri için kullanıma uygun olan devre, 17.3 cm’lik bir antenle birlikte en başarılı biçimde çalışabilmektedir. Anten boyu hesabı için bağıntılar Tablo 1.3 ’ te verilmiştir.

Besleme gerilimi olarak 4.9 Volt ile 5.1 Volt arası bir gerilim seçilmelidir. 5.1 Volt’tan yüksek bir besleme gerilimi uygulanması durumunda devrenin bozulma olasılığı çok yüksektir. Ayrıca besleme geriliminde en fazla 100 mV dalgalanma olması, devrenin öngörüldüğü gibi çalışması açısından önemlidir. 300 baud ile 2400 baud hızları arasında veri transferi yapabilen devre, ev içi uygulamalarda en iyi sonucu 600 baud hızında vermektedir. -10 °C ile +55 °C arasında ortam sıcaklığı çalışabilen ARX-34; 5 mA besleme akımı çekmektedir.

Hem sayısal hem de analog çıkışa sahip olmasına rağmen, üretici analog çıkışın test aşamasında olduğunu ifade etmektedir. Deniz suyu termometresi projesinde sayısal çıkış kullanılmıştır.

Anten Boyu Hesabı
anten-boyu-hesabi

ATX-34 RF Verici

ATX- 34 radyo frekanslı verici devresi, 433 MHz frekansında çalışmaktadır. 5 bacaklı yapıya sahip olan devre 17.3 cm’lik bir antenle birlikte en verimli biçimde çalışabilmektedir. Anten boyu hesabı nasıl yapılacağı ise ARX-34 alıcı tanıtılırken yapılmıştır. Besleme gerilimi olarak 5 Volt ile 12 Volt arası bir gerilim seçilmelidir.

Besleme gerilimi değeri 12 Volt’a yaklaştıkça, vericinin performansı artmaktadır dolayısıyla daha uzaklara veri iletilebilmektedir. Ayrıca besleme geriliminde en fazla 100 mV dalgalanma olması devrenin öngörüldüğü gibi çalışması açısından önemlidir. 300 baud ile 2400 baud hızları arasında veri transferi yapabilen devre, ev içi uygulamalarda en iyi sonucu 600 baud hızında vermektedir. Hızın ayarlanması yazılım aracılığıyla yapılmıştır ve PIC aracılığıyla vericiye uygulanmıştır. -10 °C ile +55 °C arasında ortam sıcaklığı çalışabilen ATX-34; besleme gerilimi 5 Volt seçildiğinde 6.5 mA besleme akımı çekmektedir. Sadece sayısal girişi bulunan verici devreye, uzağa göndermek istediğimiz veri sayısallaştırılıp bağlanmalıdır.

UHA-434 Anten

Anten, elektrik işaretlerini ( gerilim ve akım ) elektromanyetik dalgalara ya da elektromanyetik dalgaları elektrik işaretlerine dönüştürmek için kullanılan araçtır. Udea firmasının üretmiş olduğu UHA-434 anten, ARX-34 alıcı ve ATX-34 verici devreleriyle uyumlu çalışmaktadır. 434 MHz frekansında çalışan anten, 4MHZ bant genişliğine, 50 ? çıkış empedansına, ve 1.5 gerilim duran dalga oranına sahiptir. Kısaca gerilim duran dalga oranından bahsetmek gerekirse; VSWR genel olarak iletim hattının yük empedansı ile karakteristik empedansı arasındaki uygunsuz eşlemenin bir ölçüsüdür. Eğer verici uygun bir antenle sonlandırılmamışsa (yani uygun yük) yansıma artacaktır. Dolayısıyla VSWR’ de artacaktır ve giden gücün büyük bir kısmı yansıyacaktır. Bu durumda maksimum güç iletilmemiş olacaktır. Bunun için verici uygun empedans değeri olan bir antenle sonlandırılmalıdır, empedans değeri 50 Ohm olmalıdır.

DS1302 Saat ve Takvim Devresi

DS1302, Dallas yarıiletken firması tarafından üretilmiş olan bir gerçek zamanlı saat ve takvim devresidir. 8 bacaklı bir devre olan DS1302, 2100 yılına kadar çalışma garantisine sahiptir ve bacak sayısını ekonomik olarak kullanabilmek için seri iletişim yeteneğine sahiptir. 2 Volt ile 5.5 Volt arası besleme gerilimine ihtiyaç duyan devre; -40 °C ile +85 °C arası çalışabilme özelliğine sahiptir. Devre besleme gerilimi kesildiğinde saat ve takvim bilgilerini saklayabilmek için yapısında rasgele erişimli bellek ( RAM ) bulundurmaktadır.

Bu bellek sürekli çalışmak için tasarlanmıştır ve Vcc1 besleme gerilimine ihtiyaç duymaktadır. Ana besleme gerilimi yani Vcc2 kesintiye uğradığında, Vcc1 bacağına bağlanmış olan pil, saati ve takvim bilgilerini içinde barındıran belleği sürekli aktif tutacaktır ve dolayısıyla bilgi kaybı olmadan saat ve takvim çalışmaya devam edecektir. Vcc2 bacağına bağlanacak olan en az 1.5 Volt’luk pilin, yeniden şarj edilebilir pil olması tavsiye edilmektedir. Çünkü DS1302 devresi pil şarj etme düzeneğine sahiptir.

Devrenin katalog bilgileri incelendiğinde, şarj etme düzeneğinin nasıl çalıştığı kolayca anlaşılabilecektir. Gerekli yazılımsal ayarlamalar yapılmadan, şarj edilebilir pil kullanmanın bir anlamı yoktur. Bu ayarlamalar devrenin katalog bilgilerinde bulunmaktadır. X1 ve X2 bacakları osilatör bacaklarıdır. 32.768 KHz frekansında çalışan bir osilatör, saat ve takvim tümdevresinin çalışması için gereklidir.

DS1302 Tümdevresi
ds1302-entegresi-tumdevresi

Devre Tasarımı

Bu bölümde deniz suyu termometresi projesindeki alıcı ve verici taraftaki devrelerin nasıl tasarlandıkları açıklanacaktır. Anlatım 2 parça halinde; alıcı kısım ve verici kısım olarak hazırlanmıştır.

Verici Taraf Devre Tasarımı

Verici kısım devresinde ATX-34 RF verici, PIC16F877, 30 cm aralıklı yerleştirilmiş 2 adet LM35 sıcaklık algılayıcısı, 4 MHz osilatör, LM7805 gerilim düzenleyici ve 17.3 cm’lik anten bulunmaktadır. LM35 sıcaklık algılayıcıları tarafından algılanan 2 ayrı sıcaklık verisi, PIC içine analog veri halinde alınmaktadır. Burada PIC içinde bulunan kaydırmalı yazmaç ile seri hale getirilen veri, RF verici devresinin sayısal girişine iletilmiştir.

İletim 600 baud hızında yapılmaktadır. Verici sıcaklık bilgisini göndermeden önce mutlaka uyandırma işareti göndererek alıcı RF devresi ile anlaşma sağlamalıdır. Bu uyandırma işareti peş peşe gönderilmiş 1 ve 0 rakamları olabilir. Ayrıca veri kaybını engelleyebilmek için verici 1. algılayıcıdan aldığı veriyi ortama yaymadan önce “GS” ve “gS”; 2. algılayıcıdan aldığı veriyi ortama yaymadan önce ise “gs” ve “Gs” harflerini göndermektedir.

Alıcıya bu dört harf ikili gruplar halinde bildirilmiştir ve bu 4 sözcüğü yan yana ( GS, gS, gs ve Gs ) görmeden alıcı asla veri kabul etmeyecektir. Alıcının GS ve gs harflerinden sonra sıcaklık bilgilerini alması, çok daha verimli olmaktadır. Yapılan deneyler süresince ön uyarma işareti gönderilmediğinde bazı karmaşık harflerin ekranda görüldüğü gözlenmiştir. Uyandırma işareti yollamak ise veri gönderimi için mutlaka gereklidir. Aksi takdirde gönderilen veri alıcı tarafından algılanamayacaktır.

Alıcı Taraf Devre Tasarımı

Alıcı kısım devrede; 16 satır 2 sütun ekran, ARX-34 RF alıcı devresi, PIC 16F877, DS1302 saat ve takvim devresi, LM35 sıcaklık algılayıcısı, LM7805 gerilim düzenleyici devre, 17.3 cm anten, osilatörler ve temel devre elemanları ( kapasite, direnç ) bulunmaktadır. Mikrodenetleyicinin d portuna ait 4 bacak ile ekran veri bağlantıları ve diğer 2 bacak ile ekranın kontrol uçlarına ait bağlantılar yapılmıştır. PIC’in 1. bacağı 10 KOhm’luk direnç ile artı beslemeye bağlanmıştır. Bu uç reset ucudur. PIC’in 11. ve 32. bacakları artı beslemeye; 12. ve 31. bacakları devrenin toprağına bağlanmıştır. PIC’in c portunun 7. bacağı sayısal veri girişi olarak ayarlanmıştır ve alıcıdan gelen sayısal veriyi kabul etmektedir.

LM35 sıcaklık algılayıcısı hava sıcaklığını ölçmek üzere yerleştirilmiştir ve bu algılayıcının çıkışından elde ettiğimiz analog veri, PIC’in A portunun 0. bacağına bağlanmıştır. Yazılımda bu bacak analog giriş olarak ayarlanmıştır. Alınan bu analog veri PIC içindeki analog sayısal dönüştürücü yardımı ile sayısal veriye çevrilip ekrana yollanmaktadır. LM7805 gerilim düzenleyici ile devrenin besleme gerilimi +5 Volt olarak sabitlenmiştir. PIC için 4 MHz osilatör, saat devresi için 32.768 KHz osilatör kullanılmıştır. Tablo 1.3’te verilen anten boyu hesabı bağıntısı ile hesaplanan boydaki ( 17.3 cm ) bir anten alıcının anten girişine bağlanmıştır.

İskele bacağındaki vericinin yolladığı veriler anten sayesinde yakalanıp, alıcının sayısal çıkışından PIC’e iletilmiştir. PIC bu veriyi ekrana yollayarak deniz suyu sıcaklığının ekranda gösterilmesi işlemini tamamlamaktadır.

Deniz suyu sıcaklıkları 1. ve 2. algılayıcıdan alınıp ekranda gösterildikten sonra, 2 saniye bekleme süresi verilmiştir. Bu beklemeden sonra ekrandaki bilgileri silinip yerine saat bilgisi gelmektedir. Saat bilgisi de ekranda 3 saniye bekleyip kaybolmakta ve yerine tarih bilgileri gelmektedir. Yine 3 saniye sonra hava sıcaklığı alıcı tarafa yerleştirilmiş olan sıcaklık algılayıcısı yardımıyla PIC tarafından işlenerek ekrana gelmektedir. 3 saniye beklemeden sonra günün saatine göre belirlenen bir mesaj ekrana gelmektedir. Eğer saat 6 ile 12 arasında ise “GÜNAYDIN”, saat 12 ile 19 arasına ise “İYİ GÜNLER”, saat 19 ile 22 arasında ise “İYİ AKŞAMLAR” ve son olarak saat 22 ile 24 arasında ise “İYİ GECELER” mesajı ekranda görünmektedir.

Sıcaklık Ölçüm Kalibrasyonu

Projede 10 bit’lik analog sayısal çeviricisi bulunan PIC16F877 kullanılmıştır. PIC ailesinde 8 bit analog sayısal çeviriciye sahip olan elemanlar da bulunmaktadır. Fakat sıcaklık ölçümünün daha hassa yapılabilmesi için 10 bit çevirici kullanmak şarttır. 10 bitlik çevirici kullanıldığında, besleme geriliminin 5 Volt seçildiği göz önüne alınırsa, kalibrasyon-hesap-formul Volt yani yaklaşık 5 mV gibi bir hassasiyet derecesine ulaşmış oluruz. LM35 sıcaklık algılayıcısı her 1 °C sıcaklık
artışında, çıkışındaki gerilimi 10mV artırmaktadır. PIC her 5 mV değişimi algılamak için ayarlandığı göz önüne alınırsa 0.5 °C hassasiyet kolayca elde edilmiş olur.

Projede hava sıcaklığı ölçümünde hassasiyet 0.1 °C ‘ ye kadar düşürülmüştür. Donanımsal olarak 0.5 °C hassasiyete kadar izin verilmesine rağmen, PIC’ e yüklenen kodda geliştirmeler yapılarak hassasiyet 0.1 °C ‘ ye kadar düşürülmüştür. Deniz suyu sıcaklığı algılama hassasiyeti de 0.1 °C olarak ayarlanmıştır. Talep edilmesi durumunda, hassasiyet 0.01 °C kadar indirilebilir. Bütün algılayıcılar için, sıcaklık değeri 100 defa ölçülmüş ve ortalama alınarak ekrana sıcaklık değeri yazdırılmıştır. Bunun sebebi bazı ölçümlerin gerilim dalgalanması sebebiyle uygun olmayan sonuçlar vermesidir. 100 defa bu şekilde ölçüm yapılarak, hatalı olabilecek ölçümlerin; ekranda görünecek sıcaklık değerine olan etkisi en düşük seviyeye indirilmeye çalışılmıştır.

MİKRODENETLEYİCİ PROGRAMININ YAZILMASI

Genel Bakış :Bu bölüm altında PIC Assembly ve PIC BASIC programlama dilleri tanıtılacak, Microcode Studio ve IC-Prog yazılımları incelenecektir. Ayrıca PIC’e yüklenecek olan HEX kodunun oluşum aşaması gözden geçirilecektir.

PIC Assembly Nedir? : PIC Assembly, PIC mikrodenetleyicileri için tasarlanmış olan, tamamı ile Assembly tabanlı olan alt düzey bir programlama dilidir. Adının özellikle PIC Assembly olmasının sebebi, bazı komutlarının 8086 veya 8051 gibi işlemcilerin kullandığı Assembly dilindeki komutlardan farklı yazılışta olmasından kaynaklanmaktadır. PIC Assembly dili ile program yazarken, kullanılan donanımın çok önemi vardır. Yazılan kodların çoğu donanıma bağlı yazılır ki; bu programın taşınabilirliğini azaltan bir faktördür. Örneğin PIC16F877 için yazılmış bir Assembler kodu, PIC16F84 ile kullanılamayacaktır. Bu durum Assembly dillerinin
en zayıf yönüdür. Alt başlıklarda PIC Assembly komutları ve çeşitli özelliklerinde bahsedilecektir.

PIC Assembly Öğrenmek Zor mu?

Evet ! Hele ki yeni başlayanlar için epey zorlu bir uğraş olabiliyor. Bir likit kristalli ekranı tanımlamak, onu kullanılabilir hale getirmek ve sonra da ekrana bir şeyler yazdırabilecek kodu oluşturmak bile günlerinizi alabilir eğer çok tecrübeli değil iseniz. Zamanın çok değerli olduğu çağımızda, bu durumdan kurtulabilmek için BASIC, C, PASCAL gibi daha yüksek düzey programlama dillerini kullanarak Assembly kodları oluşturma imkanımız bulunmaktadır.

Projede kullanılmış olan PIC BASIC ileriki bölümlerde anlatılacaktır. Şimdi maddeler halinde; C, BASIC gibi programları baz alarak, PIC Assembly dilinin verimsiz yönleri ele alınacaktır.

Assembly’nin Verimsiz Yönleri

PIC Assembly Öğrenmek Zor: PIC Assembly programlama dilini öğrenmek, diğer programlama dillerine hiç benzemediği için zor olarak algılanıyor. Örneğin C bilen biri için Pascal öğrenmek çok kolay olacaktır. Tabi ki Assembly öğrenmek, eşi ve benzeri olmadığından her zaman daha zor olacaktır.

PIC Assembly Taşınabilir Değil: Bu özellik Assembly dilinin belki de en kötü özelliği. Her işlemci için, her makine için, aynı işlevi yerine getirmek amacıyla farklı kod yazmak çok da eğlenceli olmasa gerek.

PIC Assembly ile Kod Yazmak Zor: C gibi yüksek düzey programlama dillerinde hazırlanmış stdio.h gibi, stdlib.h gibi dosyalar vardır. Bu dosyaların kütüphane dosyalarıdır ve kullanılacak olan komutlar bu dosyaların içinde tanımlanmıştır. Fakat Assembly için böyle bir durum söz konusu değildir. Tasarımcı her seferinde, aynı döngüleri tekrar yazmak zorunda kalmaktadır. Her otomobile bineceğiniz zaman tekerleği tekrar icat etmek gibi bir benzetme yapmak hiç de abartı olmaz Assembly ile kod yazmak için.

PIC Assembly Ne Zaman Vazgeçilmezdir?

Assembly için söylenmiş eski bir söz vardır. Assembly kullanmak için 3 neden vardır Hız hız ve daha çok hız. Bu söz her şeyi açıklayabilmektedir. Assembly ve bir alt dil olan PIC Assembly diğer üst düzey programlama dillerinden daha hızlıdırlar.

MHz’ler mertebesindeki frekanslı işlemcilerin bile hayal olduğu zamanlarda Assembly kesinlikle tek seçenek idi. Örneğin C programlama dilinde en basit programda bile stdio.h kütüphane dosyasını yazdığınız programın içine eklemeniz gerekmektedir. Bu da tabi ki programa yük getirmektedir ve programın boyutu büyümektedir. Assembly dilinde böyle bir kütüphane dosyası olmadığından, yazılan her satır kodun tamamı ile gerekli olduğundan yazıldığından, Assembler kod dosyaları daha küçük boyutlu olmaktadırlar. Hızlarının sırrı buradan gelmektedir. küçük olan program kısa sürede yüklenir ve işleme geçilebilir.

Günümüzde en basit işlemci veya denetleyicilerin bile hızları 20 MHz düzeyine ulaşmıştır. Ayrıca komut işleme süreleri gelişen elektronik bilimi ile nano saniye gibi çok kısa zaman birimlerine düşmüştür. Yüksek düzey dillerde yazılan kodların fazladan getirdiği baytlar artık işlemcilere ve yük olmamaktadır. Bu nedenle birçok uygulamada Assembly’ den daha yüksek düzeyde bir dil kullanmak zaman bakımından tasarımcıyı rahatlatmaktadır. Fakat çok kısıtlı hafıza birimleri ile çalışırken veya son derece yüksek hızlarda çalışılması gerektiğinde Assembly dili tercih edilebilir.

Ayrıca Assembly dili ile, üst düzey programlama dilleri ile çok zor yazılabilecek veya kesinlikle yazılamayacak kodlar yazma imkanı bulunmaktadır. Kısaca diğer dillere göre daha geniş ufka sahip bir programlama dilidir. Bu durumu C programlama dili ve diğer üst düzey diller, Assembly kodlarını kodun içine kabul etme yöntemiyle kendi lehlerine çevirmeye çalışmışlardır. Örneğin C ile program yazarken, birkaç satır Assembly kodu da gerek duyulursa araya eklenebilir ve sonra tekrar C koduna devam edilebilir. Bu durum yukarıda da belirtildiği gibi, yüksek düzey dillerle yazılması imkansız durumlarda ve çok hassas hız gereksinimlerinin olduğu durumlarda günümüzde kullanılmaktadır.

PIC BASIC Nedir?

PIC BASIC; üst düzey programlama dili olan BASIC ‘in, bir denetleyici olan PIC için düzenlenmiş sürümüdür. Bu programlama dili kullanılarak, PIC çok daha kolay ve hızlı biçimde istenilen işlevleri yerine getirebilmektedir. Deniz suyu termometresi projesinde tercih edilmesinin sebepleri; kolay kullanılabilir olması ve C programlama diline benzerliğidir.

PIC BASIC Komutları

PIC BASIC 65 adet komut içermektedir. Bu 65 komut her türlü programlama ihtiyacına cevap verebilmektedir. Ayrıca Assembly kodu kullanılmak istendiğinde ASM … ENDASM komutlarının arasına yazarak Assembly kodları da BASIC kodlarıyla birlikte kullanılabilmektedir.

PIC Programının Tasarımı

Deniz suyu termometresi projesinde yazılım yüklenmesi gereken 2 kısım bulunmaktadır. Bunlar 2 adet PIC16F877’dir ve bir tanesi iskele bacağında bulunan verici kısımda, bir diğeri de alıcı kısımda bulunmaktadırlar. Bu nedenle 2 adet farklı kod hazırlanmıştır. Hazırlanan kodlar açıklamaları ile birlikte EK B bölümünde verilmiştir.

SONUÇLAR

Bu projede, deniz suyunun sıcaklığını 2 farklı derinlikte ölçüp, yaklaşık 50 metre uzaklıktaki ekrana iletecek ve aynı zamanda hava sıcaklığını, saati ve takvimi ekranda gösterecek bir sistem tasarlanmıştır. Sıcaklık ölçme işi sıcaklık algılayıcıları ile, ölçülen verileri işleme işi PIC mikrodenetleyicileri ile, veriyi 50 metre öteye iletme işi RF alıcı verici devreleri ile ve saat-takvim bilgilerini tutma işi özel bir tümdevre ile sağlanmıştır. Deniz suyu sıcaklığını ölçmedeki hassasiyet ve hava sıcaklığını ölçmedeki hassasiyet 0.1°C olarak ayarlanmıştır.

Proje, geliştirilmeye açık bir yöntem izlenerek tasarlanmıştır. Birçok özellik daha eklenip, cihazın kullanım alanları genişletilebilir. Örnek olarak nem ölçme işlemi, bu projeye çok rahatlıkla eklenebilir. Böyle bir tasarım için hazırlanan koda eklemeler yapmak şartıyla SHT11 nem algılayıcısı kullanılabilir. Bu projede 16 sütun 2 satırlık ekran kullanılmıştır. Bu ekran boyutu çok daha büyük seçilebilir. Ayrıca aynı verici kısım devreden birçok sayıda tasarlanarak deniz suyu sıcaklığı bir çok noktada ölçülebilir.

Ayrıca veriyi daha uzaklara iletebilen RF verici alıcı devreleri kullanılarak, kullanımın yaygınlığı artırılabilir. Projenin uygulanabilirlik alanları da düşünülmüştür. Örneğin deniz
kıyısındaki bir turistik tesiste, tesisin bir çok bölgesine ekranlar yerleştirilerek havanın sıcaklığı, deniz suyunun çeşitli bölgelerde ve derinliklerde sıcaklığı, saat ve takvim bilgileri insanlara sunulabilir.

Ayrıca sıcaklık belli dereceyi aşarsa, klimayı aç veya sıcaklık çok düşerse ısıtıcıyı çalıştır gibi ek işlevler de gerçekleştirilebilir. Tasarlanılan devrenin sınırı, alıcı taraftaki PIC ‘ in hafızası ve port sayısıdır. Bu projede 33 veri bacağından sadece 10 tanesi kullanılarak bütün işlevler gerçekleştirilmiştir. Hafızanın ise büyük bir bölümü boş kalmıştır. Eklenebilecek olan klima, ısıtıcı, nem algılayıcısı, basınç algılayıcısı gibi çeşitli çevre birimleri ile projeyi genişletebilmek mümkündür.

Hazırlayan: Oğuzhan Kızılbey iyi tasarlanmış özellikleri bol güzel bir proje her ayrıntıda çok işimize yarayacak bilgiler var ayrıca kaynak pic basic .bas ve .hex kodları verilmiş ek olarak kullanılan kompanenler hakkında detaylı bilgiler assembly picbasic karşılaştırması bulunmakta aşağıda özet örnekler verilmiştir tamamı RF Deniz Suyu Termometresi Tarih Saat Isı Picbasic

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

  • fatih barut

    Harika olmuş hocam
    elinize sağlık