İleri Geri Adım (Step) Motor Sürücü Uygulaması

Bu uygulama, adım motoru ileri ve ya geri butonuna basarak tek tek yarım adım attırmak için hazırlanmıştır.
Butona her basılışta adım motor bir yarım adım atar ve attığı her adım pic programı tarafından hafızada tutulur.
Geri veya ileri butonuna basıldğında adım motor kaldığı yerden adımına devam eder. Programda ufak bir mantık değişikliği ile tam adım attırmak da mümkün.

Program, pic c ile yazıldı. Devre şeması, c ve hex dosyaları alttaki adrestedir.

http://www.elektronikmerkezi.org/dosyalar/ileri_geri_adimli_adim_motor_uygulamasi.zip

sinan gümüştekin – remzi şahinoğlu

16F84 İLE SERİ PORTUN PRATİK KULLANIMI

Bu yazımda seri portun pratik kullanımı üzerinde duracağım. Bu iş için bir PC, bir PIC 16F84 entegresine, bir DB9 konnektörüne, birkaç LED’e ve dirence ihtiyacımız olacak. Bir de porta bilgi göndermek için küçük bir yazılıma ihtiyacımız olacak.

http://www.elektronikmerkezi.org/dosyalar/2308seriport.zip

Dijital Numaratör

Klasik numaratör yerine basit ve pratik dijital göstergeli numaratör.

Bilindiği üzere eskilerde kapıcı dairelerinde ve çaycı vb yerlerde mekanik numaratörler bulunurdu. Dairelerden çağırma butonuna basılınca numaratörde ilgili numara gözükür. Peşisıra gelen çağrılar yine gösterilirdi. Çağrı algılanınca görevli mekanik kolu çevirerek inen tüm numaraları kaldırırıdı. Bu şekilde hafızalama ve hafıza silme yapılırdı.

Aşağıda bu işlemi yapan dijital numaratör görülmekte. 1’ den 9’a kadar butonlara basıldığında 7 segment ekranda ilgili numara gözükür. Buzer’den uyarı sesi gelir ve aynı zamanda pic içerisinde hafızaya alınır. Daha sonra başka bir butona basılınca yeni numara ekranda gözükür, uyarı gelir ve hafızaya alınır. Bu şekilde 10 adet numara hafızaya alınır. 10 hafıza dolduğunda ise sürekli uyarı sesi gelir. Görevli “hafıza” butonuna basınca bir önceki basılan butonun numarası ekranda gözükür ve uyarı sesi gelir. Bu şekilde geriye doğru hafızaya bakma işlemi yapılır.
Bu sırada yeni bir ikaz gelirse doğrudan ekranda görüntülenir ve hafızaya alınır. Hafızadaki numaralara bakma işlemi herhangi bir sırada yapılabilir. Tüm hafızanın dolmasını beklemek gerekmez.

Butonların birer uçlarının ortak olması mevcut mekanik numaratör yerine doğrudan bağlanabilmesini sağlamaktadır. Ancak kullanılan eski butonlarda mekanik titreşimler olacaktır. Her ne kadar program esnasında bu giderilmeye çalışılmışsa da tam olarak önlememektedir. Bu sebeple butonların her birine 100 nF paralel bağlamak yerinde olacaktır. Elbette bunun için tek tek butonları açıp içine bağlayacak değilsiniz. Aşağıdaki devrede butonun bağlandığı uç ile şase arasına bağladığınızda butona paralel bağlamış olursunuz.

9 dan fazla girişli sistemlerde ise ya 2-3 portu olan pic kullanılacak ya da başka mantıklar düşünülecektir. Ben farklı bir mantıkla 16f84 veya 16f628 kullanarak 100’den fazla buton bağlayabilmekteyim. Yine 10’dan fazla numara hafızaya alınabilmektedir. Hafıza sayısı kullanılan pic’in hafızasına bağlıdır. 16f84 ile 50 civarında hafızaya alma işlemi yapılabilmektedir.

numaratör

 Programın Hex Dosyası

 Proteus VSM’de çizilmiş şema

Serkan KALE

PIC 16F628 ile LCD Saat Takvim

Aşağıda şeması ve baskı devre dosyası bulunan devrede, LCD ekranda saat ve takvim gösterilmektedir. Butonlarla saat, dakika, ay ve gün ayarı yapılmaktdır. Baskı devre dosyasında devre için gerekli olan besleme için devre dizaynı yapılmıştır. 9 voltluk girişden, 7805 regüle entegresi ile +5 volt besleme elde edilmiştir.

Şekil 1: Devrenin şeması.

Şekil 1: Devrenin şeması.

Ekler:

 Devrenin HEX dosyasını indirmek için tıklayınız.

 Devrenin Eagle programı ile hazırlanmış baskı devre dosyasını indirmek için tıklayınız.

Selim Şahin
elosel@teknomerkez.net

PIC 16F628 ile 8X32 Kayan Yazı Grafik Panosu

Son günlerde pekçok sitede kayan yazı devrelerine raslayınca bende de bu konuda bir ürünümün olması isteği oluştu. Bu devrenin basit, grafiksel ve PicBasic Pro hakkında açıklayıcı olmasına özen gösterdim. Sonuçta bu, sadece bir gösteri devresi olduğundan ihtiyaç karşılayıcı özelliğinin az olması da normal. Fakat fikir verici ve faydalı olabilecek pekçok yönünün olduğunu düşünüyorum.

Devre, bir adet PIC16F628, 2 adet 74HC154 ve bir adet 74HC00 Entegresi ve led matrixten oluşmakta. Led matrixi kendiniz dizayn edeceğiniz gibi piyasada satılan 8×8 led matrixtende 4 tane alıp yapabilirsiniz. Devreyi en temel devre olarak dizayn ettiğimden dolayı, kullanılacak ledlere göre 74HC154 entegresinin uçlarının transistörlerle sürülmesi gerekebilir. Ayrıca ledlerlerle PORTB arasına 470R direnç bağlamak gerekir. Kristali 4 MHz’den büyük, mesela 10 MHz kullanırsanız p1 ve i1 değişkenlerinin değerini daha büyük atamanız gerekmektedir. 74HC00 lojik entegresinin yerine transistörle de gelen sinyali değilleyebilirsiniz. Ben devreyi şemadaki şekliyle yaptım ve bredboard üzerinde çalıştırdım. Ama baskı devresini hazırlamadım. Devre, şeması ve Pic Basic Pro program kodları incelenince yeterince bilgi verecektir. Ek dosyalarda bulunan ‘.dsn’ uzantılı dosya, PROTEUS ISIS çizim dosyasıdır. Bu dosyada simulasyonu çalıştırabilirsiniz.

Devrede görüntülenmesini istediğiniz grafik ya da yazıyı d1-d32 değişkenlerine işliyorsunuz. 0′lar ledleri yakmıyor, 1′ler ledleri yakıyor. Aşağıdaki kodlarla ‘Teknoloji’ kelimesi kayan yazı olarak çıkmaktadır.

 Devre ile ilgili bütün dosyalar ekte, tıklayınız.

 Resmi büyük görmek için tıklayınız.

Devrede bulunan kristal osilatörünü PIC 16F628 dahili osilatörünü kullanarak kaldırabilirsiniz. Bunun için PIC16F628 ‘in konfigurasyon bitlerini düzenlemeniz gerekmektedir.

Devrenin, Pic Basic Pro ile hazırlanmış kodları:

‘pic 16F628 ile 8X32 Matrix Pano Kayan Yazı Grafik
‘Hazırlayan: Mehmet Yılmaz –
mehmet.yilmaz@teknomerkez.net
‘Tarih: 5 Nisan 2005
‘Dosya adı: 8×32-d1.bas
‘Kullanılan değişken fazlalığından dolayı PIC16F628 kullanıldı.
‘d1-d32 değişkenlerini PORTB de gösterirseniz gerekli değişiklikleri
‘yaparak PIC16F84 kullanabilirsiniz
‘——————————————————-
‘PROTON Compiler kullanıyorsanız alt satırın başındaki tırnağı kaldırın
‘DEVICE 16F628
‘=====Değişkenler tanımlanıyor=====
i VAR BYTE
i1 VAR BYTE
p1 VAR BYTE
p2 VAR BYTE
‘PORTA değişkenleri
pa1 VAR BYTE
pa2 VAR BYTE
pa3 VAR BYTE
pa4 VAR BYTE
pa5 VAR BYTE
pa6 VAR BYTE
pa7 VAR BYTE
pa8 VAR BYTE
pa9 VAR BYTE
pa10 VAR BYTE
pa11 VAR BYTE
pa12 VAR BYTE
pa13 VAR BYTE
pa14 VAR BYTE
pa15 VAR BYTE
pa16 VAR BYTE
pa17 VAR BYTE
pa18 VAR BYTE
pa19 VAR BYTE
pa20 VAR BYTE
pa21 VAR BYTE
pa22 VAR BYTE
pa23 VAR BYTE
pa24 VAR BYTE
pa25 VAR BYTE
pa26 VAR BYTE
pa27 VAR BYTE
pa28 VAR BYTE
pa29 VAR BYTE
pa30 VAR BYTE
pa31 VAR BYTE
pa32 VAR BYTE
‘şekil değişkenleri
d1 VAR BYTE
d2 VAR BYTE
d3 VAR BYTE
d4 VAR BYTE
d5 VAR BYTE
d6 VAR BYTE
d7 VAR BYTE
d8 VAR BYTE
d9 VAR BYTE
d10 VAR BYTE
d11 VAR BYTE
d12 VAR BYTE
d13 VAR BYTE
d14 VAR BYTE
d15 VAR BYTE
d16 VAR BYTE
d17 VAR BYTE
d18 VAR BYTE
d19 VAR BYTE
d20 VAR BYTE
d21 VAR BYTE
d22 VAR BYTE
d23 VAR BYTE
d24 VAR BYTE
d25 VAR BYTE
d26 VAR BYTE
d27 VAR BYTE
d28 VAR BYTE
d29 VAR BYTE
d30 VAR BYTE
d31 VAR BYTE
d32 VAR BYTE
‘=====port giriş çıkış ayarları=====
TRISA=%00000000 ‘tüm portlar çıkışa ayarlandı
TRISB=%00000000 ‘zaten geride boş port kalmadı
PORTB=0 ‘PORTB başlangıçta 0 olacak
PORTA=1 ‘74HC154 tarama işleminde lojik 0 çıkışlı tarama yapar
‘bu durumda başlangıç için PORTA=1 olmalı
‘=====Sayıcıların ayarı=====
i=0 ‘Bu değer sabit kalsın
i1=8 ‘kayma hızını belirliyor(İSTEDİĞİNİZ HIZI BELİRLEYEBİLİRSİNİZ)
‘=====Bekleme ayarları=====
p1=1 ’sütun geçişleri arasındaki bekleme(TİTREMEYİ ÖNLEYECEK DEĞER)
‘=====Görüntü oluşturan değişkenler tanımlanıyor=====
‘görünmesini istediğiniz şekli oluşturmak için,
‘görünen için=1 siyah kalan için=0 olarak değer verin.
‘değerlerin anlaşılabilir olması açısından binary
‘olarak verilmiştir.
‘Teknoloji
d1=%00000001
d2=%00000001
d3=%01111111
d4=%00000001
d5=%00111001
d6=%01010100
d7=%01011000
d8=%00000000
d9=%01111111
d10=%00010000
d11=%00101000
d12=%01000100
d13=%00000000
d14=%01111100
d15=%00000100
d16=%01111000
d17=%00000000
d18=%00111000
d19=%01000100
d20=%00111000
d21=%00000000
d22=%01111111
d23=%00000000
d24=%00111000
d25=%01000100
d26=%00111000
d27=%00000000
d28=%10000000
d29=%01111101
d30=%00000000
d31=%01111101
d32=%00000000
‘PORTA tanımlaması
pa1=0
pa2=1
pa3=2
pa4=3
pa5=4
pa6=5
pa7=6
pa8=7
pa9=8
pa10=9
pa11=10
pa12=11
pa13=12
pa14=13
pa15=14
pa16=15
pa17=16
pa18=17
pa19=18
pa20=19
pa21=20
pa22=21
pa23=22
pa24=23
pa25=24
pa26=25
pa27=26
pa28=27
pa29=28
pa30=29
pa31=30
pa32=31
‘Değerlerin Portlara gönderilmesi işlemi yapılıyor.
basla:
i=i+1
IF i=i1 Then kaydir
PORTA=pa1
PORTB=d1
Pause p1
PORTA=pa2
PORTB=d2
Pause p1
PORTA=pa3
PORTB=d3
Pause p1
PORTA=pa4
PORTB=d4
Pause p1
PORTA=pa5
PORTB=d5
Pause p1
PORTA=pa6
PORTB=d6
Pause p1
PORTA=pa7
PORTB=d7
Pause p1
PORTA=pa8
PORTB=d8
Pause p1
PORTA=pa9
PORTB=d9
Pause p1
PORTA=pa10
PORTB=d10
Pause p1
PORTA=pa11
PORTB=d11
Pause p1
PORTA=pa12
PORTB=d12
Pause p1
PORTA=pa13
PORTB=d13
Pause p1
PORTA=pa14
PORTB=d14
Pause p1
PORTA=pa15
PORTB=d15
Pause p1
PORTA=pa16
PORTB=d16
Pause p1
PORTA=pa17
PORTB=d17
Pause p1
PORTA=pa18
PORTB=d18
Pause p1
PORTA=pa19
PORTB=d19
Pause p1
PORTA=pa20
PORTB=d20
Pause p1
PORTA=pa21
PORTB=d21
Pause p1
PORTA=pa22
PORTB=d22
Pause p1
PORTA=pa23
PORTB=d23
Pause p1
PORTA=pa24
PORTB=d24
Pause p1
PORTA=pa25
PORTB=d25
Pause p1
PORTA=pa26
PORTB=d26
Pause p1
PORTA=pa27
PORTB=d27
Pause p1
PORTA=pa28
PORTB=d28
Pause p1
PORTA=pa29
PORTB=d29
Pause p1
PORTA=pa30
PORTB=d30
Pause p1
PORTA=pa31
PORTB=d31
Pause p1
PORTA=pa32
PORTB=d32
Pause p1
GoTo basla ‘Göstermeye yeniden başla
‘=====Kaydırma işlemi yapılıyor=====
kaydir:
PORTA=1
PORTB=0
i=0
‘PORTA sıralaması değişimi
pa1=pa1-1
pa2=pa2-1
pa3=pa3-1
pa4=pa4-1
pa5=pa5-1
pa6=pa6-1
pa7=pa7-1
pa8=pa8-1
pa9=pa9-1
pa10=pa10-1
pa11=pa11-1
pa12=pa12-1
pa13=pa13-1
pa14=pa14-1
pa15=pa15-1
pa16=pa16-1
pa17=pa17-1
pa18=pa18-1
pa19=pa19-1
pa20=pa20-1
pa21=pa21-1
pa22=pa22-1
pa23=pa23-1
pa24=pa24-1
pa25=pa25-1
pa26=pa26-1
pa27=pa27-1
pa28=pa28-1
pa29=pa29-1
pa30=pa30-1
pa31=pa31-1
pa32=pa32-1
GoTo basla ‘kaydırma işlemi sona erdiğinde başa
‘döner ve işlem sürekli tekrarlanır
End ‘Program sonu

Mehmet Yılmaz