2

I run 28BYJ-48 12 Volt Motor with ULN 2003 Driver using Arduino UNO. I am also using external 12 volt power outside. I aim for the syringe pump to move back and forth with the rotation of the motor. I'm using the code below. The code is running but the motor cannot move the syringe back and forth. How do I change to be able to move the syringe pump

const int motorPin1 = 8;
const int motorPin2 = 9;
const int motorPin3 = 10;
const int motorPin4 = 11;

int bekleme =2
;  
// bekleme süresini değiştirerek step motorun hızlı veya yavaş ilerlemesini sağlayabilirsiniz.
//1sn=1000 

void adim1() {
digitalWrite(motorPin1, HIGH);
digitalWrite(motorPin2, LOW);
digitalWrite(motorPin3, LOW);
digitalWrite(motorPin4, LOW);
delay(bekleme);
}

void adim2() {
digitalWrite(motorPin1, LOW);
digitalWrite(motorPin2, HIGH);
digitalWrite(motorPin3, LOW);
digitalWrite(motorPin4, LOW);
delay(bekleme);
}

void adim3() {
digitalWrite(motorPin1, LOW);
digitalWrite(motorPin2, LOW);
digitalWrite(motorPin3, HIGH);
digitalWrite(motorPin4, LOW);
delay(bekleme);
}

void adim4() {
digitalWrite(motorPin1, LOW);
digitalWrite(motorPin2, LOW);
digitalWrite(motorPin3, LOW);
digitalWrite(motorPin4, HIGH);
delay(bekleme);
}

void setup() {

pinMode(motorPin1, OUTPUT);
pinMode(motorPin2, OUTPUT);
pinMode(motorPin3, OUTPUT);
pinMode(motorPin4, OUTPUT);

}

void loop() {


for (int i = 0; i < 2048 ; i++)
{
adim1();
adim2();
adim3();
adim4();
}
{

exit(0);
}
}

İleri
// Meraklı Mühendis Sayfasının hazırlığı kodlar kullanılmıştır.
//Dilerseniz farklı fonksiyonlar kullanabilirsiniz.

const int motorPin1 = 8;
const int motorPin2 = 9;
const int motorPin3 = 10;
const int motorPin4 = 11;

int bekleme =2;  
// bekleme süresini değiştirerek step motorun hızlı veya yavaş ilerlemesini sağlayabilirsiniz.
//1sn=1000 

void adim1() {
digitalWrite(motorPin1, HIGH);
digitalWrite(motorPin2, LOW);
digitalWrite(motorPin3, LOW);
digitalWrite(motorPin4, LOW);
delay(bekleme);
}

void adim2() {
digitalWrite(motorPin1, LOW);
digitalWrite(motorPin2, HIGH);
digitalWrite(motorPin3, LOW);
digitalWrite(motorPin4, LOW);
delay(bekleme);
}

void adim3() {
digitalWrite(motorPin1, LOW);
digitalWrite(motorPin2, LOW);
digitalWrite(motorPin3, HIGH);
digitalWrite(motorPin4, LOW);
delay(bekleme);
}

void adim4() {
digitalWrite(motorPin1, LOW);
digitalWrite(motorPin2, LOW);
digitalWrite(motorPin3, LOW);
digitalWrite(motorPin4, HIGH);
delay(bekleme);
}

void setup() {

pinMode(motorPin1, OUTPUT);
pinMode(motorPin2, OUTPUT);
pinMode(motorPin3, OUTPUT);
pinMode(motorPin4, OUTPUT);

}

void loop() {

for (int i = 0; i <2048; i++)   // buradaki 512 değerleri step motorun tam bir tur dönmesini sağlıyor. dilerseniz bu sayıyı değiştirebilirsiniz
{
adim4();
adim3();
adim2();
adim1();

}
{

exit(0);
}
}
3
  • You haven't given much detail, that we can work with. Though I'm seeing, that you are only activating 1 phase at a time. For full steps you need to activate 2 at a time. Maybe my answer to this question is helpful here.
    – chrisl
    Commented Oct 12, 2020 at 14:23
  • @chrisl I think OP is using an unipolar stepper motor. Though you could add a step in between where two coils are active, creating a crude form of micro-stepping.
    – Gerben
    Commented Oct 12, 2020 at 15:51
  • 1
    @Gerben This is purely experience with the exact same motor and driver combination. I also had problems driving the motor with the phase combinations 1000,0100,0010 and 0001. Instead I tried 1100, 0110, 0011 and 1001. That worked for me. Or for half steps 1000,1100,0100,0110,0010,0011,0001,1001. Don't really know, why, but I wanted to share the experience
    – chrisl
    Commented Oct 12, 2020 at 16:18

2 Answers 2

2

To increase torque of 28BYJ-48 you have to perform a simple mod (cup one path on the PCB) to change it from unipolar to bipolar and then use it with an H-bridge like the A4988 or the DRV8825 driver.

Path to cut.

Sources:

  1. https://ardufocus.com/howto/28byj-48-bipolar-hw-mod/
  2. https://coeleveld.com/wp-content/uploads/2016/10/Modifying-a-28BYJ-48-step-motor-from-unipolar-to-bipolar.pdf
  3. https://everythingsmarthome.co.uk/howto/converting-the-28byj-48-stepper-motor-for-more-torque/
  4. http://www.jangeox.be/2013/10/change-unipolar-28byj-48-to-bipolar.html
  5. https://www.youtube.com/watch?v=hkxnQIKybiI
  6. https://www.youtube.com/watch?v=jHLyJbNgcDo
0

Assuming you are driving your motor correctly (And it sounds from Chris like you are not) and that you are using a power supply with enough current and a motor driver with a low internal resistance, you could put a reduction gear on the motor to reduce the rotation speed and increase the torque. It would take more rotations to push the syringe the same distance, but it will have more force.

If you use a 4:1 reduction gear, for example, you'd need 4 times more rotations, and you'd get 4 times as much force.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.