İçindekiler:
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 Rotary Encoder (yerleşik bir basma düğmeli)
- 1 Basma Düğmesi (yalnızca döner kodlayıcınızda basma düğmesi yoksa)
- 1 H-Bridge yongası (L293D veya SN754410NE, önceden monte edilmiş bir step kontrol panosu da kullanabilirsiniz)
- 1 Bipolar step motor
- Kesintileri destekleyen ARDUINO kartı
- ekmek tahtası
- 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 …..