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

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:

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

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

mura
Leg:

Вываливается сам мач? Должет просто писать в статусе “Communication ERROR”

Такое сообщение. Драйвер программатора как и флип стоят давно.
Устройство в системе видно, показано без ошибок.
система ХР sp2, тюнинг не делал (оставил как для LPT).
Пины не назначал - оставил как было.(может тут что?)

Leg

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

mura:

Драйвер программатора как и флип стоят давно.

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

mura:

тюнинг не делал (оставил как для LPT).

Если частота степов ( (Скорость/60) * Степ пер ) не превышает 50000 то можно не делать. Если больше - надо сделать.

mura:

Пины не назначал - оставил как было.(может тут что?)

Нет, пины никак не должны влиять, пины моторов жесткие и никакой настройкой их не изменить.

Dj_smart

mura у меня подобная картинка вываливалась при… Короче грешил на разьём, выломал, запаял кабель, и снова… Резистор 22 ома. Хотел звонился, хотел нет. Заменил, сейчас устойчиво.

mura

Олег, у нас с Dj версии одинаковые?

Leg

Не знаю. Я не спрашивал.
Я тестирую на R2.63 и на последней R3.042.040. На разных машинах под ХР и 2000.
Думаю Юрий увидит этот пост и скажет какая у него версия. Но вроде версия влиять не должна. Я даже не знаю что предложить, попробуй разве что на другой машине.

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

Еще как вариант может у тебя юсб-порт 1.0? Хотя на 1.0 я тоже тестировал, но всего один раз.

mura:

Олег, у нас с Dj версии одинаковые?

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

Еще вопрос: плагин и прошивка из одного архива?Самого первого? Я там докидывал отдельно прошивки и если ты брал последнюю то с первым плагином она работать не будет, что будет даже не знаю, не проверял.
В общем плагин и прошивка должны быть из первого архива на который я тебе ссылку давал.

Как только будет отлажено движение выложу исправленную прошивку чтоб не плодить промежуточных. Но самая первая - рабочая в плане работы с мачем.

Dj_smart
Leg:

на последней R3.042.040.

Такая-же стоит.

mura

поставлю на нот 040 и отпишусь

Leg
mura:

поставлю на нот 040 и отпишусь

ОК, жду, а то я уже мозг сломал ,но чем помочь так и не придумал… не должно быть.

mura

Испытал на ноте и еще на обычном компе на версии 040 - результат одинаков - на кнопки движения не реагирует.
При старте пишет что контроллер найден, а после нажатия на стрелку через несколько сек. статусит Communikation error.
Заметил что на разных компах названия группы устройств разное
PCB-kit CNC controller и LibUSB-Win32 Devices, но само устройство KitStep.