Необходима помощь в управлении несколькими шаговыми двигателями на arduino UNO
Я совершенно новичок в Arduino, но имею хороший опыт работы с Raspberry Pi и микрочипами.
Моя проблема в том, что мне трудно управлять многими шаговыми двигателями одновременно. Я использую библиотеку AccelStepper(https://www.airspayce.com/mikem/arduino/AccelStepper/index.html). Код довольно прост, и я заставил его отлично работать в течение длительного времени с тремя двигателями, однако у него были проблемы с запуском более трех двигателей, у меня сейчас подключено 5 двигателей, и все они вибрируют или пропускают шаги.
Кто-нибудь может помочь мне заставить работать 5 моторов.
Вот код, который я запускаю:
#include <MultiStepper.h>
#include <AccelStepper.h>
#include <Stepper.h>
AccelStepper stepper1(AccelStepper::FULL4WIRE, 8, 10, 9, 11);
AccelStepper stepper2(AccelStepper::FULL4WIRE, 4, 5, 6, 7);
AccelStepper stepper3(AccelStepper::FULL4WIRE, 12, 13, 2, 3);
AccelStepper stepper4(AccelStepper::FULL4WIRE, A0, A1, A2, A3);
AccelStepper stepper5(AccelStepper::FULL4WIRE, 0, 1, A4, A5);
void setup()
{
//Serial.begin(9600);
pinMode(0, OUTPUT);
pinMode(1, OUTPUT);
pinMode(A0, OUTPUT);
pinMode(A1, OUTPUT);
pinMode(A2, OUTPUT);
pinMode(A3, OUTPUT);
pinMode(A4, OUTPUT);
pinMode(A5, OUTPUT);
Serial.print(" a0:");
Serial.print(digitalRead(A0));
stepper1.setMaxSpeed(600.0);
stepper1.setAcceleration(50.0);
stepper1.moveTo(3240);
stepper2.setMaxSpeed(50);
stepper2.setAcceleration(1);
stepper2.moveTo(800);
stepper3.setMaxSpeed(300.0);
stepper3.setAcceleration(200.0);
stepper3.moveTo(1500);
stepper4.setMaxSpeed(300.0);
stepper4.setAcceleration(200.0);
stepper4.moveTo(1500000);
stepper5.setMaxSpeed(300.0);
stepper5.setAcceleration(200.0);
stepper5.moveTo(1500000);
}
void loop()
{
// Change direction at the limits
if (stepper1.distanceToGo() == 0)
stepper1.moveTo(-stepper1.currentPosition());
if (stepper2.distanceToGo() == 0)
stepper2.moveTo(-stepper2.currentPosition());
if (stepper3.distanceToGo() == 0)
stepper3.moveTo(-stepper3.currentPosition());
if (stepper4.distanceToGo() == 0)
stepper4.moveTo(-stepper4.currentPosition());
if (stepper5.distanceToGo() == 0)
stepper5.moveTo(-stepper5.currentPosition());
stepper1.run();
stepper2.run();
stepper3.run();
stepper4.run();
stepper5.run();
}
Я не думаю, что проблема заключается в коде, потому что, как я уже говорил, он прекрасно работал с тремя двигателями, а код для 4 и 5-это просто копипаст.
Я думаю, что это может быть проблема с питанием, у меня есть настенная розетка, которая может преобразовываться в диапазон постоянного напряжения от 3 до 12, при 5 В двигателям явно не хватает мощности для работы. При 6 В они действительно включаются, но работают совсем плохо(как я уже говорил выше), а при 7,5 В Arduino, кажется, постоянно перезапускается: двигатели запускаются всего на секунду.
Вот двигатели 28BYJ-48 с драйверами, которые я купил у amazon: https://www.amazon.com/gp/product/B01CP18J4A/
Может ли кто-нибудь объяснить мне, почему он перезапускается при 7,5 вольтах? Я читал, что минимальная мощность должна быть около 7 вольт, так что для меня это не имеет смысла.
Цените любую помощь, которую я могу получить, пожалуйста, помните, что я новичок в этом деле. Спасибо.
@KidWithComputer, 👍2
Обсуждение0
- Подключите реле 5 В к плате ESP32 WROVER B
- Как рассчитать требуемую силу тока нескольких двигателей?
- Как можно подключить Arduino к трехфазной сети?
- Программа работает при использовании Delay(), но та же программа не работает с millis()
- Какое максимальное энергопотребление Arduino Nano 3.0?
- Как вывести истинное аналоговое напряжение на выходной контакт
- Как изменить вывод VCC на 3,3В на 5V Arduino Pro Micro?
- Как именно работает двойной выход 5В и 3,3В на Uno R3?
Как это все устроено? Сколько мощности может обеспечить ваш источник питания и сколько нужно двигателям?, @Mat
@Mat Двигатели подключаются к драйверам подключи и играй, а провод от драйверов к плате можно увидеть в строках 4-7 кода. Питание для плат поступает от 5 В-контактного разъема Arduino, и заземление также поступает от Arduino. Amazon утверждает, что двигатели рассчитаны на 5 В. Наконец, если вы прочитаете мой абзац выше, вы сможете увидеть, как работает мой источник питания, @KidWithComputer
Ты говоришь только о вольтах. Этого недостаточно, вам тоже нужны усилители для передачи ватт (т. Е. Мощности)., @Mat
контакты "0
и" 1
используются для "Последовательного", @jsotola@jsotla, они используются только для последовательного, если в вашем коде есть оператор serial begin, @KidWithComputer
@Mat Достаточно ли у меня усилителей для запуска как Arduino, так и двигателей?, @KidWithComputer