Как увеличить крутящий момент или скорость шагового двигателя с помощью 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);
}
}
@Tyln, 👍2
Обсуждение2 ответа
Предполагая, что вы управляете своим двигателем правильно (а Крис говорит, что это не так) и что вы используете источник питания с достаточным током и драйвер двигателя с низким внутренним сопротивлением, вы можете установить редуктор на двигатель для снижения скорости вращения и увеличения крутящего момента. Чтобы протолкнуть шприц на то же расстояние, потребуется больше оборотов, но усилие будет больше.
Например, если вы используете редуктор 4:1, вам потребуется в 4 раза больше оборотов, и вы получите в 4 раза больше силы.
Чтобы увеличить крутящий момент 28BYJ-48, вы должны выполнить простую модификацию (закрыть один путь на печатной плате), чтобы изменить его с униполярного на биполярный, а затем использовать его с H-мостом, таким как драйвер A4988 или DRV8825.< /p>
Источники:
- https://ardufocus.com/howto/28byj-48-bipolar-hw-mod/
- https ://coeleveld.com/wp-content/uploads/2016/10/Modifying-a-28BYJ-48-step-motor-from-unipolar-to-bipolar.pdf
- https://everythingsmarthome.co.uk/ как/переделать-28byj-48-шаговый-двигатель-для-большего-крутящего момента/
- http://www.jangeox.be/2013/10 /change-unipolar-28byj-48-to-bipolar.html
- https://www.youtube.com/watch?v=hkxnQIKybiI
- https://www.youtube.com/watch?v=jHLyJbNgcDo
- Почему Arduino сбрасывается во время управления двигателями?
- Питание Arduino напрямую от драйвера двигателя (DRV8825) или внешнего источника питания?
- Как запитать 6 серводвигателей от батареи для создания робота-манипулятора?
- Управление вентилятором 5 В и ультразвуковым туманером с помощью arduino - нужен ли внешний источник питания?
- Как правильно запустить 4 двигателя постоянного тока с помощью Arduino?
- Питание Arduino Uno и Ardumoto Motor Driver Shield
- Питание микроконтроллера и линейных приводов (двигателей) одним и тем же источником питания
- Перегорают ли мои шаговые двигатели? В чем здесь проблема?
Вы не дали подробностей, с которыми мы можем работать. Хотя я вижу, что вы активируете только 1 фазу за раз. Для полных шагов вам нужно активировать 2 за раз. Возможно, здесь будет полезен мой ответ на этот вопрос., @chrisl
@chrisl Я думаю, что OP использует униполярный шаговый двигатель. Хотя вы можете добавить шаг между активными двумя катушками, создавая грубую форму микрошага., @Gerben
@Gerben Это чисто опыт работы с той же комбинацией двигателя и драйвера. У меня также были проблемы с управлением двигателем с комбинациями фаз 1000, 0100, 0010 и 0001. Вместо этого я попробовал 1100, 0110, 0011 и 1001. Это сработало для меня. Или за полшага 1000,1100,0100,0110,0010,0011,0001,1001. Не знаю, зачем, но захотелось поделиться опытом., @chrisl