Управление ШД без компьютера, автономно.
- Войдите на сайт для отправки комментариев
Чт, 20/05/2021 - 23:32
Казалось бы простая задача, но мучаюсь уже пару месяцев. Задача простая, управление двумя драйверами шд, несколько режимов оборотов и по 4 кнопки на шд, две кнопки вращение +-, две кнопки два режима авто и ручной по удержанию. Простое управление двумя осями маленького станочка в ручном режиме, без чпу, без компьютера.
На ардуино похоже не вариант, перепробывал кучу библиотек, все с глюками, с ошибками, низкими оборотам.
Какие готовые решения можно использовать для таких задач? К примеру GRBL, но под нее еще и офф контроллер приобретать, а хотелось бы свою панель управления использовать.
А вы вообще по теме что-то искали? https://arduinomaster.ru/motor-dvigatel-privod/shagovye-dvigateli-i-motory-arduino/
Какие обороты "низкие" и "нормальные"?
отличное ТЗ, все все сразу поняли...
1) что с питанием, какая разводка
2) что за драйверы ШД
3) где код?
у меня хрустальный шар Клапа отобрал - помочь не смогу...
А если подумать и не приобретать ? ) У вас одна ардуина и другая ближайшая в Китае ? Если вам нужно решить вопрос сделайте на паре ардуин, команды на простые движения элементарны, заодно сможете стандартным g-кодом кормить, а если поэкспериментировать... тады конечно можно и обсудить. Управление шд уровня grbl действительно не сильно простая штука, я из библиотек только accelstepper использовал чуток допилив, но с одним шд - проблем вроде не было.
Драйвер TB6560+nema17 настроен на полный шаг, 1.6 А,блок питания 2А , но это для теста, будут Leadshine DM542+nema23. Обороты нужны высокие, 1000 об.мин, полный шаг 3300 шаг сек. В accelstepper не работает акселератор, плавный запуск не возможен. Рабочий по оборотам вариант на stepperQ на двух ардуино, но со сменой режимов проблемы(библиотека не дописана, автор Achest). Сейчас на Гайвере через ТС разбираюсь, но тоже не работает стабильно, через раз запускает и плавный запуск как то криво, шаги не соответствуют заданным. Прилагаю короткий код.
будут Leadshine DM542+nema23. Обороты нужны высокие, 1000 об.мин, полный шаг 3300 шаг сек
Тем более стоит использовать grbl/marlin, к тому же вы сами про две ардуины уже писали. Лучше вы не сделаете точно, иначе вашего поста на этом форуме не было бы.
Работает, никаких проблем не было с этим.
Если при скорости в 3000 ставить акселерацию 2500, то конечно можно сказать, что она не работает ))
#include <GyverButton.h> //Тут возможны проблемы
#include <GyverTimers.h> //Тут возможны проблемы
#include <GyverStepper.h> //Тут возможны проблемы
Проблемы с Гайвером. Скорее всего. Он на отъе-сь отлаживает библиотеки.
Проблемы с Гайвером.
Возможно, но основная проблема как я понял в библиотеках шд, они не рассчитаны на большую скорость.
Разные варианты пробовал и с кнопками велосипеда и accelstepper и с ТС. Единственная библиотека которая хорошо работает на высоких скоростях это stepperQ, только режимы менять когда двигатель выключен и один шд.
Взять библиотеку stepperQ, нанять программиста, заплатить ему тысяч 10 - и все вам напишут
Переустановил библиотеку, аксель заработал, но обороты не набирает, максимум 300 об.мин.
Переустановил библиотеку, аксель заработал, но обороты не набирает, максимум 300 об.мин.
Забудьте эти "об/мин". Для цифрового мира они являются абстрактной единицей измерения, так как производительность ШД, в основном, привязывается к частоте, а конкретно - PPS (pulse per second). Так вот, в акселе, насколько я помню, интервалы в мс измеряются, стало быть потолок - 1000PPS.
1000 об/мин это вентилятор ?) Там же момент будет никакой. Аксель действительно не сильно шустрый, но 300 об/мин - это точно в импульсы упирается ? на валу нагрузки нет ? С лидшайном и питании 36+ вольт разогнать так можно, думаю, а вот с указанным драйвером и если напряжение 12в... не уверен.
А я када в школе учился, у над ШД называли школу для детей с замедленным развитием :(
Нагрузка не большая, высокие обороты нужны для ускоренного холостого перемещения стола, редукция 1/86. Рабочие шаги будут до 2000 шаг.сек. На grbl сколько можно разогнать шагов в секунду?
Не найду инфу по функциям GRBL для управления с другой ардуины по ISP.
Не найду инфу по функциям GRBL для управления с другой ардуины по ISP.
с чего вы взяли, что это возможно?
Не найду инфу по функциям GRBL для управления с другой ардуины по ISP.
А зачем здесь "другая Ардуина"? IMHO это лишнее звено.
Ну и потом, опять же IMHO, GRBL и ISP - вещи взаимоисключающие.
Ой, извиняюсь. При использовании второй ардуины в качестве автономного контроллера подключается по RX/TX. С компа понятно что на G кодах, а с ардуинки тоже G кодами или там по другому?
GRBL работает через что-то кроме UART? Если нет, то какая разница чем G-коды туда закидывать - PC или другой Arduino?
Одинаково. Подключайте уже )
Не много разобрался с GRBL. Не так то просто. В нем нету произвольного ручного перемещения. К примеру, пока сигнал подаешь, кнопку держишь, перемещение, отпустил , стоп. Только G кодами. Начальная и конечная.
Только g-кодами это верно. Всё остальное нет. Как напишешь программу, так и будет. Можно написать что кнопка нажата долго и.т.д
Вот только нету команды прерывания движения. Если строка задана, то пока он не достигнет заданной позиции повлиять нельзя. Для реализации ручного режима это целый гемор. Самое подходящие команды для движения это в относительной системе c заданной подачей G91G01X-220F200 и все.
А откуда возникла идея использовать явно не подходящую условиям задачи GRBL?
А откуда возникла идея использовать явно не подходящую условиям задачи GRBL?
Больше не чего не подходит для таких задач, а высокие обороты она отлично выдает.
Ну это лишь говорит о том, что задача технически реализуема. Следовательно, над ней можно работать.
А откуда возникла идея использовать явно не подходящую условиям задачи GRBL?
от того что ни на какой другой библиотеке ТС не смог раскрутить свои моторы до 1000 об мин
Нет, ну нет библиотеки потому, что задача нестандартная. Соответственно, и способ решения должен быть нестандартным, т.е. без использования библиотек.
И, кстати, по поводу "нестандартности" задачи: не кажется ли Вам, что требования высокой скорости и ручного управления противоречат друг другу?
С точки зрения логики - да. С бытовой точки зрения - нет. Народ привык к хорошему в быту и распостраняет это требование повсюду. Например - от ресторана требует производительности фастфуда. Селяви, как грицца.
И, кстати, по поводу "нестандартности" задачи: не кажется ли Вам, что требования высокой скорости и ручного управления противоречат друг другу?
Почему противоречат? Рабочие режимы будут до 2000 шаг. сек, а 6000 шаг. сек это для быстрого холостого перемещения стола, потому что редукция 1/86. Без библиотек не как, сам не напишу, самое сложное это разгон и торможение.
Duet, а сколько вы готовы отвалить за удовольствие? Прикупите результат работы специалистов Trinamic (mechatronic solution) и не партесь. А ежели не готовы отвалить адские 20 тыщ за моторчик, то вкладывайте их на протяжении нескольких лет в собственную разработку.
...требования высокой скорости и ручного управления противоречат друг другу?
Почему противоречат? Рабочие режимы будут до 2000 шаг. сек, а 6000 шаг. сек это для быстрого холостого перемещения стола, потому что редукция 1/86.
Потому, что ротор двигателя имеет определенную инерцию, которая не позволяет ему стартовать сразу на высокой скорости, а также мгновенно остановиться. Поэтому единственный вариант добиться высокой скорости - это правильные с точки зрения физики кривые разгона и торможения.
Но для реализации этих кривых нужно знать, когда потребуется остановиться, уже в момент старта. Другими словами, о моменте остановки нужно знать заранее, чего в принципе не может быть при ручном управлении.
Без библиотек не как, сам не напишу, самое сложное это разгон и торможение.
Вот-вот. Именно разгон и торможение и несовместимы с ручным управлением.
Duet, а сколько вы готовы отвалить за удовольствие? Прикупите результат работы специалистов Trinamic (mechatronic solution) и не партесь. А ежели не готовы отвалить адские 20 тыщ за моторчик, то вкладывайте их на протяжении нескольких лет в собственную разработку.
Профессиональная система в данном случае на шаговиках не нужна, это временное решение и не хотелось бы вкладывать большие ресурсы на времянку. В дальнейшем будут стоять мощные сервоприводы типа Delta на 2 квт., но это удовольствие обойдется около 300 к. руб., быстро не реализовать. Сейчас установил редуктора 1/86 и пытаюсь приладить маломощные шаговики, за счет высоких оборотов будет хоть какая то скорость ускоренного холостого перемещения.
В таком случае Вы находитесь в тупике: библиотек, которые нужны Вам, не существует, писать Вы их не способны, вкладываться в готовое решение не желаете. Придется изворачиваться в области механики, что гораздо сложнее. Если сумеете. возможно достигнете результата. Но наврядли, ибо если бы это было относительно просто, то кто-нибудь уже изладил публично доступную библиотеку или решение.
Финальную стоимость решения посчитайте самостоятельно.
Нет никакой проблемы в том, чтобы отправлять g-код по кнопке.
Нет никакой проблемы в том, чтобы отправлять g-код по кнопке.
Проблем с отправкой - нет.
Проблема исключительно в том, что G-код не решает задачу ТС.
Решает замечательно.
Это верно. А что вам мешает подавать код типа такого ?
У меня grbl сейчас под рукой нет, но, к примеру marlin, видя продолжение кода, не спешит тормозить ось и отрабатывает такое как одно движение. Если grbl делает не так, то я бы порылся в режимах работы. Тут правда буфер можно переполнить, наверное. По мне так смысла мельчить шаг нет на полной скорости, даже если это энкодером управляется можно сделать шаг крупнее для быстрого перемещения и помельче если крутят медленно, а на кнопках либо дополнительный множитель x1-x5-x10 или просто несколько пар кнопок для разной скорости. Из за того, что ось останавливается с ускорением, попасть в нужное место вовремя отпустив кнопку... ну такое, чистая теория, все равно придется медленно подходить когда близко.
Можно отложить ардуину в сторону, взять старый ноут с lpt и взгромоздить туда win xp + mach3, например. Там с этим проблем нет )
Но для реализации этих кривых нужно знать, когда потребуется остановиться, уже в момент старта. Другими словами, о моменте остановки нужно знать заранее, чего в принципе не может быть при ручном управлении.
Почему? В библиотеках Asselstepper, stepperQ, GyverStepper вовремя вращения можно подать команду стоп и плавная остановка.
Если бы Вы читали описание функций AccelStepper, то знали бы, что по stop() движение заканчивается "как можно быстрее", а не "в заданной точке". О чем andriano и пишет.
Возможно, что Вы формулируете задачу не так, как её понимают остальные.
Можно отложить ардуину в сторону, взять старый ноут с lpt и взгромоздить туда win xp + mach3, например. Там с этим проблем нет )
Этот вариант рассматривал. Только зачем на LPT, есть и на USB Mach 3.
Какая то специальная железяка ? У меня был ноут с лпт и другой поновее с какой то карточкой внешней, работала тоже как лпт.
Контроллеры на али под Mach 3 есть на LPT и на USB, цена примерно одинаковая. Железяка высокоточный координатно расточной станок, весом 10 тонн, на нем установлены светооптические линейки по которым можно координироваться и есть зажим стола, по этому мне нужно только осуществить движение с заданной скоростью, ручное позиционирование. Короче уговорили, возьму какой нибудь контроллер под mach 3, системник и клаву мини клаву Numpad 18 клавиш для удобства.
Контроллеры на али под Mach 3 есть на LPT и на USB, цена примерно одинаковая. Железяка высокоточный координатно расточной станок, весом 10 тонн, на нем установлены светооптические линейки по которым можно координироваться и есть зажим стола, по этому мне нужно только осуществить движение с заданной скоростью, ручное позиционирование. Короче уговорили, возьму какой нибудь контроллер под mach 3, системник и клаву мини клаву Numpad 18 клавиш для удобства.