Добрый день. Есть шаговый двигатель с тормозом. Смогу ли управлять тормозом с помощью одного из выхода этого драйвера ?(Нужен статический сигнал - вкл/выкл тормоза, не импульс)
Добрый день. Есть шаговый двигатель с тормозом. Смогу ли управлять тормозом с помощью одного из выхода этого драйвера ?(Нужен статический сигнал - вкл/выкл тормоза, не импульс)
Добрый день.
Не сможете, т.к. нет дискретных выходов.
Старший инженер технической поддержки "ОВЕН"
В мануале написано, что есть два выхода.
Например если для выхода OUT2 параметр Р67 = 0, то выход будет управляться битом в регистре Р68.
Добрый день.
Битом в регистре надо будет управлять из вне ? Очень хотелось бы обойтись одним драйвером.
В настройках выходов есть : 3 – выдача сигнала достижения значения заданной и 5 – выдача сигнала достижения исходной позиции. Это импульс или дискретный сигнал ?
Оборудование очень простое : стол, который по команде робота поворачивается на 180 градусов.
skozirev@yandex.ru
Я так понимаю, тормоз нужен для удержания стола в заданной позиции, когда двигатель установлен.
Управлять с какого устройства предполагается? ПЛК, ПР, что-то еще?
Вообще-то ШД сам по себе является тормозом, когда не поступают сигналы Step. Но в качестве дополнительного тормоза вполне, особенно если на столе предполагается какая-либо силовая операция, например сверление.
В этом случае тормозом лучше управлять извне. Подавать сигнал на отпускание тормоза надо с небольшим упреждением, как минимум 0.2 сек, включать тормоз с такой-же задержкой после полного останова.
Битом в регистре управлять придется по модбасу. Конкретной привязки выхода к функционалу упрвления тормозом я не нашел. Следовательно в системе должен присутствовать какой-либо ПЛК. Но тут теряется смысл использования выхода именно драйвера, ибо эту функцию проще и надежнее реализовать на ПЛК.
Я делал на подобном драйвере простое перемещение. In1 = "едем туда", In2" едем обратно". В направлении "туда" датчик объекта, и лимита перемещения (конец оси) В направлении "обратно" датчик начала оси. Скорость и ускорения подобрал и зашил в драйвере. ПЛК только смотрел за датчиками, авариями драйвера, и дергал входы драйвера в соответствии с задачей.
Для вашей задачи можно попробовать сконфигурировать "поиск нуля", "ехать в заданную координату вперед", и назад. Скорости и ускорения фиксированные, управление тормозом извне.
Во первых не понятно для каких целей Вам необходим тормоз:
- для быстрой остановки (тогда настраивайте время ускорения в режиме замедления, P76, P78 или аналогичный).
- для удержания (используйте ток удержания, P46 или аналогичный)
- удержания при выключенном ШД (отсутствие питания), используйте внешний тормоз (не важно на ЩД или другой)
Данный драйвер прекрасно будет управляться по RS485, про внешние клеммы STEP, DIR и т.д., забудьте, оно Вам не нужно.
Использую аналогичные драйверы по функционалу em2rs-870, 2 года без проблем в круглосуточном режиме.
Последний раз редактировалось GSA; 14.10.2025 в 22:20.
Добрый день.
Спасибо всем за участие и помощь.
Добрый день.
Тормоз хочу использовать для удержания стола после достижения точки назначения.
Сейчас как раз изготовители и используют ток удержания, и после того как двигатель перестал "двигаться" до него было не дотронуться - очень горячий....
Стол - это в реальности 2 планки на которые крепиться дверь и робот ее красит сначала с одной стороны, затем дает команду на переворот и красит с другой стороны.
Управляет драйвером DM860 Arduino Nano, на нее с робота через релюшки приходят команды вперед и назад.
Это код скейча :
Вот я и хочу избавиться от Arduino и оставить только вышеуказанный драйвер и управлять им напрямую от робота используя уже имеющиеся сигналы и заменить ШД на Шаговый двигатель 86HSB118-6004A14 с тормозомКод:#include <EncButton.h> #include "GyverStepper.h" #define STEPS_PER_180_DEG 3600 GStepper<STEPPER2WIRE> stepper(200, 7, 8, 2); #define BTN1 4 #define BTN2 A0 Button btn1(BTN1); Button btn2(BTN2); void setup() { Serial.begin(9600); pinMode(A0, INPUT_PULLUP); stepper.setRunMode(FOLLOW_POS); // установка режима работы stepper.setAcceleration(600); // установка ускорения в шагах/секунду^2 stepper.setMaxSpeed(8000); // установка максимальной скорости в шагах/секунду stepper.autoPower(false); // Отключаем автоотключение (держим питание!) Serial.println("System ready. Hard holding mode."); } void loop() { btn1.tick(); btn2.tick(); stepper.tick(); // Обработка движения if (btn1.press()) { stepper.setTarget(stepper.getCurrent() + STEPS_PER_180_DEG); Serial.println("Rotating CW"); } if (btn2.press()) { stepper.setTarget(stepper.getCurrent() - STEPS_PER_180_DEG); Serial.println("Rotating CCW"); } // Жёсткая фиксация позиции (без микрошагов) if (!stepper.getState()) { stepper.setTarget(stepper.getCurrent()); // Постоянно обновляем цель = текущая позиция } }
Последний раз редактировалось skozirev@yandex.ru; 15.10.2025 в 10:23.
Лично мое мнение (субъективное)...
Я бы применил небольшой редуктор (идеально червячный тогда ток удержания можно установить ноль, но все зависит от выходных оборотов и момента), это бы позволило:
1. Уменьшить ток удержания, результат: холодный двигатель (у меня на установках именно так)
2. Применить двигатель меньшей мощности, с меньшей индуктивностью, скажем 86CM35, это позволило бы получить наибольшую приемистость (можно крутить 0....1500 об/мин, в зависимости от необходимого момента) и уменьшить вибрации.
3. Выиграете в более точном позиционировании и плавности хода стола.
В целом система будет более гибкой и стабильной.
Это если Вы еще не купили двигатель 86HSB118-6004A14 с тормозом....![]()
Последний раз редактировалось GSA; 15.10.2025 в 11:37.