# Artımlı kodlayıcı
Artımlı kodlayıcı (enkoder), cihaz hareket ettirildiğinde iki "A" ve "B" çıkış sinyalli darbeler veren, doğrusal veya döner elektromekanik bir cihazdır. "A" ve "B" sinyalleri birlikte hareketin hem oluşumunu hem de yönünü gösterir. Çoğu artımlı kodlayıcının ek bir çıkış sinyali vardır ve bu sinyale, kodlayıcının belirli bir referans konumunda olduğunu gösteren, genelde "indeks" veya "Z" denilir. Ayrıca bazı kodlayıcılar, rulman arızası veya sensör arızası gibi dahili arızayı gösteren durum çıkışı ("alarm") verir.
Mutlak kodlayıcı'dan farklı olarak, artımlı kodlayıcı mutlak konumu vermez, yalnızca konumdaki değişiklikleri ve bildirilen her konum değişikliği için hareket yönünü bildirir. Sonuçta, belirli bir anda mutlak konumu bulmak için, kodlayıcı sinyallerini "artımlı kodlayıcı arabirimi"ne göndermek gereklidir, bu ise kodlayıcının mutlak konum değerini "izler" ve raporlar.
Artımlı kodlayıcılar konum değişikliklerini neredeyse anında bildirir, bu ise yüksek hızlı mekanizmaların hareketlerini neredeyse gerçek zamanlı olarak izlemeye olanak tanır. Bu nedenle artımlı kodlayıcılar, konum ve hızın hassas ölçümünü ve kontrolünü gerektiren uygulamalarda kullanılır.


## Dörtlü çıktılar.
Artımlı bir kodlayıcı, "A" ve "B" çıkış sinyallerini üretmek için dörtlü kodlayıcı kullanır. "A" ve "B" çıkışlarından çıkan darbeler karesel olarak kodlanmıştır, yani artımlı kodlayıcı sabit bir hızda hareket ettiğinde, "A" ve "B" dalga biçimleri kare dalgadır ve "A" ve "B" arasında 90 derece faz farkı vardır.
Herhangi bir zamanda, "A" ve "B" sinyalleri arasındaki faz farkı kodlayıcının hareket yönüne bağlı olarak pozitif veya negatiftir. Döner kodlayıcıda faz farkı, cihaz tasarımına bağlı olarak saat yönünde dönüş için +90° ve saat yönünün tersine dönüş için -90° veya tam tersidir.
"A" veya "B" çıkışındaki darbe frekansı, kodlayıcının hızıyla (konum değişim oranıyla) doğru orantılıdır; yüksek frekanslar hızlı hareketi, alçak frekanslar ise daha yavaş hızı gösterir. Kodlayıcı hareketsizken “A” ve “B” üzerinde statik, değişmeyen sinyaller verir.
Döner kodlayıcıda frekans, kodlayıcının mil dönüş hızını ve doğrusal kodlayıcılarda ise frekans doğrusal gidiş hızını verir.
 - Dörtlü kodlayıcı algılama mekanizmalarının kavramsal çizimleri


### Çözünürlük.
Artımlı kodlayıcının çözünürlüğü, ürettiği konum bilgi hassasiyetinin ölçüsüdür. Kodlayıcı çözünürlüğü genelde birim yer değiştirme başına "A" (veya "B") darbe sayısı veya eşdeğeri birim yer değiştirme başına "A" (veya "B") kare dalga döngü sayısı cinsinden belirtilir. Döner kodlayıcılarda çözünürlük her devir başına düşen darbe sayısı (PPR) veya her devir devir başına düşen döngü sayısı (CPR) olarak belirtilirken, doğrusal kodlayıcı çözünürlüğü belirli bir doğrusal dönüş mesafesine karşılık gelen darbe sayısı cinsinden verilir (örneğin mm başına 1000 darbe gibi).
Bu, kodlayıcının algılayabileceği en küçük konum değişikliği kodlayıcının ölçüm çözünürlüğünün aksinedir. "A" veya "B" üzerindeki her sinyal kenarı, algılanan konum değişikliğini gösterir. "A" (veya "B") üzerindeki her kare dalga döngüsü dört sinyal kenarını kapsadığından ("A" yükselen, "B" yükselen, düşen "A" ve düşen "B"), kodlayıcının ölçüm çözünürlüğü tam bir "A" veya "B" çıktı döngüsü tarafından temsil edilen yer değiştirmenin dörtte birine eşittir. Örneğin 1000 darbe/mm doğrusal kodlayıcının 1 mm/ 1000 döngü= 1 μm döngü başına ölçüm çözünürlüğü vardır dolayısıyla bu kodlayıcının çözünürlüğü 1 μm/ 4 = 250 nm'dir.


### Simetri ve faz.
Sabit hızda hareket ederken, ideal artımlı bir kodlayıcı "A ve B" arasında tam olarak 90°'lik bir faz farkıyla "A" ve "B" üzerinde tam kare dalgalar verir (yani darbeler tam olarak 180° genişliğindedir). Ancak gerçek kodlayıcılarda sensör kusurları nedeniyle darbe genişlikleri hiçbir zaman tam olarak 180° değildir ve faz farkı hiçbir zaman tam olarak 90° değildir. Ayrıca, "A" ve "B" darbe genişlikleri bir çevrimden diğerine (ve birbirine göre) değişir ve faz farkı her "A" ve "B" sinyal kenarında değişir. Sonuçta hem darbe genişliği hem de faz farkı bir dizi değer üzerinde değişir.
Herhangi bir kodlayıcı darbe genişliği ve faz farkı aralıkları sırasıyla "simetri" ve "faz" özellikleriyle tanımlanır. Örneğin, simetrisi 180° ±25° olarak belirtilen bir kodlayıcıda, her çıkış darbesinin genişliğinin en az 155° ve en fazla 205° olması garanti edilir. Benzer şekilde, 90° ±20° olarak belirtilen faz ile her "A" veya "B" kenarındaki faz farkı en az 70° ve 110°'den fazla olmaz.


## Sinyal türleri.
Artımlı kodlayıcılar, çıkış sinyallerini sürmek (iletmek) için çeşitli elektronik devre tipleri kullanır ve üreticiler genellikle çeşitli sürücü tiplerinden herhangi biriyle belirli bir kodlayıcı modeli yapar. Çok bulunan sürücü tipleri açık toplayıcı (kollektör), mekanik, itme-çekme ve diferansiyel RS-422'dir.


### Açık toplayıcı.
Açık toplayıcı sürücüler (NPN transistörü veya n tipi MOSFET kullanan açık tahliye sürücülerini kullanarak), geniş sinyal voltaj aralığında çalışmaya imkan verir ve çıkış akımını oldukça azaltabilir. Bu özellikleri nedeniyle açık toplayıcı sürücülerini, akım döngülerini, optokuplörleri ve fiber optik vericileri sürmede yararlıdır.
Akım kaynağı olmadığından açık toplayıcı sürücü çıkışı, pull-up direnci aracılığıyla pozitif bir DC gerilimine bağlanmalıdır. Bazı kodlayıcıların bu amaç için içinde kendi dirençleri vardır; pull-up direnci olmayan diğerleri harici bir pull-up direncine gerek duyar. İkinci durumda direnç, gürültü bağışıklığını iyileştirmek için genellikle kodlayıcı arabirim yakınına konulur.
Kodlayıcının yüksek seviyeli mantık sinyal voltajı, pull-up direncine uygulanan voltajla belirlenir (şemada "VOH"), düşük seviye çıkış akımı ise sinyal voltajı ve yük direnci (pull-up direnci dahil) ikilisince belirlenir. Sürücü düşük seviyeden yüksek mantık seviyesine geçtiğinde, yük direnci ve devre kapasitansı, sinyalin yükseliş süresini uzatan alçak-geçiren filtre oluşturmak için birlikte çalışırlar ve böylece sürücünün maksimum frekans gücü sınırlanır. Bu yüzden, açık toplayıcı sürücüler kodlayıcı yüksek frekanslar vereceğinde genellikle kullanılmaz.


### Mekanik işlemi.
Mekanik (veya "kontak") artımlı kodlayıcılar, doğrudan "A" ve "B" çıkış sinyallerini oluşturmak için kayan elektrik kontakları kullanır. Genelde, kontaklar kapalıyken sinyal toprağına elektriksel olarak bağlanır böylece çıkışlar düşük "sürülür", bu ise onları açık toplayıcı sürücülerin mekanik eşdeğeri yapar ve bu nedenle aynı sinyal koşullandırma gereksinimlerine tabidir (yani harici pull-up direnci).
Maksimum çıkış frekansı, açık toplayıcı çıkışlarını etkileyen aynı faktörlerle sınırlıdır ve kodlayıcı arayüzü tarafından filtrelenmesi gereken kontak sıçraması ve mekanik kontakların çalışma hızı ile sınırlıdır. Bu nedenle mekanik kodlayıcılar yüksek frekans çalışması için uygun değildir. Ayrıca kontaklar normal çalışmada mekanik olarak aşınır ve bu cihaz ömrünü sınırlar. Mekanik kodlayıcılar dahili, aktif elektronik devreleri olmadığından nispeten ucuzdur. Bu özellikleri nedeniyle mekanik kodlayıcılar, hafif görevler ve alçak frekanslı uygulamalar için uygundur.


### İt-çek.
İt-çek (Push-pull) çıkışları (örneğin Transistör–transistör mantığı, TTL) genellikle mantık devresine doğrudan arayüz için kullanılır. Bunlar, kodlayıcı ve arabirimin birbirine yakın yerleştirildiği (örneğin, baskılı devre iletkenleri veya kısa, korumalı kablo hatları aracılığıyla birbirine bağlı) ve ortak güç kaynağından güç alındığı böylece elektrik alanlarına, toprak döngülerine ve sinyalleri ve dolayısıyla konum izlemeyi bozabilecek veya daha da kötüsü kodlayıcı arayüzüne zarar verebilecek iletim hattı etkilerine maruz kalmanın önlendiği uygulamalar için çok uygundur.


### Diferansiyel çifti.
Diferansiyel RS-422 sinyalleme, genelde kodlayıcı yüksek frekanslar vereceğinde veya kodlayıcı arayüzünden uzakta bulunduğunda, veya kodlayıcı sinyallerinin elektrik alanlarına veya ortak mod voltajlarına maruz kalabileceği durumlarda veya arayüzün kodlayıcı ile arayüz arasındaki bağlantı sorunlarını belirlemesi gerektiğinde tercih edilir. Koordinat ölçüm makineleri, CNC makineleri, endüstriyel robot, fabrika otomasyonu ve uçak ve uzay gemisi simülatörlerinde kullanılan hareket platformları bunlara örnek verilebilir.
RS-422 çıkışları kullanıldığında, kodlayıcı her mantık çıkışı için bir diferansiyel iletken çifti sağlar; örneğin, "A" ve "/A", kodlayıcının "A" mantık çıkışını içeren aktif-yüksek ve aktif-düşük diferansiyel çifti için kullanılan tanımlamalardır. Sonuçta, kodlayıcı arayüzü, gelen RS-422 çiftlerini tek uçlu mantığa dönüştürmek için RS-422 hat alıcıları sağlamalıdır.


## Ana uygulamalar.
### Konum takibi.
Artımlı kodlayıcılar, mekanik cihazların fiziksel konumlarını izlemek için kullanılır. Artımlı kodlayıcı, izlenecek cihaza mekanik olarak bağlanmıştır, böylece cihaz hareket ettikçe çıkış sinyalleri değişir. Örnekler: Mekanik bilgisayar fareleri ve iztoplarının topları, elektronik ekipmandaki kontrol düğmeleri ve radar antenlerindeki dönen miller.
Artımlı bir kodlayıcı takip etmez ve çıkışları mevcut kodlayıcı konumunu göstermez; sadece konumdaki artımlı değişiklikleri bildirir. Sonuçta herhangi bir anda kodlayıcı konumunu belirlemek için, konumu "izleyecek" harici elektronik devreler kullanmak gerekir. Artımlı kodlayıcı arabirimi olarak bilinen bu harici devre, artımlı konum değişikliklerini sayarak konumu izler.
Artımlı konum değişikliğinin her raporunu aldığından ("A" veya "B" sinyalinin geçişi ile gösterilir), kodlayıcı arayüzü "A" ve "B" arasındaki faz ilişkisini dikkate alır ve faz farkının işaretine bağlı olarak yukarı veya aşağı sayar. Kümülatif "sayımların" değeri, izleme başladığından beri kat edilen mesafeyi gösterir. Bu mekanizma, çift yönlü uygulamalarda doğru konum takibi sağlar ve tek yönlü uygulamalarda AB kod geçişi yakınında titreşim veya mekanik titremeden kaynaklanacak yanlış sayımları önler.


#### Yer değiştirme birimleri.
Çoğu zaman kodlayıcı sayıları metre, mil veya devir gibi birimlerle ifade edilmelidir. Bu gibi durumlarda, sayım başına D kodlayıcı yer değiştirme oranı C ile çarpılarak sayım istenen birime dönüştürülür:
Genelde bu hesaplama, artımlı kodlayıcı arayüzünden sayıları okuyan bir bilgisayar tarafından yapılır. Örneğin, hareketin milimetresi başına 8.000 sayı üreten doğrusal artımlı kodlayıcı kullanıldığında milimetre cinsinden konum şu şekilde hesaplanır:


#### Yuvaya getirme.
Artımlı bir kodlayıcı arayüzünün mutlak konumu izlemesi ve raporlaması için kodlayıcının sayımları onun bağlı olduğu mekanik sistemdeki bir referans konumuyla ilişkilendirilmelidir. Bu genellikle, mekanik sistemin (ve kodlayıcının) bir referans konumu ile hizalanana kadar hareket ettirilmesi ve ardından ilgili mutlak konum sayımlarının kodlayıcı arabiriminin sayacına atanmasından oluşan sistemin "yuvaya getirme (homing)" işlemiyle yapılır.
Hedef aramayı kolaylaştırmak için bazı mekanik sistemlere mekanik sistem "yuva" (referans) konumundayken sinyal veren bir yakınlık sensörü yerleştirilir. Bu gibi durumlarda mekanik sistem kodlayıcı arayüzü sensör sinyalini alana kadar hareket ettirilerek bu konumun üzerine denk gelen konum değeri konum sayacına atanır.
Bazı dönen mekanik sistemlerde (örneğin dönen radar antenleri), ilgilenilen "konum", bir referans konumuna göre dönme açısıdır. Bunlar genelde "indeks" (veya "Z") çıkış sinyalli döner artımlı kodlayıcı kullanır. "İndeks" sinyali mil referans konumundayken verilir böylece kodlayıcı arayüzünün referans açısını konum sayacına atamasına neden olur.
Bazı artımlı kodlayıcı uygulamalarında referans konum dedektörleri yoktur ve bu yüzden başka yollarla hedef arama yapılmalıdır. Örneğin bilgisayar, fare veya iztopu işaretleme aygıtı kullanırken önyüklemede bir başlangıç ekran konumu varsayılarak aygıt yuvaya getirilir ve karşılık gelen sayılar X ve Y konum sayaçlarına atanır.
Elle çalıştırılan kumandalar (örneğin, ses seviye kumandası) olarak kullanılan pano kodlayıcılarda, ilk konum elektrik gücü açıldığında ve konum sayacına atandığında ve güç kapatıldığında, flaş bellekten veya diğer kalıcı bellekten alınarak mevcut konum sayısı bir sonraki çalışma için başlangıç konumu olarak hizmet etmek üzere kalıcı belleğe kaydedilir.


### Hız ölçümü.
Artımlı kodlayıcılar genellikle mekanik sistemlerin hızını ölçmek için kullanılır. Bu, izleme amacıyla veya hareket kontrolü için geri bildirim sağlamak amacıyla veya her ikisi için yapılabilir. Radar anten dönüşünün ve malzeme konveyörlerinin hız kontrolü ve robotik, koordinat ölçüm makineleri (CMM) ve CNC makinelerinde hareket kontrolü bazı çok kullanılan uygulamalardır.
Artımlı kodlayıcı arayüzleri öncelikle mekanik yer değiştirmenin izlenmesiyle ilgilidir ve genellikle hızı doğrudan ölçmez. Sonuç olarak hızın, konumun zamana göre türevi alınarak dolaylı olarak ölçülmesi gerekir. Konum sinyali doğası gereği nicemlenmiştir ve bu durum, özellikle düşük hızlarda niceleme hatası nedeniyle türevin alınmasında zorluk çıkarır.
Kodlayıcı hızı, kodlayıcı çıkış darbelerini (veya kenarlarını) sayarak veya zamanlayarak belirlenebilir. Ortaya çıkan değer, hızın hesaplanabileceği sırasıyla frekans veya periyodu gösterir. Hız frekansla doğru orantılı, periyotla ters orantılıdır.


#### Frekansa göre hız ölçümü.
Konum sinyali örneklenirse (ayrı bir zaman sinyali), darbeler (veya darbe kenarları) arayüz tarafından algılanır ve sayılır ve hız, genellikle arayüze okuma erişimi olan bir bilgisayar tarafından hesaplanır. Bunu yapmak için bilgisayar, T_0 zamanında arayüzden C_0 konum sayımlarını okur ve daha sonra C_1‘i bulmak için T_1 zamanında sayıları tekrar okur. Daha sonra T_0‘dan T_1‘e geçen zaman aralığındaki ortalama hız hesaplanır:
Ortaya çıkan hız değeri, birim zaman başına sayım (örneğin saniye başına sayım) olarak ifade edilir. Ancak pratikte hızın genellikle saniye başına metre, dakika başına devir (RPM) veya saat başına mil (MPH) gibi standart birimlerle ifade edilmesi gerekir. Bu gibi durumlarda yazılım, sayımlar ile istenen mesafe birimleri arasındaki ilişkinin yanı sıra örnekleme periyodunun istenen zaman birimlerine oranını da hesaba katar. Örneğin devir başına 4.096 sayım üreten ve saniyede bir kez okunan döner artımlı kodlayıcıdada, yazılım RPM'yi şu şekilde hesaplar:
Hız bu şekilde ölçülürken, ölçüm çözünürlüğü hem kodlayıcı çözünürlüğü hem de örnekleme periyodu (iki örnek arasında geçen süre) ile orantılıdır; Örnekleme periyodu arttıkça ölçüm çözünürlüğü de artar.


#### Periyoda göre hızın ölçümü.
Alternatif olarak, darbe genişliği veya periyodu ölçülerek her kodlayıcı çıkış darbesinde bir hız ölçümü raporlanabilir. Bu yöntem kullanıldığında ölçümler belirli zamanlar yerine belirli konumlarda tetiklenir. Hız hesaplaması yukarıda gösterilenle aynıdır (sayım / zaman), ancak bu durumda ölçüm başlama ve durma süreleri (T_0 ve T_1) bir zaman referansı ile sağlanır.
Bu teknik konum niceleme hatasını önler ancak zaman referansının nicelenmesiyle ilgili hatalara neden olur. Ayrıca faz hataları, simetri hataları ve geçiş konumlarındaki nominal değerlerden sapmalar gibi sensör idealsizliklerine karşı daha duyarlıdır.


## Artımlı kodlayıcı arayüzü.
Artımlı kodlayıcı arayüzü, artımlı kodlayıcıdan sinyalleri alan, mutlak konum ve diğer bilgileri üretmek için sinyalleri işleyen ve elde edilen bilgileri harici devrelerin kullanımına sunan elektronik devredir.
Artımlı kodlayıcı arayüzleri, ASIC'ler, FPGAlardaki IP blokları, mikrodenetleyicilerde özel çevresel arayüzler ve yüksek sayım hızları gerekmediğinde yoklamalı (yazılım izlenen) Genel Amaçlı Giriş/Çıkışlar (GPIO) dahil olmak üzere çeşitli şekillerde uygulanır.
Uygulamadan bağımsız olarak arayüz, bir sonraki durum değişikliği olmadan önce her AB durum değişikliğini bulmak için kodlayıcının "A" ve "B" çıkış sinyallerini yeterince sık örneklemelidir. Bir durum değişikliği tespit edildiğinde, "A'"nın "B"'nin önünde mi yoksa arkasında mı olduğuna bağlı olarak konum sayımlarını artırılır veya azaltılır. Bu genellikle önceki AB durumunun bir kopyasının saklanması ve durum değişikliği üzerine hareket yönünü belirlemek için mevcut ve önceki AB durumlarının kullanılmasıyla yapılır.


### Hat alıcıları.
Artımlı kodlayıcı arayüzleri, kodlayıcı tarafından üretilen sinyalleri almak için çeşitli elektronik devre türlerini kullanır. Bu hat alıcıları, aşağı yöndeki arayüz devrelerini korumak için tampon görevi ve çoğu durumda sinyal şartlandırma da yapar.


#### Tek uçlu.
Artımlı kodlayıcı arayüzleri, tek uçlu (örneğin, itme-çekme, açık toplayıcı) çıkışlı kodlayıcılardan sinyalleri almak için tipik olarak Schmitt tetikleyici girişlerini kullanır. Bu tür hat alıcısı doğası gereği düşük seviyeli gürültüyü (giriş histerezisi aracılığıyla) reddeder ve aşağı akış devrelerini geçersiz (ve muhtemelen yıkıcı) mantık sinyali seviyelerinden korur.


#### Diferansiyel.
RS-422 hat alıcıları genellikle diferansiyel çıkışlı kodlayıcılardan sinyal almak için kullanılır. Bu tip alıcı, ortak mod gürültüsünü reddeder ve gelen diferansiyel sinyalleri, aşağı akış mantık devrelerinin gerektirdiği tek uçlu şekle dönüştürür.
Kritik görev sistemlerinde, kodlayıcı güç kaybı, sinyal sürücü arızası, kablo arızası veya kablo bağlantısının kesilmesi nedeniyle giriş sinyali kaybını tespit etmek için bir kodlayıcı arayüzü gerekli olabilir. Bu genellikle geçerli giriş sinyallerinin yokluğunu bulan ve bu durumu "sinyal kaybı" durum çıkışı yoluyla bildiren gelişmiş RS-422 hat alıcıları kullanılarak gerçekleştirilir. Normal çalışmada, giriş durumu geçişleri sırasında durum çıkışlarında hatalar (kısa darbeler) görünebilir; Tipik olarak kodlayıcı arayüzü, bu aksaklıkların yanlışlıkla kayıp sinyaller olarak yorumlanmasını önlemek için durum sinyallerini filtreler. Arayüze bağlı olarak sonraki işlemler, sinyal kaybının belirlenmesine kesme isteği oluşturulmasını ve hata günlüğü veya arıza analizi için uygulamaya bildirim gönderilmesini içerebilir.


### Saat senkronizasyonu.
Artımlı kodlayıcı arayüzü büyük ölçüde bir saat sinyali tarafından hızlanan sıralı mantıktan oluşur. Bununla birlikte, gelen kodlayıcı sinyalleri arayüz saatine göre eşzamansızdır çünkü zamanlamaları yalnızca kodlayıcı hareketi tarafından belirlenir. Sonuçta, hem metastabiliteden kaynaklanan hataları önlemek hem de sinyalleri karesel kod çözücünün saat alanına zorlamak için "A" ve "B" (ayrıca kullanılıyorsa "Z" ve "alarm") hat alıcılarından gelen çıkış sinyallerinin arayüz saatiyle eşzamanlı yapılması gerekir.
Genellikle bu senkronizasyon, burada görülen iki flip-flop senkronizatörü gibi bağımsız, tek sinyalli senkronizatörler tarafından gerçekleştirilir. Çok yüksek saat frekanslarında veya çok az hata oranına gerek duyulduğunda, senkronizatörler kabul edilebilir derecede az bit hata oranına ulaşmak için ek flip-floplar içerebilir.


### Giriş filtresi.
Çoğu durumda bir kodlayıcı arayüzü, daha fazla işleme tabi tutulmadan önce senkronize kodlayıcı sinyallerini filtrelemelidir. Bu, motor uygulamalarında yaygın olarak bulunan alçak-seviyeli gürültüyü ve kısa, büyük genlikli gürültü sivri uçlarını reddetmek ve mekanik tip kodlayıcılar durumunda, mekanik kontak sıçraması nedeniyle oluşan sayım hatalarını önlemek için "A" ve "B"yi geri döndürmek için gerekli olabilir.
Donanım tabanlı arayüzler genellikle kodlayıcı sinyalleri için programlanabilir filtreler sağlar, bu ise geniş bir filtre ayar aralığı sunar ve böylece gerektiğinde kontakları geri döndürmelerine veya gürültüden veya yavaşça dönen sinyallerden kaynaklanan geçişleri bastırmalarına olanak tanır. Yazılım tabanlı arayüzlerde, "A" ve "B" genellikle yazılım tarafından örneklenen (yoklama veya kenar kesintileri yoluyla) ve geri döndürülen GPIO'lara bağlanır.