Optik, manyetik ve mekanik artımsal (incremental) döner enkoderlerin fiziksel darbe sayısı (PPR), quadrature çözünürlük katsayısı (1x, 2x, 4x), çıkış frekansı (Hz) ve motor dönme hızı (RPM) dönüşümlerini anında hesaplayın. Kesme (Interrupt) temelli hazır Arduino C++ kodunu kopyalayın.
// Arduino Quadrature Encoder Interrupt Code - EcemBilgisayar const int encoderPinA = 2; // Interrupt 0 const int encoderPinB = 3; // Interrupt 1 volatile long encoderPos = 0; void setup() { Serial.begin(9600); pinMode(encoderPinA, INPUT_PULLUP); pinMode(encoderPinB, INPUT_PULLUP); // 4x çözünürlük için her iki kanala kesme baglanir attachInterrupt(digitalPinToInterrupt(encoderPinA), doEncoderA, CHANGE); attachInterrupt(digitalPinToInterrupt(encoderPinB), doEncoderB, CHANGE); } void loop() { static long lastPos = 0; if (encoderPos != lastPos) { Serial.print("Pozisyon: "); Serial.println(encoderPos); lastPos = encoderPos; } } void doEncoderA() { if (digitalRead(encoderPinA) == digitalRead(encoderPinB)) encoderPos++; else encoderPos--; } void doEncoderB() { if (digitalRead(encoderPinA) != digitalRead(encoderPinB)) encoderPos++; else encoderPos--; }
Rotary Encoder Hakkında Sıkça Sorulan Sorular
PPR (Pulses Per Revolution) nedir?
PPR, döner enkoder şaftı tam 360° bir tur döndüğünde tek bir kanaldan çıkan fiziksel kare dalga darbe sayısıdır.
Quadrature (4x Çözünürlük) kodlaması nasıl çalışır?
Quadrature enkoderlerde A ve B kanalları aralarında 90° faz farkı olan sinyaller üretir. A ve B kanallarının hem yükselen hem düşen kenarları sayıldığında çözünürlük 4 katına (4x CPR) çıkar ve yön bilgisi elde edilir.
Enkoder okurken neden Interrupt (Kesme) kullanılmalıdır?
Yüksek hızlı motorlarda enkoder saniyede binlerce darbe üretir. loop() içindeki sıradan okumalar adım kaçırmaya (missed steps) neden olur. Kesme pinleri (D2 ve D3) hiçbir adımı kaçırmaz.
KY-040 modülü ile endüstriyel optik enkoder farkı nedir?
KY-040 mekanik kontaklıdır (tur başı 20 tık) ve düşük hızlarda menü gezinmek içindir. Optik/manyetik enkoderler ise (600-2500 PPR) temassızdır ve dakikada binlerce devir (RPM) yapan motorlarda kullanılır.