optik ileri geri sayıcı

Başlatan erkmenliharun, 18 Eylül 2008, 22:19:25

sezgin05

İlk uygulama olarak sadece 4 digitli olarak yapalım.Açık kod vereceğim için isteyen arkadaşlar geliştirebilir.
Benim yaptığım uygulamada piyasada kolay bulunan 3 bacaklı IR alıcı göz kullanmıştım.Karşılığındada tek bir IR verici led.mekanik olarak bir krililik olmazsa gayet sağlıklı çalışır.Hatta aynı projeyi personel saymak için de kullandım.Yani mesafeyi 2 metreye çıkararak da kullandım.Sorun olmaz...

sezgin05



Şema yukarıdaki gibi olacak.Yazılımıda en kısa zamanda yayınlarım..

erkmenliharun

Sezğin 05 hocam yön anahtarla yaılıyor yön tayini otamatik olacak değilmi.

sezgin05

Resimdende görüleceği gibi rotary encoder temsilen bir modül kullandım.Asıl devrede ise 2 adet opto kullaılacak.Pice sadece 2 pin girecek.Otomatik olarak yön tayini yapılacak.Bu optolar elektronik cihazların (TV-VCD...) kumanda alıcısında kullanılan IR alıcılardır.

tnen

erkmenliharun hocam projenin ne aşamasındasın bilmiyorum ama ileri geri sayıcın varsa mauselardaki gibi yarıklı bir disk ile bu iş olur diye tahmin ediyorum tabiki burada sana aralarında 90 derece faz farkı olan iki kare dalda gerekecek bunuda yarıklı diskin uretecek yani optiklerini o şekilde yerleştirmen gerekli. Elde etmiş olduğumuz iki kare dalgadan birini D tipi FF nin D girişine diğerinide CLK girişine bağlamalısın Q çıkışımız ileri mi geri mi saygığımızı algılamamızı sağlayacaktır. Q çıkışını sayıcının UP/DOWN ucuna bağlıycaz yani.

sezgin05

Aşağıdaki kod en basit rotary encoder mantığını çözmeye yardımcı olacaktır...

Device    16F628A
Config     INTRC_OSC_NOCLKOUT,WDT_off,PWRTE_on,LVP_off
CMCON=7
VRCON=0
TRISA =%11110000
TRISB =%00000000
Dim     OLD     As Byte
Dim     NEW     As Byte
Dim     SAYI    As Word
Dim     X       As Byte
Dim     DIR     As Bit
Clear

start: 
OLD = NEW 

loop:
NEW.0 =PORTA.7 
NEW.1 =PORTA.6 
If NEW = OLD Then loop 
DIR = NEW.0 ^ OLD.1  
If DIR = 1 Then left
If DIR = 0 Then right
GoSub screen
GoTo start

left: 
SAYI=SAYI+1
  If SAYI>9999 Then
        SAYI=9999
  EndIf
GoSub screen
GoTo start

right:
If SAYI > 0 Then
   SAYI= SAYI -1
EndIf
GoSub screen
GoTo start

screen:
For X=0 To 3
    LookUpL (SAYI Dig (X)),[63,6,91,79,102,109,125,7,127,111],PORTB
    LookUpL X,[1,2,4,8],PORTA
    DelayMS 1 :PORTA=0
Next
Return
End  

erkmenliharun

Sezğin hocam hocam kodları hex dosyası olarak verebilirmisin. fotodaki kodları hex dosyasına çevirmesini bilmiyorumda.

OG

FORUMU İLGİLENDİREN KONULARA ÖM İLE CEVAP VERİLMEZ.

sezgin05

Rapid erişimi olmayanlar için açık kod hex :)
:100000007B2883178001840AFF3E031D022876287F
:10001000A401A300FF30A307031CA407031C762838
:100020000330A200DF3016200A28A201E83EA1001A
:10003000A209FC30031C1F28A10703181C28A107D4
:100040000000A20F1C2821182528A11C2928000027
:1000500029280800003803194228A9002108840033
:1000600022188317A201A101A91B3E280008A100A4
:10007000A91C4228840A0008A20042284320000547
:10008000031DA10A762800308A0029080739820753
:1000900001340234043408341034203440348034C1
:1000A000013EA8000A30A300A4015A20A80B55283D
:1000B00025080800A601A5011030A700220DA50DF6
:1000C000A60D2308A5022408031C240FA60203186A
:1000D00070282308A50724080318240FA607031077
:1000E000A10DA20DA70B5E28210876288313831289
:1000F00003130000080007309F0083169F01F030B3
:100100008500860120308400603083120220A030F8
:1001100084005030022020308400303001202B0831
:10012000AA008310851B831483182B14831C2B10A7
:100130008310051B83148318AB14831CAB102B088E
:100140002A02031DA42891282F102B182F140130E8
:10015000AA18AF062F1CAD28B2282F18B028C52822
:10016000D1208F28AC0A0319AD0A27302D02031CB9
:10017000C328031DBF2810302C02031CC3282730BE
:10018000AD000F30AC00D1208F28AC08031DCB2868
:10019000AD080319CF28AC032C0A0319AD03D120F5
:1001A0008F28AE0104302E02031848292D08A20022
:1001B0002C08A1002E085020A000A300093C031C1D
:1001C0001F290310230DA307EF20A100A30AEF208E
:1001D000A200A30AEF202A20210886001F2901304F
:0601E0008A00230800293B
:1002000082073F34003400340634003400345B3459
:10021000003400344F340034003466340034003489
:100220006D34003400347D3400340034073400343D
:1002300000347F34003400346F34003400342E082E
:10024000A300033C031C42290310230DA307322102
:10025000A100A30A3221A200A30A32212A202108E8
:100260008500422901308A002308820701340034C6
:1002700000340234003400340434003400340834D0
:1002800000340034013008208501AE0A031DD22855
:060290000800630049298B
:02400E00703F01
:00000001FF

erkmenliharun

Sezğin 05 hocam devrede değişiklik varmı varsa açıklayabilirmisin.tşk

sezgin05

Eğer bu haliyle ihtiyaçlarınıza cevap veriyorsa yapabilirsiniz.Yapmayı düşündüğünüz devreyi de burada şema ve board olarak yayınlarsanız arkadaşlarla beraber varsa eksiklerini buluruz.Anladığım kadarıyla optik encoder hakkında tereddütleriniz var.Kolay gelsin

sezgin05



Yukarıda resmini gördüğünü IR alıcılardan kolaylıkla piyasadan bulursunuz.Bunlardan 2 tanesini alıp aşağıdaki gibi bağlarsanız sorun olmaz.Burada ki bağlantıda transistör ve 10 k dirençten sol tarafdaki devreyi yapmayacaksınız.Transistörün kollektöründen pice direkt bağlantı yapacaksınız.


Verici olarakda aşağıdaki devre idealdir.