Enkoder çalışma mantığı

Kodla Büyü

2011bilgisayar

Seçkin Üye
Seçkin Üye
Mesajlar
263
Enkoderli STM 32 Geliştirme Kitli Çizgi İzleme Robotu tasarlayacağız.Enkoderin yoldaki kasisi algılaması ve ona göre hızını ayarlaması isteniyor. Enkoder yoldaki kasisi falan algılayabilir.Bu konuda çalışma yapan yardımcı olabilecek kimse var mı ?Yada yararlanabilecegim önerebileceğiniz bir kaynak var mı ?
 
Encoder motorun dönüş sayısını sayar hocam viraj falan algilamaz. tekerlegin çevresi ile dönüş sayısını çarpıp mesafe hesabı yaparsınız ve viraja yavaş girmesini sağlarsınız. Fakat sürtünme kayma gibi durumlar mesafeyi degisdirecektir.
 
Hocam o zaman engeli motor sürücü kartı mı algılayacak ?Motor sürücü kartı.algılayacaksa nasıl algılatabiliriz alalgoritmaskonusunda yardımcı olabilir misiniz
 
Sayın hocam sanırım robot tasarımında kullanılan kompedantlar sensörler devre elemanları gibi konularda eksikleriniz var.
Naçizane önerim temel elektirik ile başlamaniz bu işe.
 
Enkoderle hangi saniyede pistin hangi kısmında olduğunuzu hesaplayabilirsiniz. Kasislere kaçıncı saniyede geliyorsanız o noktalarda yavaşlatabilirsiniz aracınızı. Kasis geçince de tekrar hızlandırabilirsiniz.
 
Encoder motorun dönüş sayısını sayar hocam viraj falan algilamaz. tekerlegin çevresi ile dönüş sayısını çarpıp mesafe hesabı yaparsınız ve viraja yavaş girmesini sağlarsınız. Fakat sürtünme kayma gibi durumlar mesafeyi degisdirecektir.
peki nasıl okuyoruz hocam bilgiyi birde motor dönüş hızı tekerlek dönüşüne eşit mi bir tane örnek var mıdır? hız hesaplamayla ilgili bir algoritma var mıdır hocam ?
 
çok hakim olmasamda bildiğim kadarıyla enkoderden okuma yapmak istiyorsanız interrupt dediğimiz yapıyı kullanmalısınız. çünkü çok sık okuma yapacaksınız. enkoder ile aramanızı interrupt kelimesi ile yapmanızı tavsiye ederim. hızı hesaplayabilmek için ise yine bildiğim kadarıyla zaman ve yol bilgisine ihtiyacınız var, yol bilgisini enkoderlerden elde ettiğinizi düşünürsek zaman bilgisini de bilmeniz lazım. zaman bilgisinin olmadığını farzedersek(millis fonksiyonu ile bulunabilir belki) , katedilen yol bilgisi üzerinden gitmeniz gerekir, katedilen yolu da iki enkoderin saydıkları değerlerin ortalamasını alarak bulabilirsiniz.
genellikle motor seçerken rpm değerine bakarız ama enkoder ile çalışıyorsanız bir de motorun gear ratio dediğimiz oranına da bakmak gerekiyor. misal
https://www.pololu.com/category/60/micro-metal-gearmotors sayfasında rpm değeri yanında gear ratio dediğimiz redüksiyon oranı var, ona da bakılmalı.

şimdi sadete gelirsek: motorunuza ait gear ratio oranı 10:1 olsun, tekerlek yarı çapınızda 5cm olsun. manyetik enkoder kullandığnızı varsaydığımızda motor şaftının bir tur dönüşünde 12 değeri alırsınız.(manyetik enkoder aramanızda genellikle 12 değeri olduğunu göreceksiniz.) pi sayısınıda 3,14 aldığımızda:

Tekerleğin tam turunda katedeceği mesafe : 2*pi*r --> 3,14 * 10 = 31,4 cm
Enkoderin bir tam turda sayacağı sayı = Gear ratio * 12 --> 10*12 = 120
1 enkoder sayımında tekerleğin gideceği mesafe : 31,4 / 120 = 0,261 cm/adım olur.
Genellikle sol ve sağ enkoderler aynı mesafede farklı değer verdiğinden sol ve sağ teker enkoderden gelen değerlerin ortalaması size mesafeyi daha doğru verir.
Örnek olması açısından sabit bir mesafeyi atıyorum 100 cm kattetiğinizi düşünürsek enkoderden 100 / 0,261 civarında bir değer okumalısınız. yada tam tersi 100 / 0,261 okuduğunuzda 100 cm yol almış olmalısınız. bana kalsa enkoder yerine gyro ile kasis falan işi de olabilir, ama denemek lazım.

Bu anlattıklarımı kod olarak hocam yaz deseniz yazamam orası ayrı :), ama mantık bu diye biliyorum, hatalı kısımları tecrübeli arkadaşlar belirtirler.
 
Arduino ile encoder kullanmak için mutlaka encoder kütüphanesi kullanmalı ve encoderı interrupt pinlerine bağlamalısınız. Çünkü encoderlar çok hassas cihazlar ve bu kütüphaneler kullanılmadığı zaman yanlış ölçümler alırsınız. Arduino Uno ve Nano için interrupt pinleri 2 ve 3 numaralı dijital pinler bu arada.
 
Geri
Üst