Robotik Kodlama

Robotik Kodlama
Ana Sayfa

İLGİNİZİ ÇEKEBİLECEK LİNKLER :

4 Mayıs 2021 Salı

A4988 Motor Sürücü Modülü Kontrolü Arduino ile

 

A4988 Motor Sürücü Modülü Kontrolü Arduino ile


Kendi 3B yazıcınızı veya bir CNC makinenizi oluşturmayı planlıyorsanız, bir grup step motoru kontrol etmeniz gerekecektir. Ve bir Arduino'nun hepsini kontrol etmesi, işlemenin çoğunu alabilir ve size başka bir şey yapmak için çok fazla alan bırakmaz; kendi kendine yeten özel bir step motor sürücüsü kullanmadığınız sürece - A4988


NEMA 17 gibi bir çift kutuplu step motorun hem hızını hem de dönüş yönünü sadece iki pimle kontrol edebilir. Ne kadar harika.

Step motorların nasıl çalıştığını biliyor musunuz?

Kademeli motorlar, tekerleği bir seferde bir 'adım' döndürmek için dişli bir tekerlek ve elektromıknatıs kullanır.

Gönderilen her YÜKSEK darbe, bobine enerji verir, dişli çarkın en yakın dişini çeker ve motoru bir adım çalıştırır.

step motor çalışma animasyonu

Bu bobinleri vurma şekliniz, motorun davranışını büyük ölçüde etkiler.

  • Darbe sırası, motorun dönüş yönünü belirler.
  • Darbelerin frekansı motorun hızını belirler.
  • Darbe sayısı, motorun ne kadar uzağa döneceğini belirler.

A4988 Step Motor Sürücü Çipi

Modülün merkezinde, Allegro - A4988'den bir Mikro Adımlama Sürücüsü bulunmaktadır. Boyu küçüktür (yalnızca 0,8 × 0,6 inç), ancak yine de bir yumruk atıyor.

A4988 Step Motor Sürücü Çipi

A4988 step motor sürücüsü, 35 V ve ± 2A'ya kadar çıkış sürücü kapasitesine sahiptir ve NEMA 17 gibi bobin başına 2A çıkış akımında bir bipolar step motoru kontrol etmenizi sağlar.

Sürücünün, kolay kullanım için yerleşik tercümanı vardır. Bu, biri adımları kontrol etmek ve diğeri eğirme yönünü kontrol etmek için kontrol pimi sayısını sadece 2'ye düşürür.Sürücü, 5 farklı adım çözünürlüğü sunar. tam adım, yarım adım, çeyrek adım, sekizinci adım ve on altıncı adım.



A4988 Motor Sürücü Pin Çıkışı

A4988 sürücüsü, kendisini dış dünyaya arayüzleyen toplam 16 pime sahiptir. Bağlantılar aşağıdaki gibidir:



A4988 Step Motor Sürücü Pin Çıkışı

Tüm pimleri tek tek tanıyalım.

Güç Bağlantı Pimleri

A4988 aslında iki güç kaynağı bağlantısı gerektirir.

A4988 Step Motor Sürücü Güç Kaynağı Girişleri

VDD & GND 3V ila 5.5 V olabilen dahili mantık devresini sürmek için kullanılır.

Buna karşılık,

VMOT & GND 8V ila 35 V olabilen motor için güç sağlar.

Veri sayfasına göre, motor beslemesi, karta yakın, 4A'yı sürdürebilen uygun dekuplaj kapasitörü gerektirir.

Uyarı:

Bu sürücünün yerleşik düşük ESR seramik kapasitörleri vardır, bu da onu voltaj yükselmelerine karşı savunmasız hale getirir. Bazı durumlarda, bu sivri uçlar 35V'u (maksimum voltaj değeri A4988) aşarak karta ve hatta motora potansiyel olarak kalıcı hasar verebilir.

Sürücüyü bu tür ani artışlardan korumanın bir yolu, motor güç kaynağı pinlerine büyük bir 100µF (en az 47µF) elektrolitik kapasitör yerleştirmektir.

Microstep Seçim Pinleri

A4988 sürücüsü, ara adım konumlarına izin vererek mikro adıma izin verir. Bu, bobinlere ara akım seviyeleri ile enerji verilerek elde edilir.

Örneğin, çeyrek adım modunda 1,8 ° veya dönüş başına 200 adıma sahip NEMA 17'yi sürmeyi seçerseniz, motor dönüş başına 800 mikro adım verecektir.

A4988 Step Motor Sürücüsü Mikro Adım Seçim Girişleri

A4988 sürücüsünün üç adımlı boyut (çözünürlük) seçici girişi vardır. MS1, MS2 ve MS3Bu pinlere uygun mantık seviyelerini ayarlayarak motorları beş adımlı çözünürlüklerden birine ayarlayabiliriz.

MS1MS2MS3Mikro Adım Çözünürlüğü
DüşükDüşükDüşükTam adım
YüksekDüşükDüşükYarım adım
DüşükYüksekDüşükÇeyrek adım
YüksekYüksekDüşükSekizinci adım
YüksekYüksekYüksekOn altıncı adım

Bu üç mikro adımlı seçim pini, dahili aşağı çekme dirençleri tarafından DÜŞÜK çekilir, bu nedenle onları bağlantısız bırakırsak, motor tam adım modunda çalışacaktır.

Kontrol Giriş Pinleri

A4988'in iki kontrol girişi vardır. ADIM ve YÖN.

A4988 Step Motor Sürücü Motor Kontrol Girişleri

STEPgiriş, motorun mirosteplerini kontrol eder. Bu pime gönderilen her HIGH darbesi, motoru Microstep Seçim Pinleri tarafından belirlenen mikro adım sayısına göre adım adım ilerler. Darbeler ne kadar hızlı olursa, motor o kadar hızlı dönecektir.

DIRgirişi, motorun dönüş yönünü kontrol eder. YÜKSEK çekilmesi motoru saat yönünde, DÜŞÜK çekilmesi motoru saat yönünün tersine sürer.

Motorun sadece tek bir yönde dönmesini istiyorsanız, DIR'yi buna göre doğrudan VCC veya GND'ye bağlayabilirsiniz.

STEP ve DIR pinleri dahili olarak herhangi bir özel voltaja çekilmez, bu yüzden onları uygulamanızda yüzer halde bırakmamalısınız.

Güç Durumlarını Kontrol Etmek İçin Pimler

A4988, güç durumlarını kontrol etmek için üç farklı girişe sahiptir. EN, RST ve SLP.

A4988 Step Motor Sürücüsü Güç Durumları Kontrol Girişleri

TRPin aktif düşük giriştir, DÜŞÜK çekildiğinde (mantık 0) A4988 sürücüsü etkinleştirilir. Varsayılan olarak bu pim aşağı çekilir, böylece YÜKSEK çekmediğiniz sürece sürücü her zaman etkinleştirilir.

SLPPin aktif düşük giriş. Yani, bu pimi DÜŞÜK çekmek sürücüyü uyku moduna geçirerek güç tüketimini en aza indirir. Bunu özellikle motor gücü korumak için kullanılmadığında çalıştırabilirsiniz.

RSTaynı zamanda aktif bir düşük giriştir. DÜŞÜK çekildiğinde, siz HIGH çekene kadar tüm STEP girişleri yok sayılır. Ayrıca, dahili çeviriciyi önceden tanımlanmış bir Ana duruma ayarlayarak sürücüyü sıfırlar. Ana durum temelde motorun başladığı ilk konumdur ve mikro adım çözünürlüğüne bağlı olarak farklılık gösterir.

İPUCU

RST pini yüzüyor. Pimi kullanmıyorsanız, onu yükseltmek ve sürücüyü etkinleştirmek için bitişik SLP / SLEEP pimine bağlayabilirsiniz.

Çıkış Pinleri

A4988 motor sürücüsünün çıkış kanalları, modülün kenarına ayrılmıştır. 1B, 1A, 2A ve 2B iğneler.

A4988 Step Motor Sürücü Çıkış Pimleri

Bu pinlere 8V ile 35 V arasında voltajlara sahip herhangi bir bipolar step motoru bağlayabilirsiniz.

Modül üzerindeki her bir çıkış pini, motora 2A'ya kadar güç sağlayabilir. Bununla birlikte, motora sağlanan akım miktarı sistemin güç kaynağına, soğutma sistemine ve akım sınırlama ayarına bağlıdır.

Soğutma Sistemi - Soğutucu

A4988 sürücü IC'sinin aşırı güç kaybı, IC'nin kapasitesinin ötesine geçebilen ve muhtemelen kendine zarar veren sıcaklık artışına neden olur.

A4988 sürücü IC, bobin başına maksimum 2A akım değerine sahip olsa bile, yonga aşırı ısınmadan bobin başına yalnızca yaklaşık 1A besleyebilir.

Bobin başına 1A'dan fazlasını elde etmek için, bir soğutucu veya başka bir soğutma yöntemi gereklidir.

A4988 Step Motor Sürücü Soğutucu

A4988 sürücüsü genellikle bir soğutucu ile birlikte gelir. Sürücüyü kullanmadan önce kurmanız tavsiye edilir.

Mevcut sınırlama

Motoru kullanmadan önce yapmamız gereken küçük bir ayarlama var. Kademeli bobinlerden akan maksimum akım miktarını sınırlamamız ve motorun nominal akımını aşmasını önlememiz gerekir.

A4988 sürücüsünde, akım sınırını ayarlamak için kullanılabilecek küçük bir düzeltici potansiyometresi vardır. Akım sınırını, motorun akım değerine eşit veya daha düşük olacak şekilde ayarlamalısınız.

Bu ayarlamayı yapmak için iki yöntem vardır:

Yöntem 1:

Bu yöntemde "ref" pinindeki voltajı (Vref) ölçerek akım sınırını ayarlayacağız.

  1. Step motorunuzun veri sayfasına bir göz atın. Anma akımını not edin. Bizim durumumuzda NEMA 17 200steps / rev, 12V 350mA kullanıyoruz.
  2. Üç mikro adım seçim pimini bağlantısı keserek sürücüyü tam adım moduna geçirin.
  3. STEP girişini saat ayarlamayarak motoru sabit bir konumda tutun.
  4. Metal düzeltici çanağı ayarlarken üzerindeki voltajı (Vref) ölçün.
  5. Formülü kullanarak Vref voltajını ayarlayın

    Akım Sınırı = Vref x 2.5

    Örneğin, motorunuz 350mA olarak derecelendirilmişse, referans voltajını 0.14V olarak ayarlarsınız.
multimetre ile a4988 için vref voltaj ayarı akım sınırı ölçümü

İpucu:

Ayar yapmanın kolay bir yolu, metal bir tornavidanın şaftında bir timsah klipsi kullanmak ve bunu multimetrenize takmaktır, böylece aynı anda tornavida ile voltajı ölçebilir ve ayarlayabilirsiniz.

Yöntem 2:

Bu yöntemde, bobin içinden geçen akımı ölçerek akım sınırını ayarlayacağız.

  1. Step motorunuzun veri sayfasına bir göz atın. Anma akımını not edin. Bizim durumumuzda NEMA 17 200steps / rev, 12V 350mA kullanıyoruz.
  2. Üç mikro adım seçim pimini bağlantısı keserek sürücüyü tam adım moduna geçirin.
  3. STEP girişini saat ayarlamayarak motoru sabit bir konumda tutun. STEP girişini yüzer halde bırakmayın, mantık güç kaynağına (5V) bağlayın.
  4. Ampermetreyi, kademeli motorunuzdaki bobinlerden biriyle seri olarak yerleştirin ve akan gerçek akımı ölçün.
  5. Küçük bir tornavida alın ve akım sınırı potansiyometresini nominal akıma ulaşıncaya kadar ayarlayın.
multimetre ile a4988 için ölçüm bobini akım ayarı akım sınırı

Mantık voltajını (VDD) değiştirirseniz bu ayarı tekrar yapmanız gerekecektir.

Arduino UNO ile kablolama A4988 step motor sürücüsü

Artık sürücü hakkında her şeyi bildiğimize göre, onu Arduino'muza bağlayacağız.

Bağlantılar oldukça basit. VDD ve GND'yi (VDD'nin yanında) 5V'ye ve Arduino'daki toprak pimlerine bağlayarak başlayın. DIR ve STEP giriş pinleri sırasıyla Arduino üzerindeki # 2 & # 3 dijital çıkış pinlerine bağlanır.

step motoru 2B, 2A, 1A ve 1B pimlerine bağlayın. Aslında A4988, birkaç bipolar motordaki 4 pimli konnektöre uyacak şekilde uygun şekilde düzenlenmiştir, bu nedenle bu bir sorun olmamalıdır.

Uyarı:

Sürücüye güç verildiğinde bir step motorun bağlanması veya bağlantısının kesilmesi sürücüyü yok edebilir.

Ardından, sürücüyü etkin tutmak için RST pinini bitişik SLP / SLEEP pinine bağlayın. Ayrıca, motoru tam adım modunda çalıştırmak için mikro adım seçim pimlerini bağlantısız tutun.

Son olarak, motor güç kaynağını VMOT ve GND pinlerine bağlayın. Kartın yakınına, motor güç kaynağı pimlerine büyük bir 100µF ayırıcı elektrolitik kondansatör yerleştirmeyi unutmayın.

Nema 17 Step Motorunun A4988 sürücüsüne ve Arduino'ya kablolanması

Arduino Kodu - Temel Örnek

Aşağıdaki taslak, A4988 step motor sürücüsü ile bir bipolar step motorun hızını ve dönüş yönünü nasıl kontrol edeceğiniz konusunda size tam bir anlayış verecektir ve daha pratik deneyler ve projeler için temel oluşturabilir.

// Define pin connections & motor's steps per revolution
const int dirPin = 2;
const int stepPin = 3;
const int stepsPerRevolution = 200;

void setup()
{
	// Declare pins as Outputs
	pinMode(stepPin, OUTPUT);
	pinMode(dirPin, OUTPUT);
}
void loop()
{
	// Set motor direction clockwise
	digitalWrite(dirPin, HIGH);

	// Spin motor slowly
	for(int x = 0; x < stepsPerRevolution; x++)
	{
		digitalWrite(stepPin, HIGH);
		delayMicroseconds(2000);
		digitalWrite(stepPin, LOW);
		delayMicroseconds(2000);
	}
	delay(1000); // Wait a second
	
	// Set motor direction counterclockwise
	digitalWrite(dirPin, LOW);

	// Spin motor quickly
	for(int x = 0; x < stepsPerRevolution; x++)
	{
		digitalWrite(stepPin, HIGH);
		delayMicroseconds(1000);
		digitalWrite(stepPin, LOW);
		delayMicroseconds(1000);
	}
	delay(1000); // Wait a second
}

Kod Açıklaması:

Çizim, A4988'in STEP & DIR pinlerinin bağlı olduğu Arduino pinlerinin tanımlanmasıyla başlar. Biz de tanımlıyoruz stepsPerRevolutionBunu step motor spesifikasyonlarınıza uyacak şekilde ayarlayın.

const int dirPin = 2;
const int stepPin = 3;
const int stepsPerRevolution = 200;

Kodun kurulum bölümünde tüm motor kontrol pinleri dijital ÇIKIŞ olarak ilan edilmiştir.

pinMode(stepPin, OUTPUT);
pinMode(dirPin, OUTPUT);

Döngü bölümünde motoru saat yönünde yavaşça döndürüyoruz ve ardından bir saniye aralıklarla saat yönünün tersine hızlı bir şekilde döndürüyoruz.

Eğirme Yönünü Kontrol Etme : Bir motorun dönüş yönünü kontrol etmek için DIR pinini HIGH veya LOW olarak ayarladık. YÜKSEK bir giriş motoru saat yönünde döndürür ve DÜŞÜK saat yönünün tersine döndürür.

digitalWrite(dirPin, HIGH);

Kontrol Hızı : Bir motorun hızı STEP pinine gönderdiğimiz darbelerin frekansı ile belirlenir. Darbeler ne kadar yüksekse, motor o kadar hızlı çalışır. Darbe, çıkışı YÜKSEK çekip biraz bekledikten sonra DÜŞÜK çekip tekrar beklemekten başka bir şey değildir. İki darbe arasındaki gecikmeyi değiştirerek, bu darbelerin frekansını ve dolayısıyla bir motorun hızını değiştirirsiniz.

for(int x = 0; x < stepsPerRevolution; x++) {
	digitalWrite(stepPin, HIGH);
	delayMicroseconds(1000);
	digitalWrite(stepPin, LOW);
	delayMicroseconds(1000);
}

Arduino Kodu - AccelStepper kitaplığını kullanma

Adımlayıcıyı bir kitaplık olmadan kontrol etmek, basit, tek motorlu uygulamalar için mükemmeldir. Ancak, birden fazla adımı kontrol etmek istediğinizde, bir kitaplığa ihtiyacınız olacak.

Bu nedenle, bir sonraki deneyimiz için AccelStepper kitaplığı adı verilen gelişmiş bir step motor kitaplığından yararlanacağız . Destekler:

  • Hızlanma ve yavaşlama.
  • Her adımda bağımsız eşzamanlı adımlarla birden fazla eşzamanlı adım.

Bu kütüphane Arduino IDE'ye dahil değildir, bu yüzden önce onu kurmanız gerekecektir.

Kütüphane Kurulumu

Kitaplığı kurmak için Sketch> Dahil Et> Kitaplıkları Yönet'e gidin… Kitaplık Yöneticisinin kitaplıklar dizinini indirmesini ve kurulu kitaplıkların listesini güncellemesini bekleyin.

kitaplıkları yönet

Aramanızı 'accelstepper' yazarak filtreleyin. İlk girişe tıklayın ve ardından Yükle'yi seçin.

accelstepper kitaplığı yükleniyor

Arduino Kodu

İşte step motorunu bir yönde hızlandıran ve sonra durmak için yavaşlayan basit taslak. Motor bir devir yaptığında, dönüş yönünü değiştirir. Ve bunu tekrar tekrar yapmaya devam ediyor.

// Include the AccelStepper Library
#include <AccelStepper.h>

// Define pin connections
const int dirPin = 2;
const int stepPin = 3;

// Define motor interface type
#define motorInterfaceType 1

// Creates an instance
AccelStepper myStepper(motorInterfaceType, stepPin, dirPin);

void setup() {
	// set the maximum speed, acceleration factor,
	// initial speed and the target position
	myStepper.setMaxSpeed(1000);
	myStepper.setAcceleration(50);
	myStepper.setSpeed(200);
	myStepper.moveTo(200);
}

void loop() {
	// Change direction once the motor reaches target position
	if (myStepper.distanceToGo() == 0) 
		myStepper.moveTo(-myStepper.currentPosition());

	// Move the motor one step
	myStepper.run();
}

Kod Açıklaması:

Yeni kurulan AccelStepper kitaplığını dahil ederek başlıyoruz.

#include <AccelStepper.h>

A4988'in STEP & DIR pinlerinin bağlı olduğu Arduino pinlerini tanımlıyoruz. Ayrıca motorInterfaceType1'e ayarladık (1, Adım ve Yön pinli harici bir step sürücü anlamına gelir)

// Define pin connections
const int dirPin = 2;
const int stepPin = 3;

// Define motor interface type
#define motorInterfaceType 1

Ardından, adında bir adım kitaplığı örneği oluşturuyoruz myStepper.

AccelStepper myStepper(motorInterfaceType, stepPin, dirPin);

Kurulum fonksiyonunda önce motorun maksimum hızını bin olarak ayarladık. Ardından, step motorun hareketlerine hızlanma ve yavaşlama eklemek için motora bir hızlanma faktörü belirledik.

Daha sonra normal hız olarak 200'ü ve onu hareket ettireceğimiz adım sayısını yani 200'e ayarladık (NEMA 17 devir başına 200 adım ilerlerken).

void setup() {
	myStepper.setMaxSpeed(1000);
	myStepper.setAcceleration(50);
	myStepper.setSpeed(200);
	myStepper.moveTo(200);
}

Döngü işlevinde, motorun distanceToGohedef konuma (tarafından ayarlanan moveToulaşana kadar özelliği okuyarak ne kadar ilerlemesi gerektiğini kontrol etmek için bir If ifadesi kullanırız Bir kez distanceToGoulaştığında, biz değiştirerek ters yönde motora hareket edecek sıfır moveTomevcut pozisyonun negatif pozisyon.

Şimdi döngünün en altında bir run()fonksiyon dediğimizi fark edeceksiniz Bu en önemli işlevdir, çünkü bu işlev çalıştırılıncaya kadar adımlayıcı çalışmayacaktır.

void loop() {
	if (myStepper.distanceToGo() == 0) 
		myStepper.moveTo(-myStepper.currentPosition());

	myStepper.run();
}

ANA SAYFAYA DÖN

Bahadır ÖZGEN
Electronic Robotic Coding Research and Development 1975 - ∞
Learn Forever
If you want, let's learn together...
https://roboticcode2020.blogspot.com/
bahadirozgen1975@gmail.com
facebook    robotic.code
instagram    @roboticcode


Sayfalarımı ziyaret ettiğiniz için teşekkür ederim.Bu sitede mevcut olan içerikler kendi oluşturduğum projeler yazı,resim ve videolardan oluşmaktadır.İçerik oluşturmak çok uzun sürdüğü için bazı projelerde yurtdışı kaynaklardan faydalandım.Buradaki amacım ticari değildir.Kaynağı belli olan ve bizim kaynağına ulaşabildiğimiz materyal (yazı, fotoğraf, resim, video v.b.) için ilgili konularda fotoğraflarda logo varsa v.b. not olarak gösterilecektir.Sitemizde yayınlanan tüm içerik, bizim tarafımızdan ve internet üzerinden youtube, facebook ve blog gibi paylaşıma sunulmuş kaynak sitelerden alındığı için, sitemiz yasal yükümlülüğe tabi tutulamaz. Sitemizde telif haklarının size ait olduğu bir içerik varsa ve bunu kaldırmamızı isterseniz, iletişim sayfamızdan bizimle iletişime geçtiğiniz takdirde içerik yayından kaldırılacaktır.Bu konu ve modüller ile uğraşarak, ileride çok güzel makine ve elektronik aletler yapabilirsiniz.