Arduino

Arduino Step Motor nasıl çalışır Soft Start

Arduino Step Motor nasıl çalışır ?

Merhabalar arkadaşlar bugun step motorlardan sohbet ettik biraz faydalarından durumundan derken özellikle orta ve acemi seviye arkadaşların step motor konusunda biraz zayıf olduğu gözlemledim bunun üzerine Arduino Step Motor ve sürücülerinden biraz bahsedip bir de uygulama ile bunu taçlandırmanın çok hoş olacağını düşündüm.

Step Motor Nedir ?

Step motorlar tam olarak adım motorlarıdır. Motorun göbeğindeki elektro mıknatısları motorun yan kısımlarında bulunan bobinler ile manyetik etki alanına sokarak her seferinde bir adım atmasını sağlarız.

step motor çalışma animasyonu
step motor çalışma animasyonu

Step motorların görselden de anlaşılacağı gibi diğer motorlardan farkı tam olarak budur bu sayede açık çevrim dahi olsa muhteşem hassas işler yapılabilmektedir.

Uni-polar ve bi-polar çeşirleti bulunmaktadır ama bi-polar olan motorlar gerek gücü ve gerek kablosu nispeten az olması ile daha fazla tercih edilirler.

Step motorlardan her bobinin 2 ucu bulunmakta olup 4-5-6-8 uçlu step motorlar bulunmaktadır. Bu uçların sırası için step motorun datasheet inden faydalanabilirsiniz.

Multimetre ile ohm kısmından da yapılsa da deneme yanılma ile bile rahatça bulunur . Şimdilik detaylarda boğulmaya daha fazla gerek yok diyor ve step motorda kısas bilgileri verip diğer konuya uçuyorum…

Step Motor da;

Pals Frekansı ile hız

Pals sırası ile yön

Pals sayısı ile motorun kaç adım atacağını belirleriz.

Arduino Step Motor Sürücüler

Arduino Step Motor sürücüleri motor kullanımı için illa olacak olmazsa çalışmaz gibi bir durum olmamakla birlikte küçükten büyüğe tüm step motorlarda sürücü kullanmak kesinlikle çok faydalıdır hem çok verimli kullanırsınız hemde çok basit şekilde kullanmanıza imkan tanır. mikrodenetleyicinizi gereksiz risklere atıp gereksiz pin kullanımından da korumuş olursunuz.

Ben size drv8825 ten bahsedeceğim ancak a4988 de neredeyse aynı sürücüdür. Hatta bütün step sürücüler çok yakındırlar ileri seviyeye gittikçe akım ve gerilim Seviyelerin de artış görülmektedir.

DRV8825 45V a kadar gerilimi desteklemekte olup Pratikte 2 ampere kadar verebilir. Bu da böyle küçük bir sürücü için harikulade bir değer. step ve dir bacakları sayesinde sadece 2 bacaktan kontrol sağlar.6 farklı Motor sürme şekli vardır. Tam adım, yarım adım, çeyrek adım, 1/8 adım, 1/16 adım ve 1/32 adım. Kullanacağınız yere göre hassasiyeti seçebilirsiniz.

DRV8825 Çıkışları

DRV8825 Step Motor Sürücü Pinout
DRV8825 Step Motor Sürücü Pinout

Sürücümüzün Besleme Bacakları:

  • VMOT(16) : 45 V’a kadar motor beslemesi buraya bağlanır.
  • GND MOT (15): Buraya da harici güç kaynağımızın GND kısmını bağlarız.
  • GND LOGIC(9): MCU dan aldığımız gnd girecek.(Tabi şöyle bir durum var devrenin çalışması için GND LOGIC ve GND MOT bacaklarını köprü yapmanız gerekmetktedir.)

Sürücümüzün MOD Seçenekleri:

DRV8825 Step Motor Sürücüsü Mikro Adım Seçim Pinleri

DRV8825 Step Motor Sürücüsü Mikro Adım Seçim Pinleri

Eğer hiçbir bacağı bağlamazsanız Motor Tam adımda Çalışır.

Kontrol Bacakları:

DRV8825 Step Motor Sürücü Motor Kontrol Pimleri
  • STEP(7): Bacağı motora verilen her bir palste bir adım atmasını sağlamaktadır.
  • DIR(8): bu bacağın yüksek yada düşük olması durumunda adım yönü dizisi değişere motoru sağa ve sola yönlendirecektir.

Durum Kontrol Bacakları:

DRV8825 Step Motor Sürücüsü Güç Durumları Kontrol Pimleri
  • EN(1): Enable bacağıdır. Üzerindeki çizgidende anlaşılacağı üzere ters çalışır Düşük verilirse Sürücü Çalışır. Yüksek verilirse Sürücü Kapanır. Tamamen kapanır tutma da yapmaz.
  • RST(5): Sürücü dizisini sıfırlar en baştan başlatır siz örneğin motoru 45 adım attırdınız. bu bacağı yüksek- düşük yaptığınızda sürücü 0 adımdan başlamış sayacaktır.
  • SLP(6): Futursuz gereksiz bir bacaktır kendisi sürücüyü uyku moduna alır.

Çıkış Bacakları:

DRV8825 Step Motor Sürücü Motor Bağlantıları

Step Motorun datasheet’inden okuduğunuz bacak sırasına göre doğrudan bağlantı yapabilirsiniz.

Soğutma Sistemi Montajı

Sürücümüzün paketinden bir adet heatsink çıkmaktadır. Bu Heatsink’i yapıştırmayı kesinlikle unutmayın yoksa Üzücü sonuçlar yaşayabilirsiniz. Sürücünüzün 1.5A ve üzeri akımlarda çalıştırmayı düşünüyorsanız soğutucunuzu da büyütmeyi unutmayın!!

Arduino Step Motor DRV8825 Heatsink
Arduino Step Motor DRV8825 Heatsink

Akım sınırlama

DRV8825 üzerindeki pot sayesinde Arduino Step Motor ‘umuzun akımını sınırlayabiliriz bu sayede sürücünün fazla ısınmasını hatta yanmasını önleyebiliriz.

Akım sınırlama işlemini göz kararı da yapabilirsiniz ancak siz yinede datasheetten yapın :)

1.Yöntem

Bu yöntem ile “Pot” Üzerindeki 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ı not edin. Bizim motorumuz NEMA 17 200 adım / devir, 12V 350mA
  2. Üç mikro adım seçim iğnesinin bağlantısını keserek sürücüyü tam adım moduna getirin.
  3. STEP girişini sökün motoru sabit bir konumda tutun.
  4. Metal düzeltici kabındaki voltajı (Vref) ayarlarken ölçün.
  5. Vref voltajını formülü kullanarak ayarlayın

Formülümüz = Akım Sınırı = Vref x 2

Akım Ölçümü
Akım Ölçümü
2.Yöntem

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

  1. Step motorunuzun Datasheet sayfasına bir göz atın. Anma akımı not edin. Bizim motorumuz NEMA 17 200 adım / devir, 12V 350mA
  2. Üç mikro adım seçim iğnesinin bağlantısını keserek sürücüyü tam adım moduna getirin.
  3. STEP girişini sökün motoru sabit bir konumda tutun.
  4. Ampermetreyi step motorunuzdaki bobinlerden biriyle seri olarak yerleştirin ve gerçek akım akışını ölçün.
  5. Küçük bir tornavida alın ve anma akımına ulaşıncaya kadar akım limit potansiyometresini ayarlayın.
Akım Sınırlama 2. Yöntem
Akım Sınırlama 2. Yöntem

Arduino Step Motor Bağlantı Şeması

Bağlantı Şeması
Bağlantı Şeması
  • RST: Arduino 5V Bağlayın.
  • SLP: Arduino 5V Bağlayın.
  • GND LOGIC : Arduino GND Bağlayın Sonra VMOT-GND ye bu hattan bir köprü atın.
  • DIR: Arduino 2’ye Bağlayın.
  • STEP : Arduino 3’e Bağlayın.
  • A1,A2,B1,B2: Bacaklarını motorumuza bağlayalım.
  • VMOT : Harici Besleme + Ya bağlayalım
  • VMOT-GND : GND Logic ile köprülemiştik Şimdi harici beslememizinde GNDsine bağlayalım.
  • ADIM Ayarlarınızı Sizlere Bırakıyorum Yukarıdaki tablodan dilediğiniz gibi yapabilirsiniz.

Arduino Step Motor Kodlama

Tam tur Değişkenini Motorunuzun Tam tur sayısına göre değiştirmenizde fayda vardır. Datasheette yazar.


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

void setup()
{
	// Çıkış ayarlarımız.
	pinMode(stepPin, OUTPUT);
	pinMode(dirPin, OUTPUT);
}
void loop()
{
	// Motor Yönünü Saat Yönüne alır.
	digitalWrite(dirPin, HIGH);

	//Yavaşca Tam Tur atar.
	for(int x = 0; x < TamTur; x++)
	{
		digitalWrite(stepPin, HIGH);
		delayMicroseconds(2000);
		digitalWrite(stepPin, LOW);
		delayMicroseconds(2000);
	}
	delay(1000); 
	
	// Motor Yönünü saat yönünün tersine alır.
	digitalWrite(dirPin, LOW);

	// Motoru biraz daha Hızlı döndürürüz.
	for(int x = 0; x < TamTur; x++)
	{
		digitalWrite(stepPin, HIGH);
		delayMicroseconds(1000);
		digitalWrite(stepPin, LOW);
		delayMicroseconds(1000);
	}
	delay(1000); 
}

Step Motorumuzu Daha Hassas kullanmak istiyoruz Yavaşça Hızlansın Yavaşça Yavaşlasın. Eş zamanlı Adım atsın o Halde Kütüphane Kullanalım O zaman!!

AccelStepper: Bu kütüphaneden faydalanacağız . Motorumuza soft start ve soft stop özelliği Ekleyecektir. Buda uygulamanızda kesinlikle gerekli bir özellik .

Kütüphaneye girip

kütüphaneleri yönet
kütüphaneleri yönet
accelstepper kitaplığını yükleme
accelstepper kitaplığını yükleme

Yükledikten sonra Paylaştığım kaynak ile rahatça kullanmaya başlayabiliriz.


#include <AccelStepper.h>

// Bağlantı Atamalarımız.
const int dirPin = 2;
const int stepPin = 3;

// Motor Bağlantı ataması.
#define motorInterfaceType 1

// Simdi de Kaynak fonksiyonumuzu tanımlayalım.
AccelStepper myStepper(motorInterfaceType, stepPin, dirPin);

void setup() {
	// Motorun ulaşacağı max hızı ifade eder.
	myStepper.setMaxSpeed(1000);
	//Motorun ne kadar zamanda hızlanacağını belirler.
	myStepper.setAcceleration(50);
	// Başlangıç hızını ayarlar.
	myStepper.setSpeed(200);
	// Motorun tam tur sayısıdır.
	myStepper.moveTo(200);
}

void loop() {
	// Motorun yönüne göre sıfır noktasına taşır.
	if (myStepper.distanceToGo() == 0) 
		myStepper.moveTo(-myStepper.currentPosition());

	// Motoru düz Çalıştırır.
	myStepper.run();
}

Arkadaşlar projemizi tamamlamış bulunmaktayız. Umarım Faydalı olmuştur. İyi Çalışmalar.

Etiketler

Onur NP

Arduino Stm32 gibi Mikrodenetleyici PLC Otomasyon sistemleri ve Genel elektronik projeleri üzerine örnek paylaşımlar yapmaktayım Endüstriyel ve Kişisel proejelerinize Ücretli olarak destek verebilirim.

İlgili Makaleler

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

Başa dön tuşu
Call Now ButtonAra
Kapalı
Kapalı