Pic ile encoder sinyallerini saydırmak

alcolicha

Üye
Katılım
12 Ocak 2007
Mesajlar
6
Puanları
1
Yaş
39
Arkadaşlar ben Pic programlama ile encoder sinyallerini saydırmak istiyorum bunu nasıl yapabiliriz yardımcı olabilirmisiniz teşekkürler.
 
Basitçe TMR0 ile yükselen ya da düşen kenar sayabilirsiniz. TMR0 option register ile konfigüre edilerek kullanılır. Bunu bir inceleyin, halledemezseniz kullandığınız işlemciyi ve dili belirterek tekrar msj yollayın.
 
16f877 ile encoder hız bilgisini lcd göstermek istıyorum.Hı Tech c kullanıyorum.
 
1.Başlangıçta option registerin şu bitlerini ayarlayın:

t0cs = 1; // porta.4 tmr0 girişi
psa = 0; // prescaler değeri wdt'a atandı yani önbölücü(prescaler) kullanılmıyor
t0se = 0 //her 0'dan 1'e geçişte tmr0'ı bir sayı arttırır


2.Programda tmr0'ı istediğiniz yerde sıfırlayabilirsiniz

tmr0 = 0

3. Tmr0'ın almış olduğu değeri(saydığı) herhangi bir değişkene yükleyebilirsiniz:
unsigned char degisken
degisken = tmr0

Tmr0 8 bitlik bir sayıcıdır, 255 'ten sonra tekrar 1'den devam eder, bu taşma tmr0if bitinden anlaşılabilir.


Daha yüksek sayılar sayılacaksa aynı mantıkla 16 bitliktmr1 modülü de kullanılabilir. Bunun için datasheet'i inceleyin.
 
tyildizak ' Alıntı:
Basitçe TMR0 ile yükselen ya da düşen kenar sayabilirsiniz. TMR0 option register ile konfigüre edilerek kullanılır. Bunu bir inceleyin, halledemezseniz kullandığınız işlemciyi ve dili belirterek tekrar msj yollayın.

1-aynı şeyi ben pic basic de yapmak istiyorum hangi mantıkla yapabilirim

2- 2. soru encoder de dönüş yönünü pic e nasıl bildirebilirim

yardımlarınızı bekliyorum
 
Motorun dönuş yönunu çift kanallı encoder kullanarak yapabilirsin.a ve B kanal çıkışlarını hangisine daha önce puls geldiğine bakarak motorun sağ ve ya sol yada durduğunu lcd görüntüleyebilirisin.A ve B kanalları arasında 90 derce faz farkı olan çıkış pulsları vardır.forumda aratırsan çift kanllı encoderler hakkında döküman bulabilirisin.kolay gelsin
 
En basit yolu B palsi yüksek (1) durumda iken A dan gelen palsler (Yükselen kenar), örneğin sağ yönde ise,
B palsi düşük (0) durumda iken A dan gelen palsler(Yükselen kenar), sol yönde hareketi verir.

Bu şekilde değerlendirme yapabilirsin, (Aralarında 90° faz farkı vardır)

iyi çalışmalar
 
peki ben encoderin a. ve b. uçlarının önce hangisindn pals geldiğini nasıl anlayabilirim 90 dercelil faz farkını nasıl okutabilirim çünkü ilk baştaki sinyal sabit değil sanırım A veya B encoder dönmeye başladığında tıpkı flip flop gibi bana 101010 üretecek. nasıl bi mantık kurmam gerekiyor. pic basic kullanıyorum eğer yardımcı olursanız çok makbule geçer.
 
Basit bir açıklama olacak fakat sanırım böylesi daha anlaşılır olur:
a=1 olduğu anda b=1 ise , bir yöne
a =1 olduğu anda b=0 ise, diğer yöne dönüyor demektir.
 
arkadaşlar picbasicle bunu nasıl yapabilirim bende merak ediyorum. Birde bven kesme kullanarak yapmak istiyorum. devrenin stabil çalışması gerekiyor. yardımlarınız için teşekkür ederim.
 

Yeni mesajlar

Forum istatistikleri

Konular
128,190
Mesajlar
915,725
Kullanıcılar
449,961
Son üye
omr70

Yeni konular

Çevrimiçi üyeler

Geri
Üst