Как увеличить крутящий момент или скорость шагового двигателя с помощью Arduino

Я запускаю 12-вольтовый двигатель 28BYJ-48 с драйвером ULN 2003, используя Arduino UNO. Я также использую внешнее питание 12 вольт снаружи. Я стремлюсь к тому, чтобы шприцевой насос двигался вперед и назад вместе с вращением мотора. Я использую код ниже. Код работает, но двигатель не может перемещать шприц вперед и назад. Как измениться, чтобы можно было перемещать шприцевой насос

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

int bekleme =2
;  
// вы можете заставить шаговый двигатель двигаться быстрее или медленнее, изменив время ожидания.
///1с=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
// Коды используются для подготовки страницы любопытного инженера.
// Вы можете использовать другие функции, если хотите.

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

int bekleme =2;  
// вы можете заставить шаговый двигатель двигаться быстрее или медленнее, изменив время ожидания.
///1с=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++)   // Здесь 512 значений заставляют шаговый двигатель совершить один полный оборот. Вы можете изменить этот номер, если хотите.
{
adim4();
adim3();
adim2();
adim1();

}
{

exit(0);
}
}

, 👍2

Обсуждение

Вы не дали подробностей, с которыми мы можем работать. Хотя я вижу, что вы активируете только 1 фазу за раз. Для полных шагов вам нужно активировать 2 за раз. Возможно, здесь будет полезен мой ответ на этот вопрос., @chrisl

@chrisl Я думаю, что OP использует униполярный шаговый двигатель. Хотя вы можете добавить шаг между активными двумя катушками, создавая грубую форму микрошага., @Gerben

@Gerben Это чисто опыт работы с той же комбинацией двигателя и драйвера. У меня также были проблемы с управлением двигателем с комбинациями фаз 1000, 0100, 0010 и 0001. Вместо этого я попробовал 1100, 0110, 0011 и 1001. Это сработало для меня. Или за полшага 1000,1100,0100,0110,0010,0011,0001,1001. Не знаю, зачем, но захотелось поделиться опытом., @chrisl


2 ответа


0

Предполагая, что вы управляете своим двигателем правильно (а Крис говорит, что это не так) и что вы используете источник питания с достаточным током и драйвер двигателя с низким внутренним сопротивлением, вы можете установить редуктор на двигатель для снижения скорости вращения и увеличения крутящего момента. Чтобы протолкнуть шприц на то же расстояние, потребуется больше оборотов, но усилие будет больше.

Например, если вы используете редуктор 4:1, вам потребуется в 4 раза больше оборотов, и вы получите в 4 раза больше силы.

,

2

Чтобы увеличить крутящий момент 28BYJ-48, вы должны выполнить простую модификацию (закрыть один путь на печатной плате), чтобы изменить его с униполярного на биполярный, а затем использовать его с H-мостом, таким как драйвер A4988 или DRV8825.< /p>

Путь для вырезания.

Источники:

  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/ как/переделать-28byj-48-шаговый-двигатель-для-большего-крутящего момента/
  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
,