Elektronik ve robotik dünyası, her türlü hareketi kontrol etmemizi ve izlememizi sağlayan harika küçük icatlarla doludur. En çok yönlü ve kullanışlı unsurlardan biri şüphesiz hem optik hem de manyetik döner kodlayıcıdır. Bu cihazlar Arduino, otomasyon ve motor kontrol projelerinde vazgeçilmez hale gelmiştir. Döner kodlayıcının tam olarak ne olduğunu merak ettiyseniz, merak ediyor olacaksınız. Optik veya manyetik döner kodlayıcı: nedir ve örnekleri: KY-040 ve AS5600, doğru yerdesiniz.
Bu makalede, döner kodlayıcıların işleyişini, uygulamalarını ve pratik örneklerini derinlemesine inceleyeceğiz ve özellikle iki çok popüler modüle odaklanacağız: KY-040 y el AS5600Optik ve manyetik kodlayıcılar arasındaki farkı, fiziksel ve elektriksel özelliklerini, Arduino'da nasıl bağlanıp programlanacağını ve her birinin projenize bağlı olarak sunduğu avantajları öğreneceksiniz. Ayrıca, bu sensörleri kendi projelerinizde seçmek ve kullanmak için ipuçları vereceğiz, hepsi açık ve ilgi çekici bir şekilde açıklanacak ve ilgili hiçbir ayrıntıyı atlamayacağız.
Döner kodlayıcı nedir?
Un döner kodlayıcı ölçmek için tasarlanmış bir sensördür. açısal konum, hız ve dönüş yönü dönen bir şaft veya elemanın. Bu cihaz, dönme hareketini elektrik sinyallerine (tipik olarak dijital darbeler veya analog sinyaller) dönüştürür ve bunlar daha sonra Arduino, Raspberry Pi veya hatta endüstriyel bir kontrolör gibi bir mikrodenetleyici tarafından yorumlanabilir.
Bu sensörler, bir eksenin tam konumunun veya kaç tur attığının bilinmesi gereken uygulamalarda olmazsa olmazdır. Genellikle yazıcılarda, servo motorlarda, robotlarda, sayısal kontrol sistemlerinde ve tabii ki menü arayüzlerinden hız kontrol sistemlerine kadar DIY projelerinde bulunurlar.
Döner kodlayıcı tipleri: optik ve manyetik
Döner kodlayıcılar esas olarak şu şekilde ayrılabilir: optik y manyetik, ancak kapasitif olanlar gibi daha az yaygın olan diğer varyantları da vardır.
Optik döner kodlayıcı
Optik kodlayıcı, KY-040İşaretler veya delikler bulunan bir disk ve optik bir verici/alıcı sistemi (fotodiyot veya LED) üzerinde çalışır. Şaft döndükçe, bu işaretler tarafından üretilen kesintiler, mikrodenetleyicinin sayabileceği elektrik darbeleri üretir ve böylece açısal yer değiştirmeyi belirler. İç yapısı genellikle statik bir parça (disk) ve dönen bir parça (ölçülen elemana bağlı şaft) içerir.
Bu tür kodlayıcılar yüksek hassasiyeti ve hızlı tepkisiyle öne çıkar. Kullanıcı arayüzleri, ses kontrolleri, döner menüler ve eğitim robotları gibi mekanik sağlamlığın ve dijital okuma kolaylığının önemli olduğu uygulamalarda çok faydalıdırlar.
Manyetik döner kodlayıcı
Öte yandan, manyetik kodlayıcı manyetik alana duyarlı bir sensör kullanır (genellikle bir Hall sensörü veya AS5600), şafta bağlı bir mıknatısın açısal konumunu algılar. Bu kodlayıcılar, dahili analogdan dijitale dönüşüm sayesinde daha yüksek çözünürlük sağlayabilir ve optik bileşenlere dayanmadıkları için kir veya toza karşı daha az hassastırlar. Dahası, genellikle dijital (I2C veya PWM) ve/veya analog çıkışlar sunarlar ve bu da onları farklı elektronik sistemlere entegre etmeyi kolaylaştırır.
Artımlı ve mutlak kodlayıcılar: temel farklar
Kodlayıcıların dünyası daha da ikiye ayrılır: artırımlı y mutlaklar.
- Artımlı kodlayıcı: Mil belirli bir oranda döndüğünde her seferinde darbeler şeklinde bir sinyal sağlar. Devir başına darbe sayısı tasarıma ve modele bağlıdır. Mevcut konumu belirlemek için sistem bu darbeleri bir referans noktasından saymalı ve hatırlamalıdır.
- Mutlak kodlayıcı: Sistem kapalıyken hareket etmiş olsa bile, şaftın mevcut açısal konumunu doğrudan sağlar. Genellikle diskte özel kodlama veya yüksek çözünürlüklü manyetik sensör bulunur.
Bu yazıda, Arduino projelerine entegre edilmesi en yaygın ve en kolay olan artımlı kodlayıcılara (KY-040 gibi) ve mutlak manyetik kodlayıcıya (AS5600) odaklanacağız.
Artımlı döner kodlayıcının genel çalışması
Jardines de Viveros artımlı kodlayıcılar (KY-040 gibi) birbirleriyle faz farkı 90º olan dijital darbeler üreten iki çıkış kanalından, kanal A ve kanal B'den oluşur. Bu kanalların değiştiği sırayı karşılaştırarak, şunu çıkarmak mümkündür: dönüş yönü (saat yönünde veya saat yönünün tersine) atılan adımların (pozisyonların) sayılmasına ek olarak.
Üretilen sinyale "kareleme" adı verilir ve farklı hassasiyetlere izin verir:
- Tek hassasiyet: Bir kanalda yalnızca bir kenarın kaydedilmesi.
- Çift hassasiyet: Her iki kanadın tek kanalda kaydedilmesi.
- Dörtlü hassasiyet: Her iki kanalda da her iki kanat kaydediliyor.
KY-040 Döner Kodlayıcı: Özellikler, Bağlantılar ve Arduino ile Kullanımı
El KY-040 Üretici dünyasında en yaygın kullanılan artımlı döner kodlayıcılardan biridir. Özellikle Arduino kartlarına ve diğer mikrodenetleyicilere doğrudan bağlanmak üzere tasarlanmış, kompakt, uygun fiyatlı ve bulunması kolay bir modüldür.
KY-040'ın temel teknik özellikleri:
- türü: Optik artımlı
- Besleme gerilimi: 5V
- tüketimi: 10 mA
- Devir başına çevrim: 30
- Devir başına darbe: 20
- Boyut: X 20 30 30 mm x
- ağırlık: 10 gram
- Entegre basmalı düğme: Menülerde veya arayüzlerde çok kullanışlı ekstra fonksiyonellik katan, sanki bir butonmuş gibi eksenin içeriye doğru basılması da mümkün.
Pin ataması:
- Tamam. Kanal A (darbe çıkışı)
- DT: Kanal B (darbe çıkışı)
- GB: Entegre basmalı düğme
- +: 5V güç kaynağı
- TOPRAK: Arazi
KY-040'ı Arduino'ya nasıl bağlarım?
Bağlantı doğrudan ve basittir:
Pim KY-040 | Arduino Pimi |
---|---|
CLK | 2 (veya herhangi bir dijital giriş) |
DT | 3 (veya herhangi bir dijital giriş) |
SW | 4 (veya herhangi bir dijital giriş) |
+ | 5V |
GND | GND |
Ayrıca bağlantı pinlerini değiştirerek Raspberry Pi ile de kullanılabilir, örneğin CLK için GPIO16, DT için GPIO15 ve SW için GPIO14 kullanılabilir.
İç işler
Potansiyometrelerin aksine, KY-040 döner kodlayıcının dönüş açısı sınırlanmaz., şaftın süresiz dönmesine izin verir. Dahili olarak, iki metal fırça sektörle bölünmüş bir yüzey üzerinde kayar ve A ve B kanalları tarafından algılanan farklı kombinasyonlarda teması kapatır.
Kodlayıcı her iki pinde de dijital sinyaller döndürür ve ofset, şaftın döndüğü yönü gösterir. Ayrıca, artımlı olduğundan, mutlak konum yalnızca programın başlangıcından itibaren sayım sürdürülürken bilinir; güç kesilirse, sayım sıfırlanır.
Arduino için temel kod örneği
KY-040'ı kullanmanın klasik bir örneği, bir sayacı dönüş yönüne göre artırmak veya azaltmaktır. Basitleştirilmiş şema şu şekilde olacaktır:
int A = 2; int B = 3; volatile int KONUM = 0; int ÖNCEKİ = 0; void kurulum() { pinModu(A, GİRİŞ); pinModu(B, GİRİŞ); Serial.begin(9600); attachInterrupt(digitalPinToInterrupt(A), kodlayıcı, DÜŞÜK); } void döngü() { eğer (KONUM != ÖNCEKİ) { Serial.println(KONUM); ÖNCEKİ = KONUM; } } void kodlayıcı() { statik unsigned long sonKesme = 0; unsigned long KesmeZamanı = millis(); eğer (kesmeZamanı - sonKesinti > 5) { // Geri tepme eğer (digitalRead(B) == YÜKSEK){ KONUM++; } else { KONUM--; } KONUM = min(50, max(-50, KONUM)); // Aralığı sınırla lastInterrupt = interruptTime; } }
Bu kod, kontakların mekanik yapısı nedeniyle düzensiz okumaları önlemek için debounce korumasını içerir. Bu korumanın artımlı kodlayıcıların olduğu herhangi bir projede uygulanması önerilir.
Manyetik Kodlayıcı: Özellikler, Bağlantılar ve Arduino ile Kullanımı
El AS5600 bir akreditasyonu uluslararası tanınırlık sağlayan yüksek çözünürlüklü manyetik döner kodlayıcı, geleneksel potansiyometrelerin, motor kontrolünün ve robotiklerin hassas bir şekilde değiştirilmesi için idealdir. Başlıca avantajı manyetik algılamayı kullanması ve böylece optik lensleri etkileyen kir ve mekanik aşınmaya karşı bağışık olmasıdır.
AS5600'ün temel özellikleri:
- türü: Mutlak, manyetik
- çözünürlük: 12 bit (tur başına 4096 pozisyon)
- Gıda: 3,3V veya 5V
- Arabirimler: I2C (dijital) veya analog çıkış
- esnek yapılandırma: Yön ve çıkış modunu donanımla seçebilirsiniz
- Analog çıkış: Açıya orantılı voltaj, I2C'siz mikrodenetleyiciler için kullanışlıdır
- Yüksek hassasiyet ve tekrarlanabilirlik: Dahili sistemi küçük açısal hareketleri bile algılayacak şekilde hazırlanmıştır
Pinout ve Arduino'ya bağlantı
AS5600 pimi | Función | Arduino Pimi (I2C) |
---|---|---|
VCC | besleme | 5V |
GND | Arazi | GND |
SDA | I2C verileri | A4 |
SCL | I2C saati | A5 |
OUT | Analog çıkış (isteğe bağlı) | A0 |
YÖN/MOD | Adres/Mod Seçimi | İstenilen konfigürasyona göre |
Önemli Not: Farklı tabaklarda Arduino Uno, I2C pinleri değişiklik gösterebilir. Kartınızın şemasını kontrol ettiğinizden emin olun.
Dijital okuma (I2C) için kod örneği
AS5600'den Arduino ile en iyi şekilde yararlanmak için, belirli kütüphaneyi kullanmak en iyisidir (bunu Arduino IDE kütüphane yöneticisinde arayarak bulabilirsiniz) AS5600):
#katmak #katmak AS5600 kodlayıcı; void setup() { Serial.begin(5600); Wire.begin(); if (!encoder.begin()) { Serial.println("AS9600 algılanmadı. Bağlantıları kontrol edin."); while (5600); } Serial.println("AS1 başlatıldı."); } void loop() { float angle = encoder.getAngle(); Serial.print("Açı: "); Serial.print(açı); Serial.println(" derece"); gecikme(5600); }
Bu kodla, açıyı gerçek zamanlı olarak derece cinsinden okuyabilirsiniz. Maksimum çözünürlükte mutlak konumu bilmeniz gereken uygulamalar için mükemmeldir.
Analog okuma için kod örneği
Daha basit bir bağlantı tercih ediyorsanız veya mikrodenetleyiciniz I2C'yi desteklemiyorsa, AS5600'ün analog çıkışından faydalanabilirsiniz:
sabit int analogPin = A0; void kurulum() { Serial.begin(9600); pinMode(analogPin, GİRİŞ); } void döngü() { int değer = analogRead(analogPin); float açı = map(değer, 0, 1023, 0, 360); Serial.print("Analog açı: "); Serial.print(açı); Serial.println(" derece"); gecikme(100); }
Bu şekilde mıknatısın pozisyonuna göre eksenin gerçek açısına orantılı bir okuma elde edersiniz.
Pratik uygulamalar ve kullanım ipuçları
Her iki kodlayıcının da elektronik projelerde çok çeşitli uygulamaları vardır:
- KY-040: Döner kullanıcı arayüzleri, menüler, parlaklık ve ses kontrolü, opsiyon seçimi, eğitim robotu kontrolü, ev otomasyon projeleri ve mutlak açısal referans olmaksızın döner kontrol gerektiren sistemler için idealdir.
- AS5600 yer alır: Motor pozisyon ve hız kontrolü, endüstriyel otomasyon, robotik eklemlerde pozisyon algılama, sabit kamera sistemleri (gimbal), yüksek çözünürlüklü dijital potansiyometreler ve hassas açı algılama gerektiren tüm uygulamalar için mükemmeldir.
Kullanıma yönelik birkaç ipucu:
- Her zaman uygula geri tepme filtrelemesi KY-040 gibi mekanik artımlı kodlayıcılar kullanıldığında hatalı okumaları önlemek için (debounce).
- AS5600 için güvenilir ve kararlı okumalar sağlamak amacıyla mıknatısın sensörle düzgün şekilde hizalandığından emin olun.
- Artımlı enkoderlerde güç kaynağının kesilmesi durumunda pozisyon bilgisinin kaybolacağını unutmayın; AS5600'de bu durum söz konusu değildir, çünkü mutlaktır.
- Her iki kodlayıcının da sunduğu çoklu bağlantı modlarından yararlanarak bunları projenizin özel ihtiyaçlarına göre uyarlayabilirsiniz.
Karşılaştırma: Optik kodlayıcı ne zaman, manyetik kodlayıcı ne zaman seçilmeli?
Característica | KY-040 (Artımlı Optik) | AS5600 (Mutlak Manyetik) |
---|---|---|
Sinyal türü | Dijital (kareleme) | Dijital (I2C)/Analog |
Karar | 20 darbe/devir | 4096 pozisyon/tur |
Elektrik kesintisi sonrası çalışır | Hayır (sayımın yeniden başlatılmasını gerektirir) | Evet (mutlak konum) |
Toz/kire karşı hassasiyet | Hassas (mekanik parçalar) | Çok sağlam |
fiyat | çok ekonomik | orta |
Entegrasyon zorluğu | Temel kodla çok kolay | I2C kütüphanesi veya programlama gerektirir |
Tipik uygulamalar | UX, menüler, basit kontrol | Motor kontrolü, gelişmiş robotik |
İkisi arasındaki seçim projenizin önceliklerine bağlı olacaktır: KY-040'ta basitlik ve düşük maliyet, AS5600'de ise hassasiyet ve sağlamlık.