Rotary Enkoder ile saydırma işlemi

Başlatan tenri, 31 Ağustos 2022, 14:16:37

tenri

Alıntı yapılan: ilyas KAYA - 09 Eylül 2022, 17:10:51Encoder sorunlu olabilir çok karşılaştım. Encoderi osilaskop a bağlayın kontrol edin. Elin almanı yapmış ne kadar hızla çalışsada kare dalgayı tam verirken cin yada yerli üretimlerde faz kayması yapıyor. Bu da bir ileri bir geri saymaya neden oluyor.

Osiloskop ile baktım herhangi bir problem oluşmuyor. Yani enkoder atlama yapmıyor ancak işlemci sanki kaçırıyor. Ya da ikisi de doğru yapıyor ancak ben bir şeyi atlıyor gibiyim. Hala araştırmaya devam ediyorum.

ilyas KAYA

Şöyle deneyin. Sadece a kanalını girin ve puls değişiminde 1 sayın.

Yani ileri geri hareketi değil sadece A kanalının değişimlerini sayın.

odemiriz

Siz mesela 100 adım ileri çekerken karıştırıp 80 ileri 20 geri sayıyor olabilir. Çok ucuz enkoderlerde bu tarz bir sorun yaşamıştım debounce ile alakalıdır çok üstüne düşmemiştim.
Benim çözümüm : İleri sayarken 50 ms süre verin geri sayma fonksiyonunu engelleyin. 50 ms boyunca sinyal gelmezse yön değişebilsin
yönü tayin etmek için 2 kez üst üste aynı yönde adım saymasını bekleyin.

Mucit23

Donanımsal olarak sayım yapmazsanız illaki atlama yapma ihtimaliniz vardır. Bu ihtimalleri ortadan kaldırmak için Enkoderden gelen puls'ları Timer ile sayın. Gördüğüm kadarıyla kullandığını MCU'nun RA5 pini 16 Bitlik Timer1'in saydırma girişi olarak ayarlanabiliyor. 

Erol YILMAZ

bence hızlı çektiğinizde oluşan encoder sinyallerini skopla bir inceleyin.
En fazla 1 kHz çıkıyor ise siz orayı 3 kHz sıklıkla bir timer interrupt içinde kontrol edin.
Problem çözülür.

Hardware interrupt işleri de ak-bayram değil, Onların da kendine göre  problemleri var.