Бюджетный usb-контроллер для mach3 - кому интересно присоединяйтесь.

Leg

Решил тут соорудить USB-контроллер для мача. Вернее железо сделал давно но как то забросил. Т.к. достройка собственного станка откладывается на весну решил пока покодить слегка чтоб из темы не выпадать (а то заброшу и будет полуЧПУ пылиться в уголке как половина бывших хобби ).

Основная рабочая часть кода написана и протестирована всеми доступными методами (пока только на соответствие траектории, повторюсь собственного ЧПУ нет).

Основные задачи контроллера:

  • Уход от реалтайма с ПК (ну не люблю этого - чисто мой заскок, с другими мнениями спорить не буду).
  • Расширение пинов ввода/вывода(например подключить полнофункциональную операторскою панель)
  • И основное: “Сглаживание” шаговой последовательности.

Что касается последнего пункта - основная часть кода тратилась именно на него. В результате при достигнутой частоте степов всего 50Кгц дискретность формирователя временных интервалов - 16Мгц. В отличие от ЛПТ у которого дискретность равна частоте ядра - 100Кгц макс, т.е. шаговая последовательность не кратная 10мкс будет рваться. Пример, шаги 45кГц от ЛПТ и от контроллера - использовался один и тот же УП и настройки для мача:

Зачем создан этот пост:
Коммерческой цели не преследую, если есть энтузиасты кому интересно продолжение разработки - присоединяйтесь, проект можно сделать открытым.

P.S. Ссылками на готовые решения (SS, Kflop, ncPod, etc… ) и вопросами "А на зачем это надо? " просьба не заваливать. Мне иногда нравится покодить - если больше никому не интересно - закроем тему.

Advertisement
Baha

Интересно! Могу только как тестер поучаствовать, можно и финансами.

mura

а плагин для Mach какой?
а камень какой стоит?

Leg
Baha:

Интересно! Могу только как тестер поучаствовать, можно и финансами.

Собственно тестеры как раз нужны т.к. у меня не всегда есть время хорошо оттеснить какую-нить функцию, основное время уходит на написание кода, а баги вываливаются как всегда когда уже и забыл про написанный функционал.

Желательно разбираться в электронике хоть поверхностно, еще лучше - если человек сам сможет собрать девайс.
Если нет возможности самостоятельно собрать, а хочется поучаствовать как тестер уже готового девайса - могу делать по себестоимости - но, Вы должны понимать что это не готовое решение а только в процессе разработки.

mura:

а плагин для Mach какой? а камень какой стоит?

Плагин естественно пишу сам, для пользователя все прозрачно - никаких окон настройки, все через стандартные настройки мача, только номероа пинов можно задавать от 1 до 32 причем пин может работать как на ввод так и на вывод в зависимости от настройки мача.
Пины движков (всего 4 оси) - жесткие и в настройке не нуждаются, на вкладку мотороут можно не обращать внимание. Пины чержпамп и ШИМ тоже жесткие. Остальные 32 - настраиваются мачем.

Камень AT90USB1287, программатор не нужен, бутится по USB, новую версию всегда можно залить без проблем.

Baha
Leg:

Желательно разбираться в электронике хоть поверхностно, еще лучше - если человек сам сможет собрать девайс. Если нет возможности самостоятельно собрать, а хочется поучаствовать как тестер уже готового девайса - могу делать по себестоимости - но, Вы должны понимать что это не готовое решение а только в процессе разработки.

Да , это дело без проблем, все есть, даже руки.

Leg
Baha:

Да , это дело без проблем, все есть, даже руки.

ОК. Ближе к ночи выложу схему. Плату тоже могу выложить, но, она требует металлизации под компонентами. Разводка простая и вполне ляжет на одну сторону - если у кого-то есть желание переразвести, делалась на две стороны скорее по привычке.
К концу недели дошлифую кое-что из уже реализованного в прошивке и плагине и тоже выложу.

Пока реализовано:

  • 4-оси, 50Кгц, активный уровень - низкий, пока не настраивается, но скоро будет.
  • Движение по УП,
  • ручные переезды с ПК или с внешних сигналов JOG.
  • Отработка лимитов - датчики вешаются на любые из 32 пинов - настраиваются стандартно мачем.
  • 32 линии ввода/вывода(работа линий на ввод) стандартно настраиваемые в маче - настраивал лимты, джоггинг, старт, фид-холд, стоп, выбор скорости, одиночный-мулти шаг, эмерженси и т.п. - все сразу и все работает.
  • Переключение линий на вывод - работает, но пока линии на вывод не конфигурятся через мач (проверял вывод конфигуря линии в прошивке) - скоро будет конфигурация через мач
  • ШИМ работает, но пока нормально не конфигурится - скоро

Не реализовано:

  • Возврат на базу, пока только обнуление осей. Сейчас вожусь - основная головная боль.
  • Сигналы энкодеров серв - не планирую вообще, ресурсов мало, только для ШД
  • Сигналы MPG - планирую в будущем.
  • Обратная связь от шпинделя (сигнал Index) - незнаю как подобраться, попробую дергать поддержку артсофт.
  • THC для лазера - не знаю как работает и с чем едет, пока не разбирался.
  • Charge Pump - вроде не проблема, но пока руки не дошли, планирую.
mura:

а на AT90USBKEY пойдет?

Сама прошивка естественно ляжет - но на плате много лишнего что подключено на IO - могут быть конфликты с датафлеш и т.п. , пока не смотрел в эту сторону, выложу схему посмотрите сами, если все выводы необходимые для железа выведены и ничего не мешает(в крайнем случае спаять) - то не вижу проблем,если есть AT90USBKEY.

Dj_smart

“Лёд тронулся, господа присяжные…” Готов присоединиться. Станок есть. И есть пара вопросов:
AT90USB1287-AU- доступен ИМЕННО такой камень. Годится? Плату вручную сделать всё-таки можно?

Leg
Dj_smart:

AT90USB1287-AU- доступен ИМЕННО такой камень. Годится?

Ну так это он и есть.

Dj_smart:

Плату вручную сделать всё-таки можно?

Если один в один как на фото - я писал там два слоя и металлизация. Делать самому - зависит от качества достигнутой Вами технологии. Но как правило - хорошая домашняя металлизация пока еще скорее исключение. Хотя уже все больше любителей осваивают. Что касается самой трассировки - делается на ура левой ногой в домашних условиях. Я пользуюсь фотометодом, ЛУТ тоже должно получится.

Я все же рекомендую для домашнего изготовления переразвести на одну сторону, там трассировка простая, думаю на форуме найдется кто-то кто возьмется. Будет время разведу сам, может на выходных.

Baha
Leg:

ОК. Ближе к ночи выложу схему. Плату тоже могу выложить, но, она требует металлизации под компонентами.

Ждем схему, и свою разводку выкладывай, лишним не будет.

boldive

Переходных отверстий не сильно много. Можно и проволочкой пропаять. Сама плата не сложная. Дома с фоторезистом получится без проблемм. Не совсем нравится идея с выходными разьемами на IO. Наверно лучше использовать разьемные соединения. Но это дело вкуса. В чем рисовали плату? Если в Altium Designer то выложите пожалуйста проект. Проще будет с разводкой ковыряться.
А в целом готов присоединится. Сделать плату и протестировать на станке смогу достаточно быстро. Я бы на выходе еще буфера поставил. Они дорого не стоят а вот пользы от них будет много.

VRV

Насколько я понял это своеобразный переходник USB-LPT? Или передаются команды G-кода, а девайс генерирует сигналы шаг/направление?

boldive

Для желающих начать прямо сейчас схему ждать не надо. Практически вся схема видна на фотке выше.

arisov77

Ещё прошивочку МК и плагин под Масн осталось выложить… - хочется посмотреть, как в Масн это всё будет настраивается.
Без подключенного “железа” это возможно?

Leg
VRV:

Насколько я понял это своеобразный переходник USB-LPT? Или передаются команды G-кода, а девайс генерирует сигналы шаг/направление?

Ни то и не другое.
С переходниками мач работать не будет, как и любое ПО использующее ЛПТ не для печати. По крайней мере о реализации нормального ЛПТ-переходника работающего как чистый ЛПТ я пока ничего не слышал.
ЛПТ драйвер при использовании плагина вообще отключен.

Что бы понимать как работает железка нужно представлять как устроен мач. Если коротко то так: Мач при загрузке УП делает вычисление этого УП и создает по нему траекторию, что-то типа растровой картинки - только каждый элемент это точка не на плоскости а во времени - фактически постоянная скорость движения по каждой оси в данный момент времени.
Этот массив в последствии передается драйверу который делает из него шаговую последовательность - в случае ЛПТ этим занимается лпт-драйвер, в моем случае железо.

Ну а остальные функции - интерфейс с оператором и станком, тут думаю и так все понятно.

arisov77
Leg:

…Ну а остальные функции - интерфейс с оператором и станком, тут думаю и так все понятно.

Т.е. какой ножке ЛПТ (в настройках Масн) будет соответсвовать определённая ножка AT90USB1287?

Dj_smart

Пины движков (всего 4 оси) - жесткие и в настройке не нуждаются, на вкладку мотороут можно не обращать внимание.

Думаю так.

arisov77

Может кому пригодиться - здесь item.taobao.com/item.htm?id=5794265317 есть схемки и фото китайского Mach3 USB. Там везде по In/Out стоит опторазвязка, думаю и для этого контроллера она будет не лишней.
По фото также видно, что к плате “подцеплен” переменник, для чего он там я не знаю, предполагаю что для таймера СОЖ. Если есть возможность, то неплохо бы эту “фичу” добавить.

Leg
Dj_smart:

Leg, плату в pdf’е можно?

К сожалению доступный мне вариант конвертации в пдф дает некоторые искажения окружности падов. В общем вот если устроит.

arisov77:

Ещё прошивочку МК и плагин под Масн осталось выложить… - хочется посмотреть, как в Масн это всё будет настраивается. Без подключенного “железа” это возможно?

Читайте выше, к концу недели-выходные выложу. Там много моих отладочно-проверочных кодов типа вывода кода состояния в окне координат и т.п. которые надо почистить. Дошлифую выложу.

Настраиваться в маче все будет так как и было. Все на том же месте. Только номер пина в портах может быть до 32, то что еще не реализовано просто не будет реагировать на настройку.

Dj_smart
Leg:

В общем вот если устроит.

Спасибо, устроит конечно. Ставить ПО, в котором ничерта не смыслишь… Подправим:).

Leg
arisov77:

Там везде по In/Out стоит опторазвязка, думаю и для этого контроллера она будет не лишней.

Это уже все снаружи делается, у многих драйверов развязка есть.
К тому же выводы могут работать как на ввод так и на вывод - какой стороной оптрон ставить? Это уже пользователю решать.

arisov77:

Т.е. какой ножке ЛПТ (в настройках Масн) будет соответсвовать определённая ножка AT90USB1287?

Заходим на вкладку Input(или Output) - Делаем все ровно то же - только в поле PIN# можем писать от 1 до 32 - это будет номер вывода подписанный на плате(см.фото). В поле PORT# пишем что кому нравится - ЛПТ отключен, эта информация не используется.

На вкладке Motor толкь включаем оси и выбираем активный уроветь, порт и пин до лампочки, пишем что хотим - выводы жостко прописаны в контроллере.

arisov77:

предполагаю что для таймера СОЖ. Если есть возможность, то неплохо бы эту “фичу” добавить.

Объясните как это должно функционироват, я не специалист по станкам. Мне станок нужен для доработки пластиковых корпусов под электронику и сверления плат. Во все тонкости работы ЧПУ я не внедрялся, делаю пока только то что понимаю.

Я только за - добавить новый функционал, но мне надо понимать с чем его есть.

boldive:

В чем рисовали плату? Если в Altium Designer то выложите пожалуйста проект. Проще будет с разводкой ковыряться.

Плата в pcad2004, Altium Designer естественно ее поймет. Скиньте свое мыло на мыло в pdf, вышлю(я не любитель держать в открытом доступе “исходники” и библиотеки даже самых простых проектов).
Кому тоже надо в PCAD - на мыло.

boldive:

Не совсем нравится идея с выходными разьемами на IO. Наверно лучше использовать разьемные соединения. Но это дело вкуса.

Да дело вкуса. Но не забывайте что их там 52. С таким шагом пойдут только типа мелких PWL или IDC с которыми на мой взгляд пользователь больше намучается с пайкой-обжимом чем с пружинными контактами - особенно если надо будет быстро перетыкнуть. Я исходил из этого.

boldive:

Я бы на выходе еще буфера поставил. Они дорого не стоят а вот пользы от них будет много.

Для тех кто собирает девайс и смотрел схему поясню мой ход мыслей:
Как видно из схемы выводы контроллера на прямую идут на выходные разъемы есть только защитные резисторы. Нету даже подтяжки. Это не удешевление:

  1. Это пилот, и как первая версия он должен быть максимально комфортный для дальнейшей доработки. Все согласование можно общими усилиями разработать, оттестить снаружи, реализовать во второй версии если есть необходимость.
  2. Буфера оптроны и т.п. - повторюсь, выводы работают как на ввод так и на вывод, и не группой а каждый отдельно, продумать буферизированные двунаправленные пины можно, но на пилоте я бы не заморачивался - основная задача сейчас софт.
arisov77
Leg:

…Объясните как это должно функционироват, я не специалист по станкам. Мне станок нужен для доработки пластиковых корпусов под электронику и сверления плат. Во все тонкости работы ЧПУ я не внедрялся, делаю пока только то что понимаю.

Я только за - добавить новый функционал, но мне надо понимать с чем его есть…

Таймер СОЖ (смазочно-охлаждающие жидкости) в основном нужен для работы с металлами. Вообще то для полноценной работы нужно 2 регулятора (время паузы и время включения насоса). Здесь www.purelogic.ru/doc/PDF/Controller/PLC4x.pdf на стр.8 и здесь stepmotor.ru/…/Плата шагового привода станков с ЧП… можно посмотреть краткое описание и узнать значения времени вкл./выкл. помпы.
Также, если уж думать о универсальности, то неплохо бы аппаратно (в плате) предусмотреть возможность подключения преобразователя ШИМ>в напряжение 0…10В (для регулирования частоты вращения шпинделя).

Leg:

… Все согласование можно общими усилиями разработать, оттестить снаружи, реализовать во второй версии если есть необходимость.
2. Буфера оптроны и т.п. - повторюсь, выводы работают как на ввод так и на вывод, и не группой а каждый отдельно, продумать буферизированные двунаправленные пины можно, но на пилоте я бы не заморачивался - основная задача сейчас софт.

Желаю Вам в успехов в написании и оттачивании софта, а «железо» – каждый может по своему реализовать. Думаю, что если будет нормальный софт, то этот usb-контроллер для mach3 может стать «хитом» среди «любителей - ЧПУшников»

dima-357

item.taobao.com/item.htm?id=5794265317 схемки и фото китайского Mach3 USB. Вот ента штучка конечно интересна, еще бы и исходник для АТмеги был бы выложен былоб круто,
а по этой диковинке на русском или хотябы на инглише у кого нибудь есть инфа? по китайски я чето плохо понимаю.