Могу ли я запретить библиотеке Stepper удерживать двигатель?

Я использую библиотеку Stepper для управления одним шаговым двигателем. Когда Arduino не запускает двигатель, он удерживает вал двигателя на месте. Для моего приложения это очень расточительно и создает ненужную нагрузку на двигатель.

Должна ли библиотека Stepper делать это или что-то еще не так с моей схемой? Можно ли переопределить это поведение?

, 👍1


4 ответа


Лучший ответ:

4

используйте класс отключения вывода в библиотеке accelstepper. http://www.airspayce.com/mikem/arduino/AccelStepper/

,

0

Библиотека Stepper не имеет к этому никакого отношения. Что удерживает ваш двигатель, так это те GND или 0 В, которые подаются на управляющие контакты вашего шагового двигателя.

Вам нужен UL2003A. То, как работает ULN2003A, является решением вашей проблемы.

Предположим, что ваш шаговый двигатель является униполярным. Вот полное руководство по использованию шагового двигателя с UNL2003A.

,

0

Возможность высвобождения всех катушек шагового двигателя зависит от используемого аппаратного и программного обеспечения. Например, аппаратное и программное обеспечение Adafruit.com имеет эту для освобождения всех катушек шагового двигателя. Изучите их подход и определите, можете ли вы внести свой вклад в библиотеку, которую используете, перенося эту функцию. Также проверьте, не является ли эта функция (по счастливой случайности) уже частью используемой вами библиотеки. Например, вполне разумно ожидать, что используемая вами библиотека вернет контакты Atmel в состояние пассивного ввода (которое, в зависимости от аппаратного обеспечения, может высвободить шаговый двигатель), когда вы уничтожите экземпляр класса библиотеки шагового двигателя.

,

0
//для всех пинов, используемых для управления шаговым двигателем, назначаем всем им LOW


#include<Stepper.h>
const int stepsPerRevolution = 200; 
Stepper myStepper(stepsPerRevolution, 10, 11,12,13);

void setup() {
  myStepper.setSpeed(30);

Serial.begin(9600);
}

void loop(){

 Serial.println("clockwise");
  myStepper.step(stepsPerRevolution*5);
  delay(300);
digitalWrite(10,LOW);
  digitalWrite(11,LOW);
digitalWrite(12,LOW);
digitalWrite(13,LOW);


}
,