В нашей домашней мастерской есть токарный станок по металлу Jet GBH-1340A с устройством цифровой индикации (УЦИ). Мы давненько обсуждали возможность добавить к нему ЧПУ, потому что без компьютерного контроля некоторые виды деталей чрезвычайно сложно изготавливать с высокой точностью. Статья повествует о полученном в этом процессе опыте, включая допущенные ошибки и рекомендации по их избежанию, а также детально раскрывает весь процесс от начальной комплектации до получения готового результата.
Подготовка
Тем не менее к проекту мы подошли с некоторой долей прокрастинации. С самого начала мы выбрали контроллер частотно-регулируемого электропривода для шпинделя, шаговые моторы NEMA 34 и драйверы для осей станка на основе того, что обнаружили в нашем фрезерном станке Tormach 770. Мы также нашли в интернете интерфейсную плату с параллельным портом для управления ЧПУ. Одним из основных критериев выбора всех запчастей была их дешевизна, хотя в конечном счете пришлось переплачивать. Как говорится, скупой платит дважды.
Детали прибыли и примерно на год были отложены в сторону ввиду большого количества других активных проектов. Мы лишь изредка обращались к этому, чтобы сделать кое-какие измерения и продумать конкретное размещение шаговых двигателей. Полноценно же переключиться обратно к реализации задуманного нас заставил внезапный отказ двигателя шпинделя нашего Jet. Вот тогда уже мы достали все заготовленные детали и всерьез занялись переделкой.
Общая сводка по проекту
Затраченное время: множество выходных
Сложность: продвинутая
Стоимость: $2,500–$2,800
Материалы
- Станок металлообрабатывающий с устройством цифровой индикацией (УЦИ);
- 3-фазный асинхронный двигатель Marathon #145THFR5329 / $500, встал на замену сгоревшего двигателя шпинделя;
- Контроллер двигателя частотно-регулируемого электропривода Emerson Commander SK / $450;
- Плата управления ЧПУ для LPT-порта, а именно многофункциональная плата ЧПУ C11G с сайта CNC4PC.com / $68;
- Шаговый двигатель NEMA 34 (2 шт.) для X- и Z-осей, Model 34HS38-3008S / $110 каждый;
- Плата драйвера шагового двигателя (2 шт.) GeckoDrive G213V / $150 каждая;
- Компьютер с ПО Linux для ЧПУ (доступно на linuxcnc.org). Мы использовали древний Pentium 4;
- Фильтр (электромагнитной совместимости) ЭМС Roxburgh для подавления сетевых помех;
- Шарико-винтовая пара 40" с шариковой гайкой / $225;
- Упорные подшипники (4 шт.);
- Опора двигателя (2 шт.), изготовленная из нержавеющей стали и алюминия на Tormach 770 с ЧПУ;
- Соединительная втулка (2 шт.), она же гибкая муфта вала, на Amazon от $5 до $50 в зависимости от размера;
- Корпус блока управления, сталь, размер 24"?16"?10";
- Выключатели для питания, защитного отключения и т.д.;
- Провода: 12ga, 14ga и 22ga;
- Реле, выключатели и т.д. из разобранных частей станка;
Инструменты
- Фрезерный станок ЧПУ, концевые фрезы, расточные оправки, токарные инструменты для обработки креплений двигателя.
- Дрель, отвертки, гаечные ключи, инструменты для зачистки проводов, обжимные устройства и т.д.
- Паяльник и олово.
Весь процесс реконструкции был поделен на три этапа:
- Модификация самого механизма.
- Сборка блока управления.
- Установка и настройка управляющего ПК.
Плата управления для LPT-порта/интерфейсная плата
Модификация станка. Часть 1
Наш 40" станок по металлу до апгрейда
Этот станок имеет следующие характеристики: расстояние между центрами 40 дюймов и максимально возможный диаметр заготовки 13 дюймов. По умолчанию скорость шпинделя контролируется через редуктор, расположенный за шпинделем и приводимый в действие однофазным двигателем 230В. Редуктор изменять не потребовалось; мы просто выбрали оптимальные настройки передачи, и далее при использовании ЧПУ управление скоростью уже будет осуществляться контроллером частотного преобразователя. Выход из строя оригинального однофазного двигателя, фактически, только сыграл нам на руку, так как его замена трехфазным аналогом давала большую степень контроля и позволяла удвоить максимально возможную скорость вращения, которая для умершего мотора составляла 1 750 Об/мин. Самое же удачное, что частотный преобразователь был способен преобразовать 220В из одной в три фазы. Оригинальный блок управления был снят с задней части станка, и некоторые из его контрольных реле вместе с другими деталями мигрировали в новый.
Фрезеровка первой опоры двигателя оси Z
Каретка, удерживающая режущие инструменты, предполагала два варианта управления своим движением по оси Z. (На токарном станке ось Z идет слева направо, а ось X является осью поперечной подачи). Есть основной ходовой винт для общего резания и второй ходовой винт, который вращается синхронно со шпинделем для нарезания резьбы. Оба винта приводятся в движение одним редуктором и задействуются для перемещения каретки с помощью рычагов управления на самой каретке. Мы решили убрать винт нарезания резьбы и стержень, управляющий первичным ходовым винтом. Это позволило нам приводить в движение основной ходовой винт с помощью шагового двигателя (ШД), размещенного на противоположном конце и закрепленного шкивами с ремнем. Основному винту требовалось всего чуть более 50 вращений для перемещения каретки на 1”, и мы рассчитывали, что это даст некоторую степень контроля точности.
Первый вариант привода двигателя оси Z
При помощи фрезерного станка ЧПУ мы изготовили опору двигателя, которая крепится болтами к токарному станку на вертлюге, почти также как генератор в автомобиле устанавливается для натяжения ремня.
Замена поперечной подачи: основная рукоятка оси X
Для оси X, иначе говоря, поперечной подачи, очевидным выбором стал прямой привод от шагового двигателя. Мы сняли рукоятки со станка и фрезеровали еще одну алюминиевую опору. Для смягчения жесткости ходовой винт был присоединен к шаговому двигателю через соединительную муфту.
Мотор с поперечной подачей в сборе: новый шаговый двигатель оси X
В задней бабке токарного станка доработок мы не делали. Она останется под ручным управлением, в то время как компьютер будет выполнять всю тяжелую работу по осям X и Z.
Сборка блока управления
Оригинальный блок был слишком мал и просто не вместил бы все компоненты, необходимые для управления станком. Поэтому мы заказали корпус размером 24"?16"?10", в который бы точно все поместилось. Глубина 10” была, возможно, излишней, но зато обеспечила достаточно пространства для крепления вентиляторов охлаждения и переключателей на боковой стенке. В то же время корпус оказался достаточно жестким, чтобы, будучи установленным на задней стенке станка, удерживать на себе монитор и при этом не падать.
Расположение элементов управления
Мы закрепили все компоненты на листе алюминия толщиной 1/8”, который можно было вынимать из корпуса для удобства доступа. При этом он также выступал в качестве теплоотвода. Для элементов ручного управления шпинделем мы вырезали в листе и корпусе соответствующие отверстия.
Прокладка проводов
Во избежание спутывания проводов мы добавили кабельные каналы с открытыми пазами.
Тщательно промаркированное соединение
В течение всего процесса схема обрабатывалась в Visio, где все соединения тщательно пронумеровывались, а провода для соответствия помечались с обоих концов.
Собранный блок управления (с головой Стэна внутри)
Блок управления в сборе. Первое тестирование
Весь процесс сборки блока управления занял около 60 часов.
Настройка управляющего ПК
Хоть во многих проектах ЧПУ для управления устройством и используют параллельный порт, в них зачастую не используется новейшее наиболее производительное аппаратное обеспечение. Во-первых, многие современные ПК не оборудованы параллельными портами, к тому же многие из современных процессоров оптимизированы таким образом, что хорошо работают с ПО, но малоэффективны в прямой реализации портов ввода/вывода по технологии bit-banging для чувствительного ко времени управления аппаратной частью. Это не проблема для ПК, управляющего принтером, потому что USB снижает степень нагрузки, но в нашем случае с фрезером на ЧПУ неверная конфигурация оборудования/ПО может привести к тому, что рез будет сделан в десятках тысячных долей от места, куда указывал G-code. (Например из-за пропуска шагов, прим. переводчика).
К счастью, для основных возможностей программного обеспечения ЧПУ есть списки протестированных компьютеров, так что подбирать было уже куда легче. Мы выбрали старый Dell Optiplex с процессором Pentium 4 и ОС LinuxCNC. Два таких ПК (один на запчасти) мы удачно приобрели в местном магазине подержанных компьютеров по $30 за каждый.
LinuxCNC предлагает очень широкий набор вариантов управления и отлично поддерживается сообществом компьютерных энтузиастов. Следуя инструкциям с сайта, установить LinuxCNC оказалось достаточно просто, и эта ОС отлично запустилась на нашем древнем ПК. С помощью программы StepConf мы смогли настраивать отдельные контакты параллельного порта любым нужным нам образом. Однако, как оказалось, лучше было настроить LinuxCNC до покупки каких-либо управляющих устройств, так как эта ОС предлагала предустановленные конфигурации для нескольких типов оборудования, о некоторых из которых во время начальных закупок мы попросту не знали.
Все это не заняло много времени, и наша плата для LPT-порта при нажатии клавиш уже светилась как новогодняя елка, разве что магический дым не появлялся. И вроде бы все должно было быть четко, но… ничего не работало.
Скупой платит дважды
Все-таки нечестно говорить, что не работало ничего. Были намеки на практически правильное функционирование некоторых компонентов. Один из ШД реагировал на команду повернуться единственным глухим звуком. На драйвере этого двигателя даже светился светодиод зелёным вплоть до этого момента, после чего переключался на красный. Драйвер другого ШД демонстративно горел красным сразу при подаче питания и продолжал пялиться на нас, словно глаз Саурона.
Мы просмотрели всю проводку. Мы сравнили свой вариант ее прокладки с вариантом в Tormach. Здесь не было проблем. И только позже проверив с помощью позаимствованного осциллографа выход платы управления ЧПУ мы нашли первую неполадку: напряжение выходного сигнала поднималось только до половины от необходимого драйверам ШД уровня. Купленная нами за $20 плата оказалась просто мусором. Мы решили на этот раз не скупиться и нашли на другом сайте еще одну плату стоимостью уже в $99. По ее прибытии выяснилось, что маркирована она другим сайтом: CNC4PC.com. При этом она также на 6 ревизий отставала от последней предлагаемой версии. Напряжение эта плата обеспечила достаточное, и мы рассчитывали, что двигатели заработают лучше. Но они молчали…
Я уже упоминал, что многое из купленного нами для собственного блока управления было выбрано по образцам из имеющегося фрезерного станка. Эти драйверы ШД были той же модели MA860H, что и в нем. Так что, рисуя в воображении счета на ремонт этого фрезера, мы начали заменять подозреваемые детали, устанавливая их в него. Шаговые двигатели были первыми, и к нашему облегчению оба заработали отлично. Следующими на проверку отправились их драйверы, и вот из них уже ни один не функционировал. Глаз Саурона продолжал насмехаться над нами. Заподозрив, что это был наш косяк, мы заказали еще пару драйверов той же модели. Оба оказались недееспособны сразу по прибытии. Один вообще отказался работать во фрезерном станке, а второй обеспечивал вращение, но только в одном направлении. Очевидно, что эти драйверы не являлись надежным решением.
Франкенштейн-драйвер двигателя: новые GeckoDrives, установленные в каркас нерабочего драйвера
Получше изучив информацию в интернете, мы вышли на модели GeckoDrive, которые полноценно оправдали наши ожидания. Эти платы отлично заработали сразу же после подключения, и обе прекрасно вписались в одно посадочное место, где ранее стоял один дешевый драйвер. При должном напряжении этим платам требовался отвод тепла, которым по умолчанию они оборудованы не были. Оставшиеся же нерабочие аналоги как раз оснащались теплоотводами и вентиляторами, которые оказались единственной рабочей их частью. В итоге мы просто встроили платы GeckoDrive в опустошенный каркас мертвого драйвера, решив таким образом сразу две проблемы.
Детали управления в сборе, но пока без корпуса
Новая интерфейсная плата оказалась намного крупнее изначальной, и теперь мы могли установить ее на место одного из оригинальных драйверов шаговых двигателей.
Небольшая заметка по поводу драйверов: они бывают аналоговыми и цифровыми. Вы можете найти на YouTube видео сравнения их в работе. На видео демонстрируется, и мы это подтверждаем, что цифровые экземпляры обеспечивают намного более плавную и тихую работу двигателя. Так что их повышенная стоимость себя оправдывает.
Сборка всего воедино
Все было на своих местах. Мы могли управлять ШД при помощи кнопок UI или инструкций G-code, а с помощью элементарного крепления двигателей к ходовым винтам можно было перемещать каретку вдоль обеих осей.
Мы не знали точного отношения скорости вращения ходовых винтов к боковому смещению, так что правильные установки для программы StepConf искали методом проб и ошибок. Эта программа запрашивает несколько значений: количество шагов двигателя на оборот, микрошаг драйверов, соотношение зубьев шкивов и шаг ходового винта. Если вы не уверены в этих значениях, имейте ввиду, что они перемножаются в одно значение, которое означает «шаги на дюйм». Если все эти значения кроме одного (не важно какого) установить на 1, то в итоге оставшееся значение будет большим числом, которое можно подстроить с отличной точностью.
Для этого мы следовали такому алгоритму:
- Двигаясь слева направо, переместить каретку на приблизительную известную позицию. В UI ЧПУ сбросить смещения, установив значение позиции как 0.
- Измерить расположение каретки.
- С помощью G-code передвинуть каретку на 1” дальше вправо, то есть к Z1.
- Измерить новое положение каретки и посчитать разницу в дюймах.
- Разделить значение «шаги на дюйм» на пройденное кареткой расстояние, получив новое значение «шагов на дюйм». Например, если количество шагов на дюйм равно 20 000, и вы производите смещение на 1.015”, то новое значение будет 20 000/1.015 или 19 704 шагов на дюйм.
- Повторять процесс, пока команда выполнить смещение на 1” не будет давать конкретно смещение на 1”.
Очень важно делать измерения после перемещения каретки только в одном направлении, потому что ходовой винт будет наверняка иметь некоторый люфт. Если проводить измерение после перемещения в противоположном направлении, то результат будет отклоняться вплоть до величины люфта.
Цифровой индикатор по-прежнему был прикреплен к токарному станку, что сильно упрощало процесс сравнения вводимых на ПК инструкций с фактическим перемещением каретки. Следуя разработанному нами алгоритму, мы должны были получить значение шагов на дюйм, которое бы давало согласованные результаты независимо от оси, на которой проводились измерения. Этот подход отлично работал для оси X, но при измерении оси Z результаты варьировались в диапазоне до 0.012”, что зависело от места проведения измерений. В чем-то крылась серьезная ошибка.
Модификация станка. Часть 2
Ходовые винты могут быть неточными, но винт должен быть совсем плох, чтобы отклонение то возрастало, то опять уменьшалось вдоль всех 40”. Проблема была в том, что помимо ходового винта в движении по оси Z были задействованы и другие шестерни, а также червячные передачи. Нам нужно было учесть неточность во всем этом связанном механизме. Люфт оси Z был таким же ужасным. В LinuxCNC есть способы компенсировать это, но для этого потребовалось бы вычислить ошибку в каждой точки вдоль всех 40” оси. Достичь желаемой точности было практически невозможно. Передаточный механизм нужно было менять.
Замеры места для расположения двигателя оси Z
Прецизионная шарико-винтовая пара (ШВП) может практически полностью устранить люфт, вопрос лишь в цене. В одной компании ШВП предлагалась аж за $3 500. В конечном итоге мы приобрели ШВП и гайку за $225 в Roton Products, расположенной в Миссури. Дополнительно потребовалась ее подгонка под купленные ранее подшипники, что в местной шлифовальной мастерской обошлось еще в $336. У данной ШВП люфт составлял уже всего 0.007”, но он хотя бы не изменялся по ходу длины винта, что позволило легко это компенсировать в LinuxCNC.
Вторая опора двигателя оси Z: середина вырезана фрезой, обработана и смонтирована вместе с ШВП
Мы также решили убрать ремень со шкивом и сделать новое крепление для ШВП, чтобы можно было реализовать прямой привод от ШД.
Крепление бабки ШВП оси Z
Каждый конец вала удерживается парой упорных подшипников, закрепленных один к одному для блокировки подвижности с одновременным сохранением вращения. Сам вал закреплен между этими двумя опорами подшипников под некоторым натягом.
Модифицированный токарный станок с новыми опорами, подготовленными для ШД
Любому ЧПУ требуются конечные выключатели, чтобы машина могла находить базовую позицию на каждой оси.
Монтирование конечного выключателя
К счастью, когда мы разобрали блок ручного управления, то обнаружили два переключателя без фиксации, идеально подходящих для этой цели, которые разместили в удобном положении для каждого приводного винта.
Прокладка проводов обычно осуществляется через кабельные каналы, но для оси X мы этого не стали делать, просто позволив проводам, идущим от блока управления сзади к оси X, запитываемой спереди, свободно свисать под станком.
Последние штрихи
Токарный станок с ЧПУ в действии. Тестовый запуск
Теперь у нас был полностью функционирующий токарный станок с ЧПУ. LinuxCNC работала отлично, хоть ее UI и напоминал приложение для старой Windows 98.
Скриншот LinuxCNC (Ни одна программа не загружалась, пока я не выяснил, как заставить ее игнорировать то, что она не подключена к станку)
К счастью, немного пошерстив форумы мы нашли два альтернативных UI, которые выглядели и работали на порядок лучше.
И как это обычно бывает с Linux, готовьтесь к чтению множества форумов и документации, а также редактированию текстовых файлов для получения нужной вам конфигурации.
Приспособление для заточки ножей. Рукоятки изготавливаются на токарном станке ЧПУ!
Готовое приспособление для заточки
В дальнейшем мы планируем кое-какие доработки:
- В результате этого проекта станок лишился возможности нарезать резьбу. Тем не менее LinuxCNC поддерживает эту возможность, если удастся реализовать обратную связь от оптического датчика скорости шпинделя.
- Будет очень кстати добавить жидкостное охлаждение СОЖ (смазочно-охлаждающей жидкостью), пусть даже для открытого станка, работающего на низких оборотах.
- Можно ограничить люфт, заказав новые шариковые гайки, у которых каждый четвертый или пятый шарик имеет другой размер, что позволяет уменьшить погрешность между шарико-винтовой парой и гайкой.
- ШВП необходимо защитить. Для этого нужно изготовить подходящие чехлы или хотя бы кисти для ее очистки.
dlinyj
Отличная статья! Большое спасибо за перевод. Крайне интересно посмотреть на авторов данной статьи, весьма непростые ребята:
Stan Adermann
Vern Adermann
AlekseiBorisov
Два инженера с 20 летним стажем не смогли запустить Лидшайновские драйвера, и спалили плату управления? Наверное, им надо перечитать что такое выход с открытым коллектором и как рассчитывается нагрузочный резистор…
Daddy_Cool
Ну все ж в разном специалисты. Я вот тоже не знаю что такое «выход с открытым коллектором». У нас есть ЧПУ-фрезер который не проработав и часов 30 за год стал сбиваться по непонятным причинам, т.е. фреза внезапно уезжала куда считала нужным. Производитель станка сказал, что "у платы уходят электрические параметры", поэтому они больше они такие платы не делают, а гарантия уже кончилась. Пришлось самим поменять всю начинку — и плату управления и драйверы. Но обошлось в три раза дешевле чем купить новый блок управления.
AlekseiBorisov
Ну, не знаю как вам объяснить. Например программист применил целочисленный тип данных, а потом удивляется что точность вычислений немного не та. Надо менять компьютер и операционку на 64х битную, да.
Есть базовые вещи, которые объясняются в школьном радиокружке. Или человек сам до них доходит зная закон Ома, или двоичную арифметику в случае программирования. А если делать тупо по мануалу, то случаются вот такие не предусмотренные мануалом косяки.
У драйверов Лидшайна внешнее питание ключей через резисторы 270 Ом (рассчитано на 5 вольт), а у GeckoDrive внутреннее питание этих ключей от внутреннего источника. Соответственно если подключить Лидшайны к шине 12, 24 итд вольт без дополнительного резистора, то что-нибудь сгорит.
Daddy_Cool
А! Ну тут достаточно знать, что не надо подключать девайс рассчитанные на 5В к питанию 12В. Ну а если хочется, то да — закон Ома в студию и сжигать лишние пять вольт.
У нас был штатный блок питания где были разные напряжения, а что мы поставили я уже не помню. Кажется «Лидшайны» казались дорогими, но может и их в конце-концов.
dlinyj
Будто вы не ошибаетесь и не совершаете глупых ошибок на ровном месте.
AlekseiBorisov
Бывало конечно, поэтому и хихикаю. Я просто прикинул порядок действий и представил как оно было.
Там интерфейсная плата запитывается от 12-24 вольт, а драйвера от 5 в.
Скорее всего подключили всё на 12 вольт (а может и на 24, не могу рассмотреть второй блок питания на Дин-рейке). При включении ключи на плате и оптроны в драйверах перегреваются и сгорают (кто раньше, обычно оптроны). После этого они меняют плату, которая всё равно не может управлять сгоревшими оптронами. Потом меняют драйвера — опять сгорают. Они ставят эти драйвера на работаютщий фрезер — не работает.
Люди делают справедливый вывод, что виноваты драйвера, берут другой фирмы с внутренним питанием 5в, и вот всё заработало!
Int_13h
Вспоминается недавняя история. Прислали мне платы для модернизацыи оборудования. Втыкаю по инструкцыи, подаю питание, слышу взрыв и запах. Открываю корпус — в микроконтроллере явная дырка, а не технологичнское отверстие.
Ну, оборудование с платой на завод (хорошо, оно небольшое, а не шкаф под тонну весом). И рекламацыю по емэйлу.
Производитель оперативно, не дождавшысь оборудования, в ответ «это вы накосячили чего то, у нас в офисе лампочка работает нормально». Потом притихли.
Потом сообщают: приехало оборудование, берут со склана новую плату, втыкают — бабах! Ну не может такого быть! Берут еще одну плату — бабах! И так раз семь подряд. Потом, когда платы под рукой кончились, открыли конструкторскую документацыю :)
Оказалось все до банального просто. С новой ревизией плат поменяли распиновку шлейфа и при сопряжении старой и новой плат напряжение 12В подавалось на один из входов микроконтроллера.
Moskus
А что, по-вашему, в такой ситуации следует сказать? Или вообще нужно молчать и на ошибки не указывать?