Бюджетный usb-контроллер для mach3 - кому интересно присоединяйтесь.
Решил тут соорудить USB-контроллер для мача. Вернее железо сделал давно но как то забросил. Т.к. достройка собственного станка откладывается на весну решил пока покодить слегка чтоб из темы не выпадать (а то заброшу и будет полуЧПУ пылиться в уголке как половина бывших хобби ).
Основная рабочая часть кода написана и протестирована всеми доступными методами (пока только на соответствие траектории, повторюсь собственного ЧПУ нет).
Основные задачи контроллера:
- Уход от реалтайма с ПК (ну не люблю этого - чисто мой заскок, с другими мнениями спорить не буду).
- Расширение пинов ввода/вывода(например подключить полнофункциональную операторскою панель)
- И основное: “Сглаживание” шаговой последовательности.
Что касается последнего пункта - основная часть кода тратилась именно на него. В результате при достигнутой частоте степов всего 50Кгц дискретность формирователя временных интервалов - 16Мгц. В отличие от ЛПТ у которого дискретность равна частоте ядра - 100Кгц макс, т.е. шаговая последовательность не кратная 10мкс будет рваться. Пример, шаги 45кГц от ЛПТ и от контроллера - использовался один и тот же УП и настройки для мача:
Зачем создан этот пост:
Коммерческой цели не преследую, если есть энтузиасты кому интересно продолжение разработки - присоединяйтесь, проект можно сделать открытым.
P.S. Ссылками на готовые решения (SS, Kflop, ncPod, etc… ) и вопросами "А на зачем это надо? " просьба не заваливать. Мне иногда нравится покодить - если больше никому не интересно - закроем тему.
Интересно! Могу только как тестер поучаствовать, можно и финансами.
а плагин для Mach какой?
а камень какой стоит?
Интересно! Могу только как тестер поучаствовать, можно и финансами.
Собственно тестеры как раз нужны т.к. у меня не всегда есть время хорошо оттеснить какую-нить функцию, основное время уходит на написание кода, а баги вываливаются как всегда когда уже и забыл про написанный функционал.
Желательно разбираться в электронике хоть поверхностно, еще лучше - если человек сам сможет собрать девайс.
Если нет возможности самостоятельно собрать, а хочется поучаствовать как тестер уже готового девайса - могу делать по себестоимости - но, Вы должны понимать что это не готовое решение а только в процессе разработки.
а плагин для Mach какой? а камень какой стоит?
Плагин естественно пишу сам, для пользователя все прозрачно - никаких окон настройки, все через стандартные настройки мача, только номероа пинов можно задавать от 1 до 32 причем пин может работать как на ввод так и на вывод в зависимости от настройки мача.
Пины движков (всего 4 оси) - жесткие и в настройке не нуждаются, на вкладку мотороут можно не обращать внимание. Пины чержпамп и ШИМ тоже жесткие. Остальные 32 - настраиваются мачем.
Камень AT90USB1287, программатор не нужен, бутится по USB, новую версию всегда можно залить без проблем.
Желательно разбираться в электронике хоть поверхностно, еще лучше - если человек сам сможет собрать девайс. Если нет возможности самостоятельно собрать, а хочется поучаствовать как тестер уже готового девайса - могу делать по себестоимости - но, Вы должны понимать что это не готовое решение а только в процессе разработки.
Да , это дело без проблем, все есть, даже руки.
а на AT90USBKEY пойдет?
Да , это дело без проблем, все есть, даже руки.
ОК. Ближе к ночи выложу схему. Плату тоже могу выложить, но, она требует металлизации под компонентами. Разводка простая и вполне ляжет на одну сторону - если у кого-то есть желание переразвести, делалась на две стороны скорее по привычке.
К концу недели дошлифую кое-что из уже реализованного в прошивке и плагине и тоже выложу.
Пока реализовано:
- 4-оси, 50Кгц, активный уровень - низкий, пока не настраивается, но скоро будет.
- Движение по УП,
- ручные переезды с ПК или с внешних сигналов JOG.
- Отработка лимитов - датчики вешаются на любые из 32 пинов - настраиваются стандартно мачем.
- 32 линии ввода/вывода(работа линий на ввод) стандартно настраиваемые в маче - настраивал лимты, джоггинг, старт, фид-холд, стоп, выбор скорости, одиночный-мулти шаг, эмерженси и т.п. - все сразу и все работает.
- Переключение линий на вывод - работает, но пока линии на вывод не конфигурятся через мач (проверял вывод конфигуря линии в прошивке) - скоро будет конфигурация через мач
- ШИМ работает, но пока нормально не конфигурится - скоро
Не реализовано:
- Возврат на базу, пока только обнуление осей. Сейчас вожусь - основная головная боль.
- Сигналы энкодеров серв - не планирую вообще, ресурсов мало, только для ШД
- Сигналы MPG - планирую в будущем.
- Обратная связь от шпинделя (сигнал Index) - незнаю как подобраться, попробую дергать поддержку артсофт.
- THC для лазера - не знаю как работает и с чем едет, пока не разбирался.
- Charge Pump - вроде не проблема, но пока руки не дошли, планирую.
а на AT90USBKEY пойдет?
Сама прошивка естественно ляжет - но на плате много лишнего что подключено на IO - могут быть конфликты с датафлеш и т.п. , пока не смотрел в эту сторону, выложу схему посмотрите сами, если все выводы необходимые для железа выведены и ничего не мешает(в крайнем случае спаять) - то не вижу проблем,если есть AT90USBKEY.
“Лёд тронулся, господа присяжные…” Готов присоединиться. Станок есть. И есть пара вопросов:
AT90USB1287-AU- доступен ИМЕННО такой камень. Годится? Плату вручную сделать всё-таки можно?
AT90USB1287-AU- доступен ИМЕННО такой камень. Годится?
Ну так это он и есть.
Плату вручную сделать всё-таки можно?
Если один в один как на фото - я писал там два слоя и металлизация. Делать самому - зависит от качества достигнутой Вами технологии. Но как правило - хорошая домашняя металлизация пока еще скорее исключение. Хотя уже все больше любителей осваивают. Что касается самой трассировки - делается на ура левой ногой в домашних условиях. Я пользуюсь фотометодом, ЛУТ тоже должно получится.
Я все же рекомендую для домашнего изготовления переразвести на одну сторону, там трассировка простая, думаю на форуме найдется кто-то кто возьмется. Будет время разведу сам, может на выходных.
ОК. Ближе к ночи выложу схему. Плату тоже могу выложить, но, она требует металлизации под компонентами.
Ждем схему, и свою разводку выкладывай, лишним не будет.
Переходных отверстий не сильно много. Можно и проволочкой пропаять. Сама плата не сложная. Дома с фоторезистом получится без проблемм. Не совсем нравится идея с выходными разьемами на IO. Наверно лучше использовать разьемные соединения. Но это дело вкуса. В чем рисовали плату? Если в Altium Designer то выложите пожалуйста проект. Проще будет с разводкой ковыряться.
А в целом готов присоединится. Сделать плату и протестировать на станке смогу достаточно быстро. Я бы на выходе еще буфера поставил. Они дорого не стоят а вот пользы от них будет много.
Насколько я понял это своеобразный переходник USB-LPT? Или передаются команды G-кода, а девайс генерирует сигналы шаг/направление?
Для желающих начать прямо сейчас схему ждать не надо. Практически вся схема видна на фотке выше.
Leg, плату в pdf’е можно?
Ещё прошивочку МК и плагин под Масн осталось выложить… - хочется посмотреть, как в Масн это всё будет настраивается.
Без подключенного “железа” это возможно?
Насколько я понял это своеобразный переходник USB-LPT? Или передаются команды G-кода, а девайс генерирует сигналы шаг/направление?
Ни то и не другое.
С переходниками мач работать не будет, как и любое ПО использующее ЛПТ не для печати. По крайней мере о реализации нормального ЛПТ-переходника работающего как чистый ЛПТ я пока ничего не слышал.
ЛПТ драйвер при использовании плагина вообще отключен.
Что бы понимать как работает железка нужно представлять как устроен мач. Если коротко то так: Мач при загрузке УП делает вычисление этого УП и создает по нему траекторию, что-то типа растровой картинки - только каждый элемент это точка не на плоскости а во времени - фактически постоянная скорость движения по каждой оси в данный момент времени.
Этот массив в последствии передается драйверу который делает из него шаговую последовательность - в случае ЛПТ этим занимается лпт-драйвер, в моем случае железо.
Ну а остальные функции - интерфейс с оператором и станком, тут думаю и так все понятно.
…Ну а остальные функции - интерфейс с оператором и станком, тут думаю и так все понятно.
Т.е. какой ножке ЛПТ (в настройках Масн) будет соответсвовать определённая ножка AT90USB1287?
Пины движков (всего 4 оси) - жесткие и в настройке не нуждаются, на вкладку мотороут можно не обращать внимание.
Думаю так.
Может кому пригодиться - здесь item.taobao.com/item.htm?id=5794265317 есть схемки и фото китайского Mach3 USB. Там везде по In/Out стоит опторазвязка, думаю и для этого контроллера она будет не лишней.
По фото также видно, что к плате “подцеплен” переменник, для чего он там я не знаю, предполагаю что для таймера СОЖ. Если есть возможность, то неплохо бы эту “фичу” добавить.
Leg, плату в pdf’е можно?
К сожалению доступный мне вариант конвертации в пдф дает некоторые искажения окружности падов. В общем вот если устроит.
Ещё прошивочку МК и плагин под Масн осталось выложить… - хочется посмотреть, как в Масн это всё будет настраивается. Без подключенного “железа” это возможно?
Читайте выше, к концу недели-выходные выложу. Там много моих отладочно-проверочных кодов типа вывода кода состояния в окне координат и т.п. которые надо почистить. Дошлифую выложу.
Настраиваться в маче все будет так как и было. Все на том же месте. Только номер пина в портах может быть до 32, то что еще не реализовано просто не будет реагировать на настройку.
В общем вот если устроит.
Спасибо, устроит конечно. Ставить ПО, в котором ничерта не смыслишь… Подправим:).
Там везде по In/Out стоит опторазвязка, думаю и для этого контроллера она будет не лишней.
Это уже все снаружи делается, у многих драйверов развязка есть.
К тому же выводы могут работать как на ввод так и на вывод - какой стороной оптрон ставить? Это уже пользователю решать.
Т.е. какой ножке ЛПТ (в настройках Масн) будет соответсвовать определённая ножка AT90USB1287?
Заходим на вкладку Input(или Output) - Делаем все ровно то же - только в поле PIN# можем писать от 1 до 32 - это будет номер вывода подписанный на плате(см.фото). В поле PORT# пишем что кому нравится - ЛПТ отключен, эта информация не используется.
На вкладке Motor толкь включаем оси и выбираем активный уроветь, порт и пин до лампочки, пишем что хотим - выводы жостко прописаны в контроллере.
предполагаю что для таймера СОЖ. Если есть возможность, то неплохо бы эту “фичу” добавить.
Объясните как это должно функционироват, я не специалист по станкам. Мне станок нужен для доработки пластиковых корпусов под электронику и сверления плат. Во все тонкости работы ЧПУ я не внедрялся, делаю пока только то что понимаю.
Я только за - добавить новый функционал, но мне надо понимать с чем его есть.
В чем рисовали плату? Если в Altium Designer то выложите пожалуйста проект. Проще будет с разводкой ковыряться.
Плата в pcad2004, Altium Designer естественно ее поймет. Скиньте свое мыло на мыло в pdf, вышлю(я не любитель держать в открытом доступе “исходники” и библиотеки даже самых простых проектов).
Кому тоже надо в PCAD - на мыло.
Не совсем нравится идея с выходными разьемами на IO. Наверно лучше использовать разьемные соединения. Но это дело вкуса.
Да дело вкуса. Но не забывайте что их там 52. С таким шагом пойдут только типа мелких PWL или IDC с которыми на мой взгляд пользователь больше намучается с пайкой-обжимом чем с пружинными контактами - особенно если надо будет быстро перетыкнуть. Я исходил из этого.
Я бы на выходе еще буфера поставил. Они дорого не стоят а вот пользы от них будет много.
Для тех кто собирает девайс и смотрел схему поясню мой ход мыслей:
Как видно из схемы выводы контроллера на прямую идут на выходные разъемы есть только защитные резисторы. Нету даже подтяжки. Это не удешевление:
- Это пилот, и как первая версия он должен быть максимально комфортный для дальнейшей доработки. Все согласование можно общими усилиями разработать, оттестить снаружи, реализовать во второй версии если есть необходимость.
- Буфера оптроны и т.п. - повторюсь, выводы работают как на ввод так и на вывод, и не группой а каждый отдельно, продумать буферизированные двунаправленные пины можно, но на пилоте я бы не заморачивался - основная задача сейчас софт.
…Объясните как это должно функционироват, я не специалист по станкам. Мне станок нужен для доработки пластиковых корпусов под электронику и сверления плат. Во все тонкости работы ЧПУ я не внедрялся, делаю пока только то что понимаю.
Я только за - добавить новый функционал, но мне надо понимать с чем его есть…
Таймер СОЖ (смазочно-охлаждающие жидкости) в основном нужен для работы с металлами. Вообще то для полноценной работы нужно 2 регулятора (время паузы и время включения насоса). Здесь www.purelogic.ru/doc/PDF/Controller/PLC4x.pdf на стр.8 и здесь stepmotor.ru/…/Плата шагового привода станков с ЧП… можно посмотреть краткое описание и узнать значения времени вкл./выкл. помпы.
Также, если уж думать о универсальности, то неплохо бы аппаратно (в плате) предусмотреть возможность подключения преобразователя ШИМ>в напряжение 0…10В (для регулирования частоты вращения шпинделя).
… Все согласование можно общими усилиями разработать, оттестить снаружи, реализовать во второй версии если есть необходимость.
2. Буфера оптроны и т.п. - повторюсь, выводы работают как на ввод так и на вывод, и не группой а каждый отдельно, продумать буферизированные двунаправленные пины можно, но на пилоте я бы не заморачивался - основная задача сейчас софт.
Желаю Вам в успехов в написании и оттачивании софта, а «железо» – каждый может по своему реализовать. Думаю, что если будет нормальный софт, то этот usb-контроллер для mach3 может стать «хитом» среди «любителей - ЧПУшников»
item.taobao.com/item.htm?id=5794265317 схемки и фото китайского Mach3 USB. Вот ента штучка конечно интересна, еще бы и исходник для АТмеги был бы выложен былоб круто,
а по этой диковинке на русском или хотябы на инглише у кого нибудь есть инфа? по китайски я чето плохо понимаю.