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

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 поставлю буфера. Этого должно хватить.

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

boldive
Leg:

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

Тут идея другая. Когда работают движки с током до 2-3А то помех мало и с ними можно бороться малой кровью. А вот с движками NEMA34 (токи >4А) и выше уже не все помогает. Есть желание перевести все контрольные сигналы (STP, DIR, Enable) на напряжение не ниже 12В а лучше все 24В. Limit and Home можно оставить на 5В. Тут выхода AVR бесполезны, а вот буффера с открытым коллектором типа SN7407D то что надо.

А с развязкой по USB действительно не стоит сейчас напрягаться. Всегда можно его спаять как отдельный переходник.

Еще хотелось-бы влепить на плату пару релюшек на управление “пока не знаю чем”, но тогда процесс с платой затянется надолго. Пусть первый вариант будет без этого. В качестве выходных разъемов поставлю привычные DB9-F. Они продаются “двухэтажными”, тоже место на плате но компактнее. И со станком так удобнее соединяться.

Аэробус
Leg:

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

А на этой штуке ISO721 можно? Полоса 150Мb/s. Они вроде взаимозаменяемы?

mura

как будет прошивка опробую развязку, делал как внешний блок развязки USB на ADUM4160, с FTDI работает.

Leg
mura:

как будет прошивка опробую развязку, делал как внешний блок развязки USB на ADUM4160, с FTDI работает.

Прошивка есть. Я же говорил у когда будет железо пишите выложу, до того времени еще покодю.
Если есть железо, вернусь с работы вечером и выложу.

mura

Первый блин.
Контроллер спаял на плате от кита на мегу128, прошился нормально через USB.
Плагин стал нормально.
При старте без девайса мач загружается, но при попытке “поездить” вываливается по ошибке.
При подключеном девайсе нажимая любую из кнопок движения координата инкрементируется по всем осям одновременно, при этом импульсы СТЕПа на всех выходах,
но на рабочем выходе идут пачками, на остальных одиночные с частотой 500Гц.
На всех ДИРах положительные импульсы с частотой 500Гц.
При попытке запустить на выполнение прогу МАЧ вешается намертво, да так что комп выключается только кнопкой.
Версия МАЧа R3.042.20
Лед тронулся…

Leg

Поставил R3.042 таких глюков не вижу. Зависания нет. Будем искать.
Параллельно идут тесты у DJ_smart там таких проблем тоже не видно, есть проблемы с плавностью перемещения на малых частотах и срывах в момент ускорения, счас решаю.

mura:

При старте без девайса мач загружается, но при попытке “поездить” вываливается по ошибке.

Вываливается сам мач? Должет просто писать в статусе “Communication ERROR”
Драйвер ставился из архива? С драйвером программатора не перепутали? Операционка какая?

mura:

При подключеном девайсе нажимая любую из кнопок движения координата инкрементируется по всем осям одновременно,

После установки девайса мотор-тюнинг делали? Такое может быть только если превышена частота степов 50Кгц в предыдущей установке. После мотор-тюнинга плагин не позволит установить большую частоту.

mura:

При попытке запустить на выполнение прогу МАЧ вешается намертво, да так что комп выключается только кнопкой.

Вообще теряюсь… С ЛПТ этот же мач ведет себя нормально?