28BYJ-48 Stepper Motor'un ULN2003 Sürücü ve Arduino ile Kullanımı
Bu eğitimde, bir ULN2003 sürücüsü ile Arduino kullanarak 28BYJ-48 stepper motorunu nasıl kontrol edeceğimizi öğreneceğiz. Bu kurulum, motorun konumunu ve hızını hassas bir şekilde kontrol etmeyi sağlar. Bu projenin sonunda, motoru her iki yönde döndürebilecek ve adımlarını etkili bir şekilde kontrol edebileceksiniz.
28BYJ-48 stepper motorunu kullanacağız; bu motor, düşük maliyeti ve kullanım kolaylığı nedeniyle çeşitli robotik ve otomasyon projeleri için popüler bir tercihtir. ULN2003 sürücü kartı, stepper motoru Arduino ile arayüzlendirir ve motorun hareketini kontrol eden adım sinyalleri göndermemizi sağlar. Bu eğitim, motorunuzu döndürmek için gerekli olan bağlantıları ve kodu size gösterecektir.
Daha fazla açıklama için, lütfen bu eğitimle ilgili videoya başvurun (videoda 0:45).
Donanım Açıklandı
Bu projenin ana bileşenleri 28BYJ-48 stepper motoru ve ULN2003 sürücü kartıdır. Stepper motor, döngü oluşturmak için belirli bir sırayla enerjilendirilebilen birkaç bobinden oluşur. ULN2003 sürücüsü bir anahtar görevi görerek, Arduino'nun her bobine sağlanan gücü kontrol etmesine olanak tanır.
ULN2003 sürücüsü, stepper motorun gerektirdiği daha yüksek akımı yönetmek için bir Darlington transistör dizisi kullanır. Arduino'dan bir pin YÜKSEK sinyal çıkardığında, motorun ilgili bobinine akım akmasına izin verir ve bu da motorun hareket etmesini sağlar. Bu, motorun dönüş açısı ve hızının hassas kontrolünü sağlar.
Veri Sayfası Detayları
| Üretici | ULN2003 |
|---|---|
| Parça numarası | ULN2003 |
| Mantık/Giriş-Çıkış voltajı | 5 V |
| Besleme voltajı | 5-30 V (maks) |
| Çıkış akımı (kanal başına) | 500 mA maksimum |
| Zirve akımı (kanal başına) | 2 A max |
| PWM frekansı rehberi | N/A |
| Giriş mantığı eşikleri | 0.8 V (düşük), 2.4 V (yüksek) |
| Gerilim düşüşü / RDS(on)saturasyon | 1.5 V maksimum |
| Termal sınırlar | 70 °C maksimum |
| Paket | DIP-16 |
| Notlar / varyantlar | Genellikle 5V stepper motorlarla birlikte kullanılır. |
- Sürücünün motorunuzun mevcut gereksinimlerini karşılayabildiğinden emin olun.
- Gerekirse termal sınırları yönetmek için ısı emicileri kullanın.
- Tüm bağlantıların güvenli olduğundan emin olun, böylece yüzen girişlerden kaçınılır.
- Motoru daha büyük projelere entegre etmeden önce basit adım dizilerini çalıştırarak test edin.
- Motoru yeterli bir besleme voltajı ile beslediğinizden emin olun.
Bağlantı Talimatları


28BYJ-48 stepper motorunu ULN2003 sürücüsüne ve Arduino'ya bağlamak için şu adımları izleyin:
Öncelikle motoru ULN2003 sürücüsüne bağlayın. Motorun dört teli vardır, genellikle turuncu, sarı, pembe ve mavi renkte kodlanmıştır. Bu telleri ULN2003 sürücüsündeki karşılık gelen çıkış pinlerine bağlayın. Bağlantılar şu şekildedir:
Orangetel ileOUT1Yellowtel ileOUT2Pinktel ileOUT3Bluetel ileOUT4
Sonraki adımda, ULN2003 sürücüsünü Arduino'ya bağlayın. Sürücünün giriş pinleri, Arduino'daki dört dijital pine karşılık gelir. Örneğin:
IN1toPin 10IN2toPin 11IN3toPin 12IN4toPin 13
Son olarak, ULN2003 sürücüsünün güç ve toprak pinlerini Arduino'ya bağlayın. BağlayınVCCArduino'nun 5V çıkışına pin veGNDArduino'nun toprak pinine bağlayın. Sistemi açmadan önce tüm bağlantıların güvenli olduğundan emin olun.
Kod Örnekleri ve Geçiş Rehberi
Arduino kodunun kurulum bölümünde, ULN2003 sürücüsüne bağlı pinleri tanımlıyoruz:
int Pin1 = 10;
int Pin2 = 11;
int Pin3 = 12;
int Pin4 = 13;
Burada dört tam sayı değişkeni tanımlıyoruz:Pin1,Pin2,Pin3, vePin4, Arduino'daki dijital pinlere karşılık gelir. Bu pinler, stepper motorun hareketini kontrol edecektir.
İçindesetup()fonksiyon, bu pinleri çıkış olarak yapılandırıyoruz:
void setup() {
pinMode(Pin1, OUTPUT);
pinMode(Pin2, OUTPUT);
pinMode(Pin3, OUTPUT);
pinMode(Pin4, OUTPUT);
}
Bu kurulum, Arduino'nun motoru kontrol etmek için ULN2003 sürücüsüne sinyaller göndermesini sağlar.pinModefonksiyon her pini ÇIKTI moduna ayarlar, böylece sinyal göndermelerini sağlar.
Son olarak, ana döngüde, değişkene dayalı olarak motorun adımlarını kontrol etmek için bir switch case oluşturuyoruz._step:
switch(_step){
case 0:
digitalWrite(Pin1, LOW);
digitalWrite(Pin2, LOW);
digitalWrite(Pin3, LOW);
digitalWrite(Pin4, HIGH);
break;
// Additional cases follow
}
Bu alıntıda, kullanıyoruzdigitalWriteher bir pine mevcut akıma göre YÜKSEK veya DÜŞÜK sinyaller göndermek için_stepBu, hangi bobinlerin enerjilendirileceğini kontrol eder ve motorun dönmesini sağlar. Bu parçaları entegre eden tam kod, makalenin altında yüklenecektir.
Gösterim / Ne Beklemeli
Her şey doğru bir şekilde bağlandığında ve kod yüklendiğinde, stepper motor Arduino'dan gelen sinyallere yanıt olarak dönmelidir. Motoru, döngüdeki gecikmeyi değiştirerek veya adımları değiştirerek nasıl tepki verdiğini görmek için test edebilirsiniz. Motorun doğru bir şekilde beslenmediğini bilmelisiniz; bu durumda hareket etmeyebilir veya düzensiz davranabilir.
Bölümler
- Giriş - 0:00
- Donanım Açıklandı - 1:30
- Bağlantı Talimatları - 3:15
- Kod Örnekleri ve Geçiş - 5:00
- Gösterim / Ne Beklemeli - 7:45
// Original source is http://www.geeetech.com/wiki/index.php/Stepper_Motor_5V_4-Phase_5-Wire_%26_ULN2003_Driver_Board_for_Arduino
// Update by Ahmad Shamshiri for RoboJax.com
// Published on March 27, 2017 in Ajax, ON, Canada.
/*
*
Need wiring diagram from this code: https://youtu.be/0glBk917HPg
Purchase My Arduino course on Udemy.com http://robojax.com/L/?id=62
*
* Get this code and other Arduino codes from RoboJax.com
Learn Arduino step by step in a structured course with all material, wiring diagrams, and libraries
all in one place. Purchase My course on Udemy.com http://robojax.com/L/?id=62
If you found this tutorial helpful, please support me so I can continue creating
content like this.
or make a donation using PayPal http://robojax.com/L/?id=64
* * This code is "AS IS" without warranty or liability. Free to be used as long as you keep this note intact.*
* This code has been downloaded from RoboJax.com
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
int Pin1 = 10;
int Pin2 = 11;
int Pin3 = 12;
int Pin4 = 13;
int _step = 0;
boolean dir = true;// false=clockwise, true=counter clockwise
int count=0;
void setup()
{
pinMode(Pin1, OUTPUT);
pinMode(Pin2, OUTPUT);
pinMode(Pin3, OUTPUT);
pinMode(Pin4, OUTPUT);
}
void loop()
{
switch(_step){
case 0:
digitalWrite(Pin1, LOW);
digitalWrite(Pin2, LOW);
digitalWrite(Pin3, LOW);
digitalWrite(Pin4, HIGH);
break;
case 1:
digitalWrite(Pin1, LOW);
digitalWrite(Pin2, LOW);
digitalWrite(Pin3, HIGH);
digitalWrite(Pin4, HIGH);
break;
case 2:
digitalWrite(Pin1, LOW);
digitalWrite(Pin2, LOW);
digitalWrite(Pin3, HIGH);
digitalWrite(Pin4, LOW);
break;
case 3:
digitalWrite(Pin1, LOW);
digitalWrite(Pin2, HIGH);
digitalWrite(Pin3, HIGH);
digitalWrite(Pin4, LOW);
break;
case 4:
digitalWrite(Pin1, LOW);
digitalWrite(Pin2, HIGH);
digitalWrite(Pin3, LOW);
digitalWrite(Pin4, LOW);
break;
case 5:
digitalWrite(Pin1, HIGH);
digitalWrite(Pin2, HIGH);
digitalWrite(Pin3, LOW);
digitalWrite(Pin4, LOW);
break;
case 6:
digitalWrite(Pin1, HIGH);
digitalWrite(Pin2, LOW);
digitalWrite(Pin3, LOW);
digitalWrite(Pin4, LOW);
break;
case 7:
digitalWrite(Pin1, HIGH);
digitalWrite(Pin2, LOW);
digitalWrite(Pin3, LOW);
digitalWrite(Pin4, HIGH);
break;
default:
digitalWrite(Pin1, LOW);
digitalWrite(Pin2, LOW);
digitalWrite(Pin3, LOW);
digitalWrite(Pin4, LOW);
break;
}
if(dir){
_step++;
}else{
_step--;
}
if(_step>7){
_step=0;
}
if(_step<0){
_step=7;
}
delay(1);
}
İhtiyacın olabileceğini düşünüyor
-
Amazon
-
Amazon
-
AliExpressPurchase 5 pcs 28BYJ-48 stepper motors from AliExpresss.click.aliexpress.com
-
AliExpress
Kaynaklar ve referanslar
-
Dış
-
Dış
-
Dış
Dosyalar📁
Dosya mevcut değil.