Rotary Encoder Nasıl Çalışır ve Arduino ile Nasıl Kullanılır?
Genel Bakış
Döner kodlayıcı, dönen bir şaftın açısal konumunu belirlemek için kullanılan bir tür konum sensörüdür. Dönme hareketine göre analog veya dijital bir elektrik sinyali üretir.
Çıkış Sinyali veya Algılama Teknolojisine göre sınıflandırılan birçok farklı tipte döner kodlayıcı vardır. Bu eğitimde kullanacağımız belirli döner kodlayıcı, artımlı bir döner kodlayıcıdır ve dönüşü ölçmek için en basit konum sensörüdür.
Bu döner kodlayıcı, karesel kodlayıcı veya göreceli döner kodlayıcı olarak da bilinir ve çıktısı bir dizi kare dalga darbesidir.
Rotary Encoder Nasıl Çalışır?
Enkodere daha yakından bakalım ve çalışma prensibini görelim. Kare dalga darbeleri şu şekilde üretilir: Kodlayıcı, aşağıda gösterildiği gibi, ortak pim C'ye ve diğer iki ayrı kontak pimine A ve B'ye bağlanan eşit aralıklı temas bölgelerine sahip bir diske sahiptir.
Disk adım adım dönmeye başladığında, A ve B pinleri ortak pin ile temas etmeye başlayacak ve iki kare dalga çıkış sinyali buna göre üretilecektir.
Sinyalin darbelerini sayarsak, iki çıktıdan herhangi biri döndürülmüş konumu belirlemek için kullanılabilir. Bununla birlikte, dönüş yönünü de belirlemek istiyorsak, her iki sinyali de aynı anda dikkate almamız gerekir.
İki çıkış sinyalinin birbirinden 90 derece faz dışı kaydırıldığını fark edebiliriz. Kodlayıcı saat yönünde dönüyorsa, A çıkışı B çıkışının önünde olacaktır.
Dolayısıyla, sinyalin Yüksekten Alçağa veya Alçaktan Yükseğe her değiştiğinde adımları sayarsak, o anda iki çıkış sinyalinin zıt değerlere sahip olduğunu fark edebiliriz. Tersi, kodlayıcı saat yönünün tersine dönüyorsa, çıkış sinyalleri eşit değerlere sahiptir. Bu nedenle, bunu göz önünde bulundurarak, kontrol cihazımızı kodlayıcı konumunu ve dönüş yönünü okuyacak şekilde kolayca programlayabiliriz.
Rotary Encoder Arduino Örneği
Arduino'yu kullanarak bunun pratik bir örneğini yapalım. Bu örnek için kullanacağım belirli modül bir koparma kartında geliyor ve beş pimi var. İlk pin çıkış A, ikinci pin çıkış B, üçüncü pin Button pin ve tabii ki diğer iki pin VCC ve GND pinidir.
Çıkış pinlerini Arduino Board'un herhangi bir dijital pinine bağlayabiliriz.
Kaynak kodu
İşte Arduino kodu:
Kodun açıklaması: Bu yüzden önce kodlayıcımızın bağlı olduğu pinleri tanımlamamız ve program için gerekli bazı değişkenleri tanımlamamız gerekir. Kurulum bölümünde, iki pini giriş olarak tanımlamamız, sonuçları seri monitörde yazdırmak için seri iletişimi başlatmamız, ayrıca çıkış A'nın başlangıç değerini okuyup değeri aLastState değişkenine koymamız gerekir.
Sonra döngü bölümünde tekrar A çıkışını okuyoruz ama şimdi değeri aState değişkenine koyuyoruz. Dolayısıyla, kodlayıcıyı döndürürsek ve bir darbe üretilirse, bu iki değer farklı olacak ve ilk "if" ifadesi doğru olacaktır. Hemen ardından ikinci "if" ifadesini kullanarak dönüş yönünü belirleriz. Çıkış B durumu, çıkış A durumundan farklıysa, sayaç bir artar, aksi takdirde azalır. Sonunda, sonuçları seri monitöre yazdırdıktan sonra, aLastState değişkenini aState değişkeniyle güncellememiz gerekiyor.
Bu örnek için ihtiyacımız olan tek şey bu. Kodu yüklerseniz, Seri Monitörü başlatın ve kodlayıcıyı döndürmeye başlayın, değerleri seri monitörde almaya başlayacağız. Sahip olduğum belirli modül, her tam döngüde 30 sayıyor.
Örnek 2 - Döner Kodlayıcı Kullanarak Kademeli Motorun Kontrol Edilmesi
İşte bu örneğin kaynak kodu:
Bahadır ÖZGEN
Electronic Robotic Coding Research and Development 1975 - ∞
Learn Forever
If you want, let's learn together...
https://roboticcode2020.blogspot.com/
bahadirozgen1975@gmail.com
facebook robotic.code
instagram @roboticcode
Sayfalarımı ziyaret ettiğiniz için teşekkür ederim.Bu sitede mevcut olan içerikler kendi oluşturduğum projeler yazı,resim ve videolardan oluşmaktadır.İçerik oluşturmak çok uzun sürdüğü için bazı projelerde yurtdışı kaynaklardan faydalandım.Buradaki amacım ticari değildir.Kaynağı belli olan ve bizim kaynağına ulaşabildiğimiz materyal (yazı, fotoğraf, resim, video v.b.) için ilgili konularda fotoğraflarda logo varsa v.b. not olarak gösterilecektir.Sitemizde yayınlanan tüm içerik, bizim tarafımızdan ve internet üzerinden youtube, facebook ve blog gibi paylaşıma sunulmuş kaynak sitelerden alındığı için, sitemiz yasal yükümlülüğe tabi tutulamaz. Sitemizde telif haklarının size ait olduğu bir içerik varsa ve bunu kaldırmamızı isterseniz, iletişim sayfamızdan bizimle iletişime geçtiğiniz takdirde içerik yayından kaldırılacaktır.Bu konu ve modüller ile uğraşarak, ileride çok güzel makine ve elektronik aletler yapabilirsiniz.