TV kumanda protokolleri

Transkript

TV kumanda protokolleri
Elektronikçinin El Kitabı
Bu
dokümanı
elektronikle
yeni
ilgilenmeye
başlayan
arkadaşlarında konuları kavrayabileceği sadelikte olmasına özen
göstermeye çalışarak ve içerdiği konularda elimden geldiğince detaya
inerek, Türkçe yardımcı kaynak olabilmesi amacıyla hazırladım. Bu
doküman, Kendime ait proje ve tasarımların dışında alıntılarda
içermektedir.
SIRC, RC5, SHARP, NEC, NOKIA, ITT protokolleriyle beraber,
projesi tarafıma ait bir protokol olmak üzere toplam 7 protokol
hakkında
detaylı
bilgiler
bulacaksınız.
Ayrıca
inferruj
data
iletişiminde kullanılmak üzere, tümü tarafımca kullanılmış, denenmiş,
skop ve fonksiyon jenaratörü ile sonuçları kontrol edilmiş devre
şemaları, konu ile ilgili hesaplama formüllerini ve yardımcı açıklama
tablolarını da bu doküman içerisinde bulabileceksiniz.
Seri ve Paralel portlar ile ilgili açıklamaları ve seri port
üzerinden mikrokontrol bağlantısı için basit bir arayüz şemasınıda bu
dökümanda bulabilirsiniz.
Assembly kullanıcılarının gözdesi MPLAB programının en ince
detaylarına
kadar
öğrenebileceksiniz.
kullanımını
da
yine
bu
döküman
sayesinde
Bu dökümanda Regülatör şemalarıda mevcut.
Telefon Hatları benim net üzerinden en çok soru aldığım
konulardan biriydi. İlerleyen sayfalarda bu konuda tüm detaylar ile
birlikte bir örnek proje bulabileceksiniz.
Son olarak ise özellikle bebeği olanların çok işine yarayacak bir
proje var. Saat, Alarm, özellikle ilaç saati takibini yapmak üzere
tasarladığım 99 saat 59 dakikaya kadar programlanabilen Geri Sayım
alarmı, 0-29 derece arasında bir sıcaklığa programlanabilen ve odayı
istenen sıcaklıkta tutma özelliği olan, elektrik kesintilerinde eğer
karanlık ise aydınlatma sağlayan ve bebeğinizin nefes alışını bile diğer
odalardan duymanızı sağlayan bas, tiz kontrollü çok hassas bir
mikrofonu olan hazır ve denenmiş devre şemalarıyla ve hazır programı
ile güzel bir proje var.
Yazım ve anlatım hatalarımız var ise af edile...
Saygı ve Sevgiler...
Rmz. Yıldırım Ak 2004
e-posta
: [email protected]
url
: http://tirbulans.tripod.com
2/2
İnferruj Data Transferleri
İnferruj
Data
Transferleri
El Kitabı
3/3
SIRC Protokolü
40 kHz taşıyıcı üzerinde, 1 / 4 veya 1 / 3 Duty Cycle Oranı
Bu protokol 5 bitlik cihaz kodu + 7 bitlik tuş kodundan oluşan 12 bitlik paket data
bilgisi kullanır.
Bu 12 bit yollanmadan önce, alıcı 2.4 ms High pozisyonda kalınıp kalınmadığını
kontrol eder. Bu nedenle ilk biti göndermeden bu süreyi High pozisyonunda
beklemeliyiz. (Header Time)
Daha sonra ilk bitten önce 0.6 ms süreyle göndereceğimiz data Low olmalıdır. Bu iki
işlemden sonra alıcı ilk bitin yollanacağını anlar. (Header Time End)
Bu iki işlem start bitini oluşturur.
Göndereceğimiz bit eğer 0 sa çıkışı high durumunda 0.6 ms tutarız. Daha sonra 0.6
ms süreyle low pozisyonunda tutarız.
Göndereceğimiz bit eğer 1 se çıkışı high durumunda 1.2 ms tutarız. Daha sonra 0.6
ms süreyle low pozisyonunda tutarız.
4/4
Buradan anlaşılacağı üzere 0 olan bitlerde high kalma süresi 0.6 ms, 1 olan bitlerde
high kalma süresi 1.2 ms ‘dir. Her iki durumda da 0.6 ms LOW kalma süresi vardır.
Yani bir bit süresi bitin 0 veya 1 olmasına göre değişkendir ( 1.2 ms (0 olan bit) veya
1.8 ms (1 olan bit) )
İlk gidecek bit en sağdaki bittir (LSB). Örneğin Televizyon alıcısının cihaz kodu 1 dir.
Yani 5 bitlik cihaz kodu olarak “00001”. Burada ilk giden bit en sağdaki 1 ve daha
sonra sola doğru sırasıyla 4 tane sıfır biti.
Tuş kodunda da data gönderim mantığı aynıdır.
0 olan bitlerde high kalma süresi 0.6 ms, 1 olan bitlerde high kalma süresi 1.2 ms ve
her bit arasında bekleme süresi 0.6 ms ‘dir.
Kanal artırma tuşunun kodu 16 dır. Yani 7 bitlik tuş kodu olarak “0010000”. Yine
sağdaki bitten başlayarak, en sağdaki 4 tane sıfır, daha sonra bir tane 1 ve
sonrasında 2 tane sıfır biti gönderilir.
Dikkat edilecek diğer bir nokta her paket data gönderimi arasında 45 ms beklemek
olmalıdır. (Start tan bir Sonraki starta)
Not : Bu protokolde yeni çıkan cihazlarda 15 bitlik ve 20 bitlik paketlerde
kullanılmaktadır.
Cihaz Kodları
1
Televizyon
2
VCR 1
4
VCR 2
6
Lazer disk çalıcı
12
Ses Cihazları
16
Mini Kaset/Radyo
5/5
17
CD Çalıcı
18
Ekolayzer
Tuş Kodları
0-9
Numerik Tuşlar
16
Kanal +
17
Kanal -
18
Ses +
19
Ses -
20
Ses Kesme
21
Açma
22
Resetleme
23
Ses Modu
24
Kontrast +
25
Kontrast -
26
Renk +
27
Renk -
30
Aydınlık +
31
Aydınlık -
38
Sol Balans
39
Sağ Balans
47
Kapama
6/6
RC5 Protokolü
36 kHz taşıyıcı üzerinde, 1 / 4 veya 1 / 3 Duty Cycle Oranı
Bu protokol 5 bitlik cihaz kodu + 6 bitlik tuş kodundan oluşan 11 bitlik paket data
bilgisi kullanır.
Bu protokol SIRC protokolunden tamamen farklıdır. Bu Protokolde bir bit uzunluğu
sabittir ve süresi 1.8 ms dir. (aslında bir bit süresi 1.778 ms dir.)
Start ;1 (Start) + 1 (Field) + 0 (Control) olmak üzere 3 bitten oluşur.
Alıcı Field bitini kontrol ederek, 6 bitlik tuş kodu ile gönderilebilecek toplamda 64
komutun 0-63 veya 64-127 aralığının hangisi için olduğunu anlar. Bu bit sayesinde 6
bitlik tuş kodu 7 bit olarak kullanılabilir.
Bitin 0 olması, bu 1800 us luk zamanın ilk 900 us luk kısmında datanın high, kalan
900 us luk zaman diliminde ise low olmasından anlaşılır. Bitin 1 olması ise, bu 1800
us luk zamanın ilk 900 us luk kısmında datanın low, kalan 900 us luk zaman
diliminde ise high olmasından anlaşılır.
İlk gidecek bit en sağdaki bittir (LSB).
Her paket data gönderimi arasında 114 ms bekleme süresi vardır.
7/7
RC5 Protokolü ile ilgili önemli not ;
29 Temmuz 2004 tarihinde tesadüfen görülen durum ;
Philips RC5 protokolünde, Philips in
yayınladığıda dahil olmak üzere tüm
teknik bilgiler Start bitinin “1”, Field bitinin tuş takımı sayısına göre “1” veya “0” ve
kontrol bitinin “0” olduğunu bildirmesine karşın, Philips 14PT serisi 37 ekran
televizyonun orijinal kumandasında kontrol biti bazen “1” bazen “0” olarak
gönderiliyor.
Kumandaya bozuk demeye ramak kalmışken, test devremdeki TK19 çıkış
sinyalini skopla kontrol ettiğimde durumu farkettim. Acaba benim devredemi bir şey
var diye skopla televizyonun orijinal kumandasının inferruj sürücü çıkışını kontrol
ettiğimde durum yine aynıydı. Acaba televizyon yeni model olduğundan eski
modellerle uyum sağlamaması için kontrol biti kullanılarak yeni bir özellik mi
kullanılmış diye merak ettim ama televizyonda 97 model, yani yeni değil.
Kumandanın bozuk olduğunu düşünenler olabilir. Ancak benim test devrem,
kontrol bitinin sürekli “0” geleceğini düşündüğünden ve kontrol bitinin “1” gelmesinden
dolayı diğer bitleri kontrol bile etmiyor. Buda kontrol biti “1” olduğunda kodu
çözmeyeceği sonucunu çıkartıyor. Test devresi bu durumda bazen çalışıyor, bazen
çalışmıyor. Ancak televizyon üzerindeki alıcı devre her tuşa basışta kodu çözüyor.
Buda kontrol bitinin sürekli “1” olmadığı sonucunu ve kumandanın sağlamlığını
doğruluyor. Ben bu duruma göre test devremdeki kodu güncelledim. Artık kontrol biti
ne olursa olsun her tuş basışını çözüyor.
Anlayacağınız üreticisi bile yayınlasa yazan her şeye güvenmemek gerekiyor.
Merak edenler için kumanda üzerindeki etiket :
RC8205/01
3104 207 02781
OP009717
8/8
SHARP Protokolü
38 kHz taşıyıcı üzerinde, 1 / 4 veya 1 / 3 Duty Cycle Oranı
Bu protokol 5 bitlik cihaz kodu + 8 bitlik tuş kodundan oluşan 13 bitlik paket data
bilgisi kullanır.
Diğer protokollerden farkı start bitinin olmayışıdır. Ancak paket sonunda iki kontrol biti
vardır ve eğer yanılmıyorsam ilki “1” ikincisi “0” bitidir.
Bir bit süresi bitin durumuna göre değişkendir. 0 olan bitlerde 1 ms ve 1 olan bitlerde
2 ms dir. Her iki durumda da sürenin ilk 320 us u high kalan süre low dur. Data
gönderimi ; 0 olan bitlerde 320 us high, 680 us low ve 1 olan bitlerde 320 us high,
1680 us low şeklinde yapılmalıdır. Data gönderme mantığı diğerleri ile aynıdır ve bir
sonraki bit ara vermeden yollanmalıdır.
İlk gidecek bit en sağdaki bittir (LSB).
Her paket data gönderimi arasında 40 ms bekleme süresi vardır.
9/9
NEC Protokolü
38 kHz taşıyıcı üzerinde, 1 / 4 veya 1 / 3 Duty Cycle Oranı
Bu protokol 8 bitlik cihaz kodu(x2) + 8 bitlik tuş kodundan(x2) oluşan 32 bitlik paket
data bilgisi kullanır.
Start biti SIRC de olduğu gibidir ancak header time 9 ms ve header time end 4.5 ms
dir. Start bitinden sonra, (8 bit cihaz kodu + 8 bit cihaz kodu) + (8 bit tuş kodu + 8 bit
tuş kodu) şeklinde aynı datalar 2. defa tekrarlanır.
Bu protokolde bit kullanımı SHARP ı andırır ancak bir bit süresi 0 olan bitlerde 1.12
ms ve 1 olan bitlerde 2.25 ms dir. Her iki durumda da sürenin ilk 560 us u high kalan
süre low dur. Data gönderimi ; 0 olan bitlerde 560 us high, 560 us low ve 1 olan
bitlerde 560 us high, 1690 us low şeklinde yapılmalıdır.
Diğer protokollerden farkı ise “Repeat Start” özelliğidir. İlk starttan sonraki 110 ms
bitiminde 9 ms high ve 2.25 ms low yollamamız durumunda Repeat Start durumu
oluşur. Bu durumda alıcı data kontrolü yapmadan (zaten vericide Repeat Start tan
sonra data gönderiminde bulunmaz), vericinin bir önceki komutu tekrarladığını anlar
ve bir önce aldığı komutu tekrar işler.
İlk gidecek bit en sağdaki bittir (LSB).
Her paket data gönderimi arasında 110 ms bekleme süresi vardır.
10 / 10
NOKIA Protokolü
38 kHz taşıyıcı üzerinde, 1 / 4 Duty Cycle Oranı
Bu protokol 4 bitlik cihaz kodu + 8 bitlik tuş + 4 bitlik alt cihaz kodundan oluşan 16
bitlik paket data bilgisi kullanır.
Start için ilk olarak 0 biti yollanır. Daha sonra 2500 us boyunca low da beklenir ve 1
biti yollanır. Toplam start süresi 4 ms dir.
Start bitinden sonra sırasıyla 8 bit tuş kodu, 4 bit cihaz kodu ve 4 bitlik alt cihaz kodu
yollanır.
Bu protokol RC5 i andırır bir bit süresi 1 ms dir. Bitin 1 olması, bu 1000 us luk
zamanın ilk 500 us luk kısmında datanın high, kalan 500 us luk zaman diliminde ise
low olmasından anlaşılır. Bitin 0 olması ise, bu 1000 us luk zamanın ilk 500 us luk
kısmında datanın low, kalan 500 us luk zaman diliminde ise high olmasından
anlaşılır.
İlk gidecek bit en sağdaki bittir (LSB).
Her paket data gönderimi arasında 100 ms bekleme süresi vardır.
11 / 11
ITT Protokolü
Diğer protokollerden oldukça farklıdır ve en hızlı protokoldür. Toplam data transfer
süresi maximum 2700 us dur. Her transfer standart 14 inferruj darbesi ile yapılır.
Bu protokol 4 bitlik cihaz kodu + 6 bitlik tuş kodundan oluşan 10 bitlik paket data
bilgisi kullanır.
Tablolardaki zamanlar verici tarafındaki RC osilatör ile +/- %20 oranına kadar
değiştirilebilir. Alıcı kalibrasyonunu start biti süresine göre yapar.
“0” biti = Start Biti
Lead-in
= 3 x Start Biti
“1” biti = 2 x Start Biti
Lead-out
= 3 x Start Biti
Her paket gönderiminden önce Lead-in, paket sonunda Lead-out gönderilir. Bu
gönderimler 14 inferruj darbesine dahildir.
Lead-in gönderiminden sonra gönderilen “0” biti startı oluşturur.
12 / 12
Start tan sonra 4 bitlik cihaz kodu, ardından 6 bitlik tuş kodu gönderilir. Paket
gönderimi Lead-out ile sona erdirilir. İlk gidecek bit en soldaki bittir (MSB).
Her paket data gönderimi arasında 130 ms bekleme süresi vardır.
ITT Protokolü için TBA2800 Infrared Preamplifier Entegresini yukarıdaki bilgiler
yardımıyla kullanabilirsiniz.
13 / 13
YAK Protokolü
Yukarıdaki protokollerle işim olduğunda hep düşünmüşümdür
“adamlar işi karıştırmak için ne kadar kafa yormuşlar” diye. Kendi
geliştirdiğim aşağıdaki bu protokol aslında kablolu hat üzerinden
uzaktaki birkaç makineyi kullanmak içindi. Yani işin aslı biraz
tembellik. Evde içişleri bakanımız kabloların “ortalıkta dolaştığı”
iddiası ile savaş açınca işi kablosuza dökmek zorunda kaldım. Gerçi bu
kararda geçen yıl dünyaya gelen tek oğlum Alp Eren’in yürümeye
başladığında bu kabloları kemirmek, koparmak, takılıp düşmek gibi
fiillerde bulunacağı daha etkili oldu desem yalan olmaz. Şimdi
kabloların
yerine
evin
duvarlarını
süsleyen
inferruj
aktarım
istasyonları var.
14 / 14
Buyurun Türkiye‘mizin medarı iftiharı bildiğim kadarıyla ilk inferruj kumanda
protokolümüze ;
Bit Tanıtım Tablosu
4 Bit Data Transfer Tablosu ( Tüm alıcılar )
8 Bit Data Transfer Tablosu ( Tek alıcı )
15 / 15
Kısaltmalar
•
C0
=
Bit Süresi 1539 us.
•
A0
=
Bit=”0” HIGH kalma süresi 513 us.
•
B0
=
Bit=”0” LOW kalma süresi 1026 us.
•
A1
=
Bit=”1” HIGH kalma süresi 1026 us.
•
B1
=
Bit=”1” LOW kalma süresi 513 us.
•
K
=
Alıcının bit kontrolünü yapabileceği 514-1025 us aralığı.
•
a
=
Start, protokol tipi ve alıcı kodunu belirleyen süre
•
aH
=
Start 4096 us
•
aL
=
Protokol tipi ve alıcı tipini belirleyen değişken süre
•
b
=
aL yi doğrulama ve alıcı hazırlık / bekleme süresi
•
bH
=
aL ile aynı, aL yi doğrulama süresi
•
bL
=
Alıcılar için data alımına hazırlık veya bekleme kontrol zamanı
•
mT
=
Modülasyon da uygulanacak bir palsin süre toplamı 27 us
•
mH
=
Modülasyonda bir palsin HIGH Süresi 7 us
•
mL
=
Modülasyonda bir palsin LOW Süresi 20 us
•
mTk =
Modülasyonda toplam mT sayısı
Bu protokol 4 veya 8 bitten oluşan data paketleri kullanır.
37 kHz taşıyıcı üzerinde, 1 / 4 veya 1 / 3 Duty Cycle Oranı.
16 / 16
YAK Protokolü Verici Devre Mantığı
1. Mikro kontrol inferruj kontrol çıkışının LOW olması, 555 i reset durumunda
tutar. Bu durumda 555 çıkışındaki transistor tetiklenmediği için inferruj led
devre dışıdır.
2. Mikro kontrol inferruj kontrol çıkışının HIGH olması 555 i devreye sokar. Bu
durumda 555 çıkışındaki transistor iletime geçer ve modülasyonu göndermeye
başlar.
3. Mikro kontrol bağlantısını yapmadan 555 in 4 nolu reset ucunu + volta alarak
555 çıkış modülasyonunu kontrol etmeniz tavsiye edilir.
17 / 17
YAK Protokolü Alıcı Devre Mantığı
1. İnferruj alıcı TK19 data gelmediği için çıkışını HIGH de tutar. Bu durumda
inferruj alıcı çıkışındaki transistor iletimdedir ve alıcı mikro kontrolünün data
giriş ucu LOW dadır.
2. İnferruj alıcı TK19 data geldiği süre boyunca çıkışını LOW da tutar. Bu
durumda inferruj alıcı çıkışındaki transistor iletimde değildir ve alıcı mikro
kontrolünün data giriş ucu HIGH dedir.
3. Mikro kontrol bağlantısı yapılmamış 555 in 4 nolu reset ucunu + volta alarak
555 çıkış modülasyonu ile inferruj ledi sürmeniz ve ALICI KONTROL noktasını
bağlamadan alıcınızın çalıştığını kontrol etmeniz tavsiye edilir.
4. TK19 un çıkışında transistör kullanmadan, +5 volta asarak datayı terslenmiş
olarakta alabilirsiniz. Ancak bu terslenmiş data dizaynını aktarıcı devrede
kullanamazsınız.
18 / 18
YAK Protokolü Aktarıcı Devre Mantığı
Bu devre uygun noktalara yerleştirildiğinde, inferruj vericinizin yolladığı dataları
daha uzak noktalara taşır.
1. İnferruj alıcı TK19, data gelmediği için çıkışını HIGH de tutar. Bu durumda
TK19 çıkışındaki transistor iletimdedir ve 555 reset ucu LOW dadır. Bu
durumda 555 çıkışındaki transistörler tetiklenmediği için inferruj ledler devre
dışıdır yani aktarım yapılmaz.
2. İnferruj alıcı TK19, data geldiği süre boyunca çıkışını LOW da tutar. Bu
durumda TK19 çıkışındaki transistor iletimde değildir ve 555 reset ucu HIGH
dedir. 555 reset girişi HIGH de kaldığı süre boyunca çıkışındaki transistörler
vasıtasıyla inferruj ledleri ayarlandığı modülasyona göre sürer.
3. 4 Adet inferruj led kullanılma sebebi devre plaketi üzerine farklı açılarla
yerleştirilerek datanın farklı yönlere dağıtılabilmesi içindir.
4. Aktarıcıdan çıkan inferruj data, kendi alıcısı TK19 u kesinlikle görmemeli ve
eşya, duvar gibi nesnelerden geri yansımamalıdır. Verici ledler gerekirse led
soketi içerisine alınarak veya başka meteryaller ile döndürüldükleri yöne
odaklanmalıdır. Aksi takdirde aktarıcı sonsuz döngüye girer.
19 / 19
YAK Protokolü Verici Data Gönderim Mantığı
Verici her şeyden önce kullanıcının tuş takımı, bilgisayar vb. yollarla data gönderim
isteğini beklemek zorundadır.
(Alıcılar kullanıcının keyfi yetene dek saf saf beklemektedirler ve can sıkıntısından
pil, elektrik vs. yemektedirler.)
Verici, kullanıcı talepte bulunduğunda, çıkışı HIGH yaparak 4096 us bekler veya 555
kullanılmadıysa modülasyona yönlenir.
(Alıcılar bu arada girişin “lojik 1” olmasıyla sayaçlarını ayarlarlar ve HIGH de geçen
süreyi saymaya başlarlar)
Verici; daha sonra iletişim kuracağı alıcının aL süresini sayacına yükler, çıkışı LOW
yaparak bu sürenin geçmesini bekler. 555 kullanılmadan modülasyon yapıldıysa,
zaten modülasyon dönüşünde çıkış LOW durumundadır.
(Alıcılar LOW ile birlikte sayaçlarını sıfırlar ve aL süresini saymaya başlarlar. Bu
aşamada HIGH süresini kontrol ederek 4096 us luk start olup olmadığına karar
verirler. Eğer bu zaman dilimi start değil ise aL sayaçlarını durdurarak işlem
başlangıcına dönerler.)
Verici daha sonra aynı aL değeri ile doğrulama bilgisini (bH) göndermek üzere çıkışı
tekrar HIGH yapar ve bH süresinin dolmasını bekler veya modülasyon rutinine
yönlenir.
Modülasyon rutini için örnek ; (örnek tüm alıcılarla iletişim kurulduğu varsayılarak
verilmiştir.)
mTk = 513 us / 27 us = 19 palsden sonra geri döner.
20 / 20
(Alıcılar HIGH ile birlikte aL süresini kaydederek sayaçlarını sıfırlarlar ve bH süresini
saymaya başlarlar)
Verici aynı sayaç ile alıcıların data kontrolünü yapması ve ilgili alıcının data alımına
hazırlanması için çıkışı LOW da yaparak bekler. Bu arada kendi bit sayacını sıfırlar.
(Alıcılar LOW ile birlikte aL ve bH sürelerinin aynı olup olmadığını kontrol ederler.
Aynı değilse 25 ms bekleme rutininden sonra işlem başlangıcına dönerler. Aynı ise
kendi dataları ile aL yi kontrol ederler. Buda tutmuyorsa yine 25 ms bekleme ve işlem
başlangıcı. Tutuyor ise iletişimin kendileri ile kurulmak istendiğini anlarlar ve
sayaçlarını K noktasını tutturacak şekilde ayarlayarak, bit sayacını da sıfırlayarak 4-8
bitlik paket alımına hazırlanırlar)
İlk gidecek bit en sağdaki bittir (LSB). Verici gönderilecek bitin “0” veya “1” olmasına
göre sayaçlarını ayarlayarak çıkışı HIGH yapar ve A0 veya A1 süresinin dolmasını
bekler veya modülasyon rutinine yönlenir.
4 bitlik tablodaki ilk bit “1” bu durumda A1=1026 us
mTk = 1026 us / 27 us = 38 palsden sonra geri döner.
HIGH süresi sonunda çıkışı LOW yaparak B0 veya B1 süre dolumu bekler. Bu arada
kendi bit sayacını 1 artırır.
(İlgili alıcı K alanında datayı kontrol ederek bitin “1” olduğunu algılar ve bit sayacı=0
olduğu için gelen biti gelen_data_registerinin 0. bitine kaydeder ve bit sayacını 1
artırır. )
Verici kendi bit sayacını kontrol ederek iletişimin tamamlanıp tamamlanmadığını
kontrol eder. Tamamlandıysa alıcıların içinde data alındığında işlenecek en uzun
program süresi ne kadar ise en az o kadar bekleme rutininden sonra kullanıcının
21 / 21
yeni gönderim isteğini bekler. Bu işlemler zinciri her bit gönderiminden sonra
yapılmalıdır.
Bizim data transferimiz daha tamamlanmadığı için, vericinin bit sayacı bir olmuştur.
Bu yüzden gönderilecek 4-8 bitlik datanın 1. bitinin “0” veya “1” olmasına göre
sayaçlarını ayarlar çıkışı HIGH yapar ve A0 veya A1 süresinin dolmasını bekler veya
modülasyon rutinine yönlenir.
4 bitlik tablodaki ikinci bit “0” bu durumda A1=513 us
mTk = 513 us / 27 us = 19 palsden sonra geri dönerek çıkışı LOW da bırakır.
HIGH süresi sonunda çıkışı LOW yaparak B0 veya B1 süre dolumu bekler. Bu arada
kendi bit sayacını 1 daha artırır.
(İlgili alıcı K alanında datayı kontrol ederek bitin “0” olduğunu algılar ve bit sayacı=1
olduğu için gelen biti gelen_data_registerinin 1. bitine kaydeder ve bit sayacını 1
daha artırır)
Bu şekilde verici ile ilgili alıcı 4-8 bitlik datayı kendi aralarında hallederler.
Sadece tek bir alıcıyı yönlendireceğinizde değişiklik aL, bH ve bL zamanlarında
olacaktır. Bu süreler “cihaz kodu” özelliği taşıdığından sizin belirlediğiniz ve alıcınızın
anlayacağı şekilde 513 us un katları olarak siz ayarlayacaksınız. Dikkat edilecek
nokta çıkışın boşta iken sürekli LOW da kalmasıdır.
22 / 22
YAK Protokolü Alıcı Data Alım Mantığı
4 bitlik transferde aL süresi 513 us dur. 4 bitlik iletişimde tüm alıcılar paket alımına
hazırlanır. Alıcılar 4 bitte toplam 16 değişik komutu algılayarak tümü aynı komutu
işlerler. Tüm alıcıları aç, Tüm alıcılar stand-by vb.
8 bitlik transferde aL süresi 513 us hariç, 513 us un katları şeklinde değişkendir. aL
süresi diğer protokollerdeki cihaz kodu yerine kullanılır. 8 bitlik iletişimde tüm alıcılar
aL ve bH sürelerini değerlendirerek iletişimin kendileriyle kurulmak istenip
istenmediğine karar verirler. İletişim kurulacak alıcı hariç diğer alıcılar 25 ms bekleme
konumuna geçerek iletişimin ilgili alıcıyla yapıldığı süre boyunca data kontrolü
yapmazlar. 25 ms bekleme süresi dolumunda data kontrolüne yeniden başlarlar.
Alıcılar 8 bitte toplam 256 değişik komutu algılayarak iletilen komutu işlerler.
4 veya 8 bitlik transferde alıcılar aL süresi sonunda sayaçlarını sıfırlayarak bH
süresini tekrar sayarlar. aL = bH ise ve bu zaman dilimi kendilerini ilgilendiriyor ise bL
içerisinde sayaçlarını ayarlayarak 4-8 biti alım hazırlığını yaparlar.
K aralığında gelen bitin kontrolü yapılır. Bu kontrolde giriş portu “lojik 1 “ olursa data
biti “1” dir, olmazsa “0” dır. Bu kontrol toplamda 4-8 defa yapılarak 4-8 bitlik data
alınır ve işlenir.
Kontrol K zamanının başlama (514. us) veya bitişine (1025. us) yakın değil de
ortalarında yapılır ise, yazılım hatası nedeniyle olabilecek kaymalar sonucu
oluşabilecek hatalar engellenebilir.
Diğerleri ile aynı işlemleri yapmayacak alıcılar (4 bitlik data transferine katılmayacak
olanlar) aL ve bH sürelerinde 513 us kontrolü yapmayabilirler.
23 / 23
YAK Protokolü Modülasyon Rutini
(555 kullanılmadığında verici için)
•
Çıkış “lojik 1” yapılır.
•
Toplamda 7 us geçene dek beklenir. (mH)
•
Çıkış “lojik 0” yapılır.
•
Toplamda 20 us geçene dek beklenir. (mL)
•
mTk sayacı kontrol edilir.
•
mTk sayısı tamamlandıysa geri dönülür.
•
mTk sayısı tamamlanmadıysa aynı işlemler için rutine tekrar girilir.
24 / 24
Hesaplamalar, Formüller ve Diğer Açıklamalar
555 bu devre ile astable modunda kullanılmaktadır.
Çıkış frekansı için kullanılacak formül
1440
f
=
(R1+2R2) x C1
25 / 25
Duty cycle için kullanılacak formül (mT, mH ve mL %)
R2
D
=
R1+2R2
İstediğimiz frekans için R2+RV1 toplamını bulmak için kullanılacak formül
1440
R2+RV1
=
(
- R1 ) / 2
C1 x f
Şemadaki elemanların değerlerini aşağıdaki gibi kullandığımızda ;
R1
= 3K3 Ohm
R2
= 1K8
RV1
= 1K
C1
= 4.7 nF
Örneğin 36 kHz çıkış frekansı istersek
1440
R2+RV1
=
(
- 3.3K ) / 2 = 2.6053K
4.7nF x 36f
Bu durumda çıkış frekansının 36 kHz olması için R2 direnci ve RV1 potu toplam
değerinin 2.6053K olması gerekmektedir.
26 / 26
Duty Cycle ise ;
2.6053K
D
=
= %30.61 olacaktır.
3.3+(2 x 2.6053K)
Bu devre ile alınacak Minumum / Maximum değerler
Pot Değeri 0 K iken
f=
1440 / (3K3 + (2 x 1K8) x 4.7nF =
D=
1K8 / (3K3 + (2 x 1K8))
=
44.4033
% 26.08
Pot Değeri 1K iken
f=
1440 / (3K3 + (2 x 2K8) x 4.7nF =
D=
2K8 / (3K3 + (2 x 2K8))
=
34.4250
% 31.46
Devre, elemanların bu değerleri ile çıkış frekansı R2 ye seri bağlı 1K pot kullanılarak,
34.42 ile 44.40 kHz aralığında ve %31.46 ile %26.08 arasında duty cycle
ayarlanabilmektedir.
555 in 4 nolu reset ucu mikrokontrolden gönderilen inferruj datasının giriş ucu, 3 nolu
ucu ise inferruj verici ledi tetikleyen ucudur.
Mikrokontrol çıkışında direkt olarak inferruj ledini kullanmayarak 555 entegresini
kullanmamızın sebebini ise RC5 protokolünü örnek vererek şöyle açıklayabiliriz;
27 / 27
RC5 protokolü 36 kHz de çalışır. Bu frekans için ;
1.000.000 us / 36.000 us = 27.778 us modülasyon gerekmektedir. (noktadan sonrası
ns dir, yani değer 27 us ile 28 us arası, 28 us a yakındır)
Buna göre ise RC5 için 1 / 4 (%25) duty cycle kullandığımızda ;
27.778 us %25 i = 6.944 us high darbesi ve 27.778 us – 6.944 us = 20.834 us low
da bekleme gerekmektedir ve bit süresini tutturmak için, her bitte bu palslerin 32 defa
tekrarlanması gerekmektedir.
27.778 x 32 = 888.896 us bir bit içerisindeki HIGH süresini verir. Aynı süre ile de
LOW gerekeceğinden, RC5 protokolünde bir bitin gerçek zamanı bu 1,778 ms dir.
Bu sonuca göre biz, 555 i kullanarak çıkışı sadece high veya low yaparız.
Modülasyon işini 555 yapar.
Çıkışta 555 kullanmadan modülasyonu yazılımla da çözebilirsiniz.
28 / 28
İnferruj Ledi Sürmek
Transistör kullanmadan ledi sürmeniz ve / veya birden fazla led kullanmanız
mümkündür. R4 Direnci bu konularda size ayar imkanı verir. Ancak çıkışta 555 i
kullanmadan ledi sürmek isterseniz mutlaka transistör kullanın.
29 / 29
İnferruj Data Gönderim / Alım Mantığı
İnferruj data tabloda gösterildiği şekilde teslenmiş (inverter) olarak alınır.
30 / 30
Vericinin Hangi Protokolü Kullandığını Bulmak
Vericinin protokolünü bulmanın yolu Start, Lead-in yada Data Biti sürelerini yani
ilk data süresini kontrol etmektir. Aşağıdaki HIGH süreleri incelendiğinde birbirini
tutacak bir değerin olmayışından LOW süresini kontrol etmenin gereği yoktur.
•
ITT Protokolü ( ilk data = Lead-in )
5 us
>=
Lead-in HIGH Süresi
=< 15 us
200 us
>=
Lead-in LOW Süresi
=< 400 us
•
SHARP Protokolü ( ilk data = Data Biti )
250 us
>=
Data HIGH Süresi
=< 400 us
600 us
>=
Data LOW Süresi
=< 1750 us
•
NOKIA Protokolü ( ilk data = Start Biti )
450 us
>=
Start HIGH Süresi
=< 550 us
2450 us
>=
Start LOW Süresi
=< 2550 us
•
RC5 Protokolü ( ilk data = Start Biti )
850 us
>=
Start HIGH Süresi
=< 950 us
850 us
>=
Start LOW Süresi
=< 950 us
31 / 31
•
SIRC Protokolü ( ilk data = Start Biti )
2350 us
>=
Start HIGH Süresi
=< 2450 us
550 us
>=
Start LOW Süresi
=< 650 us
•
NEC Protokolü ( ilk data = Start Biti )
8.90 ms
>=
Start HIGH Süresi
=< 9.10 ms
4.40 ms
>=
Start LOW Süresi
=< 4.60 ms
32 / 32
İnferruj Datayı Kopyalamak
Alıcı modülünüzün programını ve donanımını Data kopyalama mönüsü veya
tuşuna uygun hale getirdiğinizde inferruj datayı kopyalamanız mümkündür.
Burada programınız data kopyalama modu seçildiğinde kopyalama rutinine
yönlenmeli ve Start, Lead-in veya Data biti kontrolü için beklemeye başlamalıdır. Bu
bilgilerden herhangi biri alındığında (yani kopyalanacak vericinin herhangi bir tuşuna
basıldığında) bu bilginin hangi protokole uyduğunu Start LOW süresi içerisinde tespit
ederek data alımına hazır hale gelebilmelidir.
Ancak ilk bilgi geldiğinde bu bu protokolün SHARP ait olduğunu tespit etmesi
halinde, bu protokolde start biti olmaması nedeniyle gelen bu ilk bilgiyi cihaz kodunun
ilk biti olarak kaydedebilmeli ve son gelen iki bitin kontrol biti olduğunuda bilmesi
gerekmektedir.
Dikkat edilecek diğer bir noktada tespit edilen protokolün NOKIA veya RC5
olması durumunda Start biti gelmesine karşın ilk bitin ikinci yarısında HIGH durumu
oluştuğunu bilerek NOKIA için 500 us ve RC5 için 900 us LOW bilgisinin HIGH den
önce olduğunu anlayabilmesi gerekmektedir.
Bundan sonraki aşama bu vericinin kullandığı protokol bilgisi dahilinde cihaz
kodunun toplam sayısı ve ardı sıra gelen bitlerden hangileri olduğu tespit ederek
vericinin yolladığı cihaz kodunu tespit edebilmelidir.
Son aşama ise aynı protokol bilgisi dahilinde tuş kodunun toplam sayısını ve
yine ardı sıra gelen bitlerden hangileri olduğu tespit ederek vericinin yolladığı tuş
kodunu da tespit edebilmelidir.
33 / 33
Program bu şekilde kopyalanacak vericinin her seferinde tek bir tuşunu
kopyalayabilme yeteneğine sahipken son aşamanın uygulanması yerine sizin
programınız tarafından ilgili protokolün tüm tuş komutları bilinmesi halinde son
aşama yapılmadan, kopyalanacak vericinin protokolünün ve cihaz kodunun tespit
edilmesi yeterli olacak ve kopyalama devreniz, yazılımınız sayesinde o kumandanın
tüm yeteneklerine sahip olabilecektir.
Kısaca sonlandırmak gerekirse kopyalanacak vericinin tek bir tuşuna
basılması sizin yazılımınız tarafından vericiye ait tüm bilgilere sahip olunması için
yeterli olacaktır. Ancak kopyalanan data yollanırken ITT protokolü için Lead-out ve
SHARP protokolü için son iki kontrol bitinin yollanılması da ayrıca gerekecektir.
34 / 34
İnferruj Datayı Bilgisayardan Okumak
İnferruj datayı aşağıdaki şema yardımı ile bilgisayarınızın RS232 portundan
izleyebilirsiniz. Visual Basic gibi ileri seviye programlama dilleri ile yazacağınız
program, sizi asm ile uğraşmaktan kurtarır. TK19 beslemesini RS232 portundan
almakta olup, ayrıca besleme devresine ihtiyaç duymaz.
Dikkat !
RS232 portu devrede yapabileceğiniz hatalı bağlantılar nedeni ile
hasar görebilir.
35 / 35
İnferruj Datayı Bilgisayardan Göndermek
İnferruj datayı aşağıdaki şema yardımı ile bilgisayarınızın RS232 portundan
hem izleyebilir hem de alıcı ünitelere data yollayabilirsiniz. TK19 ve Led beslemesini
yine RS232 portundan almakta olup, ayrıca besleme devresine ihtiyaç duyulmaz.
Dikkat !
RS232 portu devrede yapabileceğiniz hatalı bağlantılar nedeni ile
hasar görebilir.
36 / 36
Bilgisayar Portları
Bilgisayarlar ile iletişim pek çok yolla sağlanabilir. En yaygın kullanılanlar Seri
ve Paralel portlardır. Her iki iletişim yönteminin birbirine göre avantaj ve
dezavantajları vardır. Bunların dışında Oyun Portu, USB portu ve ethernet, I/O
kartları, modemler gibi ek donanımlar ile PCI genleşme yuvaları kullanılabilir.
Seri Port
37 / 37
Pek çok dış ünitenin kullandığı port tur. Portun ismindende anlaşılacağı gibi
iletişim seri yapılmaktadır. Hatasız data transferi için iletişim hızı alıcı ve verici için
aynı olmak zorundadır. İletişim hızları arasındaki fark hata oranını verir. Bu tip iletişim
hızı farlılıklarında kontrol bitleri kullanılarak hatalı data transferleri engellenebilir. Seri
portlar bilgisayar üzerinde 9 pin ve/veya 25 pin erkek soket şeklinde olabilir. Yeni
bilgisayarlarda 9 pin erkek soket standart olarak kullanılmaktadır. Seri iletişim
maksimum 20kb/s hızında ve yaklaşık 16 metre mesafede yapılabilir. Mesafe çevre
baskıları, tasarım, kablo gibi nedenlerle değişiklik gösterebilir. İletişimde data
paketleri değişik şekillerde kullanılabilir. Ancak genel kullanım start biti, 8 data biti ve
stop biti şeklindedir.
İletişim +/- 15 volt seviyesinde gerçekleşir. –3 volt ile –15 volt arası Mark yani
lojik “1”, +3 volt ile +15 volt arası space yani lojik “0” olarak kabul edilir. –3 volt ile +3
volt arası kararsız bölgedir.
Seri Portların adreslerini öğrenmek
Adresleri, bilgisayarınız açılırken Bios Penceresinde Serial Port(s) satırından
öğrenebileceğiniz gibi bilgisayar açıldıktan sonra aşağıdaki yolları izleyerekte
öğrenebilirsiniz.
COMx adresini öğrenmek istediğiniz COM portun numarasıdır. COM1, COM2 gibi.
38 / 38
Windows 98 için denetim masasından sistemi tıklayarak açılan pencerede
“aygıt yöneticisi” sekmesi altında, “bağlantı noktaları” seçeneği seçilerek “iletişim
bağlantı noktası (COMx)” aktif hale getirilip alttaki “özellikler” butonu ile açılan
pencerede “kaynaklar” sekmesi altında “giriş/çıkış aralığı” satırındaki ilk değer
bilgisayarınızın Seri portu COMx için kullandığı adrestir.
Windows XP için denetim masasından sistemi tıklayarak açılan pencerede
“donanım” sekmesi altında, “aygıt yöneticisi” butonu ile açılan pencerede “bağlantı
noktaları” seçeneği seçilerek “iletişim bağlantı noktası (COMx)” aktif hale getirilip sağ
tıklama ile açılan pencerede “özellikler” menüsü seçilerek açılan pencerede
“kaynaklar” sekmesi altında “G/Ç aralığı” satırındaki ilk değer bilgisayarınızın Seri
portu COMx için kullandığı adrestir.
RS232 Portunu Visual Basic 6 ile kullanım
Bunun için mscomm32.ocx dosyasında bulunan seri iletişim kontrolü Mscomm
Control nesnesini kullanmamız gerekiyor. Bu nesneyi kullanmak için “Toolbox” u sağ
tıklayarak açılan menüden “Components” menüsünü seçerek açılan pencerede
“Microsoft Comm control 6.0” ın solundaki onay kutusunu işaretleyerek ve tamam
butonuna basarak projemize dahil ediyoruz. Bu nesneyi seçerek forum üzerine
koyuyoruz. Ayarları bu nesne üzerine sağ tıklayarak açılan menüde “Properties”
menüsü ile yapabileceğimiz gibi aşağıdaki kodlar ile kod satırlarında da yapabiliriz.
FormX deki X Mscomm nesnesinin bulunduğu form numarası olacak. (Form1 gibi)
Kodlar
forma
ait
kod
penceresinde
kullanılıyor
ise
satırda
FormX
kısmı
kullanılmayabilir.
39 / 39
•
Kullanılacak Portu seçmek için
FormX.MSComm1.Commport = Port Numarası
•
Seçilen port üzerinde iletişim hızını ve tipini belirlemek için
FormX.MSComm1.Settings ="300,n,8,1"
300 Baudrate, parity biti yok, data bit sayısı 8 ve stop bit sayısı 1
•
Seçilen Portu açmak için
FormX.MSComm1.PortOpen = True
•
Seçilen Portu kapatmak için
FormX.MSComm1.PortOpen = False
•
Seçilen port için data alımında tampon hafıza sayını belirlemek için
FormX.MSComm1.InputLen= Sayı
•
Seçilen porttan data alımı yapabilmek için
Degisken = FormX.MSComm1.Input
•
Seçilen porta data gönderimi yapabilmek için
FormX.MSComm1.Output = Degisken
Konu ile ilgili birçok kontrol, özellik ve hata durumlarını içeren fonksiyonlar
bulunmaktadır. Tüm bunları MSDN kütüphanesinde bulabilirsiniz. Bu kütüphane VB6
standart setup ile birlikte kurulmaz. Eğer kurulu ise MSDN kütüphanesine Visual
Basic yardımı ile ulaşabilirsiniz.
40 / 40
RS232 Portu kullanımı için örnek devre şeması
Bizim genellikle mikrokontrol uygulamalarında kullandığımız RS232 portuna ait
üç pin bulunmaktadır. Bunlar 5 nolu GND pini, bilgisayarın data gönderiminde
bulunduğu 3 nolu pin TX, ve bilgisayarın data aldığı 2 nolu RX pinidir. 3 nolu TX pini
bilgisayar donanımı tarafından mark durumunda tutulur. Bizimde 2 nolu RX pinini
mark durumunda tutmamız gerekir.
İletişim için MAX232 gibi hazır entegre devreler kullanılabileceği gibi maliyeti
500 bin TL yi bulmayan basit tasarımlarda yeterli olur. MAX232 bağlantı şemasını
parçanın katalogunda bulabilirsiniz. Devrenizde +5 volt güç kullandığınız ve –Ve
kullanmadığınız düşünülerek aşağıdaki gibi bir bağlantı ile RS232 portunu
kullanabilirsiniz. Bu devreyi RS232 soketinin plastik kapağı içine rahatlıkla
sığdırabilirsiniz.
İlk olarak RS232 portunun 2 nolu RX pinini mark durumunda yani –Ve de
tutmamız gerekecek. Bunun için bilgisayardan aldığımız –Ve yi kullanacağız. D1 ve
C1 in bağlantı noktası bize –Ve yi sağlayacak. C1 in + kutbu GND ye gelecek. R1 ise
RX pinini -Ve ye asarak mark durumunu elde etmek için.
41 / 41
Şimdi sıra +/- 15 den izole edilmiş, GND ve +5 olarak datayı alabilmede.
Bunun içinde R2 üzerinden Q1 sürülecek. İstenmeyen tetiklenmelerin olmaması için
Q1 in beyzi R3 ile pull-down. Q1 in kollektörü R4 ile pull-up ve Q1 ile R4 ün bağlantı
noktası bizim RX ucumuz. RS232 TX mark durumunda iken, RX data ucu lojik “1”,
space durumunda iken lojik ”0” olur.
Data yollayabilmemiz için Q2 transistörü R5 üzerinden sürülecek. İletişim
olmadığı zamanlarda RS232 RX pinini markta tutabilmek için Q2 sürülmemelidir.
RS232 RX için, TX data ucu lojik “0” iken space, lojik “1” iken mark durumu
oluşur.
RS232 iletişimde +3 volttan sonrası space olarak kabul edileceği için +5 volt
yeterli gelecektir. Ancak mesafe arttığında problem olabilir.
42 / 42
Şimdi sıra iletişimi görüntülemede. Bunun için bir adet kırmızı bir adet yeşil 3
mm led kullanılıyor ve aşağıdaki şekilde bağlanıp devre tamamlanıyor.
43 / 43
Tasarımla ilgili dikkat etmeniz gereken noktalar ;
1. RS232 den gelen kabloda kısa devre olması bilgisayarınızın seri
portunu kullanılamaz duruma getirebilir.
2. RS232 kablosunun bilgisayar tarafını bağlayın ve plastik muhafaza
soketini kapatın. Kablo olarak ben eski bir mouse kablosu kullandım.
Dış izolesi iyi 3 veya daha çok hat içeren kablo kullanabilirsiniz.
Bilgisayara bağlantı yapmadan 3 kabloyu ölçerek kısa devre ve/veya
açık devre olmadığından emin olun.
44 / 44
3. R1, D1 ve C1 den oluşan ilk şemayı kurun ve bilgisayar bağlantısını
yaparak RS232 RX noktasında ölçü aleti ile –Ve yi görün ve bilgisayar
bağlantısını çıkartın. Buraya kadar devrenizde besleme kullanmayın.
4. R2, R3, R4 ve Q1 den oluşan şemayı ilave edin. Bilgisayar bağlantısını
yapmadan devreye +5 volt verin ve RX data ucunda +5 voltu kontrol
edin.
5. R5 ve Q2 yi ilave ederek ve kontrol amacıyla TX data ucunu + 5 volta
bağlayarak yine bilgisayar bağlantısını yapmadan devreye +5 volt verin
ve RS232 RX noktasını kontrol edin. Küçük miktarda –Ve görmelisiniz.
Kontrol amacıyla TX data ucunu GND ye bağlayın ve tekrar RS232 RX
noktasını kontrol edin. Bu durumda + 5 volt görmelisiniz. TX data ucunu
boşa çıkartın.
6. R6,R7,D1 ledi ve D2 ledini ilave edin. Yine bilgisayar bağlantısını
yapmadan kontrol amacıyla TX data ucunu GND ye bağlayarak D1
ledinin yandığını ve RS232 TX noktasını +5 volta bağlayarak D2 ledini
yandığını kontrol edin. Bu bağlantıları tekrar iptal edin.
7. Buraya kadar tüm bunlar olduysa devreniz çalışıyor demektir. Ledleri
plaketinizin tersinden yani lehim yüzünden bağlarsanız yerleştirmesi
daha kolay olur. Ledler benim devrede bu plaket üzerinde değil.
8. RS232 soketini içerisine alan plastik koruyucu kapağın içine oturacak
şekilde plaketi kesin. Ledlerin geldiği yerleri 3 mm matkap ucu ile delin
ve ledlerin bu deliklerden dışarı çıkmasını sağlayacak şekilde devreyi
bu kapak içerisine yerleştirerek kapatın.
9. Her iki tarafta kablonun çekilerek kopmasını engelleyici sıkıştırıcılar
bulunur. Bunları kablonun devre üzerinden çekilemeyeceği şekilde
ayarlayarak mutlaka bağlayın.
45 / 45
10. RX data ucu devre üzerinde pull-up durumundadır. Bu ucu
mikrokontrole bağlarken pull-up veya pull-down yapılmış bir porta
bağlamayın. Eğer sip direnç kullanımı gibi nedenler ile bu mümkün
değil ise pull-up durumundaki bir porta R4 direncini iptal ederek
bağlayın.
11. Devreyi içine koyduğunuz kısıma “Modül” diğer tarafa “PC” gibi bir yazı
yazın veya etiket yapıştırın. Çünkü artık hangisinin nereye takılacağı
önemli.
Artık bu kabloyu kullanacağınız devre üzerindeki erkek sokete takarak 3
pini direk mikrokontrole bağlamanız yeterli.
46 / 46
Paralel Port
Genellikle yazıcının bağlı olduğu porttur. Ancak yeni yazıcıların bir çoğu
paralel port yerine USB portu kullanmaktadırlar.
8 Data pini, 5 status (durum) pini, 4 kontrol pini ve 8 GND pini olmak üzere
toplam 25 pinden oluşur. Bilgisayar üzerinde 25 pin dişi soket şeklindedir. Genel
olarak data ve status portu bilgisayardan data çıkışı, kontrol portu data girişi olarak
kullanılır. Tüm portlar hem giriş hem çıkış olarak kullanılabilirler. LPT portu 25 pin
olmasına karşın yazıcı soketi 36 pindir ve toplam 35 kablo iletişimi sağlar. Genel
standart olarak kablo renkleri ve bağlantısı şu şekildedir;
47 / 47
Renk
Kablo Sayısı
LPT Portuna Bağlantı Pinleri
Siyah
7
1,2,3,4,5,6,7
Kırmızı
7
8,9,10,11,12,13,18
Yeşil
7
14,15,16,17,19,22 ve bir tane boş
Sarı
3
20,23,23
Beyaz
3
19,22,25
Kahverengi
3
21,24,25
Mavi
3
20,24,25
Turuncu
3
21,24,25
Toplam
36
.
.
. .
LPT Portlarının adreslerini öğrenmek
Adresleri, bilgisayarınız açılırken Bios Penceresinde Parallel Port(s) satırından
öğrenebileceğiniz gibi bilgisayar açıldıktan sonra aşağıdaki yolları izleyerekte
öğrenebilirsiniz.
LPTx adresini öğrenmek istediğiniz LPT portunun numarasıdır. LPT1, LPT2
gibi.
Data portu temel adresi kullanır. Durum portunun adresi “temel adres+1”,
kontrol portunun adresi ise “temel adres+2” dir.
Windows 98 için denetim masasından sistemi tıklayarak açılan pencerede
“aygıt yöneticisi” sekmesi altında, “bağlantı noktaları” seçeneği seçilerek “ECP yazıcı
bağlantı noktası LPTx” aktif hale getirilip alttaki “özellikler” butonu ile açılan
pencerede “kaynaklar” sekmesi altında “giriş/çıkış aralığı” satırındaki ilk değer
bilgisayarınızın LPT portu için kullandığı temel adrestir.
48 / 48
Windows XP için denetim masasından sistemi tıklayarak açılan pencerede
“donanım” sekmesi altında, “aygıt yöneticisi” butonu ile açılan pencerede “bağlantı
noktaları” seçeneği seçilerek “ECP yazıcı bağlantı noktası LPTx” aktif hale getirilip
sağ tıklama ile açılan pencerede “özellikler” menüsü seçilerek açılan pencerede
“kaynaklar” sekmesi altında “G/Ç aralığı” satırındaki ilk değer bilgisayarınızın LPT
portu için kullandığı temel adrestir.
LPT Portuna data gönderimi
Visual Basic te data gönderimi OUT ADRES,DATA
C de data gönderimi OUTP (ADRES,DATA); şeklinde yapılabilir.
LPT Portundan data alımı
Visual Basic te ve C de data alımı DEGISKEN = INP(ADRES) şeklinde yapılabilir.
Not : Bu komutların kullanımı ek dosya gerektirebilir.
LPT Portunda Data Kullanımları
Data portu 8 bitten oluşan ve terslenmiş biti olmayan tam bir Byte tır. Alınan
değer hiçbir işleme tabi tutulmadan işlenebilir.
49 / 49
Durum portu 5 bittir ve soket üzerindeki 11 nolu pin terslenmiştir.
Kullanılmayan üç bit 0. 1. ve 2. bitlerdir. 3.4.5. ve 6. bitler normal ve 7. bit terslenmiş
durumdadır. Gönderilecek değerler ve alınan değerler işlenirken bunlar gözönünde
bulundurulmalı, maskeleme ve bit kaydırma yöntemleri ile değerler doğrultulmalıdır.
Kontrol portu 4 bittir ve soket üzerindeki 1. 14. ve 17. pinler terslenmiştir.
Kullanılmayan dört bit 4. 5. 6. ve 7. bitlerdir. 2. bit hariç diğer üç bit terslenmiş
durumdadır. Gönderilecek değerler ve alınan değerler işlenirken bunlar gözönünde
bulundurulmalı ve maskeleme yöntemleri ile değerler doğrultulmalıdır.
50 / 50
MPLAB IDE Kullanım Kılavuzu
51 / 51
BAŞLANGIÇ AYARLARI
1. CONFIGURE menüsü SELECT DEVICE seçeneği ile programın hangi PIC
için
yazılacağı
seçilir.
Seçimini
yaptığınız
PIC
için
hangi
özellikleri
kullanabileceğiniz, pencerenin altındaki alanda yeşil renkli daire işareti ile
gösterilir. Kırmızı renkli daire ise o PIC için kullanılamayacak özelliklerdir.
2. CONFIGURE menüsü CONFIGURATION BITS penceresi açılır ve osc tipi,
wdt on/off vs. istenilen seçenekler ayarlanır ve pencere kapatılır.
3. DEBUGGER menüsü SETTINGS seçeneği ile açılan pencerede PIC çalışma
hızı, wdt zaman aşımı sonucu, breakdown özellikleri, MCLR Pull Up gibi
seçenekler ayarlanıp pencere kapatılır.
4. CONFIGURE menüsü SETTINGS seçeneği ile açılan pencerede FILE
menüde listelenecek son açılan dosya/workspace sayısı, otomatik kayıt
süresi, derlemeden sonra kayıt ve MPLAB ı çalıştırma ve kapatmada
istenilen özellikler gibi istenilen ayarlar yapılıp pencere kapatılır.
5. EDIT menüsü PROPERTIES seçeneği ile açılan pencerede satır numarası
görüntüleme, dosya koruma, çift klikle BREAKPOINT oluşturma ve iptali,
yazı tipi ve renklendirme, tab ayarları vb. özellikler ayarlanır.
52 / 52
PROJE / DOSYA OLUŞTURMA
1. PROJECT menüsü NEW seçeneği seçilir. Açılan pencerede NAME bölümüne
projenin ismi, DIRECTORY bölümüne projenin hangi klasörde tutulacağı
yazılır veya BROWSE tuşu ile açılan pencerede klasör bulunup işaretlenir ve
OK tuşuna basılır. ( Bu işlemden sonra başlığında ve ilk satırında projenizin
ismini ve yolunu listeleyen WORKSPACE penceresi SOURCE FILES,
HEADER FILES, OBJECT FILES, LIBRARY FILES VE LINKER SCRIPTS
menüleriyle açılır.)
2. Daha önceden yazdığınız asm kodları var ise WORKSPACE penceresindeki
SOURCE FILES menüsü üzerinde sağ tıklayarak ADD FILES seçeneği
sayesinde ( PROJECT menüsündeki ADD FILES TO PROJECT seçeneğide
aynı işi yapar) dosyanızı ekleyip, alt menü olarak listelenen dosya adının
üzerinde
sağ
tıklayıp
EDIT
seçeneği
ile
kodların
görüntülenmesini
sağlayabilirsiniz.
3. Kodları yeni yazmaya başlıyorsanız FILE menüsünden NEW seçeneği ile yeni
kod penceresi açılır ve yine FILE menüsündeki SAVE AS seçeneği ile yeni
dosyaya isim verilip kaydedilir. ( dosya uzantısı vermezseniz dosyanız asm
olarak değil header dosyası tipinde ( h ) uzantılı kaydedilir. ) Bu dosya 2.
bölümde anlatıldığı gibi SOURCE FILES a eklenir. (dosya görüntülenmekte
olduğu
için
eklemeden
sonrakiler
yapılmaz.)
Artık
kodları
yazmaya
başlayabilirsiniz. Bu dosyalar FILE menüsündeki SAVE, SAVE AS, ve SAVE
ALL seçenekleri ile kaydedilir.
4. PROJECT menüsü SAVE PROJECT seçeneği ile proje, FILE menusü SAVE
WORKSPACE ile wokspace kaydedilir.
53 / 53
MPLAB KULLANIMINDA ASSEMBLY YAZIM KOLAYLIKLARI
KISALTMA AÇIKLAMALARI
o k
Etiket ( Adı veya Adresi )
o f
Register / Değişken ( Adı veya Adresi )
o d
Sonucun atanacağı yer. ( W Register veya f )
REGISTER / DEĞİŞKEN İÇİN BANK BULMA VE DEĞİŞTİRME
BCF/BSF
STATUS,RP0/RP1
BCF/BSF
STATUS,RP0/RP1 yazımı yerine
BANKSEL
f
İşlem yapacağınız registerin / değişkenin adresini otomatik bulur ve STATUS
bitlerini ona göre ayarlar. Değişkenin adresi değişse bile her derlemede yeniden
kontrol edilerek düzeltilir.
ETİKET İÇİN BANK BULMA VE DEĞİŞTİRME
BCF/BSF
PCLATH,4
BCF/BSF
PCLATH,3
yazımı yerine
PAGESEL
k
Çağrı / yönlenme yapacağınız etiketin adresini otomatik bulur ve PCLATH bitlerini
ona göre ayarlar. Etiketin adresi değişse bile her derlemede yeniden kontrol edilerek
düzeltilir.
54 / 54
ETİKET İÇİN BANK BULMA VE DEĞİŞTİRME + PROGRAM
DALLANMASI
BCF/BSF
PCLATH,4
BCF/BSF
PCLATH,3
GOTO
k
yazımı yerine
LGOTO
k
Yönlenme yapacağınız etiketin adresini otomatik bulur ve PCLATH bitlerini ona
göre ayarlayarak program dallanmasını yapar. Etiketin adresi değişse bile her
derlemede yeniden kontrol edilerek düzeltilir.
ETİKET İÇİN BANK BULMA VE DEĞİŞTİRME + PROGRAM ÇAĞRISI
BCF/BSF
PCLATH,4
BCF/BSF
PCLATH,3
CALL
k
yazımı yerine
LCALL
k
Çağrı yapacağınız etiketin adresini otomatik bulur ve PCLATH bitlerini ona göre
ayarlayarak program çağrısını yapar. Etiketin adresi değişse bile her derlemede
yeniden kontrol edilerek düzeltilir.
STATUS C BAYRAĞI=1 İSE PROGRAM DALLANMASI
BTFSC
STATUS,C
GOTO
k
yazımı yerine
BC
k
C Bayrağı 1 ise program dallanması yapılır, 0 ise bir sonraki satır işlenir.
55 / 55
STATUS C BAYRAĞI=0 İSE PROGRAM DALLANMASI
BTFSS
STATUS,C
GOTO
k
yazımı yerine
BNC
k
C Bayrağı 0 ise program dallanması yapılır, 1 ise bir sonraki satır işlenir.
STATUS C BAYRAĞI=1 TESTİ
BTFSC
STATUS,C yazımı yerine
SKPNC
C Bayrağı 1 ise komuttan sonraki birinci satır, C Bayrağı 0 ise ikinci satır işlenir.
STATUS C BAYRAĞI=0 TESTİ
BTFSS
STATUS,C yazımı yerine
SKPC
C Bayrağı 0 ise komuttan sonraki birinci satır, C Bayrağı 1 ise ikinci satır işlenir.
STATUS Z BAYRAĞI=1 İSE PROGRAM DALLANMASI
BTFSC
STATUS,Z
GOTO
k
yazımı yerine
BZ
k
Z Bayrağı 1 ise program dallanması yapılır, 0 ise bir sonraki satır işlenir.
56 / 56
STATUS Z BAYRAĞI=0 İSE PROGRAM DALLANMASI
BTFSS
STATUS,Z
GOTO
k
yazımı yerine
BNZ
k
Z Bayrağı 0 ise program dallanması yapılır, 1 ise bir sonraki satır işlenir.
STATUS Z BAYRAĞI=1 TESTİ
BTFSC
STATUS,Z
yazımı yerine
SKPNZ
Z Bayrağı 1 ise komuttan sonraki birinci satır, Z Bayrağı 0 ise ikinci satır işlenir.
STATUS Z BAYRAĞI=0 TESTİ
BTFSS
STATUS,Z
yazımı yerine
SKPZ
Z Bayrağı 0 ise komuttan sonraki birinci satır, Z Bayrağı 1 ise ikinci satır işlenir.
STATUS C BAYRAĞI=1 İSE DEĞİŞKEN İÇERİGİNİ ARTIRMA
BTFSC
STATUS,C
INCF
f,d
yazımı yerine
ADDCF
f,d
C Bayrağı 1 ise değişken içeriği bir artırılır, 0 ise bir sonraki satır işlenir.
57 / 57
STATUS C BAYRAĞI=1 İSE DEĞİŞKEN İÇERİGİNİ AZALTMA
BTFSC
STATUS,C
DECF
f,d
yazımı yerine
SUBCF
f,d
C Bayrağı 1 ise değişken içeriği bir azaltılır, 0 ise bir sonraki satır işlenir.
Konu ile ilgili diğer açıklamaları www.microchip.com İnternet adresindeki
30400e.pdf dosyasında bulabilirsiniz. Konu başlığı aşağıdadır.
MPASM™ and MPLINK™
PICmicro®
QUICK REFERENCE GUIDE
58 / 58
YAZILAN KODLARIN DERLENMESİ
1. PROJECT menüsü BUILD ALL seçeneği ile ( CTRL+F10 ) yazdığınız kodları
derleyebilirsiniz. Derleme sırasında MPASM v03.20.07 küçük pencerede
açılır. Derleme sonunda kod yazım hatası yok ise, derleme gösterge bandında
yeşil renk kırmızıya dönmez ve OUTPUT penceresinin son satırında BUILD
SUCCEEDED mesajı görüntülenir.
•
Bazı
işlem
komutlarında
(artırma,
eksiltme,
toplama,
çıkartma,
karşılaştırma vb.) sonucun gideceği yeri belirtmezseniz (“INCF
DEGISKEN , W” yerine “INCF
DEGISKEN” gibi), işlem sonucu W
registere değil değişkene atanır. OUTPUT penceresinde ilgili satırda ;
Using default destination of 1 (file) mesajı verir ve bunu hata olarak
görmez. Ancak sonucun W registere alınarak programın devam etmesi
isteniyor ise değişken içeriğinin değişiminden dolayı program hatalı
çalışır.
•
Hata mesajları MPLAB yardım dosyalarında detaylı olarak mevcuttur.
•
MPASM sadece kod yazım denetimi yapar. Yazdığınız kodlardaki
mantık hatalarını bulmaz !
•
HEX dosyası : Derleme başarılı ise proje dosyanız adıyla .HEX uzantılı
bir dosya oluşturulur (bu dosya PIC ‘e yüklenecek dosyadır) ve program
göstergesi (yeşil renkli sağ ok) çalışacak ilk satırın sol tarafına gelir.
•
ERR dosyası : Derleme sonucu hatalı ise OUTPUT penceresinde
görüntülenen çıktı .ERR uzantılı olarak kaydedilir ve bu pencere en
üstte kalır. ( Bu dosyada uyarı mesajlarıda yeralmaktadır. Örneğin
başka bir banktaki kodu CALL komutu ile çağırdığınızda, başka bir
59 / 59
banktaki koda GOTO komutu ile atlama yaptığınızda veya başka bir
banktaki registerde işlem yaptığınızda aşağıdaki gibi mesajlar ile satır
numarası ve dosya adı vererek uyarır.
Setting page bits ,
Crossing page boundary -- ensure page bits are set
Register in operand not in bank 0. Ensure that bank bits are correct
•
LST dosyası : Satır numarası, komutun hex karşılığı, değişkenlerin adı
ve adresleri, uyarı mesajları, sabitlerin adı ve değeri, çağrı ve dallanma
başlıklarının adı ve adresleri, her bankta kullanılan ve kullanılabilecek
hafıza
miktarının
gösterildiği
hafıza
haritası
ile
toplam
hafıza
kullanımının ve kullanılabilecek hafıza miktarının sayısal değerleri ve
toplam hata, mesaj sayıları hakkında bilgiler içerir.
•
XRF dosyası : Çağrı ve dallanma başlıklarının, bitlerin/değişkenlerin,
makroların, sabitlerin hangi dosyada oldukları, tiplerinin ne olduğu ve
hangi dosyanın hangi satırında kullanıldıkları veya içeriğinin hangi
satırda değiştirildiğini açıklayan bir dosyasıdır.
60 / 60
SİMULASYON TANIMLAMA
•
DEBUGGER
menüsü
SELECT
TOOL
seçeneği
altındaki
seçeneklerden seçtiğiniz PIC ile kullanabileceğiniz simulasyon seçeneği
işaretlenir. (PIC16FXX,16FXXX için MPLAB SIM seçeneğidir.)
SİMULASYON İZLEME PENCERELERİ
1. VIEW menüsü PROGRAM MEMORY : Satır numarası, hafıza adresi, komutun
hex karşılığı ve asm kodlarını aynı satırda takip edebileceğiniz bir pencere
açar. Alt kenardaki menü ile OPCODE HEX, MACHINE ve SYMBOLIC izleme
yapılabilir. Başlık satırında sağ tıklayarak görüntüleme değiştirilebilir.
2. VIEW menüsü SPECIAL FUNCTION REGISTER : Seçtiğiniz PIC ‘te yüklü
bulunan sabit registerlerin adreslerinin ve adlarının satırında içeriklerini binary,
hex, decimal ve char olarak izleyebilmenizi sağlar ve başlık satırında sağ
tıklayarak görüntüleme değiştirilebilir.
3. VIEW menüsü FILE REGISTER : Seçtiğiniz PIC ‘te yüklü bulunan sabit
registerlerlerle birlikte diğer adresleride, adres sıralaması ile hex ve ascii
olarak izleyebilmenizi sağlar. Alt kenardaki menü ile HEX ve SYMBOLIC
izleme yapılabilir. Başlık satırında sağ tıklayarak görüntüleme değiştirilebilir.
4. VIEW menüsü EEPROM : Seçtiğiniz PIC ‘teki kapasite kadar eeprom alanını
ascii ve/veya hex olarak izleyebilmenizi sağlar.
61 / 61
5. VIEW menüsü HARDWARE STACK : Seçtiğiniz PIC ‘teki yığın kapasitesi
kadar satırda geri dönüş adreslerini ve kaçıncı yığında olduğunuzu
izleyebilmenizi sağlar. ( Örneğin 16F877 için yığın kapasitesi max 8 seviyedir
ve kesme olduğu anda buda bir seviye yıgın işgal eder. Program hatası
nedeni ile bu seviye aşıldığında top stack yani ilk geri dönüş adresi silinir ve
program asla çağrıldığı ilk adrese dönemez.) Simulasyon sırasında limit seviye
aşılırsa STACK UNDERFLOW OCCURED mesajı ile çalışan program durur.
(Programın bu durumda durması için DEBUGGER menüsünden SETTINGS
Seçeneği altındaki yığın seviye kontrolünün açık olması gerekir.)
6. VIEW menüsü WATCH : Değişken, sabit izleme penceresidir. Registerleri ve
HARDWARE bit tanımlamalarınıda (I2C_STOP, P gibi) görüntüleyebilir. Tek
pencerede alt kenardaki seçenekler ile 4 değişik izleme oluşturulabilir. ADD
SFR ve ADD SYMBOL seçenekleri ile seçilen register, bit veya değişken,
seçili izleme penceresine atanır. Görüntüleme Adres, Ad, hex içerik şeklindedir
ve başlık satırında sağ tıklayarak değiştirilebilir. Pencere içerisinde sağ
tıklayarak atama silinmesi, kaydetme, yükleme, arama vb. işlemler
yapılabilir. ( kayıt yapmazsanız pencere kapatıldığında tüm atamalarınız iptal
edilir.)
62 / 62
SİMULASYON ZAMANI İZLEME
1. DEBUGGER menüsü STOPWATCH : Gerçek zamanlı süre takibini
izleyebilmenizi sağlar. Çalışan her komutun gerçek zaman karşılığını
hesaplayıp üst üste toplayarak gösterir.
2. ZERO seçeneği dilediğiniz anda süre takibini sıfırdan başlatır. CLEAR ON
RESET seçeneğini işaretlediğinizde simulasyonu her resetlediğinizde sayacı
sıfırlar.
63 / 63
SİMULASYONDA GİRİŞ / ÇIKIŞ PORTLARI
1. DEBUGGER menüsü STIMULUS : Açılan pencerede PIN STIMULUS
bölümüne geçilir. ADD ROW seçeneği ile yeni satır açılır. Boş satır üzerine
tıklanarak satır aktif edilir. PIN sutununda açılan pencerede ilgili pin seçilir,
ACTION sutununda seçilen pinin durumu belirlenir.
a-) High = Pullup,
b-) Low = Pulldown,
c-) Toggle = Kullanıcı belirler ( ENABLE sutunundaki FIRE seçeneği ile),
d-) Pulse = Darbe)
2. İstenen diğer pinlerde ayarlanarak SAVE seçeneği ile kayıt yapılır. MPLAB ‘ı
açtığınızda kaydettiğiniz bu PSTI uzantılı dosyayı, DEBUGGER menüsü
STIMULUS penceresindeki PIN STIMULUS bölümündeki LOAD seçeneği ile
tekrar yükleyerek tüm tanımlı pinleri bir defada yeniden yükleyebilirsiniz.
3. Tanımlamasını yaptığınız tüm pinler simulasyon sırasında belirlenen durum
tipinde tepki verir. Pin durumu TOGGLE seçiliyse simulasyonun herhangi bir
anında pinin durumunu değiştirebilirsiniz. FIRE seçeneğine bastığınızda pin
durumu 0 sa 1, 1 ise 0 olur. ( Değişikliğin uygulanabilmesi için simulasyonun
bir adım ilerlemesi gerekir. )
64 / 64
SİMULASYONU ÇALIŞTIRMA
1. DEBUGGER menüsü RUN ( F9 ) : Programı PIC üzerine yüklenmiş gibi
bilgisayar kapasitesine bağlı olarak gerçek zamanlı çalıştırır. STOPWATCH
penceresi, program duruncaya kadar geçen zamanı göstermez.
2. DEBUGGER menüsü STEP INTO ( F7 ) : Programı her seferinde bir komut
yani satır satır çalıştırır.
3. DEBUGGER menüsü STEP OVER ( F8 ) : Programı her seferinde bir komut
çalıştırır. 2. seçenekteki komuttan farkı CALL komut satırında çağrılan kodu
satır satır çalıştırmak yerine çağrılan koddaki RETURN komutuna kadar 1
defada çalıştırır ve geri döner. Dönüş adresi TOS+1 dir yani CALL komut
satırından sonraki ilk satırdır. Eğer çağrılan kod bir şekilde beklemeye
dönükse ( örneğin bir giriş pininin 1 olmasını bekleme gibi ve o pin 1
olmayacaksa ) sonsuza kadar geri dönüş olmaz.
4. DEBUGGER menüsü HALT ( F5 ) : Çalışan programı olduğu yerde durdurur.
5. DEBUGGER menüsü RESET / PROCESSOR RESET ( F6 ) : Devre
üzerindeki MCLR reset gibidir. Program göstergesini ilk çalışacak satıra alır.
Ancak register içerikleri değişmez.
6. DEBUGGER menüsü CLEAR ALL MEMORY : Tüm registerleri program
başlangıcındaki tanımlanmamış duruma getirir.
7. PROJECT menüsü CLEAN seçeneği derlemede bilgisayar hafızasına
yüklenen çalışacak hex dosyanın silinmesi içindir. Tekrar derleme yapılmadan
simulasyon çalışmaz.
65 / 65
8. BREAKPOINT : Duruş noktası belirlemek için asm kodlarının olduğu
pencerede, özellik açık ise çift tıklama ile, özellik kapalı ise sağ tıklayarak
açılan pencerede SET BREAKPOINT seçeneği ile imlecin olduğu satıra duruş
noktası konur. Bu noktalar kırmızı daire içinde (B) harfi ile satırın en solunda
gösterilir. Fare duruş noktası satırında iken yine çift tıklayarak veya sağ
tıklayarak açılan pencerede REMOVE BREAKPOINT seçeneği ile iptal edilir.
Fare duruş noktası satırında iken DISABLE BREAKPOINT seçeneği ile duruş
noktası pasif ENABLE BREAKPOINT seçeneği ile duruş noktası aktif hale
getirilebilir. Pasifize edilen duruş noktaları kırmızı renkli ( ) işareti ile gösterilir.
Sağ tıklamada açılan pencerede BREAKPOINT seçeneği ile tüm duruş
noktaları iptal, aktif ve pasif edilebilir. Ayrıca sadece bir defaya mahsus
programın bir noktada durması istenir ise imleç programın durdurulacağı satıra
getirilerek sağ tıklanır açılan pencerede RUN TO CURSOR seçeneği
seçildiğinde program o satıra kadar çalışır ve o satıra geldiğinde duruş
noktalarında olduğu gibi durur. Duruş noktaları, DEBUGGER menüsü
BREAKPOINT ( F2 ) seçeneği ile açılan pencerede dosya adı ile birlikte satır
numarası veya adres belirterek oluşturulabilir veya aynı pencerede listelenen,
daha önceden belirlediğiniz duruş noktaları üzerinde işlemler, duruş noktasını
fare ile seçerek ve menü tuşlarını kullanarak yapılabilir.
•
Programı her derleyişinizde aktif olan her duruş noktası, pasif duruma
döner.
9. SİMULASYONU BELLİ BİR NOKTADAN DEVAM ETTİRMEK : İmleç
simulasyonun başlamasını istediğiniz satırda iken sağ tıklayarak açılan
pencerede SET PC AT CURSOR seçeneğini seçtiğinizde program göstergesi
o noktaya gelir ve simulasyona buradan itibaren devam edilebilir.
66 / 66
YAZILAN PROGRAMIN MPLAB İLE PIC ‘e YÜKLENMESİ
1. PROGRAMMER menüsü SELECT PROGRAMMER :
PICSTART PLUS programlayıcıya sahipseniz işaretleyiniz. OUTPUT
penceresine, programlama aşamasında her türlü bilginin verileceği
PICSTART
alanı
eklenecek
ve
diğer
menüler
ile
kısayollar
görüntülenecektir. PROGRAMMER menüsü SETTINGS penceresini
açınız. COMMUNICATIONS alanına geçerek programlayıcınızın hangi seri
porta bağlı olduğunu tanımlayınız. Daha sonra PROGRAMMER menüsü
ENABLE PROGRAMMER komutunu veriniz. Programlayıcınız aktif ve
problemsiz ise OUTPUT penceresinde programlayıcınızın aktif edildiği
mesajı verilecek ve diğer menü seçenekleri ile kısayollar aktif hale
gelecektir .
2. PROGRAMMER menüsü DISABLE PROGRAMMER : Programlayıcıyı gizler.
3. PROGRAMMER menüsü PROGRAM : Hex dosyayı PIC ‘e yükler.
4. PROGRAMMER menüsü VERIFY : PIC ‘e yüklenen programın doğru
yazımını test eder.
5. PROGRAMMER menüsü READ : PIC ‘te yüklü bulunan programı okur.
6. PROGRAMMER menüsü ERASE FLASH DEVICE : PIC ‘te yüklü bulunan
programı siler.
67 / 67
Regulatör Şemaları
68 / 68
69 / 69
70 / 70
71 / 71
Telefon Hatları Ne Nedir, Nasıl Yapılır ?
Açıklamalar
•
LOOP : Santralin aktif hale gelebilmesi için yeterli miktarda DC akım çekme
işlemi.
•
QUIESCENT : DC akımın çekilmediği durum.
•
OFF-HOOK : Loop konumu.
•
ON-HOOK : Quiescent konumu.
•
dBm: 0.774 Volt gerilime göre desibel cinsinden gerilim seviyesi Formülü :
(20Log(Vrms/0.774))
•
PSTN : (Public Switched Telephone Network.) Tüm telefon sistemi.
Türk Standartlarına Göre Teknik Bilgiler
•
Cihazın polaritesi, Tip Ring uçlarının değişmesinden etkilenmemeli ve her iki
polaritede çalışmaya uygun olmalıdır
•
Cihazın DC direnci, On-Hook durumunda 30 Saniye bekletildikten sonra 5
mOhm dan büyük olmalıdır. Bu duruma göre; 25vDc için çekeceği akım 5uA yı
geçmemelidir.
•
Cihazın zil sesi empedansı, 25 Hz ve 50 Hz 30 Vrms uygulandığında 6
Kohm’dan büyük olmalıdır.
72 / 72
•
Cihazın zil algılama fonksiyonu 50 vDc beslemede 40-105 Vrms 25 Hz ve 50
Hz (2 sn var, 4 sn yok) zil sinyalini algılayabilmelidir.
•
Cihaz Loop durumunda yeteri kadar düşük DC direncine sahip olmalıdır.Cihaz
en az 60 sn, On-Hook durumunda bekletildikten sonra ve en az 1.2 sn OffHook durumunda kaldıktan sonra akım ve gerilim değerleri 9 Volt =< 20 mA,
14.5 Volt =< 42 mA olmalıdır.
•
Cihazın AC empedansı, 50 mA DC akım üzerine bindirilmiş 800 Hz
frekansında Irms=1mA AC akım geçerken, gerilim (Vrms) 300-1000 ohm
arasında olmalıdır.
•
Cihaz, Off-Hook tan On-Hook a geçişte, 50 vDc beslemede ve Referans
direnç değeri 2050 ohm iken çektiği akım 200 ms içinde 0.5 mA altına düşerek
hattı doğru şekilde çözmelidir.
•
Cihaz
On-Hook
tan
Off-Hook
a
geçişte
Santralın
loop
durumunu
algılayabilmesi için 50 vDc beslemede ;
1. Referans direnç değeri 230 ohm iken, hat alındıktan sonra 20 ms içinde
çektiği akım en az 49,6 mA olmalı ve 1200 ms boyunca bu akımı
çekmelidir.
2. Referans direnç değeri 3200 ohm iken, hat alındıktan sonra 30 ms
içinde çektiği akım en az 12,8 mA olmalı ve 1200 ms boyunca bu akımı
çekmelidir.
•
Çevir sesi algılamadan arama yapan cihaz, 2-8 saniye arasında aramayı
yapmalıdır.
•
Çevir sesi algılayarak arama yapan cihaz, 0-8 saniye arasında aramayı
yapmalıdır.
73 / 73
•
Cihaz, aradığı numaranın meşgul olması / cevap vermemesi gibi nedenler ile
ard arda arama yapıyorsa, aramalar arası en az 5 saniye beklemeli ve en fazla
15 arama yapmalıdır.
•
DTMF tonlarında (hem alt gurup hem üst gurup tonları için) sapma toleransı
maksimum +/- %1.5 olmalıdır.
•
DTMF Üst frekans gurubu için sinyal seviyesi –10 ile –4 dBm arasında
olmalıdır.
•
DTMF Alt frekans gurubu için sinyal seviyesi –12 ile –6 dBm arasında
olmalıdır.
•
DTMF Üst Alt frekans gurubu arasındaki sinyal seviye farkı –1 ile –4 dBm
arasında olmalıdır.
•
DTMF Sinyal süresi en az 65 ms olmalıdır.
•
DTMF sinyalleri arasında bekleme en az 65 ms olmalıdır.
FCC Part 68 e göre PSTN Bağlantısı
74 / 74
DAA Modül ( Hat bağlantı ara birimi )
Yukarıdaki teknik bilgilerde bahsedilen değerlerin neredeyse yarısından
fazlasını sağlayan veya uygun dizayn yapılamadığında sağlayamayan birimdir. Bir
çok değişik tasarımla yapılabileceği gibi hazır modül devrelerde kullanılabilir. Trafolu
olabileceği gibi trafosuzda yapılabilir. Her iki durumun birbirine göre avantaj ve
dezavantajları vardır.
Bu birim ;
1. Zil algılamasını,
2. Loop Kontrolünü,
3. On-Hook / Off Hook Kontrolünü,
4. Ses / DTMF / Data transferlerini ve
5. eğer var ise Caller ID alımını
yapabilmelidir.
Zil Algılama İçin Örnek Devre Şemaları
Zil kontrol çıkışı zil çalması esnasında kare dalga çıkış verir. Zil çalmadığında
ise yapılan tasarıma göre lojik “1” veya lojik “0” durumundadır. Pull_Up dirençlerinin
değerlerini farklı kullanabilirsiniz. Pull-up yerine Pull-down çıkışta kullanabilirsiniz.
75 / 75
76 / 76
Ben dijitalle uğraşmıyorum zili nasıl çaldırırım diyorsanız işte bu şemada onun için ;
77 / 77
Hat Kontrolü İçin Örnek Devre Şemaları
Bu devreler hattın doğru olarak alındığı ve/veya hattı açmadan hattın kullanılıp
kullanılmadığının tespiti için kullanılabilir.
78 / 78
Hat Açma / Kapama Kontrolü İçin Örnek Devre Şemaları
79 / 79
SSR ler (Solid State Relay) EMR lere (Elektro Mechanical Relay) göre oldukça
avantajlıdır.
•
Boyutları çok küçüktür,
•
Manyetik alan üretmez,
•
Sarsıntıdan etkilenmez,
•
Parazit, gürültü üretmez,
•
5 mA gibi küçük bir akımla sürülebilir,
•
5 kat ömrü uzundur,
•
Kararsız nokta oluşmaz, sürüldüğü anda devreye girer.
80 / 80
Hat Bağlantısı İçin Örnek Devre Şemaları
81 / 81
82 / 82
83 / 83
84 / 84
Trafo çıkışlarını aşağıdaki şemalardaki gibi kullanabilirsiniz.
85 / 85
Ses / DTMF Transferleri İçin Örnek Devre Şemaları
Vdd/2 veya GND referans voltajları kullandığınız besleme tipine göre belirlenir.
Eğer Dual Power kullanıyorsanız yani +/- voltaj beslemeniz var ise referans voltajı
GND olacaktır. Eğer +Ve ve GND den oluşan tekli beslemeniz var ise referans voltajı
Vdd/2 olacaktır. Eğer 5 volt besleme kullanıyor iseniz referans voltajınız 2.5 volt
olmalıdır. Empedans değişikliği sinyalde bozulma, sapma meydana getiriyor ise voltaj
takipçisi bu probleminizi giderecektir. R73=R74 / R75 = R76
86 / 86
87 / 87
88 / 88
On-Hook işlemleri İçin Örnek Devre Şemaları
CM8888PI aşağıdaki şekillerde bağlandığında On-Hook durumunda da hattın
durumunu kontrol edebilir. CM8888 / 8870 bu durumda DTMF tonlarının çözümünü
hat kapalı iken yapabilirler.
On-Hook Çift hat üzerinden bağlantı şeması
89 / 89
On-Hook veya Off_Hook tek hat üzerinden bağlantı şeması
Bu şema ise herhangi bir entegre devre kullanmadan mikrokontrol tarafından
hattın durumunu izlemek için veya tek hat üzerinden bağlantı işlemleri için
kullanılabilir.
90 / 90
DTMF ( Çift Ton Çoklu Frekans )
DTMF Frekansları Yazılımla üretilip, ADC ve yazılımla çözülebilir. Ancak
karmaşık formüllere göre hesaplamalar yapılmalıdır. Özellikle çözümleme yazılımı
önemli ölçüde RAM işgal eder. Çözümlemek üretimine göre daha zordur. Bu
nedenler ile bir çok ticari cihaz DTMF çözümlemesi için hazır entegre devreler
kullanmaktadır. Gelişen teknoloji ile birlikte tek bir entegre devrede DTMF üretme,
çözümleme, hat durumunu test gibi özellikler bir arada bulunduğundan yeni ürünler
genelde yazılımı bir kenara bırakmışlardır. Ben DTMF çözümünü ADC ve yazılımla
yaparım arkadaş diyen var ise kusura bakmayın iyi programcıyımdır ama 3 milyon
vermek varken beni aşar. Adamın biri yazmış işte formül (Adama ayıp olmasın
linkinide koyalım) ;
http://www.geocities.com/constantinescuradu/content/dtmfrem/dtmf.asm
DTMF Tablosu
Üst Frekans Gurubu
Alt Frekans Gurubu
1209
1336
1477
1633
697
1
2
3
A
770
4
5
6
B
852
7
8
9
C
941
*
0
#
D
91 / 91
Dial Pulse ( Darbeli Arama )
Böyle bir şey kalmadı arkadaşlar. Hiç uğraşmadım. Belki, elektronikçi dedesi
olan arkadaşlar varsa veya yaşı ilerlemiş üyeler bu bölüme katkı sağlayabilirler.
Call Progress ( Telefon Hattının Durumu )
Telefon şebekesi ile uğraşmanın temel gereklerinden biridir. Telefon hattının
durumunu bilmeden bilinçli olarak hiçbir şey yapamazsınız.
Telefon hattının durumu hazır entegre devreler ile tespit edilebileceği gibi
yazılımla da tespit edilebilir. DTMF konusunun aksine, bu tespit için ben basit bir
karşılaştırıcı devre yardımı ile yazılımı öneririm. Çünkü Call Progress entegrelerinin
fiyatları DTMF entegrelerinin fiyatlarına göre çok yüksektir ve yazılım çok fazla yer
işgal etmez.
Bence bir devre dizayn ederken dikkat edilmesi gereken 1. nokta yazılım mı ?
Donanım mı ? sorusunun cevabıdır. Eğer yazılım kullanılmasından dolayı ek ram
ünitelerine, ek donanıma ve/veya daha yüksek kapasiteli bir mikrokontrole gerek
duyuluyor ve bu ihtiyacın maliyeti o yazılımla yapılacak işlerin donanımla yapılması
için harcanacak paraya yaklaşıyor veya geçiyorsa yazılımla hiç uğraşmamak en
doğrusudur. Çünkü zaman herşeyden değerlidir. 2. nokta ise tüm elemanların aynı
voltaj değerinde çalışabilmesidir. Bu durum mümkün olmadığında özellikle iletişim
protokollerinde transistör ve dirençlerden oluşan çevrim birimleri kullanılsa bile hem
ebat hem de maliyet artacaktır. Diğer bir noktada mümkün olan en az parçayı ve en
az gücü kullanmaktır. Bana göre bir aletin Arıza riski = Eleman Sayısı x çektiği güç x
ebat x hatalı dizayn x mantıksız program kadardır.
Şöyle bir örnek vermek gerekirse diyelim ki tasarladığınız devre hem artı 5 volt
hem eksi 5 volt kullanıyor, +12 volta ihtiyac duyuyor ve elektrik kesilse bile kesintisiz
çalışmalı.
92 / 92
Böyle bir devrede AC beslemenin dışında, kesintisiz çalışma ve + 12volt
ihtiyacı için, 12 Volt Akü, Akü için şarj katı, elektrik kesildiğinde – voltaj için osilatörlü
DC/DC konvertör katı gerektiği düşünülebilir.
Ancak – voltaj için osilatörlü DC/DC konvertör katından doğru tasarım ile
kurtulunabilir. Bu sayede devre üzerindeki gürültüde azaltılmış olur. Devrenin
ebatları, maliyeti ve arıza riski azalır.
Şöyle ki şarj katı kullanılacak 2 adet 6 volt aküyü bir bütün olarak +12 volt
olarak görür ve 13.8-14.7 volt aralığında şarj eder.
Tüm elemanlar GND olarak iki akünün orta bağlantısını, (Bir akünün (+) kutbu,
diğer akünün (–) kutbudur) +5 volt ihtiyacı olan elemalar, birinci akünün (boşta kalan)
+ kutbunu +5 volt kaynağı olarak kullanırken, -5 volt ihtiyacı olan elemanlar ikinci
akünün (diğer boşta kalan) (–) kutbunu –5 volt kaynağı olarak kullanırlar. 12 Volt
kaynağı olarak iki akünün en baştaki (-) ve (+) kutupları yani şarj bağlantı noktaları
kullanılır. Neyse konumuza dönelim işte Call Progress ile ilgili detaylar ;
Dial Tone ( Çevir Tonu )
Eğer hattı doğru şekilde alabildiysek yani santralı bizim hattımız için aktif
edebildiysek hattı açtığımızda duyduğumuz sesin kaynağıdır. 350+440 Hz den
oluşan kesintisiz sürekli sinyaldir.
93 / 93
Busy Tone ( Meşgul Tonu )
Aradığımız numaranın meşgul olması durumunda duyduğumuz 480+620 Hz
den oluşan ve 0.50 Sn. duyulan, 0.50 Sn. duyulmayan sesin kaynağıdır.
Ringing Tone ( Karşı Telefon Çalıyor Tonu )
Aradığımız numaranın telefonu çalarken duyduğumuz 440+480 Hz den oluşan
ve 2 Sn. duyulan, 4 Sn. duyulmayan sesin kaynağıdır.
94 / 94
Congestion Tone ( Hatta Yığılma / Aramayı Tekrarla Tonu )
Telefonu açtığımızda, numara çevirirken veya çevirdikten sonra duyduğumuz
480+620 Hz den oluşan ve 0.25 Sn. duyulan, 0.25 Sn. duyulmayan sesin kaynağıdır.
ROH ( Karşı Telefon Açık )
1400 + 2060 / 2450 + 2600 Hz den oluşan ve duyulamayan yüksek frekanslı
karşı telefon açıldı bilgisidir.
Diğer Tonlar
2004 Türkiye’sinde, gelişmiş en son teknolojiyi kullanan ve bizlere en iyi
hizmetle birlikte diğer ülkelerle kıyasladığınızda en ucuz görüşmeyi sağlayan !!!
telekom sistemimizin “Sayın Abonemiz” ile başlayan ve “aradığınız istikamete
doğru tüm hatlarımız doludur. Lütfen daha sonra yeniden deneyin” gibi değişik
mesajlar ile devam edebilen ses mesajlarıdır. Telefon hattının durumunu tespit
ederken bu ses mesajları yukarıdaki anlatılan hiçbir duruma uymadığından dikkat
edilmelidir. Ayrıca zaman zaman özellikle bozuk havalarda telefon hatlarındaki
parazitlenmelerede dikkat edilmelidir.
Not :
Yazılımla telefon hattının durumunu tespit ettiğinizde, Karşı Telefon Çalıyor
tespitinden önceki her uyumsuz format, işlemin başarısız, sonraki her uyumsuz
format Karşı Telefon Açık manasına geldiğini düşünmeli ve buna göre hareket
etmelisiniz. ( Tabi sizin arama hatanız nedeni ile çok yerinde kullanılan “yanlış veya
eksik bir numara çevirdiniz”, “Olmayan Abone” ve benzeri ses mesajlarını
gözardı etmemek gerekir.)
95 / 95
Karşı Telefon Açık noktasından sonra karşı noktadan mesajın dinlendiği onayı
olmak üzere “Lütfen mesajı dinlemek için 1 nolu tuşa basın” gibi bir DTMF tonu
göndermesini isterseniz ve tonun gelmesi için bir süre takibi yaparsanız, bir telefonla
konuşurken diğer telefon çaldığında ahizeyi kaldırıp alo bile demeden 3-5 dakika
bekletmeyi iyi bir şey sanan insanlara denk geldiğinizde cihazınız kötülenmez ve işini
yapmaya devam eder.
Ayrıca güzel Ülkemin güzel insanları arasında özellikle Kamuya ait işyerlerinde
halen çevirmeli yani darbeli arama yapan, yukarıda hiçbir bilgi verilmeden geçilen
telefonlar sapasağlam kullanılmakta. Bu aletler DTMF tonu üretemez. Aradığınız
hattın diğer ucunda böyle bir alet bağlı ise hele birde anlama özürlü bir vatandaşımız
ahizeyi eline alırsa kelimenin tam manasıyla yandınız demektir. Artık aramayı yapan
cihazınız DTMF tonu yerine “yok hemşerim burda mesaj bey ney yok” cümlesini
dinler durur. Cihazınız işlem başarısızlığı nedeniyle birkaç defa üst üste aradığında
ise büyük ihtimalle arayan bir adam sanılarak küfürlenmeye başlayacaktır. Bana göre
bu duruma dünyanın bütün bilim adamları bir araya gelse çözüm bulamaz.
96 / 96
Call Progress Şemaları
CM8888PI Entegresinde Call Progress Özelliğini kullanmak için aşağıdaki ek
devreyi kullanabilirsiniz. Bu devre, karşılaştırıcı ve IRQ çıkışı sayesinde otokontrol
doğrulama sağlamak içindir. Mikrokontrolünüzün 8888 int kontrol portunu pull-down
kullanmalısınız. CM8888 initialize edildikten sonra IRQ çıkışını lojik “1” de tutar. IRQ
çıkışının lojik “1” olması D29 üzerinden akım akmasına, dolayısıyla pull-down kontrol
portunuzda lojik “1” görmenize neden olur. Fakat CM8888 i CP moduna aldığınızda
IRQ çıkışı lojik “0” olur ve D29 üzerinden akım geçmediği için kontrol portunuzda lojik
“0” ı görürsünüz. IRQ çıkışı sinyal tespit edemezse lojik “0” da kalır. Sinyal tespit
ettiğinde ise yukarıda bahsedilen sürelerde kare dalga çıkış üretir. CM8888PI
entegresinin IRQ çıkışının low kalmaması için her işlem komutundan sonra initialize
edilmelidir.
CM8888PI kullanmadan da Call Progress testi yapabilirsiniz. Aşağıdaki basit
karşılaştırıcı devre 8888 in IRQ çıkışı gibi çalışır.
97 / 97
Telefon Casusu Yapalım mı ?
Bu kadar bilgiden sonra bir uygulama yapmadan geçmeyelim dedim. Bu tip
cihaz üreten ve/veya ithal edip 150 USD gibi fiyatlara satan firmalar kızacaklardır
ama olsun. Sonuçta yazılım vermiyoruz. Herkes programını kendi yazsın.
Yapacağımız bu cihazla ilgili detayları verelim.
Bu tasarım çok düşük miktarda güç tükettiği halde, yukarıda teknik bilgilerde
bahsedilen telefon hattı üzerinden maksimum çekilebilecek DC akım (14.5 volt için
max 42 mA) bu uygulama için yeterli gelmemektedir. Zaten hattı açmadığımız için bu
kadarını da çekemeyecektik.
Yaptığı iş
: Hattı açmadan “çaktırmadan” telefon görüşme kaydı
Kayıt Süresi
: Kullanılan ISD Tipine Göre 8 –16 dakika arası
Besleme
: 3 Volt 2x1.5V AA pil
Ses/DTMF/Data
: Sadece ses bazında alım
Giriş Çıkış
: 2 adet RJ45 telefon jack, 2 li kalem pil yatağı
Kontrol Birimi
: İki adet buton
Gösterge Birimi
: Bir adet led
Devrenin ve Programın Çalışma Senaryosu (Akış Diyagramının Yazılı Görüntüsü)
Devreyi yaptık programı yazdık pilleri fişi taktık ve devre program sayesinde
çalışmaya başladı. Her şey sıfır kilometre.
1. Kontrolcü amcamız sırt üstü yatar. Siz buna SLEEP de diyebilirsiniz. (Malum
pil kullanıyoruz) Ara sıra kalkar Loop Kontrol e bakar. Telefon açıksa 2.
maddeye zıplar Telefonun hala kapalı olduğunu görünce iki kontrol butonuna
bakar onlarda da hareket yoksa başa döner ve tekrar yatar. Kontrol
butonlarında hareket varsa 5. maddeye zıplar.
2. Loop Kontrol telefon açıldı dediğinde ISD arkadaşına kalk (POWERUP) ve şu
adresten (SETREC) kayda başla (REC) der. Kayıt adresini kontrolcü amcamız
tutmaktadır.
98 / 98
3. Artık iş zamanıdır. Bir Loop Kontrole bakar, bir ISD kesmesine öyle ya
Telefonu açan kişi belki telefonu kapattı, belkide çok konuştu ISD nin 16
dakikalık hafızası doldu.
4. Her ikiside sessiz sedasız duruyorsa 3 e geri döner. Eğer hareket varsa iki
ihtimale bakar ;
•
Loop Kontrol telefon kapandı dediyse ISD arkadaşına kaydı durdur
(STOP)
der
ve
yeni
kayıt
adresini
öğrendikten
sonra
yat
(POWERDOWN) der. Bu arada eski adresi muhafaza ederek işleme
yeni adresle devam etmek için kendini ayarlar ve mesaj sayısını 1
artırır. Artık Yatma zamanıdır yani 1. maddeye geri döner.
•
ISD arkadaşı tüm gücünü tükettiyse yani 16 dakikalık kayıt süresi
dolduysa bunu kontrolcü amcamıza OVF kesmesi ile bildirir. Kontrolcü
amcamız bu duruma elbette üzülür ama ISD arkadaşına Artık dur
(STOP) ve yat (POWERDOWN) demekten başka yapacağı bir şey
yoktur. Bu üzüntüyle Loop Kontrolünü yapmamak üzere 1. maddeye
geri döner.
5. Yine iş zamanıdır. Artık patronu yanındadır. Patronunun ne istediğine bakar.
•
Mesajları dinlemek istiyordur (Dinle Butonu)
1. Mesaj Yoktur. Bu durumu patronuna söylemesi gerekmektedir.
Bu nedenle gösterge ledini kullanarak 5 kez göz kırpar ve taa en
başa 1. maddeye döner.
2. Mesaj Vardır. ISD arkadaşına Kalk (POWERUP) ve şu adresteki
(SETPLAY) mesajı söyle (PLAY) diyerek ilk mesajı patronuna
dinletir. Bu arada patronunu bu mesajı başa alıp almak
istemediğini öğrenmek için dinle butonunu gözlemektedir.
(Tekrar komutu gelirse ISD arkadaşına söylenmeyi bırak (STOP)
der ve bu maddeye yeniden başlar) Tabi ayrıca ISD arkadaşı
99 / 99
mesaj sonu (EOM) veya tüm hafızamı dinlettim (OVF) kesmesi
gönderiyor mu ona da bakar.
•
ISD arkadaşı EOM gönderdiyse toplam mesaj sayısı ile
patronuna dinlettiği mesaj sayısına bakar. Tüm mesajları
dinlettiyse ISD arkadaşına önce artık yeter (STOP) der,
arkasından gönlünü almak için hadi yat (POWERDOWN)
der. Kendide patronuna durumu anlatmak için 5 saniye
boyunca gösterge ledini yakarak haber verir ve taa en
başa
1.
maddeye
döner.
Mesajların
hepsi
daha
dinletilmediyse Patronuna bunuda haber vermesi gerekir.
Yine gösterge ledini kullanarak 1 kez göz kırpar,
adreslerini,sayaçlarını
ayarlar
ve
hemen
üstteki
2.
maddeye geri dönüp bir sonraki mesajı dinletir.
•
ISD arkadaşı OVF gönderdiyse zaten artık yapabileceği
tek şey durumu patronuna izah etmektir. Öyle ya
görüşmelerin tümünü kaydedemeyerek büyük bir suç
işlemişlerdir. Önce ISD arkadaşını istirahate yollar.
Ardından yine gösterge ledini kullanarak 10 saniye
boyunca ağlayarak durumu haber verir ve taa en başa 1.
maddeye geri döner.
•
Mesajları silmek istiyordur. (Sil Butonu )
Bu
önemli
kararda
patronunun
kararlılığını
öğrenmesi
gerekmektedir. Bu nedenle Gösterge ledini kullanarak hızlı hızlı 10 kez
uyarır ve her iki butona tekrar bakar. Patron gerçekten karalıysa bu
aşamada iki butona birden basıyordur.
1. Patron vazgeçmiştir. Artık hiçbir şey yapmadan taa en
başa 1. maddeye dönebilir.
2. Patron kararlıdır ve iki butona birden basıyordur. Kontrolcü
amcamız uyarmıştır ama patron patrondur. “Önemli bir
şey olsa her halde silmezdi” diye düşünerek ve önemli bir
100 / 100
şey kaydedememiş olmanın üzüntüsü içerisinde gösterge
ledini kullanarak 10 saniye boyunca ağlar ve adresleri,
mesaj sayısını sıfırlayarak taa en başa 1. maddeye döner.
Hikayemiz bitti. Bu senaryoya göre programınızı yazabilirsiniz. İsterseniz
senaryonuzu da programınızı da siz yazın. Backlight özelliği olan 2x16 LCD ekleyin
hatta bir buzzer. Casusunuzu deşifre edin öldürsünler.
Şema ile ilgili birkaç not düşelim ;
ISD4000 serisi 3 volt besleme ile çalışır. Eğer mikrokontrolünüzü 5 volt
kullanıyor iseniz MISO hariç tüm iletişim portlarını ( SS, SCLK, MOSI, INT ) 5 voltta
kullanabilirsiniz. Ancak MISO pini P kanal olduğundan 5 voltta kullanamazsınız. Bu
pin ISD 4000 serisinin data çıkış pinidir. (Master In Slave Out) Yani bu pinden sadece
data alırsınız.
5 volt kullanıyor olmanız durumunda, bu pinin çıkışında bir transistör ile
terslenmiş veya iki transistör kullanarak terslenmemiş data alacak şekilde harici bir
devre ilavesi gerekir. Bu data yazılımınızla alınacağı için terslenme veya
terslenmeme bir şey değiştirmediğinden tek transistörlü inverter devreyi kullanmanız
hem maliyeti hem ebadı küçük tutar. Fakat donanımsal SPI port ihtiva eden
mikrokontrol kullanmanız durumunda donanım tarafından alınan data terslenmiş
gelecektir. Yinede yazılım sizin elinizde olduğu müddetçe bu da bir şey değiştirmez.
101 / 101
U1, C3, C4, TR1 ve hat giriş çıkışında kullanılan telefon jackları eski modemler
üzerinden alabileceğiniz parçalar. Hemen hemen tüm modemler üzerinde bu
değerlerde veya küçük farklılıklarla aynı parçalar bulunur.
Ancak modemde H11AA814 (üzerinde sadece 814 yazabilir) kullanılmamış
olabilir. Bunun yerine H11AA817 (bununda üzerinde sadece 817 yazabilir)
kullanılmıştır. H11AA817 de anot katot arasında terslenmiş diyot olmadığından
şemaya bu diyotu dışarıdan ilave etmelisiniz. İçerdiği bu diyot nedeniyle H11AA814
de 1. ve 2. pin isimsizdir. Anot ve Katot diye adlandırılmamıştır.
H11AA814 ü bağlarken dikkat edeceğiniz yer nokta ile işaretlenmiş 1. pinin
telefon hattı tarafına gelmesi ve noktanın çapraz karşısına gelen 3. nolu pinin emitör
(şemada R7 ile pull-down) olduğudur.
102 / 102
R5 direnci ile R6 direnci ISD ye yapılacak sesin seviyesini ayarlar. Kayıt
şemada görüldüğü üzere tek kanal üzerinden yapıldığı için analog giriş seviyesinin
tepeden tepeye 32 mv u aşmaması gerekir. (Trafo çıkışında op-amp kullanılmadığı
için tam olarak ayarlanamasa da) Şemadaki değerler ile, ses kayıt ve kaydedilen
sesin çıkış seviyelerini osilakop ile kontrol ettiğinizde, kaydettiğiniz seviyeyi çıkışta
aynen alırsınız.
Bu şu anlama gelebilir; Diyelim ki telefon bir yer aranmak üzere açıldı.
Devremiz, çevir sesi dahil olmak üzere DTMF tonları, karşı taraf çalıyor tonu ve
konuşmaları kısacası telefon kapanıncaya veya ISD kayıt süresi doluncaya kadar
herşeyi kaydedecektir. Siz bu kaydı dinlemenin dışında, kaydedilen DTMF tonlarını
ek DTMF kod çözücü devre ile aranan numarayı rakamsal hale çevirebilir ve/veya
dinleme esnasında hopörlörü veya kulaklığı normal telefonunuzun mikrofon kısmına
tutarak kayıtlı numaranın tekrar aranmasını sağlayabilirsiniz. R5 direncinin değeri
düşürülerek veya R6 direncinin değeri artırılarak ses giriş seviyesi, dolayısıyla kayıtlı
sesin çıkış seviyesi artırılabilir. Ancak tonlarda olacak sapmalar nedeni ile yukarıda
anlatılanlar yapılamayacaktır.
103 / 103
104 / 104
Kaydettiğimiz sesi nasıl dinleyeceğiz derseniz işte oda burada ;
8 ohm hopörler veya kulaklık kullanmıyorsanız, kullandığınız hoporlörün
empedansına göre
R14 değerini değiştirebilirsiniz. RV1 ile ses seviyesini
ayarlayabilirsiniz. Başka bir şekilde sesi dinlemek isterseniz ISD nin 13 numaralı
AUDIO OUT pinine + kutbu gelecek şekilde 1 uf değerinde bir kondansötör kullanın
ve ses çıkışını bu kondansötörün – kutbundan alın.
105 / 105
Caller ID ( Arayan Numarayı Görme )
Genel Bilgiler
Mark (Lojik 1)
1.3 kHz,
(+/- %1,5)
Space (Lojik 0)
2.1 kHz
(+/- %1,5)
Data Formatı
Seri ve ilk giden bit en sağdaki LSB biti
Modülasyon Tipi
Eşevreli analog FSK
Bu bilgiler bizim Caller ID bilgilerimizin ITU-T V.23 standardına uyduğunu
göstermektedir.
A - ) Birinci Zil. 350 ms ile 2000 ms arasında olabilir. Genlik 40 Vrms ile 105 Vrms
arası, Frekansı 25 ve/veya 50 Hz.
B - ) Caller ID bilgisi öncesi suskun süre 500 ms – 2 Sn.
C - ) 1200 Baud/Sn .hızında (+/- %1) SDMF (Tek Mesaj) veya MDMF (Çoklu Mesaj)
içeren Analog FSK Bilgi Paketi.
106 / 106
Kanal Yakalama Sinyali (CS) 250 ms (+/- %20) b”01010101” x 30 byte.
Mark 150 ms (+/- %20) Sürekli lojik “1”
Her byte Start biti 0 + 8 data biti + Stop Biti 1 şeklinde alınır. Ancak ilk byte tan
sonraki stop biti iki defa yollanır.
D - ) FSK bilgisini takip eden 200 ms den büyük suskun süre.
E - ) İkinci zil.
Aşağıdaki tablolar sanırım anlatımları daha anlaşılır hale getirecektir.
107 / 107
Açıklama Tabloları
108 / 108
109 / 109
110 / 110
Ek Açıklamalar
Mesaj Tipi her zaman için Tekli Mesaj Formatı (SDMF) için 4, Çoklu Mesaj Formatı
(MDMF) için 128 (dec) dir. (CLI)
Mesaj tipi için yukarıdaki iki değer dışında (CLI olmama nedeni) 79 (dec) Caller Id
datası olmadığı ve 80 (dec) CLIR gerekli mesajı gelebilir.
Data sayısı Mesaj tipini, kendini ve açıklama ve kontrol byte larını içermez.
Assembly kullanılarak işlem yapılıyorsa, ascii kod olarak data bölümünde gelen ay,
gün, saat, dakika ve telefon numarasının sol dört biti sıfırlanarak register değeri
düzeltilmelidir. (Data = 4 ise, ascii kodu = 52 Binary Karşılığı = ’00110100’)
Kontrolün yapılabilmesi için gelen her byte üst üste toplanmalıdır.
111 / 111
Örnek vermek gerekirse ;
Tarih : 21.07.04
Saat : 17.43
Arayan Numara : 0 (3 1 2) 4 5 6 7 8 9 0 ( Rastgele bir numaradır )
Byte
Açıklama
Değeri(Dec)
Toplam (Dec) Mod 256
Mesaj tipi
tekli mesaj
04
04
18
22
Data Sayısı
Ay High
0
48
70
Ay Low
7
55
125
Gün High
2
50
175
Gün Low
1
49
224
Saat High
1
49
17
Saat Low
7
55
72
Dakika High 4
52
124
Dakika Low 3
51
175
No 1
3
51
226
No 2
1
49
19
No 3
2
50
69
No 4
4
52
121
No 5
5
53
174
No 6
6
54
228
No 7
7
55
27
No 8
8
55
82
No 9
9
57
139
No 10
0
48
187
Kontrol
-256
-256
-256
69
Kontrol Alım Toplamı + Kontrol Byte = 0 olması gerekir. Bizim örneğimize göre ;
187 + 69 – 256 = 0
0 Sonucunu alamadıysak alınan data hatalıdır.
112 / 112
Bilgisayarınızda Caller ID Özelliği
Çoğu
yeni
modem
bu
özelliği
desteklemektedir.
Modeminizin
bunu
desteklediğini anlamanın yolu aşağıdaki komutları test etmektir.
Her hangi bir terminal programı veya kendi yazılımınızla, ayarlarınızı yaptıktan
sonra modeminize ATZ komutu yollayın eğer “OK” değeri döndüyse ayarlarınız
doğrudur. Eğer yanıt alamadıysanız, modeminiz harici ise bağlı ve açık olduğundan,
harici veya dahili (PCI) ise port numarasını, hızı, polariteyi iletişim tipini yani
ayarlarınızı kontrol edip düzelterek aynı komutu “OK” cevabı gelinceye kadar
deneyin.
Modeminizle irtibat kurduktan sonra, desteklediği standarda göre aşağıdaki
test komutlarından birini “OK” ile yanıtlayacaktır. Hiçbir komuta “OK” yanıtı
vermezse, genelde “ERROR” veya “ERR” cevabı gelir, modeminizde Caller ID
özelliği yok demektir. Eğer Caller ID özelliğine sahip bir modeminiz var ise internet
üzerinde arama yaparak bu özelliği kullanan yazılımlar bulabilir ve arayan numarayı
monitörünüzde
görebilirsiniz.
İsterseniz
Caller
ID
programını
kendinizde
yazabilirsiniz. Modeminiz aşağıdaki komutlardan birine “OK” yanıtı verdiği andan
itibaren Caller ID çözümlemesini yapmaya başlar.
Caller ID Test Komutları ;
1. AT#CID=1
2. AT%CCID=1
3. AT+VCID=1
4. AT#CC1
5. AT*ID1
113 / 113
Bebek Odası İçin Güzel Bir Cihaz
Cihazın altı özelliği var. Saat, alarm, alarmlı geri sayım, oda ısısını ölçmek ve
harici ısıtıcı ile odayı istenen sıcaklıkta tutmak, elektrik kesildiğinde eğer oda karanlık
ise devreye giren ışıldak ve bulunduğu odadaki sesi hassas mikrofonu ile dinletmek.
Bu devreyi geçen yazdan itibaren kullanmaya başladım. Hiçbir problemi yok. Güç
transistörlerini soğutucuya bağlamayı unutmayın.
Power Katı
Dikkat !!!
AC220 Volt Hayati tehlike oluşturacak boyuttadır.
Öncelikle 220 volt giriş ve 15 volt çıkış veren (2x7.5 ta olabilir) trafoyu, köprü
diyotu ve C1 i bağlayalım ve voltmetremiz ile + voltajı ölçelim. DC 17-18 volt arası bir
değer okumalısınız.
LM317 yi, (TO220) (LM350 de olabilir) R2,R3,R4 ve RV1 i bağlayalım. RV1
çıkış voltajını ve R4 çıkış akımını ayarlar. Ben R4 ü akü sürekli şarjda kalacağı ve
fazla elektrik kesintisi olmadığı için 0.5 ohm 1 Watt kullandım. RV1 i, +Ve noktasında
13.8 - 14.7 volt aralığında bir değer okuyacak şekilde ayarlayın. En uygunu 14.3
volttur.
114 / 114
Şarj hattı üzerindeki sigortayı, LM7805 i (TO220) (LM340-05 de olabilir) ve
C2’yide bağlayıp 5 voltunuzu kontrol edin.
Şebeke takibi yapacak C3,R1,Q1,D2,R5,R6 ve aküyü bağlayın. Şimdi +Ve
noktasında akü voltajını ve +5 noktasında 5 voltu görmeniz gerekir. Şebeke ledi ise
yanmamaktadır. AC girişi açın şebeke ledimiz yandıysa buraya kadar her şey
doğrudur. Şebeke çıkışımız Mikrokontrolün AC 220 kontrolünü yaptığı nokta olacak.
Harici ısıtıcımızı açıp kapatacak olan rölemiz 12 volt bu nedenle beslemesini
+Ve noktasından alacak. Eğer elektrik kesintisi uzun süreli ve sık olan bir yerde
yaşıyor iseniz, röle beslemesini C3 ile R1 in bağlantı noktasından, 1N4007 ve 220
ohm ½ Watt direnci seri kullanarak alın ve C3 değerini büyütün. C3 değerini
büyütmek cihazın elektrik kesintisini geç algılamasına neden olacaktır. Bu dizaynı
yaptığınızda röleniz elektrik kesildiğinde bırakacak ve boşu boşuna akü beslemesi
kullanmadığı için akü besleme süresi uzayacaktır. Röleyi, bağlayacağınız ısıtıcının
çekeceği akımı kaldıracak büyüklükte seçin. Benim bağladığım ısıtıcı 3x600 Watt =
1800 Watt gücünde toplamda 8.18 amper çekiyor. Ben 10 amper kontak akımına
sahip çift kontak röle kullandım. Her iki AC hat (faz ve nötr) röleden geçiyor. Siz
şemadaki gibi tek kontak kullanırsanız AC hattın Faz olanını röleden geçirin. (kontrol
kaleminde ışık yanan hat) Böylece röle devre dışı iken, ısıtıcı çıkış prizinde Faz hattı
(yani çarpan hat) bulunmaz. (Fişi prize takış yönünüz Faz ve Nötr uçlarını belirler)
Isıtıcı çıkışı için ben sıva üstü (kutu içerisinde olduğu için) topraklı priz, AC besleme
için 3 hatlı kablo kullandım. Bu kablonunda Isıtıcınızın çekeceği akımı kaldırması
gerekir ve muhakkak topraklı olması gerekir aksi halde ısıtıcınızın dış yüzeyinde
elektrik görülebilir. Röle devresini kurduktan sonra SS noktasına +5 vererek rölenin
çalışmasını kontrol ediniz.
Geriye kalan R9,R10 ve RV2, mikrokontrolün ADC ile akü voltajını kontrol
edeceği nokta için. Tüm devre bittikten sonra, voltmetreden okuduğunuz akü voltajı
ile cihazın görüntülediği voltajın arasında fark olmaması için kalibrasyonu RV2 ile
yapacaksınız. Bu özellik akünün minumum voltaj seviyesine düşmesi durumunda
çekilen akımı düşürmek için kullanılmıştır.
Bu şemadan kontrol şemasına IS, Şebeke ve ADC1 noktaları bağlanılacak.
115 / 115
Power Katı Şeması
116 / 116
Ek Birimler
Kontrol katından gelen AYD çıkışı, 555 entegresi +Ve ile kullanıldığından +5
volttan izole etmek için iki transistör yardımı ile 555’i resette tutar veya devreye sokar.
555 +5 voltta kullanıldığında, +Ve den izalosyon işlemini 555 in 3 numaralı Q pini
çıkışındada yapabilirsiniz. 555 katı Floresanı yakmak için kullandığımız devreyi
oluşturur. Kullanılan floresan ışıldaklardaki 4 Wattlık olanlardan. Trafoyu ise 0-12 Volt
veya 2x6 volt kullanmalısınız. Trafoyu bağlarken dikkat edeceğiniz nokta Q4 çıkış
tarafının normalde 12 volt aldığımız taraf olması. Ben Q4 olarak elimde mevcut olan
1.5 amperlik BD139 u kullandım. BD175, BD241, BD243, BD433, TIP31 ve
benzerlerini kullanabilirsiniz.
Bu izolasyon ve 555 devresini kurduğunuzda, devreye güç vermeden RV5
potunu 1K2 değerine ayarlayın floresanı bağlamayın. AYD girişini +5 volta bağlayın
ve ölçü aletiniz en yüksek ölçüm yapabileceği AC bölümünde iken trafonun AC çıkış
voltajını okuyun. 220-250 Volt arası bir değer görene dek RV5 i ayarlayın. Bu değeri
okuduğunuzda RV5’i sabitleyin. İsterseniz RV5 in bağlantılarını ayırıp o anki değeri +
R17 toplamını tutan tek bir direnç kullanabilirsiniz.
Önemli Not : Kullandığınız trafonun sarımları nedeniyle çıkış voltajı
ummadığınız kadar değişebilir. Bu durumda C5, R16, R17 ve RV5 değerlerini
yeniden tasarlamanız gerekecektir. Tablodaki değerler benim kullandığım trafo
için geçerlidir.
Yine kullandığınız trafo sarımları nedeniyle trafonun çıkışında çok yüksek
değerler
alabilirsiniz.
Bu
voltajlar
amper
içermese
bile
ölçü
aletinizi
kullanılamaz duruma getirebilir.
Eğer böyle bir özelliğe ihtiyacınız yok ise Kontrol katınında AYD çıkışını
boş bırakıp bu devreleri cihaza dahil etmeyebilirsiniz.
117 / 117
Bu şemada ADC3 çıkışı ise, elektrik kesildiğinde yani şebeke kontrol noktası
lojik “1” olduğunda floresan yakılmadan önce hava aydınlık durumunu tespiti içindir.
Cihaz tamamen bittiğinde, floresan devresini yaptıysanız, oda floresanın yanacağı
kadar karanlık olduğunda, cihazın AC bağlantısını kesip RV4 ile ayarı yapabilirsiniz.
Şemadaki Buzzer bölümü kurulan alarmların uyarılmasını yapabilmek içindir.
Gelelim şemadaki LM35 katına. LM35 her derece için çıkış voltajını 10 mV
artıran bir özelliğe sahiptir. Toplamda +150 derece ile eğer eksi voltaj kullanılırsa –55
dereceye kadar sonuç verebilir. Tekli besleme kullanıldığında ise 0 ile +150 derece
aralığını ölçümleyebilir.
Kullandığımız mikrokontrol PIC16F877 ise 10 Bit ADC ye sahiptir. Yani 5 volt
versiyonu, 5000mV/1024=4.88 mV minumum ölçüm yapabilir. Buda LM35 i direk
kullandığımızda ½ derece hassasiyetle ölçüm yapabileceğimiz manasına gelir. Biz
oda sıcaklığını derecenin 1/10 u hassasiyetle ölçmek istediğimizden LM35 çıkışında
girişini 5 kat artırabilecek şekilde kullandığımız yükseltici devresi kullanıyoruz.
Böylelikle LM35 derecenin 1/10 u için 1 mV çıkış voltajını artırdığında yükseltici
devremiz bunu 5 mV olarak mikrokontrole iletiyor. Bunun tabi bir riskide var. Oda
sıcaklığınız 100 dereceyi geçerse yükseltici çıkışındaki voltaj 5 voltu geçer. Buda
mikrokontrolünüzün hoşuna gitmez. Gerçi siz 100 derece sıcakta kaldıktan sonra bu
durumda umurunuzda olmaz.
Bu katın kalibrasyonunu RV3 ile yapıyoruz. Bunu için iki yol mevcut. RV3, ya
diğer bir ısı ölçer sonucu ile cihazın görüntülediği sonuç aynı olana dek ayarlanır
yada LM35 çıkışındaki voltajın tam 5 katını yükseltici çıkışında görene dek ayarlanır.
İkinci yol daha az zaman alır ve daha net sonuç verir.
LM35 i baskı devreniz veya plaketiniz üzerinde kullanmamanız gerekir. Çünkü
devre üzerinde ısı oda sıcaklığına göre oldukça fazladır. Zaten bu cihazı
yapacaksanız bunu bir kutu içerisinde muhafaza etmeniz gerekecektir. LM35 i plastik
kısmı kutunun dışına gelecek şekilde yerleştirir ve kutunun içinde kalan bacak
kısmını bant ile kapatırsanız en doğru sonucu alırsınız.
Bu şemadan kontrol şemasına AYD, Buzzer, ADC2 ve ADC3 Noktaları
bağlanılacak.
118 / 118
Ek Birimler Şeması
119 / 119
Butonlar ve Gösterge Ledleri
Cihaz üzerinde 5 adet buton ve 7 adet gösterge ledi var. Ledlerin biri power
katında şebeke göstergesi, biri yine power katında ısıtıcı devrede göstergesi olarak
kullanılıyor. Tabi siz hepsini gösterge panelinde bir araya toplayacaksınız.
Kullanımları, ne işe yaradıkları son bölümde anlatılıyor. Nasıl bağlandıkları bu
şemada ;
Bu şemadan kontrol şemasına 5 buton kontrolü ve 5 led kontrolü noktaları
olmak üzere toplam 10 bağlantı yapılacak.
Butonlar ve Gösterge Ledleri Şeması
120 / 120
Gösterge Paneli
Bu şemadada gösterge displaylerimiz var. Ben gösterge paneli olarak boş
portların fazla olmasından, yanlış hatırlamıyorsam 94 yılında yaptığım (tabi
mikrokontrolsüz) ev alarmımdan kalan sondan bir önceki birim 4543 lerden ve tekli
displaylerden oluşan aşağıdaki devreyi kullandım. Tabi programda ona göre.
Şimdi hatırladım da 4 haneli bir şifreyi tutmak ve karşılaştırmak için ne kadar
uğraşmıştım. Kocaman bir alet olmuştu. Acaba kaç tane parça vardı. Gösterge
panelinden sonra kalan bu son devreyi şimdi elime aldım. Üzerinde 8 tane 74LS194
var. Herhalde bu sekiz 74LS194 ten dördü tutulan şifre için, kalan dördüde kullanıcın
girdiği karşılaştırılacak şifre içindi. 4 tanede CD4585 var herhalde bunlarda
karşılaştırma işlemini yapıyordu veya ne yapıyorlardı ise. Tabi bir sürüde boş yer var,
parçaları kullanmışım. Sahi o zamanlar 7805, LM350 falan varmıydı, aküyü nasıl şarj
ediyordum ? İnanın hatırlayamıyorum. Neyse boşverin.
Bu şemadan kontrol şemasına 4 adet 4543 ü süren toplam 16 bağlantı
yapılacak.
121 / 121
Gösterge Paneli Şeması
122 / 122
Kontrol Katı
PIC16F877 için kullandığımız kristal 32.768 kHz. Konsansötörler ise 82 pf. 68100 pf arası kullanabilirsiniz. Yerleştirmeyi yaparken, kristal bacakları ile beraber 877
nin OSC bacaklarını Guard Ring denilen (GND ile etrafını kuşatma) olayını yapar ve
pasta kalıntılarını temizler iseniz saat sayma işleminde kaymalar olmaz. Benim
cihazın saati bir yıldır çalışıyor sadece 7 dakika geri kaldı. MCLR üzerinde bir reset
butonu var. İsterseniz B1, C9, R57 ve D9 u kullanmadan MCLR ucunu +5 volta
bağlayabilirsiniz. Sadece reset imkanınız olmaz. PIC16F877 yi programlarken LP
kristal, WDT Off ve Power On Reset devrede şeklinde seçim yapmalısınız.
PIC16F877 ye yüklenecek program bu adreste ;
http://tirbulans.tripod.com/bebek.zip
123 / 123
Kontrol Katı Şeması
124 / 124
Ek Ses Dinleme Birimi
Bas,Tiz ve Değişim kontrollü çok hassas bir mikrofon katı. O kadar hassas ki
yandaki, alttaki, üstteki komşularınızın konuşmalarını bile dinleyebilirsiniz. Ben
oğlumun uyurken döndüğünde yatağının, yorganının çıkarttığı sürtünme sesini bile
duyabiliyorum.
RV6 Mikrofon hassasiyetini, RV7 Bası, RV9 Tizi, ve RV8 değişimi ayarlamak
için kullanılıyor. Bu üç potu linear kullanın diyor katalogda. SS çıkışına iyi bir amfi
bağlarsanız sonuç çok daha mükemmel olur. Ben bir arkadaşımın getirdiği USA malı
110 dB lik bir siren amfisi kullanıyorum. Ancak sıradan bir LM386 lı, TBA820 li amfide
iş görür. Yada televizyonunuzda, müzik setinizde AUX veya AUDIO girişi var ise
onlarıda kullanabilirsiniz. Bildiğim kadarıyla AUX veya AUDIO jacklarında, analog ses
orta uç, GND dıştaki uç olur.
Mikrofondaki aşırı hassasiyet nedeni ile amfinizin ses çıkışında rahatsız edici
ötme sesi duyabilirsiniz. Hopörlör mikrofondan ne kadar uzak olursa mikrofon
hassasiyetini o kadar artırabilirsiniz. Devreye güç vermeden önce amfinizi ve
hopörlerinizi nereye istiyorsanız yerleştirin. RV6 değerini iyice azaltın ve devreye güç
verin. Ötme sesini duyana dek RV6 değerini artırın. Ötmeyi duyduğunuz anda RV6
değerini çok az azaltarak ötmeyi durdurun. En iyi yeri buldunuz. Şimdi cihazın olduğu
odaya radyo gibi bir ses kaynağı yerleştirerek diğer ayarları yapabilirsiniz. Hopörlör
ve amfi iyice uzaktaysa aşırı hassas bir ayar yapmış olabilir ve komşularınızı falan
duyuyor olabilirsiniz. Eğer durum böyle ise çok ayıp. RV6 değerini komşularınızı
duyamayacak kadar azaltın.
125 / 125
Bu katın beslemesini +Ve den almalı ve harici bir açma/kapama butonu
koymalısınız. Çünkü bu ilave devre kontrol katı tarafından kontrol edilmiyor. Ben
açma/kapama butonunu bahsettiğim siren amfisi üzerine koydum. Yani SS ile
beraber, +Ve ve GND mutfağa kadar geliyor. Eğer sizde böyle kullanır iseniz +Ve
çıkışını küçük değerli bir sigorta veya 20 ohm gibi seri direnç üzerinden alırsanız,
direk aküden beslenen +Ve kablodaki kısa devre gibi durumlarda kavrulma olayına
sebep olmaz. Bu arada akü olarak ben 12 Volt 7 Amper kullandım. Kablo diyincede
aklıma şu geldi; Bu olayı, önemli olanın mikrofon hassasiyeti olması nedeniyle AM ile
FM ile kablosuz yapamazsınız. Sizde benim gibi bebeğin yakınında RF olmasını
istemiyorsanız, Bebek Telsizi diye satılan ve bebeğin başucuna konulan şeylerden
sanırım kullanmazsınız.
126 / 126
Ek Ses Dinleme Birimi Şeması
127 / 127
Ses Çıkışı İçin Örnek Devre Şeması
Buda SS çıkışında kullanabileceğiniz örnek bir amfi şeması ;
128 / 128
Bu Cihaz Nasıl Çalışıyor ?
Hangi led yanıyorsa o özellik devrede demektir. Hiçbir özellik devrede değilse
gösterge panelinde sırasıyla saat, sıcaklık ve akü voltajı görüntülenir. Bütün özellikler
devrede ise sırasıyla saat, istenen sıcaklık, saat alarmının kurulduğu saat, odanın o
anki sıcaklığı, geri sayımda kalan süre ve akü voltajı görüntülenir. Devrede olmayan
özelliğe ait görüntüleme bu sıralamadan çıkartılır.
Ana menüde ;
Buton 1 e basıldığında saat ayarı,
Buton 2 ye basıldığında saat alarmı ayarı, ( gelen ilk zaman dilimine )
Buton 3 e basıldığında geri sayım saat alarm ayarı, (99 saat 59 dakikaya kadar)
Buton 4 e basıldığında sıcaklık ayarı, (0-29 derece arası)
Buton 5 e basıldığında otomatik aydınlatmanın yapılıp yapılmayacağı ayarlanıyor.
Birden fazla butona bastığınızda ise ilk bastığınız buton neyse o işlem yapılır.
Ayarlama esnasında hiçbir özelliğin kontrolü yapılmamaktadır.
Saat Ayarı
Özellik işlem ledi yanar. Displaylerde bir değişiklik olmaz.
Şebeke ve Isıtıcı Devrede ledi hariç tüm ledler söner.
Saat 17:43 ise
Saat H = 1
Saat L = 7
Dakika H = 4
Dakika L = 3 tür.
129 / 129
Buton 1 Saat H
Buton 2 Saat L
Buton 3 Dakika H
Buton 4 Dakika L alanlarını saat formatında yukarı doğru saydırır.
Buton 5 ayarlamadan sonra ana menüye geri dönüş içindir. Ekrandaki değer
yeni saat olarak kabul edilir saniye sıfırlanır ve ana menüye dönülür. Buton 5 e
basılmaz ise, program 10 saniye sonra ekrandaki değeri yeni saat olarak kabul eder
ve ana menüye döner.
Ana menüye dönüldüğünde ilk olarak saat bilgisi görüntülenir. Görüntüleme
zamanlaması ilk dakika atlamasından itibaren düzenlenir.
Alarm Ayarı
Özellik işlem ledi ile birlikte saat alarmı devrede ledi yanar diğer ledler söner.
Göstergede kurulan alarm saati görüntülenir.
Aynen saat ayarlanıyormuş gibi alarmın kaçta çalması isteniyorsa o saat girilir.
Buton 5 e basıldığında özellik işlem ledi yanıp sönmeye başlar. En soldaki
displayde “0” görüntülenir. Diğer displayler kararır.
Bu andan itibaren Buton 1, saat alarm takibini devreye alıp çıkartacak şekilde
çalışır. Saat alarmı bu aşamada zaten devredeyse saat alarmı devrede ledi yanık
durumdadır, değilse sönüktür. Saat alarm takibi devreye alındığında, saat alarmı
devrede ledi yanar, devreden çıkartıldığında ise söner.
Buton 5 e basılarak ana menüye dönülür.
Buton 5 e basılmaz ise, mantık devamlı aynıdır. 10 saniye ilgili butona /
butonlara basılması beklenir, eğer 10 saniye içinde basılmaz ise gösterge neyi
gösteriyorsa o değerler artık yeni değerlerdir. Saat alarmı kontrolü her dakika yapılır.
130 / 130
Geri Sayım Saat Ayarı
Özellik işlem ledi ile birlikte geri sayım devrede ledi yanar diğer ledler söner.
Göstergede kurulan geri sayım saati görüntülenir.
Aynen saat ayarlanıyormuş gibi geri sayım süresi girilir. Ancak saat 99 a kadar
artırılabilir.
Buton 5 e basıldığında özellik işlem ledi yanıp sönmeye başlar. Soldan ikinci
displayde “0” görüntülenir. Diğer displayler kararır.
Bu andan itibaren Buton 1, geri sayım takibini devreye alıp çıkartacak şekilde
çalışır. Geri sayım takibi bu aşamada zaten devredeyse geri sayım devrede ledi
yanık durumdadır, değilse sönüktür. Geri sayım takibi devreye alındığında,
geri
sayım devrede ledi yanar, devreden çıkartıldığında ise söner.
Buton 5 e basılarak ana menüye dönülür. Geri sayım süre dolum kontrolü her
dakika yapılır.
Isı Takibi Ayarı
Özellik işlem ledi ile birlikte ısı takibi devrede ledi yanar diğer ledler söner.
Göstergede sol iki hane kararır ve kurulan derece sağ iki hanede görüntülenir. Buton
3 ve Buton 4 ile istenen derece ayarlanır.
Buton 5 e basıldığında özellik işlem ledi yanıp sönmeye başlar. Sağdan ikinci
displayde “0” görüntülenir. Diğer displayler kararır.
Bu andan itibaren Buton 1, ısı takibini devreye alıp çıkartacak şekilde çalışır.
Isı takibi bu aşamada zaten devredeyse, ısı takibi devrede ledi yanık durumdadır,
değilse sönüktür. Isı takibi devreye alındığında,
ısı takibi devrede ledi yanar,
devreden çıkartıldığında ise söner.
131 / 131
Buton 5 e basılarak ana menüye dönülür.
Kontrol her dakika yapılır. Cihaz 23 dereceye ayarlanmış ise 22.9 derecelik
ölçüm ısıtıcıyı açar. Derece 23.2 olduğunda ısıtıcı kapatılır. Yani oda sıcaklığı istenen
sıcaklığın
1/
10
u kadar altına düştüğünde ısıtıcı çalışmaya başlar, istenen sıcaklığın 1/5
i kadar üzerine çıktığında ısıtıcı kapatılır.
Otomatik Aydınlatma Ayarı
Özellik işlem ledi ile birlikte aydınlatma devrede ledi yanar diğer ledler söner.
En sağdaki displayde “0” görüntülenir. Diğer displayler kararır.
Buton 1, Aydınlatma takibini devreye alıp çıkartacak şekilde çalışır.
Aydınlatma takibi bu aşamada zaten devredeyse aydınlatma devrede ledi yanık
durumdadır, değilse sönüktür. Aydınlatma takibi devreye alındığında,
aydınlatma
devrede ledi yanar, devreden çıkartıldığında ise söner.
Buton 5 e basılarak ana menüye dönülür.
AC besleme kesilmesi her an, AC Beslemenin tekrar gelişi ve eğer floresan
yanıyorsa aydınlık kontrolü her dakika yapılır. AC besleme kesildiğinde floresan
yakılmadan aydınlık kontrolü yapılır.
Alarmlar Nasıl Verilir, Nasıl Durdurulur.
Hangi alarm devreye girmişse o özelliğin ledi yanıp sönmeye başlar ve buzzer
kesintili olarak öter. Hangi özelliğe ait alarm veriliyor ise o özelliğin ayar butonuna
basılarak alarm kapatılır.
132 / 132
Cihazın Resimleri
133 / 133
134 / 134
135 / 135
136 / 136
137 / 137

Benzer belgeler