![arduino sensör modülleri](https://www.alpgenrobotics.com/image/catalog/urun/sensorler/alpgen-boards-arduino-sensor-970x300.png)
ULN2003 STEP MOTOR SÜRÜCÜ
ULN2003 Step Motor Sürücü Modülü, elektrik enerjisini dönme hareketine dönüştüren, dijital çıkışlı, step motor sürmek için kolaylıkla kullanılabilecek küçük bir sürücü modülüdür.
![arduino 28 byj-48 uln2003 sürücü modülü](https://www.alpgenrobotics.com/image/catalog/urun/sensorler/m070-uln2003-step/arduino-uln2003-modulu2.jpg)
Nerede Kullanılır?
Arduino ile robotik kodlama projelerinde kullanılabilir. Özellikle step motor kullanılan robotik uygulamalarda step motor sürücüsü olarak kullanabilirsiniz.
Çalışma Voltajı | 5V DC |
Data Çıkışı | Dijital |
En | 43.77mm |
Boy | 45.06mm |
Vida Delik Çapı | 3.2mm |
Örnek Proje Devre Şeması
Bu projede, modülün IN1 pini D4pinine, IN2 pini D3 pinine, IN3 pini D2 pinine, IN4 pini D1 pinine bağlanması ve step motora önce 5000 adım daha sonra ters yönde 5000 adım attırılması kodlanmıştır.
ULN2003 Step Motor Sürücü Modülü | Arduino Uno Breadboard |
IN1 | 4 |
IN2 | 3 |
IN3 | 2 |
IN4 | 1 |
Örnek Proje Arduino Kodu
/* ALPGEN Robotics */// Step Motor Sürücü Modül Kullanımı// 08.05.2021// Soru ve Yardım İçin: proje@alpgenrobotics.com// www.alpgenrobotics.com //#include<Arduino.h>#include<StepperMotor.h>StepperMotor::StepperMotor(intIn1,intIn2,intIn3,intIn4){
// Record pin numbers in the inputPins array
this->inputPins[4]=In1;
this->inputPins[3]=In2;
this->inputPins[2]=In3;
this->inputPins[1]=In4;
// Iterate through the inputPins array, setting each one to output mode
for(intinputCount=0;inputCount<4;inputCount++){
pinMode(this->inputPins[inputCount],OUTPUT);
}
duration=50;}voidStepperMotor::setStepDuration(intduration){
this->duration=duration;}voidStepperMotor::step(intnoOfSteps){
/* The following 2D array represents the sequence that must be used to acheive rotation. The rows correspond to each step, and the columns correspond to each input. L */
boolsequence[][4]={{LOW,LOW,LOW,HIGH},
{LOW,LOW,HIGH,HIGH},
{LOW,LOW,HIGH,LOW},
{LOW,HIGH,HIGH,LOW},
{LOW,HIGH,LOW,LOW},
{HIGH,HIGH,LOW,LOW},
{HIGH,LOW,LOW,LOW},
{HIGH,LOW,LOW,HIGH}};
intfactor=abs(noOfSteps)/noOfSteps; // If noOfSteps is +, factor = 1. If noOfSteps is -, factor = -1
noOfSteps=abs(noOfSteps); // If noOfSteps was in fact negative, make positive for future operations
/* The following algorithm runs through the sequence the specified number of times */
for(intsequenceNum=0; sequenceNum<=noOfSteps/8;sequenceNum++){
for(intposition=0;(position<8)&&(position<(noOfSteps-sequenceNum*8));position++){
delay(duration);
for(intinputCount=0;inputCount<4;inputCount++){
digitalWrite(this->inputPins[inputCount],sequence[(int)(3.5-(3.5*factor)+(factor*position))][inputCount]);
}
}
}}