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

Марат
Leg:

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

Насколько я понял вопрос - это устанавливается здесь (на картинке выделено чёрным- правда мач немецкий)

Leg
Марат:

Насколько я понял вопрос - это устанавливается здесь (на картинке выделено чёрным- правда мач немецкий)

Не, это выход из лимитов, это уже работает.

fly55

Ну я если чесно пробовать не буду но помоему на сколько я помню - когда ставил макс. скорость на перемещение домой то мач просто моментально останавливал станок а поскольку портал тяжелый то моторы тупо клинило и ни о каком отъезде там уже речи быть не могло оно шаги безбожно пропускало.

Кстати такая же последовательность принятия базы работает и в Линукс ЕМС2 - думаю это своего рода стандарт.

Когда датчики на разных пинах -теоретически это наверно и не надо - но я где то читал что если этот отъезд делать на совсем медленной скорости то вроде как повышается повторяемость принятия базы - что в принципе логично.

Я бы кстати поучаствовал в тестировании проекта и может быть даже в ковырянии плагина (есть опыт написания плагина под мач.) но пока совсем некогда этим заняться. 😦 Если дело дойдет до группового заказа плат и т.п. то я бы с удовольствием присоединился. Ну а пока буду внимательно следить за проектом.

Leg
fly55:

Ну я если чесно пробовать не буду но помоему на сколько я помню - когда ставил макс. скорость на перемещение домой то мач просто моментально останавливал станок а поскольку портал тяжелый то моторы тупо клинило и ни о каком отъезде там уже речи быть не могло оно шаги безбожно пропускало.

У меня проблема проявляется не на макс скорости, а при настройке в маче макс ускорения. Скорость при этом минимальна, 1% от максимума.

fly55:

но я где то читал что если этот отъезд делать на совсем медленной скорости то вроде как повышается повторяемость принятия базы

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

Vrindavan
Leg:

Если датчики отдельно, функция отъезда никак не отключаема? Т.к. вроде лишняя выходит.

Олег, нужно еще помнить, что в станках под управлением Mach функции Limit switch и Home switch как правило вешают на одни и те же переключатели. Поэтому съезжать с них нужно обязательно.

Leg
Vrindavan:

Олег, нужно еще помнить, что в станках под управлением Mach функции Limit switch и Home switch как правило вешают на одни и те же переключатели. Поэтому съезжать с них нужно обязательно.

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

Тут с лимитами тоже вопрос:
Не нашел в маче “умного” съезда. При оверрайде лимитов как авто так и ручном - чешет куда пошлют, а если случайно старт нажать - несется по концевику. Я считал что логично открывать все направления кроме сработавшего, а при съезде открывать и его и снимать оверрайд.

Это так или есть решение? (В варианте с отдельными лимитами на оси и направления)

Baha
Leg:

Это так или есть решение?

Даже на пром станках приходится, выключать и вручную выталкивать из лимитов. Видал несколько десятков пром станков, везде только один датчик на конце, что для лимита, то и для хоума.

Leg
Baha:

Даже на пром станках приходится, выключать и вручную выталкивать из лимитов.

Вручную - в прямом смысле? Вращать винт руками?
Но сам мач позволяет разблоктровать лимиты и вывести ось джоггингом. После выхода с датчика лимиты переактивируются автоматически. Неудобно только что после разблокировки лимитов - ось может двигаться во все направления даже в сторону сработки.

К стати кнопку разблокировки лимитов и ручной переезд - можно вынести на сам станок(панель оператора), в моем контроллере работает.

Baha

Где штурвалы стоят, а станки с большим полем на рейках и серво, там толчка хватает.

mura

Для тех, кто макетирует.
Схема ложится на всякие макетки для 128-й меги с миниумом проводов.

2Leg имеет смысл на аналоговые входы вывести “крутилки” для скорости подачи и шпинделя - сильно помогает во время подбора режимов реза.

На какую частоту кварца расчитан бутлоадер?
Вопрос возник т.к. в USBKEY кварц 8, а тут 16.

Leg
mura:

На какую частоту кварца расчитан бутлоадер? Вопрос возник т.к. в USBKEY кварц 8, а тут 16.

Бутлоадер стандартный, он прошит в чипе производителем, работает и на 8 и на 16. Но моя прошивка только на 16.

mura:

2Leg имеет смысл на аналоговые входы вывести “крутилки” для скорости подачи и шпинделя - сильно помогает во время подбора режимов реза.

Подумаю на будущее, но у меня жесткие ограничения по времени выполнения кода - шаговый генератор требует высоких скоростей и жесткого реалтайма.
По этой причине осей не 6 а 4, и скорость 50КГц - зато импульсы, такт в такт, даже если по всем осям в один момент.
Считаем: 1/(4*2*50000) = 2,5 мкс - на обработку одного шага, а еще надо ЮСБ поддерживать.

Еще для всех: Длительность импульса степ (вкладка мотор-тюнинг) не настраивается , равна 10мкс. Проверьте работают ли Ваши драйвера на этом импульсе.

Dj_smart

Переделал… для таких динозавров как я:). 7 самых старших IO#25-31 не осилил. Дай бог употребить те что есть. Буфер на движки 74HCT245. Ограничивающих резисторов не ставил, потому как их нет. Процессор приедет на следующей неделе.

Leg

Теперь по софту.
Решил так:
Т.к. тестирующих может оказаться много и ошибки могут быть как с моей стороны так и пользователей, функционал будет добавляться последовательно, все версии будут лежать отдельно. Что бы минимизировать влияние неотлаженного функционала на рабочий (особенно в прошивке МК) и повысить достоверность баг-репортов от тестирующих.Как-то так.

В общем прилизал минимальный функционал в котором я более-менее уверен, типа демоверсия_1:

  • 4 оси, 50 КГЦ, длительность импульса 10мкс, активный уровень - низкий.( Все статично, не настраивается, состояние настроек не имеет значения, кроме скорости и ускорения(мотор-тюнинг))

  • Движение по УП (Само движение должно быть ОК, управляющие G-кода требуют тестирования)

  • Ручное перемещение (Должно быть ОК во всех вариациях, все настраивается, ускорение - замедление тоже работает)

  • Линии ввода вывода. Пока все линии на ввод (После тестирования всей версии в целом добавлю вывод)
    Назначать на линии ввода можно любые функции, но не все реализованы :

  • Нет возврата на базу (уже вроде продумал, но после тестирования)

  • Нет индекса, зонда, управления дугой.

Все остальное по входам вроде есть, ОЕМ- кода для ввода/вывода здесь

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

sotikov
Leg:

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

Только сегодня нашел тему. Присоединяюсь!

Leg
Dj_smart:

Переделал… для таких динозавров как я

Юрий, разьем юсб с какой стороны будет? Снизу я так понимаю цельная земля? Просто в таком варианте логичнее перевернуть его на нижнею сторону чтоб не возится с пропайкой металлизации под разъемом. Но по разводке вижу что оставили разъем сверху. Обратите внимание что бы корпус разъема не коснулся плюсовой дорожки.

Dj_smart
Leg:

Юрий, разьем юсб с какой стороны будет? Снизу я так понимаю цельная земля?

Да, снизу земля. Проволочками пропаял, прозвонил, всё ОК:). У разьёма ведь жёсткие стойки корпуса,впаялось намертво. Пока камень едет, делать всё равно нечего:(.
Олег, тут другое… Опыт шитья простых атмелов есть, и неплохой. А вот с USB на борту- отсутствует напрочь. Чем это делается и как? Фьюзы присутствуют? Можно небольшой ликбез?

Leg
Dj_smart:

Опыт шитья простых атмелов есть, и неплохой. А вот с USB на борту- отсутствует напрочь. Чем это делается и как? Фьюзы присутствуют? Можно небольшой ликбез?

В чип изначально зашит бутлоадер для юсб. У чипа есть аппаратный режим инициализации бутлоадера. Это вывод HWB - для инициализации нужно в момент старта (сброс, подача питания) что бы на этом выводе присутствовал 0 уровень.
Для полностью чистого чипа - бут проинициализируется в любом случае , для уже зашитого надо инициализировать.

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

ВАЖНО! Чип в режиме бут и в рабочем режиме - это два разных устройства юсб, требует разных драйверов, не путайте драйвер для контроллера под мач и драйвер программатора.

Программировать можно ПО от АТМЕL flip - драйвер должен быть в пакете с ним.
Процедура стандартная - нашлось устройство, поставили драйвер, запустили программатор.
Фузы программировать не надо, да у flip этой возможности и нет.

После программирование и сброса - появится новое устройство на усб - собственно контроллер для мача, ставим его драйвер и вперед.

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

sotikov
Leg:

ВАЖНО! Чип в режиме бут и в рабочем режиме - это два разных устройства юсб, требует разных драйверов, не путайте драйвер для контроллера под мач и драйвер программатора.

А через Avrdude разве не прошить при такой схеме подключения? Я одну мегу уже прошивал дудкой по юсб через FT232RL.

Leg
sotikov:

А через Avrdude разве не прошить при такой схеме подключения? Я одну мегу уже прошивал дудкой по юсб через FT232RL.

Смысл?
Шить можно чем угодно.
Я указал самый простой способ без использования дополнительного железа через ПО производителя.

Марат
fly55:

но я где то читал что если этот отъезд делать на совсем медленной скорости то вроде как повышается повторяемость принятия базы - что в принципе логично.

Как пример, на Чпу плазме - стол 6 м длиной - скорость хода домой 24м/мин - на максимальной скорости подъезжает к первому индукционному датчику, сбрасывает скорость, доезжает до концевика (механического), отъезжает на 15-20 см назад и снова наезжает на концевик и обнуляет ось.

Leg

Добавление функционала
Пост 63 содержит описание функционала первой версии.

В эту же версию добавлена конфигурация линий ввода/вывода на вывод. Протестировал, вроде все в норме.

Небольшой лекбез по использованию линий IO:

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

Конфигурация линий вывода происходит автоматически при запуске мача, и вручную в процессе использования стандартным диалогом.

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

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

Как-то так