pic18F4431 yada 18F2431 ile Çift faz Encoder okuma yardım

Başlatan askb, 19 Temmuz 2012, 11:48:40

askb

Merhaba Başlıktada belirttiğim gibi pic 18F4431 yada 18F2431 ile encoder a-b fazlarını okumaya çalışıyorum.Formda ve nette bu pıclerle yapılmış örnek uygulama bulamadım.Yapmak istediğim;klavyeden mm yada cm cinsinden deger girip,ileri geri bu ölçülerde gidip gelmesini sağlamak.
PBP kullanıyorum.
Örnek kod yada nasıl yapacağımı tarif edebilirmisiniz.
Herkese kolay gelsin..
(NOT:formda encoder okuma ile ilgili hemen hemen bütün yazılanları okudum.Önceliğim bu piclerle yazılım yapmak.)

serdararikan

microchip in app note larında D flip-flop lar ile encoder in A-B uçlarından gelen siyaller önce ileri gerli palslere çevrilerek ölçüm yapılan bir örnek mevcuttu.ama bunun için yazılımsal bir sayma işlemi yapamazsın.donanımsal counter kullanman lazım

camby

Ben bu konuda forumda örnek kod paylaşmıştım , doğru anahtar kelimelerle ararsanız bulabilirsiniz. ( Ben de bakayım bulunca eklerim buraya da )

Erol YILMAZ

Encoder i okumanın en güzel yolu (mcu'da encoder modülü yok ise ) A-B sinyallerinden INTERRUPT oluşturmaktır.
Buradaki sinyallerin durumuna göre ileri yada geri hareketi sayabilirsiniz.

Ama PBP de donanımsal INT konusu biraz sıkıntılı diye hatırlıyorum...

camby

Yazılımsal Encoder okuma , donanımsalın yanında yetersiz kalır ve yazılımı meşgul eder. Fakat yazılımsal yapmaya çalışmak , hem donanım hem yazılım hem de encoder mantığını kavrama açısından çok öğreticidir.


Burada yazılımsal encoder okuma yapmıştım :

https://www.picproje.org/index.php/topic,28724.msg237587.html#msg237587



Burada ise 18f2431'in donanımsal Encoder modülü için örnek kod vermiştim :

https://www.picproje.org/index.php/topic,38841.msg284621.html#msg284621

askb

Cevabınız için teşekkür ederim.Düşüncelerinizde haklısınız.Dediğiniz yolda ilerliyorum.Saglıklı olması açısından,Donanımsal olanı yapmak en mantıklısı.
ASM pek anlamıyorum.
PBP kod paylaşımı olursa  sevinirim.

camby

Asm kullanmaman sorun değil aslında , sadece örnek kodlara baktığında ne yapıldığını anlarsan aynı kodları başka bir platformda veya dilde kurabilirsin.

Örneğin donanımsal kullanımda sadece QEI registerlarına okuma ve yazma yapıyorum başka hiçbir şey yok. Aç datasheetin ilgili bölümü , benim yaptıklarımı karşılaştırarak sen de kullan .

Yazılımsal olanını biraz daha karışık olabilir ama biraz kurcalasan ne yapıldığı anlaşılabilir. Ama donanımsal kullanacağın için karıştırmaya da gerek yok şimdilik.

Ben de kod yazarken bilmediğim bi konuda kod parçası ararken herhangi bir dilde yazılmış bir kod yetiyor istediğim şeyleri yapmaya.


------

QEI Algoritması :

1 - QEI Ayarlarını yap ( İlgili register : QEICON )
2 - Maksimum değeri gir ( encoder puls sayısı x 4 olabilir ) ( İlgili register MAXCNTH ve MAXCNTL )

3 - İstediğin zaman da encoder pozisyonunu oku ( Okuma registerları : POSCNTL ve POSCNTH

askb

Sağolun.Cesaretlendirdiniz.Hemen simülasyon devresini kuruyorum.Ardından datasheetinden ve sizin verdiğiniz bilgiler ışığında yazmaya çalışacağım.

Erol YILMAZ

Mcu yu özellikle incelememiştim fakat bunda QEI modülü varmış...

Motion Feedback Module w/ Quadrature Encoder Interface

QEI modülünü incelerseniz çok iyi sonuçlar alacağınıza eminim. Kolay gelsin.

askb

Tşk.Allegro hocam.Önce pic'i piyasada bulurmuyuz diye baktım.Her ikisinide bulabiliyoruz.PIC18f4431 8.5$+kdv  PIC18f2431 7$+kdv bunu kullanmaya karar verdim.Çünkü 28 pinli az yer kaplar.

skara1214

Alıntı yapılan: Allegro - 19 Temmuz 2012, 12:09:38
Encoder i okumanın en güzel yolu (mcu'da encoder modülü yok ise ) A-B sinyallerinden INTERRUPT oluşturmaktır.
Buradaki sinyallerin durumuna göre ileri yada geri hareketi sayabilirsiniz.

Ama PBP de donanımsal INT konusu biraz sıkıntılı diye hatırlıyorum...
hocam interrupt yavaş kalıyor sinyaller biraz hızlı gelse saymayı kaçırıyor.
Herkes ölür ama herkes gerçekten yaşamaz

camby

Alıntı yapılan: askb - 19 Temmuz 2012, 16:46:31
teşekkür.Allegro hocam.Önce pic'i piyasada bulurmuyuz diye baktım.Her ikisinide bulabiliyoruz.PIC18f4431 8.5$+kdv  PIC18f2431 7$+kdv bunu kullanmaya karar verdim.Çünkü 28 pinli az yer kaplar.

Yer sıkıntınız varsa yada az yer kaplamasını istiyorsanız SMD kılıflar olan : SOIC , TQFP ve QFN gibi kılıflar da kullanabilirsiniz.

askb

Evet.smd olabilir.
Ama halen datasheet okumaya çalışıyorum.çözeceğim inş.