- Step Motor
- ARM7-LPC2148 İLE Step Motorun Döndürülmesi
- Gerekli Bileşenler
- Step Motor (28BYJ-48)
- ULN2003 Step Motor Sürücüsü
- Devre şeması
- Step Motor için Programlama ARM7-LPC2148
Günümüzün otomasyon dünyasında step motor ve servo motor, gömülü sistemlerde en sık kullanılan iki motordur. Her ikisi de robotik kollar, CNC makinesi, kameralar vb. Gibi çeşitli otomasyon makinelerinde kullanılır. Bu eğitimde Step Motor ile ARM7-LPC2148 arasında nasıl arayüz oluşturacağımızı ve hızının nasıl kontrol edileceğini göreceğiz. ARM7'de yeniyseniz, ARM7-LPC2148 ve programlama araçlarını öğrenerek başlayın.
Step Motor
Step motor, küçük açılarda döndürülebilen fırçasız DC motordur, bu açılara adım adı verilir. Step motorunu pinlerine dijital darbeler vererek adım adım döndürebiliriz. Step motorlar ucuzdur ve sağlam bir tasarıma sahiptir. Motorun hızı dijital darbelerin frekansı değiştirilerek kontrol edilebilir.
Stator sargısının türüne bağlı olarak iki tip step motor mevcuttur: UNIPOLAR ve BIPOLAR. Burada en çok kullanılan step motor olan UNIPOLAR step motoru kullanıyoruz . Kademeli motoru döndürmek için kademeli motorun bobinlerine sırayla enerji vermemiz gerekir. Dönme işlemine göre iki moda sınıflandırılırlar:
- Tam Adım Modu: (4 Adımlı Sıra)
- Tek Fazlı Adımlama (WAVE STEPPING)
- Basamakta İki Fazlı
- Yarım Adım Modu (8 Adımlı Sıra)
Step motor ve çalışması hakkında daha fazla bilgi edinmek için bağlantıyı takip edin.
ARM7-LPC2148 İLE Step Motorun Döndürülmesi
Burada TAM ADIM kullanacağız : Bir Faz AÇIK veya DALGA ADIM modu, Step Motoru ARM7-LPC2148 ile döndürmek için
Bu yöntemde bir seferde sadece bir bobine (LPC2148'in bir pini) enerji vereceğiz. Yani ilk bobin A'ya kısa bir süre enerji verilirse, şaft pozisyonunu değiştirecek ve ardından aynı anda B bobine enerji verilecek ve şaft tekrar konumunu değiştirecektir. Aynı şekilde, bobin C ve ardından bobin D, mili daha fazla hareket ettirmek için enerjilendirilir. Bu, her seferinde bir bobine enerji vererek, step motor şaftının adım adım dönmesini sağlar.
Bu yöntemle bobine sırayla enerji vererek mili adım adım döndürüyoruz. Buna dört adım attığı için dört adımlı sekans denir.
Bu olabilir , yarım adım yöntemine Motor adım döndürme aşağıdaki değerlere göre (8-Sekans yöntemi).
Adım |
Bobin A |
Bobin B |
Bobin C |
Bobin D |
1 |
1 |
0 |
0 |
0 |
2 |
1 |
1 |
0 |
0 |
3 |
0 |
1 |
0 |
0 |
4 |
0 |
1 |
1 |
0 |
5 |
0 |
0 |
1 |
1 |
6 |
0 |
0 |
0 |
1 |
7 |
1 |
0 |
0 |
1 |
8 |
1 |
0 |
0 |
0 |
Gerekli Bileşenler
Donanım:
- ARM7-LPC2148
- ULN2003 Motor Sürücüsü IC
- LED - 4
- ADIM MOTOR (28BYJ-48)
- EKMEK TAHTASI
- TELLERİN BAĞLANMASI
Yazılım:
- Keil uVision5
- Flasic Magic Aracı
Step Motor (28BYJ-48)
28BYJ-48 step motor halihazırda yukarıdaki resimde gösterilmiştir. Bu bir olan Unipolar Stepper 5V kaynağı gerekir motorlu. Motorun 4 bobin tek kutuplu bir düzenlemesi vardır ve her bir bobin + 5V olarak derecelendirilmiştir, bu nedenle Arduino, Raspberry Pi, STM32, ARM vb. Gibi herhangi bir mikrodenetleyici ile kontrol edilmesi nispeten kolaydır.
Ancak onu sürmek için ULN2003 gibi bir Motor Sürücü IC'sine ihtiyacımız var çünkü step motorlar yüksek akım tüketir ve mikro denetleyicilere zarar verebilir.
28BYJ-48'in özellikleri aşağıdaki veri sayfasında verilmiştir:
Ayrıca, Step Motor ile diğer Mikrodenetleyiciler ile arayüz oluşturmayı kontrol edin:
- Arduino Uno ile Step Motor Arayüzü
- Raspberry Pi ile Step Motor Kontrolü
- 8051 Mikrodenetleyici ile Step Motor Arayüzü
- Step Motor ile PIC Mikrodenetleyicinin Arayüzü
- Step Motorun MSP430G2 ile Arayüzü
Step motor, herhangi bir Mikroişlemci olmadan da kontrol edilebilir, bu Step Motor Sürücü Devresine bakın.
ULN2003 Step Motor Sürücüsü
Çoğu step motor, yalnızca bir sürücü modülü yardımıyla çalışacaktır. Bunun nedeni, kontrolör modülünün (bizim durumumuzda LPC2148) motorun çalışması için I / O pinlerinden yeterli akımı sağlayamayacak olmasıdır. Bu yüzden step motor sürücüsü olarak ULN2003 modülü gibi harici bir modül kullanacağız.
Bu projede ULN2003 motor sürücü entegresini kullanacağız. IC'nin pin diyagramı aşağıda verilmiştir:
Pinler (IN1 - IN7), mikro denetleyici çıkışını bağlamak için giriş pinleridir ve OUT1 - OUT7, step motor girişlerini bağlamak için karşılık gelen çıkış pinleridir. COM, çıkış cihazları ve harici güç girişi kaynağı için gereken pozitif kaynak voltajı olarak verilir.
Devre şeması
Step Motor ile ARM-7 LPC2148 arasında arayüz oluşturmak için devre şeması aşağıda verilmiştir.
ULN2003 Motor Sürücü IC'li ARM7-LPC2148
LPC2148'in GPIO Pinleri (P0.7 - P0.10), ULN2003 IC'nin giriş pinlerine (IN1-IN4) bağlanan çıkış pinleri olarak kabul edilir.
LPC2148 Pinleri |
ULN2003 IC PİNLERİ |
P0.7 |
IN1 |
P0.8 |
IN2 |
P0.9 |
IN3 |
S.10 |
IN4 |
5V |
COM |
GND |
GND |
ULN2003 IC'nin Step Motor (28BYJ-48) ile Bağlantıları
ULN2003 IC'nin çıkış pinleri (OUT1-OUT4), step motor pinlerine (Mavi, Pembe, Sarı ve Turuncu) bağlanır.
ULN2003 IC PİMLERİ |
STEPPER MOTOR PİMLERİ |
OUT1 |
MAVİ |
OUT2 |
PEMBE |
OUT3 |
SARI |
OUT4 |
PORTAKAL |
COM |
KIRMIZI (+ 5V) |
ULN2003'ün IN1 ila IN4'ü olan LED'ler
ULN2003'ün sırasıyla IN1, IN2, IN3 ve IN4 pinlerine dört adet LED (LED1, LED2, LED4, LED 4) anot pini bağlanır ve LED'lerin katodu LPC2148'den gelen darbeleri göstermek için GND'ye bağlanır. Sağlanan darbelerin modelini not edebiliriz. Desen, sona eklenen tanıtım videosunda gösterilmiştir.
Step Motor için Programlama ARM7-LPC2148
ARM7-LPC2148'i programlamak için keil uVision ve Flash Magic aracına ihtiyacımız var. ARM7 Stick'i mikro USB portu üzerinden programlamak için USB Kablosu kullanıyoruz. Keil kullanarak kod yazıyoruz ve bir hex dosyası oluşturuyoruz ve ardından HEX dosyası Flash Magic kullanarak ARM7 çubuğuna flash yapıyor. Keil uVision ve Flash Magic'in yüklenmesi ve bunların nasıl kullanılacağı hakkında daha fazla bilgi için ARM7 LPC2148 Mikrodenetleyiciye Başlarken bağlantısını izleyin ve Keil uVision kullanarak Programlayın.
Step Motor'u ARM 7 ile kontrol etmek için tam kod bu eğitimin sonunda verilmiştir, burada birkaç bölümünü açıklıyoruz.
1. FULL STEP-ONE PHASE ON yöntemini kullanmak için aşağıdaki komutu eklememiz gerekir. Bu yüzden programda aşağıdaki satırı kullanıyoruz
işaretsiz karakter saat yönünde = {0x1,0x2,0x4,0x8}; // Saat yönünde dönüş için komutlar işaretsiz karakter saat yönünün tersine = {0x8,0x4,0x2,0x1}; // Saat yönünün tersine dönüş için komutlar
2. Aşağıdaki satırlar PORT0 pinlerini çıkış olarak başlatmak ve LOW olarak ayarlamak için kullanılır
PINSEL0 = 0x00000000; // PORT0 pinlerinin ayarlanması IO0DIR - = 0x00000780; // P0.7, P0.8, P0.9, P0.10 pinlerini OUTPUT IO0CLR = 0x00000780 olarak ayarlama; // P0.7, P0.8, P0.9, P0.10 pin OUTPUT'u DÜŞÜK olarak ayarlama
3. Gecikmeli döngü için bunu kullanarak PORT pinlerini (P0.7 - P0.10) HIGH olarak Saat yönünde komutlara göre ayarlayın
for (int j = 0; j
Saat karşıtı bilge için aynı
for (int z = 0; z
4. Kademeli motorun dönüş hızını değiştirmek için gecikme süresini değiştirin
gecikme (0x10000); // Dönme hızını değiştirmek için bu değeri değiştirin (0x10000) -Tam hız (0x50000) -Yavaş alır (0x90000) -Öncekinden daha yavaş alır. Yani gecikmeyi artırarak dönüş hızını düşürüyoruz.
5. Bir tam dönüş için adım sayısı aşağıdaki kodla değiştirilebilir
int no_of_steps = 550; // Gerekli adım sayısı rotasyonu için bu değeri değiştirin (550, bir tam dönüş sağlar)
Adım motorum için tam dönüş için 550 adım ve yarım dönüş için 225 adım var. Öyleyse gereksinimlerinize göre değiştirin.
6. Bu fonksiyon, gecikme süresi oluşturmak için kullanılır.
void delay (unsigned int value) // Gecikme oluşturma işlevi { unsigned int z; için (z = 0; z
Tanıtım Videosu ile kodun tamamı aşağıda verilmiştir.