Установить низкий уровень мощности или включить контакт драйвера шагового двигателя, чтобы шаговый двигатель не нагревался.
Я использую приведенный ниже код с этим степпером:
https://www.dfrobot.com/wiki/index.php/Stepper_Motor_Shield_For_Arduino (DRV8825)_SKU:DRI0023
Все работает, но имеет тенденцию нагреваться (62,3 Цельсия) в режиме ожидания. Что я понял на данный момент, снизить температуру я могу:
Устанавливайте штифт включения только тогда, когда мне нужно повернуть двигатель, но я потерял свое положение.
Я могу использовать то, что в руководстве драйвера описано как низкий уровень. Чего я не совсем понял.
Если я установлю на входе разрешения низкий уровень, выполнив digitalWrite(M1en,LOW);
, переведу ли я шаговый двигатель в режим пониженного энергопотребления или отключу питание шагового двигателя?
- Я мог включать шаговый двигатель только тогда, когда мне это нужно. Что было бы лучше всего, как я понял.
Где в приведенном ниже коде мне нужно будет добавить digitalWrite LOW,HIGH, чтобы добиться этого? Или мне нужно просто установить НИЗКИЙ уровень (для режима низкого энергопотребления).
- Или есть способ получше, о котором я не знаю.
Код:
const int dirPin = 4;
const int stepPin = 5;
const int M1en = 12;
int speed = 200; // желаемая скорость в шагах в секунду
int steps = 0; // количество шагов, которые нужно сделать
void setup()
{
pinMode(dirPin, OUTPUT);
pinMode(stepPin, OUTPUT);
digitalWrite(M1en,LOW);// Включение низкого уровня
Serial.begin(9600);
}
void loop()
{
if ( Serial.available()) {
char ch = Serial.read();
if(isDigit(ch)){ // является ли ch числом?
steps = steps * 10 + ch - '0'; // да, накапливаем значение
}
else if(ch == '+'){
step(steps);
steps = 0;
}
else if(ch == '-'){
step(-steps);
steps = 0;
}
else if(ch == 's'){
speed = steps;
Serial.print("Setting speed to ");
Serial.println(steps);
steps = 0;
}
}
}
void step(int steps)
{
int stepDelay = 1000 / speed; // задержка в мс для скорости, заданной в шагах в секунду
int stepsLeft;
// определяем направление на основании того, равно ли Step_to_mode + или -
if (steps > 0)
{
digitalWrite(dirPin, HIGH);
stepsLeft = steps;
}
if (steps < 0)
{
digitalWrite(dirPin, LOW);
stepsLeft = -steps;
}
// уменьшаем количество шагов, каждый раз перемещаясь на один шаг
while(stepsLeft > 0)
{
digitalWrite(stepPin,HIGH);
delayMicroseconds(1);
digitalWrite(stepPin,LOW);
delay(stepDelay);
stepsLeft--; // уменьшаем количество оставшихся шагов
}
}
@digit, 👍0
1 ответ
Лучший ответ:
На указанной вами странице продукта есть ссылка на техническое описание DRV8825.
Прочитав это, становится ясно, что контакты включения полностью отключают H-мост, который управляет катушками двигателя. Это режим низкого энергопотребления. Это не означает низкий, но ненулевой ток удержания. Драйвер поддерживает только включение и отключение.
Если ваши шаговые двигатели перегреваются, возможно, ток, подаваемый драйвером, слишком велик. Максимальный ток возбуждения устанавливается токоизмерительными резисторами, подключенными к микросхеме драйвера. Это может быть нелегко изменить. Чтобы уменьшить максимальный ток, вы увеличиваете значение токоизмерительного резистора.
На странице продукта указано, что ток экрана установлен на уровне 1,6 А на катушку.
- Accelstepper запустить степпер назад
- Как заставить шаговый двигатель вращаться по часовой стрелке и против часовой стрелки
- Управление направлением шагового двигателя с помощью кнопок.
- Разгон шагового двигателя
- Использование кнопки для поворота шагового двигателя на 90 градусов.
- Изменение ШИМ на Arduino Mega, контакты 9 и 10 на 20–25 кГц
- Шаговый двигатель не работает с платой A4988
- Как запустить шаговый двигатель через последовательную связь