İçindekiler:

Döner Kodlayıcı - Anlayın ve Kullanın (Arduino/diğer ΜKontrolör): 3 Adım
Döner Kodlayıcı - Anlayın ve Kullanın (Arduino/diğer ΜKontrolör): 3 Adım

Video: Döner Kodlayıcı - Anlayın ve Kullanın (Arduino/diğer ΜKontrolör): 3 Adım

Video: Döner Kodlayıcı - Anlayın ve Kullanın (Arduino/diğer ΜKontrolör): 3 Adım
Video: Arduino Rotary Encoder - Sonsuz Potans - iRE - Rotary Enkoder - 63 - 2024, Temmuz
Anonim
Döner Kodlayıcı - Anlayın ve Kullanın (Arduino/diğer ΜDenetleyici)
Döner Kodlayıcı - Anlayın ve Kullanın (Arduino/diğer ΜDenetleyici)

Döner kodlayıcı, dönme hareketini dijital veya analog bilgilere dönüştüren elektro-mekanik bir cihazdır. Saat yönünde veya saat yönünün tersine dönebilir. İki tür döner kodlayıcı vardır: Mutlak ve bağıl (artımlı) kodlayıcılar.

Mutlak enkoder mevcut şaft açısıyla orantılı bir değer verirken, artımlı enkoder şaftın adımını ve yönünü verir.(Bu durumda bir artımlı enkoderimiz var)

Tek bir elektrik modülünde iki işlevi kullanabildiğiniz için döner kodlayıcılar daha popüler hale geliyor: İşlemleri onaylamak için basit bir anahtar ve gezinmek için döner kodlayıcı, örn. bir menü aracılığıyla.

Artımlı döner kodlayıcı, şaftı dönerken iki çıkış sinyali üretir. Yöne bağlı olarak, sinyallerden biri diğerine yol açar. (aşağıya bakınız)

Adım 1: Çıktı Verilerini Anlamak

Çıktı Verilerini Anlama
Çıktı Verilerini Anlama

Görüldüğü gibi enkoder mili saat yönünde dönmeye başladığında önce A Çıkışı LOW'a düşer ve onu B Çıkışı takip eder. Saat yönünün tersine yönde işlem tersine döner.

Şimdi bunu µController'ımıza uygulamamız gerekiyor (bir Arduino Nano kullandım).

Adım 2: Devreyi Oluşturun

Devreyi İnşa Et
Devreyi İnşa Et
Devreyi İnşa Et
Devreyi İnşa Et

Daha önce açıkladığım gibi, çıktılar bir YÜKSEK ve DÜŞÜK bir kanat oluşturur. µController'ın A ve B veri pinlerinde temiz bir HIGH elde etmek için Pull-Up dirençleri eklemeliyiz. Ortak Pin C, DÜŞÜK yan taraf için doğrudan yere gider.

Dahili anahtar (buton) hakkında bilgi almak için diğer iki pini kullanacağız. Bunlardan biri VCC'ye diğeri ise µController'ın bir data Pin'ine gider. Ayrıca temiz bir DÜŞÜK elde etmek için veri pinine bir Aşağı Çekme Direnci eklemeliyiz.

µController'ınızın dahili Pull-Up ve Pull-Down dirençlerini kullanmak da mümkündür!

Benim durumumda pin çıkışı şöyle görünür:

  • +3, 3V => +3, 3V (Arduino)(ayrıca +5V mümkündür)
  • GND => GND (Arduino)
  • A => Pin10
  • B =>

    Toplu iğne

    11

  • C => GND
  • GB =>

    Toplu iğne

    12

Adım 3: Kodu Yazma

int pinA = 10; //dahili anahtar A int pinB = 11; //dahili anahtar B int pinSW = 12; //anahtar (basılan Encoder) int encoderPosCount = 0; // sıfırdan başlar, isterseniz değiştirin

int konumsal;

bool anahtarı; int mrotateLast; int mrotat;

geçersiz kurulum() {

int mrotateLast = digitalRead(pinA); Seri.başlangıç (9600); gecikme(50); }

geçersiz döngü() { readencoder(); if(readswitch() == 1){ Serial.println("Anahtar = 1"); } }

int okuyucu kodlayıcı (){

mrotate = digitalRead(pinA); if (mrotate != mrotateLast){ //düğme dönüyor if (digitalRead(pinB) != mrotate) { //önce A anahtarı değişti -> saat yönünde dönüyor encoderPosCount ++; Serial.println ("saat yönünde döndürülmüş"); } else {// önce B anahtarı değişti -> saat yönünün tersine dönen encoderPosCount--; Serial.println ("saat yönünün tersine döndürülmüş"); }

Serial.print("Kodlayıcı Konumu: "); Serial.println(encoderPosCount); Seri.println(""); } mrotateLast = mrotate; dönüş kodlayıcıPosCount; } bool okuma anahtarı(){

if(digitalRead(pinSW)!=0){ // anahtara basılır

while(digitalRead(pinSW)!=0){} //anahtar şu anda basılı durumda switchval = 1; } else{switchval = 0;} //anahtar basılı değil dönüş anahtarıval; }

Artık kodlayıcıyı çevirebilirsiniz ve encoderPosCount değişkeni saat yönünde döndürürseniz sayar ve saat yönünün tersine döndürürseniz geri sayım yapar.

Bu kadar! Basit ve kullanışlı.

Kodu değiştirmek ve uygulamak için çekinmeyin. Projenizde uygulayabilirsiniz.

Ayrıca LED'lerimin parlaklığını ayarlamak için kodlayıcıyı kullandığım bir LED projesi yükleyeceğim.

Önerilen: