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

Leg

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

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

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

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

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

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

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

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?