bilgiz.org

GelgiT ÖLÇer biTİrme ödevi serkan şahan

  • Ağustos 2010 ÖNSÖZ
  • İÇİNDEKİLER ÖZET SUMMARY 1. GİRİŞ 2. DONANIM 2.1. Projede Kullanılan Tümdevre ve Malzemelerin Listesi
  • 2.3. LM7805AC 5 Volt Gerilim Düzenleyici 2.4. TXC1 RF Verici Devre 2.5. RXA1-B-434M RF Alıcı Devre
  • 3.1. Verici Devre Tasarımı 3.2. Alıcı Devre Tasarımı 3.3. Elektromekanik Kısım İçin Devre Tasarımı ve Düşünülenler 4. YAZILIM
  • 4.4. Verici Devre İçin Kullanılan Kod ve Algoritma Tasarımı 4.5. Alıcı Devre İçin Kullanılan Kod ve Algoritma Tasarımı 4.6. PIC’e Programın Yüklenmesi
  • TIDE GAUGE realizatıon SUMMARY
  • 2. DONANIM
  • 2.2. Mikroişlemci: PIC16F877A 2.2.1. PIC16F877A Hakkında Genel Bilgi
  • 2.2.2. PIC16F877 nin Analog/Sayısal Çevirici (Analog/Digital Converter, ADC) Birimi
  • A/S çeviricinin
  • PCFG3:PCFG0
  • 2.3. LM7805AC 5 Volt Gerilim Düzenleyici
  • 2.6. Sıvı Kristal Görüntü Birimi (Liquid Crystal Display, LCD)
  • 2.7. DS1302 Saat ve Takvim Devresi
  • 4.4. Verici Devre için Kullanılan Kod ve Algoritma Tasarımı
  • 4.5. Alıcı Devre İçin Kullanılan Kod ve Algoritma Tasarımı



  • Tarih14.10.2017
    Büyüklüğü110.28 Kb.

    Indir 110.28 Kb.


    İSTANBUL TEKNİK ÜNİVERSİTESİ
    ELEKTRİK – ELEKTRONİK FAKÜLTESİ


    GELGİT ÖLÇER

    BİTİRME ÖDEVİ

    SERKAN ŞAHAN

    040060321

    Bölümü: Elektronik ve Haberleşme Mühendisliği

    Programı: Elektronik Mühendisliği

    Danışman: Prof. Dr. İnci Çilesiz

    Ağustos 2010

    ÖNSÖZ

    Geniş bilgi birikimi, yol göstericiliği ve tecrübesiyle çalışmam süresince benden desteğini ve yardımını esirgemeyen Sayın Prof. Dr. İnci Çilesiz’e sonsuz saygılarımı ve teşekkürlerimi sunarım.


    Ağustos 2010 Serkan ŞAHAN



    İÇİNDEKİLER
    ÖZET

    SUMMARY

    1. GİRİŞ

    2. DONANIM

    2.1. Projede Kullanılan Tümdevre ve Malzemelerin Listesi

    2.2. Mikrodenetleyici: PIC16F877

    2.2.1. PIC16F877 Hakkında Genel Bilgi

    2.2.2. PIC16F877’ Besleme Bacakları ve Beslenmesi

    2.2.3. PIC16F877’ Saat Bacakları ve Osilatörler Hakkında Bilgi

    2.2.4. PIC16F877' nın Analog/Sayısal Çevirici (ADC) Birimi
    2.3. LM7805AC 5 Volt Gerilim Düzenleyici

    2.4. TXC1 RF Verici Devre

    2.5. RXA1-B-434M RF Alıcı Devre

    2.6. ATM1602B Sıvı Kristal Görüntü Birimi (Liquid Crystal Display, LCD)

    2.7. DS1302 Saat ve Takvim Tümleşik Devresi

    3. DEVRE TASARIMI

    3.1. Verici Devre Tasarımı

    3.2. Alıcı Devre Tasarımı

    3.3. Elektromekanik Kısım İçin Devre Tasarımı ve Düşünülenler

    4. YAZILIM

    4.1. C Programlama Dili ve C ile PIC Programlamaya Giriş

    4.2. Yazılım Ortamı:Micro Code Studio Derleyicisi

    4.3. Çalışma

    4.4. Verici Devre İçin Kullanılan Kod ve Algoritma Tasarımı

    4.5. Alıcı Devre İçin Kullanılan Kod ve Algoritma Tasarımı

    4.6. PIC’e Programın Yüklenmesi

    5. SONUÇLAR VE TARTIŞMA

    ÖZET

    Bu bitirme projesi, gelgit dolayısıyla deniz suyu düzeyinin 30 cm'ye kadar olan (±15cm) değişimini ölçen; şamandıra tabanlı ve karada kazılacak bir kuyu içine yerleştirilecek; deniz suyu yüksekliğini gösteren elektriksel işaretin kablosuz olarak iskele veya kuyudan yaklaşık 30-50 m uzaktaki panele gönderileceği; panelde gösterilen su düzeyi yanılma payının 2 mm veya daha az olduğu bir cihaz tasarımı gerçekleştirilmesini içermektedir. Proje, donanım ve yazılım alarak iki ana bölümden oluşmaktadır.

    Donanım içeriği PIC16F877 mikrodenetleyicisi, LM7805AC 5 volt gerilim düzenleyici, TXC1 rf verici devre, RXA1-B-434M rf alıcı devre, ATM1602B 2x16 sıvı kristal görüntü birimi (liquid crystal display), DS1302 saat ve takvim tümleşik devresi oluşturmaktadır. Gelgit bilgisinin elektriksel işarete dönüşümünü sağlayan elektromekanik kısım ise Volkswagen Golf modeli bir aracın akaryakıt ölçüm sisteminin kullanılması ile gerçeklenmiştir.

    Yazılım kısmında ise verici tarafta gelgit seviyesini mekanik olarak ölçerek 0-5 volt arası değerlerde analog elektriksel işarete dönüştüren cihazdan gelen bilginin mikrodenetleyicideki analog/sayısal çevirici birimi işlenip verici devre ile alıcı kısma gönderilmesi, alıcı kısımda algılanan bilginin saat ve tarih tümdevresinin içerdiği bilgi de eklenerek gerekli dönüşümlerin yapılması ile sıvı kristal göstergede görüntülenmesi gerçeklenmektedir..




    TIDE GAUGE realizatıon
    SUMMARY

    The main aim of this project is to design and implement a tide-gauge which basicly operate between 30 centimeters below and above of sea level. This project also supposed to provide the following features such as being buoy based and settled in a well which is digged on the land, a wireless transfer of the electrical signal which carries the information of sea water level from the dock or well about 30-50 meters distance and having a data error of 2 millimeters or less.

    This project includes hardware and software parts. The main parts of the hardware are PIC16F877 microcontroller, LM7805AC 5 Volts voltage regulator, TXC1 rf transmitter circuit, RXA1-B-434M rf receiver circuit, ATM1602B 2x16 liquid crystal display, DS1302 real time clock and date circuit. The electromechanical part which provides the convertion of tide level information to electrical signal, is realised using a fuel measurement system of a Volkswagen Golf model vehicle.

    In the software part, by using transmitter circuit it is realized sending the information, which comes from the device that measures the tide level mechanically and converts it into an analog electrical signal between 0-5 volts, by processing it in the ADC the of microcontroller and it is realized that displaying the information which is sensed in the receiver part doing necessary convertions and the additional real time and date information on the liquid crystal display.



    1. GİRİŞ
    Gelgit ölçerler, 1800’ lü yıllardan bu yana dünyada kullanılan cihazlardır. Ana kullanım amaçları deniz seviyesini ölçmek, tsunamileri ve taşkınları belirlemektir. Yüzyıllardan yana kullanılan bu sistemlerin ana prensibi deniz suyunun içine girdiği ince bir boru ve kaydedici düzenlerdir.

    Özellikle okyanus kıyılarındaki yaşam merkezleri için gel-git değerinin bilinmesi hayati önem taşımaktadır. İlkel gel-git ölçerler zamanla gelişen teknoloji ile geliştirilmiş ve farklı ara yüzler, farklı ve kullanışlı haberleşme yöntemleri kullanılmış ve sonuçlar istatiksel amaçlı veri bankalarında depolanmıştır. Bugün dünyada profesyonel anlamda gelgit ölçümleri yapılmakta, bu gelgit ölçümlerinde küresel konumlama sistemleri, uydu haberleşmesi gibi ileri teknoloji uygulamalardan yaralanılmaktadır. Bizim amacımız bu projelerin küçük ve amatör bir şekilde bir benzerini yapabilmektir. Marmara Denizi’ nde meydana gelen deniz seviyesinden on beş santimetre meydana gelen değişimini gözlemleyebilmek diğer bir amacımızdır. Milli Savunma Bakanlığı’ nın gel-git ölçer alımı hakkındaki açtığı ihale bu konunun her anlamda önemini bir kez daha ortaya koymaktadır.

    Proje, bir çok disiplinin birleşmesi ile meydana gelmektedir. Kullanılan mikrodenetleyicinin (PIC 16F877) mimari yapısı, programlama boyutu, analog sayısal çevirme işleminin mantığının anlaşılması ve özellikle radyo frekansları ile iletişimin nasıl gerçeklendiği ve sayısal haberleşme; tümdevrelerin analog sistem tasarımlarına ilavesi ve son olarak sıvı kristal göstergelerin özellikleri ve programlanmaları bu projenin displinler arası yönünü ortaya koymaktadır.

    Proje basitçe açıklamak gerekirse tasarım olarak üç ana bölümden oluşmaktadır. İlk bölüm bir araba yedek parçası olan Volswagen Golf modelinin yakıt algılayıcısının bu sistemde deniz suyu yüksekliğini dahili şamandırası ile algılaması ve dahili devresi ile bu yüksekliği elektriksel işarete dönüştürmesidir. Bu tipik bir analog dönüşümdür ve parçada bulunan grafit ucun bir direnç serisinin üzerinde yüksekliğe bağlı olarak gezmesi ile gerilimi değiştirmesi esasına dayanır. Bunu bir potansiyometre olarak düşünebiliriz.

    Projenin ikinci bölümü, yedek parçanın dönüştürdüğü işaretin mikrodenetleyiciye bir bacak sayesinde alınması analog giriş işlemidir. Mikrodenetleyiciye giren işaret ASÇ ile sayısal işarete çevrilir ve bu sayısal işaret RF verici ile alıcı tarafa iletilir.

    Projenin son bölümü alıcı taraftır. Bu kısım, RF ile gönderilen sayısal işaretin alınmasını ve bu sayısal işaretin ayrı bir mikrodenetleyici kulanılarak ve gerekli dönüşümlerin yapılması ile saat ve takvim bilgilerinin de eklenmesi ile sıvı kristal göstergede gösterilmesi işlemlerini yerine getirir.



    2. DONANIM

    Bu bölümde, projede kullanılan tümdevre ve malzemeler hakkında detaylı bilgi verilmektedir.


    2.1. Projede Kullanılan Tümdevre ve Malzemelerin Listesi

    Tablo 2.1: Malzeme listesi



    MALZEME

    ÇEŞİT

    ADET

    PIC16F877

    Mikrodenetleyici

    1

    TXC1

    RF Verici

    1

    RXA1-B-434M

    RF Alıcı

    1

    2x16 LCD

    Sıvı Kristal Görüntü Birimi

    1

    DS1302

    Saat ve Takvim Devresi

    1







    1







    1

    L7805AC

    Pozitif gerilim düzenleyici

    1

    4 Mhz kristal

    Osilatör

    1

    32.768 KHz kristal

    Osilatör

    1

    10 µF kondansatör

    Kondansatör

    1

    330 nF kondansatör

    Kondansatör

    1

    22 pF kondansatör

    Kondansatör

    2




    10 kΩ direnç

    Direnç

    3




    4,7 kΩ direnç

    Direnç

    2




    330 Ω direnç

    Direnç

    1




    9 V pil

    Pil

    1


































    1

    2.2. Mikroişlemci: PIC16F877A

    2.2.1. PIC16F877A Hakkında Genel Bilgi

    PIC (Peripheral Interface Controller) Microchip firmasının ürettiği ve ilk olarak 1994’ te lanse ettiği mikrodenetleyicilerdir. PIC16F877 mikrodenetleyicisi Harward mimarisi kullanılarak geliştirilmiştir. Yani bellek ve veri için ayrı yerleşik yollar kullanılmıştır. Bu tasarım belleğe ve veriye erişim hızını arttırarak pic ailesini diğerlerinden ayırır.Şekilde PIC16F877 PDIP (Plastic Dual In-line Package) kılıf PIC görülmektedir.



    Şekil 2.1. PIC16F877 Bacak Şeması ve Resmi[1]

    PIC16F877 mikrodenetleyicisinin özellikleri şunlardır:


    • 8K FLASH Program bellek, programın yazılıp silinebilmesine olanak sağlar.

    • DC-20 MHz Çalışma Frekansı

    • 368*8 RAM bellek, kullanıcının yaralandığı

    • 256 byte EEPROM Veri belleği

    • 14 bit genişliğinde komutlar

    • 33 Adet Giriş-Çıkış Portu, bu çalışmadaki seçim kriterlerinden biridir.

    • 8 Kanallı 10 Bit Analog-Sayısal Çevirici, dahili olduğu için diğer bir seçim kriteridir.

    • Kesme kaynağı, 14 adet kesmeye izin verebilir.

    • SPI (serial peripheral interface) ve I2C (inter-integrated circuit) seri iletişim özelliği

    • Paralel iletişim portu (paralel slave port, PSP)

    • USART (Universal Synchronous Asynchronous Receiver Transmitter) seri iletişim, USART I2C(efendi-köle haberleşmesi), RS232 gibi güçlü bir seri iletişim bacağıdır ve sadece bu modelde bulunur.

    • SPI iletişimi içerir.

    • 25 mA port çıkış akımı

    • Bekçi köpek (watchdog timer) devresi

    • Dahili salıngaçı bulunur.

    • Uyku modu

    • 0,6 mA’ den düşük bir akım, 3V-MHz çalışma koşullarında

    • 1 µA’ den daha düşük bekleme modu akımı

    PIC16F877 mikrodenetleyicisinin dâhili A/S çevirici devreye sahip olması, seri ve paralel iletişim konularında gelişmiş bir altyapısının bulunması, girişler ve çıkışlar için yeterli sayıda bacak içermesi en önemli tercih nedenidir.

    2.2.2. PIC16F877' nin Analog/Sayısal Çevirici (Analog/Digital Converter, ADC)

    Birimi

    PIC 16F877’ nin bir özelliği de mikrodenetleyici uyku modunda iken bile analog sayısal çeviricinin arka planda çalışma özelliğidir.Bu kısımda mikrodenetleyicimizin yazmaç özelliklerini inceleyeceğiz.


    Şekil 2.3: ADCON1 kaydedicisi [1]



    Bit-7: A/S çeviricinin Sonuç Format Seçme biti dir. Sonuç 1 olur ise sonuç sağa hizalanmış, ADRESH’ nin 6. uç bitleri 0 olarak okunur. 0 olur ise sonuç sola hizalanmış, ADRESL’ nin alt bitleri 0 olarak okunur. Bit 6-4 arası kullanılmaz ve 0 olarak okunur. Bit -3-0 arası PCFG3  PCFG0 A/D portu ayarlama kontrol bitleridir. İşte bu bitleri ayarlayarak portların seçimleri yapılır. Aşağıdaki tabloya bakınız.


    Örnek olarak PCFG3:PCFG0 bitlerini 0000 olarak verir isek bu durumda RA0-RA3 , RA5,
    RE0-RE2 bacaklarının tamamı ANALOG olarak ayarlanmış olacak ve artı referans Voltajı
    VDD den eksi referans voltajı ise VSS yani GND den alınacaktır.Eğer projemize yönelik
    bakacak olursak şunu kolaylıkla söyleyebiliriz ki bize 1 adet Analog giriş yeterlidir, diğerleri
    sayısal olabilir. +5V ve GND de referans voltajları olarak kullanılacak. Bu durumda tabloya
    bakar isek 1110 değeri tam istediğimiz ayarlamayı yapabiliyor. Tablonun en son hanesinde
    ilk değer kaç analog giriş olduğunu / işaretinden sonraki değer ise harici referans voltaj girişi
    adedini gösteriyor. Seçtiğimiz değerde burası 3/0 olarak görülmektedir. Anlamı 3 adet
    Analog giriş ve sıfır referans voltajı var demek. Zaten biz mikrodenetleyicinin kendi voltaj
    girişlerini kullanmak istediğimizden gerçektende bize sıfır referans girişi lazımdır.
    Mikrodenetleyicinin voltaj girişleri referans voltajı olarak seçildiğinde mikrodenetleyiciye
    giren Analog voltaj değerinin 5 Volt’u aşmamasına dikkat edilmelidir. Tasarımda oto yedek
    parçasının uçlarına 5 Volt gerilimin verilme nedeni de budur. Bu şekilde tablonun
    kullanılmasını anlattıktan sonra bu aşamada tüm girişlerin sayısal seçilmesini inceleyelim.
    Analog girişlerin sayısal olarak kullanılması istenir ise tablodan sağ tarafta 0/0 değerinin
    bulunduğu satırda PCFG3:PCFG0 değeri 0111 (onluk sistemde 7) olarak görülür. Demek ki
    ADCON1=7 veya ADCON1=%0111dediğimiz zaman mikrodenetleyici 16F877 nin Analog
    girişleri iptal edilerek normal sayısal giriş çıkışa dönüştürülmektedir. A/S çeviricisi bulunan
    mikrodenetleyicilerde aksine bir komut bulunmaz ise ilk açılışta A/S bacaklar analog olarak
    açılırlar. Dolayısıyla bu pinleri sayısal kullanmak istersek mutlaka ADCON1=7 komutuyla
    işle yaparız.
    n bitlik bir ADC en fazla 2n adet değer ile bir analog işareti örnekleyebilir. Örneğin 10 bitlik bir ADC en fazla 210 = 1024 adet değer ile bir analog işareti örnekleyebilir. ADC biriminin elde ettiği sayısal bilginin bit sayısı ADC biriminin çözünürlüğünü ifade eder. Çözünürlük ne kadar yüksek ise o kadar iyi bir dönüşüm yapılır. ADC tüm devreleri analog giriş için, analog sinyalin pozitif giriş ucu olan VIN(+) ve analog sinyalin negatif giriş ucu olan VIN(-) giriş uçlarına sahiptir. Bu girişlerden analog sinyal uygulanır. Ayrıca ADC tümdevrelerinde analog sinyali sayısala çevirirken kullanılan VREF(+) ve VREF(-) uçları vardır. VREF(+) sayısala çevrilecek sinyalin en yüksek değerini, VREF(-) de en düşük değerini belirtir. Böylece giriş sinyalinin istenen aralığı için sayısala çevirme işlemi uygulanarak daha hassas ölçüm sonuçları elde edilebilir (projede daha hassas sonuca gerek duyulmadığından bu uygulanmamıştır).

    ADC'nin sayısal bilgiye dönüştürebildiği en küçük gerilim değerine adım büyüklüğü denir. Adım büyüklüğü 1 LSb değeri olarak da ifade edilir ve şu şekilde hesaplanır:


    Adım büyüklüğü (1 LSb) = (VREF(+) - VREF(-)) / 2n (n, ADC'nin bit sayısını belirtir.) (2.1)
    Örneğin en yüksek değeri VIN(+) = VREF(+) = 5V ve en düşük değeri VIN(-) = VREF(-) = 0V olan bir sinyalin 10 bitlik ADC için adım büyüklüğü 5V/210 = 4,8828125mV'tur.

    ADC biriminin analog uçlarına gelen sinyalin gerilim değerini hesaplamak içinse aşağıdaki formül kullanılır:


    Sinyal gerilimi = Sayısal çıkışın onluk tabandaki değeri x Adım büyüklüğü + VREF(-) (2.2)

    2.3. LM7805AC 5 Volt Gerilim Düzenleyici

    LM7805AC 5 Volt gerilim düzenleyici ABD’ li fairchild yarıiletken firması tarafından üretilmektedir. Bu gerilim düzenleyicilerinin en büyük özellikleri ısıl kapama, iç akım sınırlaması ve güvenli çalışma alanı gibi bu düzenleyicileri zarar verilemez kılan özelliklerdir. 7805 tümdevresi 0-125 oC arasında çalışır, 500 mA çıkış akımı ve 0.1 µF kadar bir giriş kapasitesi mevcuttur. 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.


    Şekil LM7805AC tümdevresi



    2.6. Sıvı Kristal Görüntü Birimi (Liquid Crystal Display, LCD)

    Sıvı kristal ekran, elektrikle kutuplanan sıvının ışığı tek fazlı geçirmesi ve önüne eklenen bir kutuplanma filtresi ile gözle görülebilmesi ilkesine dayanan bir görüntü teknolojisidir. Projede 2x16 karakter tabanlı paralel LCD kullanılmıştır. Bu başlık altında bu tip LCD’ler hakkında bilgi verilecektir.

    İmleçleri ile birlikte 5x8 noktalı olan göstergelerde karekterler 5x7 matrisler şeklinde oluşur. Bizim uygulamamızda Türkçe’ ye özel karakterler de kullanılmıştır. Yazılım kısmında bunun ayrıntılı anlatımı mevcuttur. ATM1602B sıvı kristal göstergesi -20 ila 70 oC arasında çalışır. Piyasadaki hemen hemen tüm sıvı kristal göstergeler aynı bacak diyagramına sahiptir.





    Şekil 2.12: 2x16 karakter LCD

    Şekil 2.13: ATM1602B bacak diyagramı


    Projede kullandığım sıvı kristal göstergenin 3 no’ lu bacağı kontrast bacağı olup bu bacak 10 K lık bir trimpotun orta ucuna bağlanmalıdır. Trimpotun diğer uçlarından birisi +5V’ a diğeri de GND ye bağlanıp ekranda bir şeyler yada en azından karartılar görününceye kadar trimpot ayarlanmalıdır. Trimpotun alternatifi 3 no’ lu gösterge bacağını 470-680 ohm arası bir dirençle GND ye bağlamak ve aynı bacağı 8K2 ile de +5V ta bağlamaktır. Gösterge Çin üretimi olduğu için sorun çıkmış ve çeşitli kullanıcıların deneyimlerinden yararlanılarak bu yola başvurulmuştur.

    - Göstergenin 1 nolu bacağı ile 5 no’ lu bacağı GND’ ye bağlanmalı , 2 no’ lu bacağı ise +5V’ a bağlanmalıdır.

    - R/W=0 yani düşük seviyede tutularak veri gönderme işlemi yapılmıştır.

    - R/S=1 yani yüksek seviye veri, R/S=0 yani alçak seviye komut için yazmaçın seçimidir

    - Göstergenin veri bacakları mutlaka her hangi bir portun ya 0 no’ lu bacağından itibaren yada 4 bitlik iletişim kullanılacak ise 4 nolu bacağından itibaren sıra ile bağlanmalıdır. Alıcı devredeki mikrodenetleyiciye yüklenen programda gösterge 4 bitlik kullanıldığı için bağlantı

    şöyle olmalıdır.

    Gösterge-D4==>portB.4

    Gösterge -D5==>portB.5

    Gösterge -D6==>portB.6

    Gösterge -D7==>portB.7

    D0-D7 arasındaki tüm bacaklar göstergenin veri bacaklarıdır. E yetkilendirme bacağıdır. VEE kontrast bacağıdır.

    2.7. DS1302 Saat ve Takvim Devresi

    DS1302, Dallas yariiletken firmasi tarafindan üretilmis olan bir gerçek zamanli saat ve takvim devresidir. 8 bacakli bir devre olan DS1302, 2100 yilina kadar çalisma garantisine sahiptir ve bacak sayisini ekonomik olarak kullanabilmek için seri iletisim yetenegine sahiptir. 2 Volt ile 5.5 Volt arasi besleme gerilimine ihtiyaç duyan devre; -40 °C ile +85 °C arasi çalisabilme özelligine sahiptir. Devre besleme gerilimi kesildiginde saat ve takvim bilgilerini saklayabilmek için yapisinda rasgele erisimli bellek ( RAM ) bulundurmaktadir. Bu bellek sürekli çalis mak için tasarlanmistir ve Vcc1 besleme gerilimine ihtiyaç duymaktadir. Ana besleme gerilimi yani Vcc2 kesintiye ugradiginda, Vcc1 bacagina baglanmis olan pil, saati ve takvim bilgilerini içinde barındıran belleği sürekli aktif tutacaktir

    ve dolayisiyla bilgi kaybi olmadan saat ve takvim çalis maya devam edecektir. Vcc2 bacagina baglanacak olan en az 1.5 Volt’luk pilin, yeniden s arj edilebilir pil olmasi tavsiye edilmektedir. Çünkü DS1302 devresi pil sarj etme düzenegine sahiptir. Devrenin katalog bilgileri incelendiginde, sarj etme düzeneginin nasil çalis tigi kolayca anlasilabilecektir. Gerekli yazilimsal ayarlamalar yapilmadan, sarj edilebilir pil kullanmanin bir anlami yoktur. Bu ayarlamalar devrenin katalog bilgilerinde bulunmaktadir. X1 ve X2 bacaklari osilatör bacaklaridir. 32.768 KHz frekansinda çalisan bir osilatör, saat ve takvim tümdevresinin çalismasi için gereklidir.

    Sekil 1.3 DS1302 Tümdevresi



    4.4. Verici Devre için Kullanılan Kod ve Algoritma Tasarımı

    @ DEVICE pic16F877

    @ DEVICE pic16F877, WDT_on

    @ DEVICE pic16F877, PWRT_ON

    @ DEVICE pic16F877, PROTECT_OFF

    @ DEVICE pic16F877, XT_OSC

    define adc_bits 10 ' 10 bitlik A/S çevirici seçildi

    define adc_clock 3 ' 3. modda çalışılacak

    define adc_sampleus 100 ' 100 mikro saniye örnekleme süresi

    include "modedefs.bas" ' modedefs.bas dosyası kodun içine alındı

    c var word ' i değişkeni tanımlandı

    toplam1 var word ' toplam1 değişkeni tanımlandı

    meas var word

    trisa = %00000001 ' A portu analog giriş seçildi

    adcon1 = %10001110 ' A/S çevirici konfigürasyonu

    basla: ' basla etiketi

    c=1

    meas=0


    toplam1=0

    FOR C=1 TO c=100 ' ölçüm 100 kere tekrarlanacak

    adcin 0 , meas ' port A.0'dan veri alındı

    toplam1=toplam1+meas ' sonuclar birikiyor

    NEXT c

    toplam1=toplam1/100



    serout2 portc.6,396,[REP$AA\5,REP$00\5,REP$FF\5] 'uyandırma işareti yolla

    serout2 portc.6,396,[("S"),("E"),toplam1] ' 2400 baud ile "SE" yolla

    serout2 portc.6,396,[("S"),("E"),toplam1] ' 2400 baud ile "SE" yolla

    serout2 portc.6,396,[("S"),("E"),toplam1] ' 2400 baud ile "SE" yolla

    PAUSE 100

    GOTO basla



    4.5. Alıcı Devre İçin Kullanılan Kod ve Algoritma Tasarımı

    @ DEVICE pic16F877

    @ DEVICE pic16F877, WDT_on

    @ DEVICE pic16F877, PWRT_ON

    @ DEVICE pic16F877, PROTECT_OFF

    @ DEVICE pic16F877, XT_OSC

    define lcd_dreg portb ' b portu data portu

    define lcd_dbit 4 ' 4 bitlik veri iletimi yapılacak  

    define lcd_ereg portb ' enable portu seçildi

    define lcd_ebit 3 ' enable pini seçildi

    DEFINE lcd_rwreg portb 

    DEFINE lcd_rwbit 2

    define lcd_rsreg portb ' register select portu seçildi

    define lcd_rsbit 1 ' register select pini seçildi

    DEFINE lcd_bits 4

    DEFINE lcd_lines 2

    lcdout $FE,$40,4,0,4,4,4,4,4,0

    LCDOUT $FE,$48,17,0,17,17,17,17,31,0

    LCDOUT $FE,$50,14,17,12,6,17,14,8,0

    define adc_bits 10 ' 10 bitlik A/S çevirici seçildi

    define adc_clock 3 ' 3. modda çalışılacak

    define adc_sampleus 50 ' 50 mikro saniye örnekleme süresi

    include "modedefs.bas" ' modedefs.bas dosyası kodun içine alındı

    ' modedefs.bas dosyası seri haberleşme protokollerinin var olduğu dosyadır.         

    TRISA=1

    TRISB=0


    TRISC=0

    rk VAR WORD

    sa VAR WORD

    RST     var     PORTA.2

    IO      var     PORTC.1

    SCLK    var     PORTC.3

    rtcyil var     byte

    rtcgun  var     byte

    rtcay var    byte

    rtctarih var     byte

    rtcsaat   var     byte

    rtcdakika  var     byte

    rtcsaniye  var     byte

    rtckontrol var  byte

    Low RST         ' Reset RTC

    Low SCLK


    Low PORTD.2  

    pause 200


            ' Set initial time to 15:00:00AM 06/08/2010

            rtcyil = $10

            rtcgun = $05

            rtcay = $07

            rtctarih = $06

            rtcsaat = $15

            rtcdakika = 0

            rtcsaniye = 0

            ana:

            Gosub zamanikur   ' Set the time


            Gosub zamaniyurut ' Skip subroutines
            gosub basla

            


            gosub ARAYUZ

            


            goto ana 
    ' Subroutine to write time to RTC

    zamanikur:

            RST = 1         ' Ready for transfer 

            ' Enable write

            Shiftout IO, SCLK, LSBFIRST, [$8e, 0]

    RST = 0         ' Reset RTC


            RST = 1         ' Ready for transfer
            ' Write all 8 RTC registers in burst mode

            Shiftout IO, SCLK, LSBFIRST, [$be, rtcsaniye, rtcdakika, rtcsaat, rtctarih, rtcay, rtcgun, rtcyil, 0]


            RST = 0         ' Reset RTC

            Return


    ' Subroutine to read time from RTC

    zamaniyurut:

            RST = 1         ' Ready for transfer
            Shiftout IO, SCLK, LSBFIRST, [$bf]      ' Read all 8 RTC registers in burst mode

            Shiftin IO, SCLK, LSBPRE, [rtcsaniye, rtcdakika, rtcsaat, rtctarih, rtcay, rtcgun, rtcyil, rtckontrol]


            RST = 0         ' Reset RTC

    ' Main program loop - in this case, it only updates the LCD with the time


             ' Read the time from the RTC
            ' Display time on LCD

            Lcdout $fe, 1, hex2 rtctarih, "/", hex2 rtcay, "/" ,"20", hex2 rtcyil

            pause 1000

            


           Lcdout $fe,$c0, hex2 rtcsaat, ":", hex2 rtcdakika, ":", hex2 rtcsaniye
            Pause 1000       ' 

            Return

    basla :

    lcdout $fe,1 ' ekran temizlendi



    serin2 portc.7,396,500,hava,[wait("SE"),rk] ' AB ön uyarma sinyalli veri = rk

    rk=(rk*4.8828125)*6/1000

    sa=(rk*4.8828125)*6/100

    sa=sa//10

    LCDOUT " GELG",0,"T SEV",0,"YES",0," : "

    LCDOUT "   ",DEC2 rk

    lcdout "   ",dec1 sa

    lcdout "  cm" 

    PAUSE 3000 

    return


    ARAYUZ :

    lcdout $fe,1 ' ekran temizlendi

    if saat < $12 && saat > $6 then ' saat 6 ile 12 arası ise

    lcdout " G",1,"NAYDIN " ' ekranda günaydın yaz

    pause 3000 ' 3 saniye bekle

    endif ' döngüden çık

    54

    if saat < $19 && saat > $11 then ' saat 12 ile 19 arası ise



    lcdout " ",0,"Y",0," G",1,"NLER " ' ekranda iyi günler yaz

    pause 3000 ' 3 saniye bekle

    endif ' döngüden çık

    if saat < $22 && saat > $18 then ' saat 22 ile 19 arası ise

    lcdout " ",0,"Y",0," AK",2,"AMLAR " ' ekranda iyi akşamlar yaz

    pause 3000 ' 3 saniye bekle

    endif ' döngüden çık

    if saat < $24 && saat > $21 then ' saat 24 ile 22 arası ise

    lcdout " ",0,"Y",0, GECELER " ' ekranda iyi geceler yaz

    pause 3000 ' 3 saniye bekle



    endif ' döngüden çık

    return






        Ana sayfa


    GelgiT ÖLÇer biTİrme ödevi serkan şahan

    Indir 110.28 Kb.