Доброго времени суток. Подскажите, в чем проблема? Использую библиотеку Stepper.h и кручу верчу двигатель. Если количество шагов положительное (по часовой стрелке) у него высокий крутящий момент и стабильная вибрация. Если количество шагов отрицательное (против часовой стрелки) то крутящий момент ОЧЕНЬ слабый и при этом вибрация не стабильная, а будто участилась в 2 раза. Покупал другие такие же ШД, думал может мои глючат - ан нет, на всех такая ситуация. Использую стандартный L293D (Adafruit Motor shield не предлагать). Код (C++): #include <Stepper.h> #define STEPS 200 Stepper motor1(STEPS, 4, 5, 6, 7); void setup() { motor1.setSpeed(50); } void loop() { motor1.step(500); delay(1000); motor1.step(-500); delay(1000); } Использовал даже разное количество шагов: 48, 64, 200, 2048 - работает по разному, где то крутит, где то нет, но всегда если крутит в обратную сторону, то с подобной проблемой. Помогите исправить ситуацию. P.S. библиотеку AccelStepper Тоже не хотелось бы использовать, читал что много жалоб на неё.
В итоге все заработало следующим образом: спаял разделенные контакты заново, но при этом забыл подключить красный провод. Если в коде использовать большой шаг - крутящий момент такой высокий, что руками еле останавливается например: Код (C++): motor1.step(512); delay(1000); motor1.step(-512); delay(1000); но если использовать пошаговое движение, например: Код (C++): int i = 0; while (i != 512) { motor1.step(4); i += 4; } while (i != 0) { motor1.step(-4); i -= 4; } то так же - в одну сторону высокий крутящий момент, в другую - легко останавливается руками. В чем причина?
для поиска засады я рекомендую взять 4 светодиода, включить степпер на очень низкой скорости и посмотреть, что из фазы выпадает. Если униполярный, 4 светодиода диода к каждому по обмотке (не забываем зашунтировать снабберами или сапрессорами), если биполярный- то по два светодиода на каждую обмотку встречно. светодиоды включаем с резисторами ясен пень, резисторы считаем по закону Ома.
проблема была в моей функции: digitalWrite(pin1, LOW); digitalWrite(pin2, LOW); digitalWrite(pin3, LOW); digitalWrite(pin4, LOW); Изза этого не было мощности в одну сторону.