Döner Kodlayıcı ve L293d veya SN754410NE Chip ile Kontrol Edilen ARDUINO Step Motor

Döner Kodlayıcı ve L293d veya SN754410NE Chip ile Kontrol Edilen ARDUINO Step Motor

İçindekiler:

Anonim

Kademeli motorlar birçok yapı projesi için çok faydalıdır. Çoğu durumda, mikrodenetleyici, adımlayıcının tüm hareketlerini kontrol edebilir, ancak bazı durumlarda adım adım motoru, bir başlangıç ​​noktası ayarlamak, bir kamerayı döndürmek veya ince ayar yapmak için manuel olarak kontrol etmek isteyebilirsiniz. Bunu yapmak için döner bir kodlayıcı mükemmel bir seçenektir.

Bu eğitici, step motor çalıştıracak H-Köprüsünü kontrol etmek için ARDUINO'nuza bir döner kodlayıcıyı nasıl bağlayacağınızı gösterecektir. Bu video eylemdeki devreyi gösterir:

İHTİYACINIZ PARÇALAR:

  1. 1 Rotary Encoder (yerleşik bir basma düğmeli)
  2. 1 Basma Düğmesi (yalnızca döner kodlayıcınızda basma düğmesi yoksa)
  3. 1 H-Bridge yongası (L293D veya SN754410NE, önceden monte edilmiş bir step kontrol panosu da kullanabilirsiniz)
  4. 1 Bipolar step motor
  5. Kesintileri destekleyen ARDUINO kartı
  6. ekmek tahtası
  7. atlama telleri

Gereçler:

Adım 1: Curcuit'i oluşturun

Yukarıdaki resim, inşa etmeniz gereken devreyi gösterir, döner kodlayıcının kesintileri destekleyen pimlere bağlı olduğundan emin olun (ünite 2 ve 3 ünitesinde).

Farklı bir H-Bridge yongası veya önceden oluşturulmuş bir tahta kullanırsanız devreyi buna göre değiştirmeniz gerekecektir.

H-Bridges ve nasıl çalıştıkları hakkında daha fazla bilgi için şu bağlantıya göz atın: H-Bridge INFO

2. Adım: Kod

Devreyi kurduğunuza göre, aşağıdaki kodu kopyalayıp ARDUINO IDE'nize kopyalayın.

#Dahil etmek

const int encoderPinA = 2; // sağ

const int encoderPinB = 3; // ayrıldı

const int encButton = 4; // kodlayıcı basma düğmesi

int encoderPos = 0; // sayaç

imzasız int lastReportedPos = 1; // değişiklik

statik boolean döndürme = yanlış; // çıkma

boolean A_set = yanlış;

boolean B_set = yanlış;

const int stepsPerRevolution = 200;

Adım myStepper (stepsPerRevolution, 8, 9, 10, 11); // h köprüsü pimleri

geçersiz kurulum () {

myStepper.setSpeed ​​(60);

pinMode (encoderPinA, INPUT_PULLUP); // pullup'ları etkinleştirme

pinMode (encoderPinB, INPUT_PULLUP);

pinMode (encButton, INPUT_PULLUP);

attachInterrupt (0, doEncoderA, CHANGE); // pin 2

attachInnterrupt (1, doEncoderB, CHANGE); // pin 3

Serial.begin (9600);

}

boşluk döngüsü () {

döndürme = doğru; // engelleyiciyi sıfırla

if (lastReportedPos! = encoderPos) {

Serial.println (encoderPos);

lastReportedPos = encoderPos;

if (digitalRead (encButton) == DÜŞÜK)

{

encoderPos = (encoderPos * 100); // 100 sayısını kaç adımla değiştirin

} // steperin ne zaman hareket etmesini istiyorsun?

myStepper.step (encoderPos); // butona basıldı

encoderPos = 0;

}

}

void doEncoderA () {

// çıkma

eğer (dönen) gecikme (1); // zıplama bitene kadar biraz bekleyin

// Geçiş testi

if (digitalRead (encoderPinA)! = A_set) {// bir kez daha serbest bırakma

A_set =! A_set;

// sayacı + A'nın B'ye gelmesi durumunda

if (A_set &&! B_set)

encoderPos + = 1; // enkoder döndüğünde atılacak adımları 1 ile değiştir

döndürme = yanlış; // loop () tekrar isabet edene kadar daha fazla ipucu bırakma

}

}

// B değiştirme durumunda kesinti

void doEncoderB () {

eğer (dönen) gecikme (1);

if (digitalRead (encoderPinB)! = B_set) {

B_set =! B_set;

// sayacı ayarla - B A'yı açarsa 1

if (B_set &&! A_set)

encoderPos - = 1; // enkoder döndüğünde atılacak adımları 1 ile değiştir

döndürme = yanlış;

}

}

Artık çalışan her şeye sahip olduğunuza göre döner kodlayıcıyı çevirin, Eğer kademe kademesi istediğinize göre tersi yönde dönüyorsa, kademe motorunun bir tarafına sadece 2 kablo geçirin (her ikisi de değil sadece bir taraf).

Sonra düğmeye aşağı doğru basın ve enkoderi çevirin, Enkoderi döndürdüğünüz yönde 100 adım atması gerekir. Enkoderi döndürdüğünüzde steperin kaç adım hareket edeceğini değiştirmek istiyorsanız, sadece koda bakın, değiştirmek istediğiniz 3 yerde yorumlanması. Basma düğme değerini değiştirdiğinizde, normal adımlarla çarpılacağını unutmayın.

Umarım bu öğretici yardımcı olmuştur, herhangi bir sorunuz veya yorumunuz varsa lütfen onları bırakın ve hasta en kısa sürede size geri olsun …..