31
İ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

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

Embed Size (px)

Citation preview

Page 1: İSTANBUL TEKNİK ÜNİVERSİTESİ ELEKTRİK – ELEKTRONİK

İ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ğiProgramı: Elektronik Mühendisliği

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

Ağustos 2010

Page 2: İSTANBUL TEKNİK ÜNİVERSİTESİ ELEKTRİK – ELEKTRONİK

Ö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

Page 3: İSTANBUL TEKNİK ÜNİVERSİTESİ ELEKTRİK – ELEKTRONİK

İÇİNDEKİLER

ÖZETSUMMARY

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

Page 4: İSTANBUL TEKNİK ÜNİVERSİTESİ ELEKTRİK – ELEKTRONİK

5. SONUÇLAR VE TARTIŞMA

Page 5: İSTANBUL TEKNİK ÜNİVERSİTESİ ELEKTRİK – ELEKTRONİK

Ö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 REALIZATION

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.

Page 6: İSTANBUL TEKNİK ÜNİVERSİTESİ ELEKTRİK – ELEKTRONİK

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.

Page 7: İSTANBUL TEKNİK ÜNİVERSİTESİ ELEKTRİK – ELEKTRONİK

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.

Page 8: İSTANBUL TEKNİK ÜNİVERSİTESİ ELEKTRİK – ELEKTRONİK

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 1TXC1 RF Verici 1RXA1-B-434M RF Alıcı 12x16 LCD Sıvı Kristal Görüntü Birimi 1DS1302 Saat ve Takvim Devresi 1

11

L7805AC Pozitif gerilim düzenleyici 14 Mhz kristal Osilatör 132.768 KHz kristal Osilatör 110 µF kondansatör Kondansatör 1330 nF kondansatör Kondansatör 122 pF kondansatör Kondansatör 210 kΩ direnç Direnç 34,7 kΩ direnç Direnç 2330 Ω direnç Direnç 19 V pil Pil 1

1

Page 9: İSTANBUL TEKNİK ÜNİVERSİTESİ ELEKTRİK – ELEKTRONİK

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ığı

Page 10: İSTANBUL TEKNİK ÜNİVERSİTESİ ELEKTRİK – ELEKTRONİK

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.

Page 11: İSTANBUL TEKNİK ÜNİVERSİTESİ ELEKTRİK – ELEKTRONİK

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ı

Page 12: İSTANBUL TEKNİK ÜNİVERSİTESİ ELEKTRİK – ELEKTRONİK

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ş

Page 13: İSTANBUL TEKNİK ÜNİVERSİTESİ ELEKTRİK – ELEKTRONİK

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)

Page 14: İSTANBUL TEKNİK ÜNİVERSİTESİ ELEKTRİK – ELEKTRONİK

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.

Page 15: İSTANBUL TEKNİK ÜNİVERSİTESİ ELEKTRİK – ELEKTRONİK

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.

Page 16: İSTANBUL TEKNİK ÜNİVERSİTESİ ELEKTRİK – ELEKTRONİK

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

Page 17: İSTANBUL TEKNİK ÜNİVERSİTESİ ELEKTRİK – ELEKTRONİK

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

Page 18: İSTANBUL TEKNİK ÜNİVERSİTESİ ELEKTRİK – ELEKTRONİK

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

@ DEVICE pic16F877

@ DEVICE pic16F877, WDT_on

@ DEVICE pic16F877, PWRT_ON

Page 19: İSTANBUL TEKNİK ÜNİVERSİTESİ ELEKTRİK – ELEKTRONİK

@ 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

Page 20: İSTANBUL TEKNİK ÜNİVERSİTESİ ELEKTRİK – ELEKTRONİK

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

Page 21: İSTANBUL TEKNİK ÜNİVERSİTESİ ELEKTRİK – ELEKTRONİK

define lcd_dreg portb ' b portu data portudefine lcd_dbit 4 ' 4 bitlik veri iletimi yapılacak define lcd_ereg portb ' enable portu seçildidefine lcd_ebit 3 ' enable pini seçildiDEFINE lcd_rwreg portb DEFINE lcd_rwbit 2define lcd_rsreg portb ' register select portu seçildidefine lcd_rsbit 1 ' register select pini seçildiDEFINE lcd_bits 4DEFINE lcd_lines 2lcdout $FE,$40,4,0,4,4,4,4,4,0LCDOUT $FE,$48,17,0,17,17,17,17,31,0LCDOUT $FE,$50,14,17,12,6,17,14,8,0define adc_bits 10 ' 10 bitlik A/S çevirici seçildidefine adc_clock 3 ' 3. modda çalışılacakdefine adc_sampleus 50 ' 50 mikro saniye örnekleme süresiinclude "modedefs.bas" ' modedefs.bas dosyası kodun içine alındı' modedefs.bas dosyası seri haberleşme protokollerinin var olduğu dosyadır. TRISA=1TRISB=0TRISC=0rk VAR WORDsa VAR WORDRST var PORTA.2IO var PORTC.1SCLK var PORTC.3rtcyil var bytertcgun var bytertcay var bytertctarih var bytertcsaat var bytertcdakika var bytertcsaniye var bytertckontrol var byte

Low RST ' Reset RTCLow SCLKLow PORTD.2 pause 200

' Set initial time to 15:00:00AM 06/08/2010 rtcyil = $10 rtcgun = $05 rtcay = $07 rtctarih = $06

Page 22: İSTANBUL TEKNİK ÜNİVERSİTESİ ELEKTRİK – ELEKTRONİK

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 RTCzamanikur: 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 RTCzamaniyurut: 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

Page 23: İSTANBUL TEKNİK ÜNİVERSİTESİ ELEKTRİK – ELEKTRONİK

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 temizlendiserin2 portc.7,396,500,hava,[wait("SE"),rk] ' AB ön uyarma sinyalli veri = rkrk=(rk*4.8828125)*6/1000sa=(rk*4.8828125)*6/100sa=sa//10LCDOUT " GELG",0,"T SEV",0,"YES",0," : "LCDOUT " ",DEC2 rklcdout " ",dec1 salcdout " cm" PAUSE 3000 returnARAYUZ :lcdout $fe,1 ' ekran temizlendiif saat < $12 && saat > $6 then ' saat 6 ile 12 arası iselcdout " G",1,"NAYDIN " ' ekranda günaydın yazpause 3000 ' 3 saniye bekleendif ' döngüden çık54if saat < $19 && saat > $11 then ' saat 12 ile 19 arası iselcdout " ",0,"Y",0," G",1,"NLER " ' ekranda iyi günler yazpause 3000 ' 3 saniye bekleendif ' döngüden çıkif saat < $22 && saat > $18 then ' saat 22 ile 19 arası iselcdout " ",0,"Y",0," AK",2,"AMLAR " ' ekranda iyi akşamlar yazpause 3000 ' 3 saniye bekleendif ' döngüden çıkif saat < $24 && saat > $21 then ' saat 24 ile 22 arası iselcdout " ",0,"Y",0, GECELER " ' ekranda iyi geceler yazpause 3000 ' 3 saniye bekleendif ' döngüden çıkreturn