February 3rd, 2015

компьютеры

Виктория

Или "наконец-то это заработало". После долгих поисков контроллеров для шаговых моторов я, наконец-то, вроде купил то, что мне нужно. Это китайская плата с тремя чипами Тосиба TB6560AHQ и интерфейсом для параллельного порта. Всё в одном. Такую и надо было сразу покупать, а не мучаться дурью с ST и Техасскими Инструментами.

Я, правда, пробовал эти контроллеры потому что планировал сначала управлять шаговиками из Ардуино, а ей команды скармливать через USB. Но тогда бы мне пришлось писать интерпретатор команд g-code (низкоуровневый язык программирования ЧПУ) для Ардуино, и ещё месяц отлавливать в нём баги. В принципе, в написании интерпретатора нет ничего такого сильно сложного. Ведь совершенно необязательно уметь интерпретировать ВСЕ команды g-code, штук десяти вполне хватит.

Основная сложность -- в выведении правильных формул для линий в трёхмерном пространстве.

Вот, например, команда g-code: G01 X1.0 Y2.0 Z3.0 F5.0

Это означает -- иди по прямой линии в точку с координатами 1.0, 2.0, 3.0 со скоростью 5.0.

Придётся всё это приводить в параметрические уравнения прямых в пространстве типа x = x0 + p1 t. И пошагово рассчитывать точки, куда надо привести двигатель.

Ну это-то в принципе, несложно. Почесал репу, вспомнил курс матана и вперёд.

Но в g-code есть не только прямые линии. Коды G02 и G03 -- команды для движения по дуге заданного радиуса или вокруг центра с определёнными координатами, по часовой, или против часовой стрелки соответственно. Ну, дуга -- это, конечно, сложнее, чем прямая линия, но подъёмно. Но и G02, и G03 также могут принимать параметр Z! То-есть, это будут уравнения не дуги, а спирали в трёхмерном пространстве. Я, конечно, люблю математику, но не до такой степени :)))

Поэтому идею с Ардуино я похерил и решил всё делать на базе PC с управлением через параллельный порт. Благо программы-интерпретаторы для PC уже давно написаны, и баги в них уже найдены. Сейчас пробую с LinuxCNC. Параллельного порта на том компьютере, что мне достался бесплатно, не было, так что пришлось докупать PCI карту. Вот тут кстати, зарыта мина, на которую я напоролся -- адрес порта на такой плате не стандартный 0x378. Надо делать sudo lspci -v и смотреть на адреса. На моей карте на том компьютере адрес порта был 0xcc00.

Но после того, как всё наконец-то было настроено, оно, наконец-то, заработало!

cnc_working


Работать-то оно работает, но вот максимальными оборотами, который развивает шаговый двигатель, я не очень впечатлён. Примерно 3 оборота в секунду при питании от +12 вольт. На моём ШВП это примерно 18 сантиметров в минуту. Мягко говоря, небыстро. Даёшь команду крутиться быстрее -- дёргается, но не крутится. Или же крутится, но пропускает шаги, из-за чего сильно вибрирует. Проблем может быть две -- либо надо поднимать напряжение питания двигателя, чтобы ток в обмотках нарастал быстрее (максимально плата принимает +36 вольт), или же не успевает параллельный порт/контроллер. Плата сделана более-менее по уму, с изоляцией оптопарами -- но оптопары также вводят дополнительные задержки.

Так что буду пробовать:

1. Повысить напряжение питания
2. Попробовать не Линукс, а Винду, программу Mach3. Она не бесплатная, но в комплекте с платой-контроллером шла лицензия на неё. Вдруг на Винде будет быстрее?
3. Найти оптопары побыстрее

Если кто ещё чего предложит -- буду рад.

12V -> 24V

К предыдущей записи. Переход на 24 вольта с 12 не дал ровным счётом НИЧЕГО.

Очевидно, дело не в том, насколько быстро нарастает ток в обмотках мотора. Я считал, у меня получалось, что 95% расчётного тока при 12 вольтах при его индуктивности достигаются за 700 микросекунд. Это (теоретически) почти полторы тысячи шагов в секунду или 7 оборотов в секунду (1 оборот = 200 шагов).

Повышение напряжения до 24 вольт даст нам 300 микросекунд на нарастание тока до расчётной величины. Не сказать, что революционное улучшение. Ну, 16 оборотов в секунду вместо 7. И это теоретически -- практически, конечно, меньше -- переключение не мгновенно.

У меня были сомнения в том, что параллельный порт в принципе может такое выдавать. Но Капитан Очевидность намекает, что по паспорту пропускающая способность параллельного порта в режиме EPP составляет два мегабита. Что при 8 сигнальных проводах (то-есть, 1 байт за один раз) подразумевает работу порта на частоте в 260 с копейками килогерц. Достаточно.

dibr, у тебя какие обороты шаговики могут выдать при управлении с параллельного порта? Интересно.

Но похоже, дело таки в контроллере. Попробую сунуть туда оптроны побыстрее.

Ну, если разобраться, даже если не поможет, то сильно смертельного тут нет. Ну, станок будет резать медленнее. Биг дил. Может быть, при помощи этого станка сделаю другой станок, с азартными играми и профурсетками.