Robotik Kodlama

Robotik Kodlama
Ana Sayfa

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

motor sürücü etiketine sahip kayıtlar gösteriliyor. Tüm kayıtları göster
motor sürücü etiketine sahip kayıtlar gösteriliyor. Tüm kayıtları göster

4 Mayıs 2021 Salı

L293D Motor Sürücü Shield & Arduino ile DC, Step & Servo Kontrolü

 

L293D Motor Sürücü Shield & Arduino ile DC, Step & Servo Kontrolü


Yeni robotunuzu monte etmeyi planlıyorsanız, sonunda DC motorlar, Step motorlar ve servolar gibi çeşitli motorları kontrol etmeyi öğrenmek isteyeceksiniz. Bunu yapmanın en kolay ve ucuz yollarından biri, L293D Motor Sürücü Kalkanı ile Arduino arasında arayüz oluşturmaktır . Tam özellikli bir motor kalkanı - birçok robot ve CNC projesi için mükemmel.

Şunları sürebilir:

  • 8 bit hız seçimine sahip 4 çift yönlü DC motor (0-255)
  • Tek bobinli, çift bobinli, aralıklı veya mikro kademeli 2 kademeli motor (tek kutuplu veya iki kutuplu).
  • 2 servo motor

L293D Motor Sürücüsü ve 74HC595 Vites Kaydı

L293D Motor Sürücü Kalkanı Yonga Seti

L293D, bir çift DC motoru veya tek kademeli motoru sürebilen çift kanallı bir H-Köprü motor sürücüsüdür.

Kalkan iki L293D motor sürücü yonga setiyle birlikte geldiğinden, bu, dört adede kadar DC motoru ayrı ayrı çalıştırabileceği anlamına gelir ve bu da onu dört tekerlekli robot platformları oluşturmak için ideal hale getirir.

Kalkan toplam 4 H-Köprüsü sunar ve her bir H-köprüsü motora 0,6A'ya kadar güç sağlayabilir.

Kalkan ayrıca, Arduino'nun 4 dijital pinini iki L293D yongasının 8 yön kontrol pinine genişleten bir 74HC595 kaydırma yazmacı ile birlikte gelir.

Güç kaynağı

L293D Motor Sürücü Kalkanı Güç Kaynağı Terminalleri

Motorlara kalkan aracılığıyla güç sağlamaya gelince üç senaryo vardır.

  • Hem Arduino hem de motorlar için tek DC güç kaynağı: Hem Arduino hem de motorlar için tek bir DC güç kaynağına sahip olmak istiyorsanız, bunu Arduino'daki DC jakına veya blendaj üzerindeki 2 pimli EXT_PWR bloğuna takmanız yeterlidir. Güç bağlantı telini motor blendajına yerleştirin. Bu yöntemi yalnızca motor besleme voltajı 12V'den az olduğunda kullanabilirsiniz.
  • (Önerilen) Arduino, USB üzerinden ve bir DC güç kaynağı ile motorlardan güç alır: Arduino'nun USB'den ve motorların bir DC güç kaynağından kapatılmasını istiyorsanız, USB kablosunu takın. Ardından motor beslemesini blendaj üzerindeki EXT_PWR bloğuna bağlayın. Atlama kablosunu kalkanın üzerine yerleştirmeyin.
  • Arduino ve motorlar için iki ayrı DC güç kaynağı: Arduino ve motorlar için 2 ayrı DC güç kaynağına sahip olmak istiyorsanız. Arduino için kaynağı DC jakına takın ve motor beslemesini EXT_PWR bloğuna bağlayın. Atlama telinin motor korumasından çıkarıldığından emin olun.

Uyarı:

Atlama teli yerinde olduğunda EXT_PWR girişine güç VERMEYİN. Motor kalkanına ve ayrıca Arduino'nuza zarar verebilir!

Bir bonus olarak, kalkan aşağıdaki özellikleri sunar:

  • Kalkan, güç verme sırasında motorları kapalı tutmak için bir açılır direnç dizisi ile birlikte gelir.
  • Yerleşik LED, motor güç kaynağının iyi durumda olduğunu gösterir. Yanmazsa motorlar çalışmayacaktır.
  • RESET, Arduino'nun sıfırlama düğmesinden başka bir şey değildir. Sadece kolaylık sağlamak için zirveye çıktı.

Çıkış Terminalleri

L293D Motor Sürücü Kalkanı Çıkış Terminalleri Pin Çıkışı

Her iki L293D yongasının çıkış kanalları, iki adet 5 pimli vida terminali ile ekranın kenarına bölünmüştür. M1 , M2 , M3 ve M4 . Bu terminallere 4.5 ile 25V arasında gerilimleri olan dört adet DC motor bağlayabilirsiniz.

Modül üzerindeki her kanal, DC motora 600mA'ya kadar verebilmektedir. Bununla birlikte, motora sağlanan akım miktarı, sistemin güç kaynağına bağlıdır.

Çıkış terminallerine iki kademeli motor da bağlayabilirsiniz. Bir step motor M1-M2 motor portuna ve diğeri M3-M4'e .

Tek kutuplu bir step motorunuz varsa, GND terminali de sağlanır. Her iki kademeli motorun merkez tapalarını bu terminale bağlayabilirsiniz.

Kalkan, 16 bit PWM çıkış hatlarını, iki servo motoru bağlayabileceğiniz iki adet 3 pinli başlığa getirir .

L293D kalkan üzerinde kullanılmayan pimler

Ekran tarafından dijital pimler # 2, # 13 ve analog pimler A0-A5 kullanılmaz.

Analog pinler, pin 2'nin küçük bir kopuşa sahip olduğu sağ alt köşede kırılmıştır. Bu pinleri kullanmak istiyorsanız, ona bazı başlıkları bağlayabilirsiniz.

AFMotor Kitaplığını Kurmak

Kalkanla iletişim kurabilmek için, DC, step ve servo motorları kontrol etmek için basit komutlar verebilmemiz için AFMotor.h kitaplığını kurmamız gerekir .

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.

Arduino Kitaplığı Kurulumu - Arduino IDE'de Kitaplıkları Yönetmeyi Seçme

Aramanızı ' motor kalkanı ' yazarak filtreleyin Birkaç giriş olmalı. Adafruit tarafından hazırlanan Adafruit Motor Shield kitaplığını (V1 Firmware) arayın . Bu girişe tıklayın ve ardından Yükle'yi seçin.

AFMotor Kitaplığını Kurmak

L293D Shield ile DC Motorları Sürmek

Artık kalkan hakkında her şeyi bildiğimize göre, onu Arduino'muza bağlamaya başlayabiliriz!

Kalkanı Arduino'nun üstüne takarak başlayın.

Ardından, güç kaynağını motorlara bağlayın. Ekrana 4.5 ile 25V arası gerilimleri olan DC motorları bağlayabilmenize rağmen, deneyimizde 9V olarak derecelendirilmiş DC Motorları kullanıyoruz. Bu nedenle, harici 9V güç kaynağını EXT_PWR terminaline bağlayacağız.

Şimdi motoru M1, M2, M3 veya M4 motor terminallerine bağlayın. Deneyimizde onu M4'e bağlıyoruz .

DC Motorun L293D Motor Shield & Arduino ya Kablolanması
DC Motorun L293D Motor Shield & Arduino ya Kablolanması

Aşağıdaki taslak, L293D motor sürücü korumalı bir DC 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.

#include <AFMotor.h>

AF_DCMotor motor(4);

void setup() 
{
	//Set initial speed of the motor & stop
	motor.setSpeed(200);
	motor.run(RELEASE);
}

void loop() 
{
	uint8_t i;

	// Turn on motor
	motor.run(FORWARD);
	
	// Accelerate from zero to maximum speed
	for (i=0; i<255; i++) 
	{
		motor.setSpeed(i);  
		delay(10);
	}
	
	// Decelerate from maximum speed to zero
	for (i=255; i!=0; i--) 
	{
		motor.setSpeed(i);  
		delay(10);
	}

	// Now change motor direction
	motor.run(BACKWARD);
	
	// Accelerate from zero to maximum speed
	for (i=0; i<255; i++) 
	{
		motor.setSpeed(i);  
		delay(10);
	}

	// Decelerate from maximum speed to zero
	for (i=255; i!=0; i--) 
	{
		motor.setSpeed(i);  
		delay(10);
	}

	// Now turn off motor
	motor.run(RELEASE);
	delay(1000);
}

Kod Açıklaması:

Çizim, AFMotor.h kitaplığını dahil ederek başlar.

İkinci satır AF_DCMotor motor(motorPort#);bir kitaplık nesnesi oluşturur. Burada motorun bağlı olduğu motor port numarasını belirtmeniz gerekir. M1 bağlantı noktası için 1 yazma, M2 için yazma 2 vb.

Kalkana birden fazla motor bağlamak istiyorsanız, her motor için ayrı bir nesne oluşturun. Örneğin, aşağıdaki kod parçacığı iki AFmotor nesnesi oluşturur.

AF_DCMotor motor1(1);
AF_DCMotor motor2(2);

Kodun kurulum ve döngü bölümünde, bir motorun hızını ve dönüş yönünü kontrol etmek için aşağıdaki iki işlevi çağırıyoruz.

  • setSpeed(speed)fonksiyonu motorun hızını ayarlar. speed0 ile 0 ile 255 arasında değişmektedir kapalı olmak ve tam gaz olarak 255. Programda istediğiniz zaman hızı ayarlayabilirsiniz.
  • run(cmd)fonksiyonu motorun çalışma modunu ayarlar. Geçerli değerler cmdşunlardır:
    • İLERİ - ileri doğru koş (gerçek dönüş yönü motor kablolarına bağlı olacaktır)
    • GERİ - geriye doğru koş (dönüş İLERİ'den ters yönde olacaktır)
    • SERBEST BIRAK - Motoru durdurun. Bu, motordan gücü keser ve eşdeğerdir setSpeed(0)Motor koruması dinamik frenleme yapmaz, bu nedenle motorun dönmesi biraz zaman alabilir.

L293D Shield ile Step Motorları Sürüş

Step motoru L293D ekranına bağlayalım. Kalkanı Arduino'nun üstüne takarak başlayın.

28BYJ-48 tek kutuplu step için

28BYJ-48 tek kutuplu step kullanıyorsanız, bu motorlar 5V olarak derecelendirilmiştir ve devir başına 48 adım sunar. Bu nedenle, harici 5V güç kaynağını EXT_PWR terminaline bağlayın.

PWR atlama telini çıkarmayı unutmayın.

Şimdi, motoru M1-M2 (port # 1) veya M3-M4 (port # 2) step motor terminallerine bağlayın. Deneyimizde onu M3-M4'e bağlıyoruz .

Unipolar Step Motorun L293D Motor Shield ve Arduino'ya Kablolanması
Unipolar Step Motorun L293D Motor Shield ve Arduino'ya Kablolanması

NEMA 17 bipolar step için

NEMA 17 bipolar step kullanıyorsanız, bu motorlar 12V olarak derecelendirilmiştir ve devir başına 200 adım sunar. Bu nedenle, harici 12V güç kaynağını EXT_PWR terminaline bağlayın.

PWR atlama telini çıkarmayı unutmayın.

Şimdi, motoru M1-M2 (port # 1) veya M3-M4 (port # 2) step motor terminallerine bağlayın. Deneyimizde onu M3-M4'e bağlıyoruz .

Bipolar Step Motorun L293D Motor Shield ve Arduino'ya Kablolanması
Bipolar Step Motorun L293D Motor Shield ve Arduino'ya Kablolanması

Arduino Kodu

Aşağıdaki taslak, L293D blendajlı tek kutuplu veya iki kutuplu bir step motorun nasıl kontrol edileceğini tam olarak anlamanızı sağlayacaktır ve stepsPerRevolutionparametre hariç her iki motor için aynıdır .

Krokiyi denemeden önce bu parametreyi motorunuzun teknik özelliklerine göre değiştirin. Örneğin, NEMA 17 için 200, 28BYJ-48 için 48 olarak ayarlayın.

#include <AFMotor.h>

// Number of steps per output rotation
// Change this as per your motor's specification
const int stepsPerRevolution = 48;

// connect motor to port #2 (M3 and M4)
AF_Stepper motor(stepsPerRevolution, 2);

void setup() {
  Serial.begin(9600);
  Serial.println("Stepper test!");

  motor.setSpeed(10);  // 10 rpm   
}

void loop() {
  Serial.println("Single coil steps");
  motor.step(100, FORWARD, SINGLE); 
  motor.step(100, BACKWARD, SINGLE); 

  Serial.println("Double coil steps");
  motor.step(100, FORWARD, DOUBLE); 
  motor.step(100, BACKWARD, DOUBLE);

  Serial.println("Interleave coil steps");
  motor.step(100, FORWARD, INTERLEAVE); 
  motor.step(100, BACKWARD, INTERLEAVE); 

  Serial.println("Micrsostep steps");
  motor.step(100, FORWARD, MICROSTEP); 
  motor.step(100, BACKWARD, MICROSTEP); 
}

Kod Açıklaması:

Çizim, AFMotor.h kitaplığını dahil ederek başlar.

İkinci satır AF_Stepper motor(48, 2);bir kitaplık nesnesi oluşturur. Burada, motorun devir başına adımlarını ve motorun bağlı olduğu port numarasını parametre olarak geçirmeniz gerekir.

Kodun kurulum ve döngü bölümünde, bir motorun hızını ve dönüş yönünü kontrol etmek için aşağıdaki iki işlevi çağırıyoruz.

  • setSpeed(rpm)işlevi rpm, step motorun dakikada kaç devir dönmesini istediğinizde motorun hızını ayarlar .
  • step(#steps, direction, steptype)fonksiyon, motorun hareket etmesini istediğiniz her seferde çağrılır. #stepskaç adım atmasını istediğinizdir. directionFORWARD veya BACKWARD şeklindedir ve için geçerli değerler stepstyleşunlardır:
    • TEK - Bir seferde bir bobine enerji verilir.
    • ÇİFT - Daha fazla tork için aynı anda iki bobine enerji verilir.
    • INTERLEAVE - Arada bir yarım adım oluşturmak için tekli ve çiftli arasında geçiş yapın. Bu, daha düzgün çalışmayı sağlayabilir, ancak ekstra yarım adım nedeniyle hız da yarı yarıya azalır.
    • MICROSTEP - Bitişik bobinler, her tam adım arasında bir dizi 'mikro adım' oluşturmak için yukarı ve aşağı rampalanır. Bu, daha iyi çözünürlük ve daha yumuşak dönüşle sonuçlanır, ancak torkta bir kayıpla sonuçlanır.

L293D Shield ile Servo Motorların Sürülmesi

Servoları L293D kalkanla sürmek pasta kadar kolaydır.

Motor kalkanı aslında Arduino'nun 16bit PWM çıkış pinlerini # 9 & # 10 iki 3 pinli başlık ile kalkanın kenarına çıkarır.

Servolar için güç, Arduino'nun yerleşik 5V regülatöründen gelir, bu nedenle EXT_PWR terminaline herhangi bir şey bağlamanız gerekmez.

Servo Motorun L293D Motor Shield & Arduino ya Kablolanması
Servo Motorun L293D Motor Shield & Arduino ya Kablolanması

Yerleşik PWM pinlerini kullandığımız için, taslak IDE'nin yerleşik Servo kitaplığını kullanır .

#include <Servo.h> 

Servo myservo;	// create servo object to control a servo
int pos = 0;	// variable to store the servo position

void setup() 
{
	// attaches the servo on pin 10 to the servo object
	myservo.attach(10);   
}

void loop() 
{
	// sweeps from 0 degrees to 180 degrees
	for(pos = 0; pos <= 180; pos += 1) 
	{
		myservo.write(pos);
		delay(15);
	}
	// sweeps from 180 degrees to 0 degrees
	for(pos = 180; pos>=0; pos-=1)
	{
		myservo.write(pos);
		delay(15);
	}
}

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.

DRV8825 Sürücü Modülü ve Arduino ile Step Motor Kontrol

 

DRV8825 Sürücü Modülü ve Arduino ile Step Motor Kontrol





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 - DRV8825 .

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 serin!

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.



DRV8825 Step Motor Sürücü Çipi

Modülün merkezinde Texas Instruments'ın bir Microstepping Sürücüsü - DRV8825 bulunmaktadır. Boyu küçüktür (yalnızca 0,8 × 0,6 inç), ancak yine de bir yumruk atıyor.

DRV8825 Step Motor Sürücü Modülü

DRV8825 step motor sürücüsü, 45V'a kadar çıkış sürücü kapasitesine sahiptir ve bobin başına 2,2A'ya kadar çı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ü 6 farklı adım çözünürlüğü sunar. tam adım, yarım adım, çeyrek adım, sekizinci adım, on altıncı adım ve otuz ikinci adım.

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

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

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

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

Güç Bağlantı Pimleri

Diğer tipik step motor sürücülerinden farklı olarak, DRV8825'in yalnızca bir güç kaynağı bağlantısı vardır.

DRV8825 Step Motor Sürücü Motor Güç Kaynağı Pimleri

VMOT & GND MOT motor için 8,2V ila 45V olabilen güç sağlar.

DRV8825 gücünü dahili 3V3 voltaj regülatöründen aldığından modülün herhangi bir mantık besleme pini yoktur.

Bununla birlikte, mikrodenetleyicinizin zeminini GND LOGIC toplu iğne.

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 45V'u (DRV8825'in maksimum voltaj değeri) 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 Pimleri

DRV8825 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.

DRV8825 Step Motor Sürücüsü Microstep Seçim Pimleri

DRV8825 sürücüsünün üç adımlı boyut (çözünürlük) seçici girişi vardır. M0, M1 ve M2Bu pinlere uygun mantık seviyelerini ayarlayarak motorları altı adımlı çözünürlükten birine ayarlayabiliriz.

M0M1M2Mikro Adım Çözünürlüğü
DüşükDüşükDüşükTam adım
YüksekDüşükDüşükYarım adım
DüşükYüksekDüşük1/4 adım
YüksekYüksekDüşük1/8 adım
DüşükDüşükYüksek1/16 adım
YüksekDüşükYüksek1/32 adım
DüşükYüksekYüksek1/32 adım
YüksekYüksekYüksek1/32 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

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

DRV8825 Step Motor Sürücü Motor Kontrol Pimleri

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.

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

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

DRV8825 Step Motor Sürücü Güç Durumları Kontrol Pimleri

TRPin aktif düşük giriştir, DÜŞÜK çekildiğinde (mantık 0) DRV8825 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.

Arıza Tespit Pini

DRV8825 ayrıca bir FAULT H köprüsü FET'leri aşırı akım koruması veya termal kapatma sonucunda devre dışı bırakıldığında DÜŞÜK süren çıkış.

DRV8825 Step Motor Sürücü Arıza Tespit Pimleri

Aslında, Hata pini SLEEP pimine kısaltılmıştır, bu nedenle, Hata pini DÜŞÜK sürüldüğünde, tüm çip devre dışı bırakılır. Ve RESET veya Motor Voltajı VMOT kaldırılıp yeniden uygulanana kadar devre dışı kalır.

Çıkış Pinleri

DRV8825 motor sürücüsünün çıkış kanalları, modülün kenarına ayrılmıştır. B2, B1, A1 ve A2 iğneler.

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

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

Modül üzerindeki her bir çıkış pini, motora 2,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

DRV8825 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.

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

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

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

DRV8825 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.

DRV8825 Step Motor Sürücü Akım Sınırlama Potansiyometresi

DRV8825 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

    Örneğin, motorunuz 350mA olarak derecelendirilmişse, referans voltajını 0.175V olarak ayarlarsınız.
multimetre ile drv8825 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.
  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 drv8825 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 DRV8825 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. Sürücüyü etkin tutmak için RST pinini bitişik SLP / SLEEP pinine ve her ikisini de Arduino'daki 5V'ye bağlayarak başlayın.

GND LOGIC pinini Arduino'daki toprak pinine bağlayın. DIR ve STEP giriş pinleri sırasıyla Arduino üzerindeki # 2 & # 3 dijital çıkış pinlerine bağlanır.

step motoru B2, B1, A1 ve A2 pinlerine bağlayın. Aslında DRV8825, birkaç bipolar motordaki 4 pinli konnektöre uyacak şekilde uygun bir şekilde yerleştirilmiştir, bu nedenle bu bir problem 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.

Motoru tam adım modunda çalıştırmak için mikro adım seçim pimlerinin bağlantısını kesmeyi unutmayın.

Son olarak, motor güç kaynağını VMOT ve GND MOT 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 DRV8825 sürücüsüne ve Arduino'ya kablolanması
Nema 17 Step Motorunun DRV8825 sürücüsüne ve Arduino'ya kablolanması

Arduino Kodu - Temel Örnek

Aşağıdaki taslak, DRV8825 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, DRV8825'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>

DRV8825'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ı 200'e 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.