Слишком много ампер для шагового двигателя
У меня есть шилд двигателя adafruit, и я подключил шаговый двигатель Nema 17. Теперь большая проблема — попытаться запитать его, не перегревая. Изначально я использовал блок питания 12 В 6 А, но быстро перешел на 12 В 2 А, а затем на 12 В 1 А. Все они по-прежнему сильно нагревают шаговый двигатель Nema.
Я использую модули accelstepper и adafruit на arduino для управления шаговым двигателем. Я заметил, что в моем коде все магниты всегда включены, что может объяснить, почему он нагревается, но мне нужно поддерживать некую форму крутящего момента для системы, которую я разрабатываю.
Я прикреплю код, так как проблема может быть в нем. Есть ли второе устройство, которое мне нужно присоединить к щитку двигателя adafruit и шаговому двигателю nema.
#include <AccelStepper.h>
#include <MultiStepper.h>
#include <Wire.h>
#include <Adafruit_MotorShield.h>
#include "utility/Adafruit_MS_PWMServoDriver.h"
int ComControlValue = -1;
/* Define pins for motor and define step motor function */
const int SlowStepPerRev = 400; // Определяем константу медленной скорости
const int MotorB = 2;
int rpm = 60; // Оборотов в минуту
int acelspeed = 40; // Скорость ускорения
int distrot = 200;
int destinationunknown = 0; // Место назначения пластины 1
/* Initialize the stepper library on the motor shield */
Adafruit_MotorShield AFMS = Adafruit_MotorShield();
Adafruit_StepperMotor *myMotorB = AFMS.getStepper(SlowStepPerRev, MotorB);
/* you can change these to SINGLE or DOUBLE or INTERLEAVE or MICROSTEP! */
// обертки для мотора!
void forwardstepB() {
myMotorB->onestep(FORWARD, INTERLEAVE);
}
void backwardstepB() {
myMotorB->onestep(BACKWARD, INTERLEAVE);
}
AccelStepper stepperB(forwardstepB, backwardstepB);
void setup() {
Serial.begin(115200); // Установить последовательное соединение с компьютером
Wire.begin(); // присоединяемся к шине i2c как ведущее устройство
AFMS.begin(); // Начало использования двигателя конвейерной ленты
stepperB.setMaxSpeed(rpm); // Инициализируем максимальную скорость
stepperB.setAcceleration(acelspeed); // Инициализация и установка скорости ускорения для вращения
}
void loop() {
switch(ComControlValue){
case -1: //ждем
Serial.println("Waiting for Command");
Serial.println(stepperB.currentPosition());
while (Serial.available()==0){}
ComControlValue=Serial.parseInt(); // Извлечь значение из последовательного порта
break; // прерываем цикл и возвращаемся к началу
/* 1 : Move plates into the system */
case 1:
// Arduino с помощью акселерометра перемещается в позицию X
if (plateNum < platelimit){
plateNum++;
ComControlValue= 11; // После установки номера и местоположения пластины переходим к случаю 11, чтобы начать движение шагового двигателя
destinationunknown = destinationunknown + 200;
}
else {
ComControlValue = -1; // Для многих пластин отменить команду перемещения
}
stepperB.moveTo(destinationunknown);
break;
/* 2 : Move plate out of system */
case 2:
// Arduino с помощью акселерометра перемещается в позицию Y
if (plateNum > 0){
plateNum = plateNum--;
ComControlValue= 11; // После установки номера и местоположения пластины переходим к случаю 11, чтобы начать движение шагового двигателя
destinationunknown = destinationunknown - 200;
}
else {
ComControlValue = -1;
}
stepperB.moveTo(destinationunknown);
break;
/* 1 : Run Stepmotor to completion */
case 11:
// Шаговому двигателю требуется непрерывный цикл while для перехода к завершению
// настройка кода будет использовать цикл while и позволит перемещаться
stepperB.run(); // запустить шаговый двигатель
if (stepperB.distanceToGo() == 0 ){
ComControlValue = -1; // Завершено движение, возвращаемся к случаю -1
}
break;
}
}
@Hojo.Timberwolf, 👍1
2 ответа
Лучший ответ:
Шаговые двигатели нагреваются. Это факт жизни. Особенно, когда они неподвижны.
Типичный шаговый двигатель Nema 17 на 12 В имеет сопротивление катушки 30 Ом на фазу. При напряжении 12 В на одной фазе он будет потреблять 0,4 А. Это эквивалентно примерно 4,8 Вт мощности. Она выделяется в виде тепла.
Снижение текущей мощности вашего источника питания не «исправит» проблему. Все, что произойдет, это то, что по мере того, как вы будете переходить к более низким значениям тока, источник будет нагреваться все сильнее и в конечном итоге сломается.
Вы можете проверить сопротивление катушек ваших двигателей с помощью цифрового мультиметра, установленного в диапазоне Ом, а затем рассчитать рассеиваемую мощность, используя:
Current = V ÷ R = 12 ÷ <measured resistance>
и:
Power = V² ÷ R = 144 ÷ <measured resistance>
Я думаю, у вас будет больше шансов снизить нагрев, снизив напряжение питания (что, как следствие, снизит ток). Вы не получите номинальный крутящий момент, если опустите напряжение ниже 12 В, но это компромисс, и бесплатного сыра здесь не бывает.
Ограничение доступного тока работает предсказуемым образом только с блоками питания, которые могут работать как источники тока. Если ваш блок питания является только источником напряжения, то попытка получить больше тока, чем он может обеспечить, в конечном итоге приведет к тому, что блок питания войдет в режим самозащиты (не будет подавать никакого напряжения) или выйдет из строя. В случае источников напряжения максимальный ток — это ограничение, которое вы должны соблюдать, а не ограничение, которое наложит блок питания.
- Попытка понять постоянную скорость AccelStepper
- Шаговые двигатели Adafruit Motor Shield не вращаются.
- Как я могу использовать степпер для определенной степени?
- Arduino uno + cnc Shield v3 + драйвер шагового двигателя A4988 + AccelStepper?
- Не нашел датчик отпечатков пальцев :( Arduino Mega 2560 Adafruit Fingerprint Sensor
- Почему Adafruit motor shield не крутит моторы?
- Шаговый двигатель не поворачивается/не поворачивается против часовой стрелки
- Какие компоненты мне нужны маленького GPS-трекера
Кроме того, если вы пойдете по пути уменьшения напряжения (вместо уменьшения значения тока), вам придется пойти на компромисс с уменьшением крутящего момента., @Sumit Panse
Похоже, тогда следует использовать блок питания 12 В 1 А и просто пойти на компромисс с головкой через радиаторы., @Hojo.Timberwolf
У вас 2 фазы. Это потенциальный пик в 0,8 А только для двигателей. Я бы снизил его и использовал бы по крайней мере 2 А. У вас не может быть "слишком много" ампер - он потребляет только то, что ему нужно., @Majenko