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.
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:
[email protected]
// www.alpgenrobotics.com //
#include Arduino.h>
#include StepperMotor.h>
StepperMotor::StepperMotor(int In1, int In2, int In3, int In4){
// 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(int inputCount = 0; inputCount 4; inputCount++){
pinMode(this->inputPins[inputCount], OUTPUT);
}
duration = 50;
}
void StepperMotor::setStepDuration(int duration){
this->duration = duration;
}
void StepperMotor::step(int noOfSteps){
/*
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
*/
bool sequence[][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}};
int factor = 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(int sequenceNum = 0; sequenceNum noOfSteps/8; sequenceNum++){
for(int position = 0; ( position 8 ) && ( position ( noOfSteps - sequenceNum*8 )); position++){
delay(duration);
for(int inputCount = 0; inputCount 4; inputCount++){
digitalWrite(this->inputPins[inputCount], sequence[(int)(3.5 - (3.5*factor) + (factor*position))][inputCount]);
}
}
}
}