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

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:

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

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

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

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

Как-то так

Dj_smart

Я тут мелочёвку растыкал… Есть вопрос: конденсатор на кнопке сброса стоит паралельно подтягивющему резистору. На “обычных” МК он ставится паралельно ей, чтобы обеспечить автоматический сброс привключении питания. Тут не так?

И ещё одно. У меня на компах нет USB2. Втыкаю флэшку и пишет такое, можно мол было бы быстрее. Важно?

Leg
Dj_smart:

Есть вопрос: конденсатор на кнопке сброса стоит паралельно подтягивющему резистору. На “обычных” МК он ставится паралельно ей, чтобы обеспечить автоматический сброс привключении питания. Тут не так?

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

Dj_smart:

И ещё одно. У меня на компах нет USB2. Втыкаю флэшку и пишет такое, можно мол было бы быстрее. Важно?

Устройство работает в полноскоростном режиме 12Mbit (Фактически это 1.0), про флешку видимо пишет может работать на высокоскоростном - 480Мбит.
Короче должно, у меня на хабе на клавиатуре работает, на флешки тоже ругается.

boldive

Занялся опторазвязкой. Ставить ее на выходы нет смысла, слишком много компонентов добавляется и стоимость резко возрастает. Можно поставить развязку на саму шину USB. Вот готовое решение со свсеми платами. Потом еще подумал и решил обойтись вот такой штучкой NUP2202W1. Дешевая, простая и специально предназначенная в том числе для работы с шиной USB. Гальванической развязки минусовых шин компьютера и станка не получится, но в данном случае может в этом и необходимости нет. Поработаем, посмотрим. На выходе AT90USB1287 поставлю буфера. Этого должно хватить.

Сейчас доделываю схему и развожу плату.

Leg
boldive:

Можно поставить развязку на саму шину USB. Вот готовое решение со свсеми платами.

Сам смотрел в эту сторону, причем на том же решении. Но ставить думал снаружи как отдельное устройство.

boldive:

Потом еще подумал и решил обойтись вот такой штучкой NUP2202W1

Можно и просто два двусторонних супрессора, но это решение мне тоже нравится, только все это имеет смысл при отдельном питании платы(не от юсб). Хотя если от юсб но без развязки от драйверов тоже лишним не будет.

boldive:

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

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

boldive:

На выходе AT90USB1287 поставлю буфера. Этого должно хватить.

Замечу что буфера имеют смысл как предохранители от выгорания дорогостоящего камня(огонь на себя), а нагрузочная способность выходных линий АВР и так очень высока.