ЧПУ фрезерный станок с автономным контроллером на STM32

в 10:32, , рубрики: CAD/CAM, cnc, diy или сделай сам, open source, stm32F, stm32f103, программирование микроконтроллеров, чпу, метки: , ,

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

Ссылка на исходники контроллера и настроенную оболочку Eclipse+gcc и пр. лежат там же где ролик:

История создания

Регулярно сталкиваясь, с необходимостью сделать ту или иную мелкую «штучку» сложной формы, первоначально задумался о 3D принтере. И даже начал его делать…
Но почитал форумы, и оценив скорость работы 3D принтера, качество и точность результата, процент брака и конструкционные свойства термопластмассы, понял, то это не более чем игрушка.
Заказ на комплектующие из Китая пришел за месяц. И уже через 2 недели станок работал с управлением от LinuxCNC. Собирал из всякой фигни, что была под рукой, поскольку хотелось побыстрее (профиль + шпильки).
Собирался потом переделать, но, как оказалось, станок получился достаточно жесткий, и гайки на шпильках не пришлось подтягивать ни разу. Так что конструкция осталась без изменений.

Начальная эксплуатация станка показала что:

  1. Использовать в качестве шпинделя бормашинку “china noname” на 220V не лучшая идея. Перегревается и жутко громко работает. Боковой люфт фрезы (подшипников?) ощущается руками.
  2. Бормашинка Proxon работает тихо. Люфт не ощутим. Но перегревается и выключатся через 5 минут.
  3. Компьютер, взятый на время, с LPT двунаправленным портом — не удобен. Взят на время (найти PCI-LPT оказалось проблемой). Занимает место. И вообще..

После первоначальной эксплуатации заказал шпиндель с водяным охлаждением и решил сделать контроллер для автономной работы на самом дешевом варианте STM32F103, продаваемом в комплекте с 640x320 LCD экраном.
Почему народ до сих пор упорно мучает 8-и разрядные ATMega для относительно сложных задач, да еще через Arduino для меня загадка. Наверное любят трудности.

Разработка контроллера

Программу создавал после вдумчивого просмотра исходников LinuxCNC и gbrl. Однако ни те, ни те исходники расчета траектории не взял. Захотелось попробовать написать модуль расчета без использования float. Исключительно на 32-х разрядной арифметике.
Результат меня устраивает для всех режимов эксплуатации и прошивку не трогал уже давно.
Скорость максимальная, подобранная экспериментально: X:2000мм/мин Y:1600 Z:700 (1600 step/mm. режим 1/8).
Но ограничена не ресурсами контроллера. Просто выше уже мерзкий звук пропуска шагов даже прямых участках по воздуху. Бюджетная китайская плата управления шаговиками на TB6560 не самый лучший вариант.
Фактически скорость по дереву (бук, 5мм заглубления,d=1мм фреза, шаг 0.15мм) больше 1200 мм не ставлю. Возрастает вероятность поломки фрезы.

В результате получился контроллер со следующим функционалом:

  • Подключение к внешнему компу как стандартное usb mass storage device (FAT16 на SD карте). Работа с файлами стандартного формата G-code
  • Удаление файлов через пользовательский интерфейс контроллера.
  • Просмотр траектории по выбранному файлу (насколько позволяет экран 640x320) и расчет времени выполнения. Фактически эмуляция выполнения с суммированием времени.
  • Просмотр содержимого файлов в тестовом виде.
  • Режим ручного управления с клавиатуры (перемещение и выставления «0»).
  • Запуск выполнения задания по выбранному файлу (G-code).
  • Приостанов/продолжить выполнение. (иногда полезно).
  • Аварийный программный стоп.

Контроллер подключатся к плате управления шаговиками через тот же разъем LPT. Т.е. он выполняет роль управляющего компьютера с LinuxCNC/Mach3 и взаимозаменяем с ним.

После творческих экспериментов по вырезанию собственноручно нарисованных рельефов на дереве, и экспериментов с настройками ускорений в программе, захотел дополнительно еще и энкодеры на осях. Как раз на e-bay нашел относительно дешевые оптически экодеры (1/512), шаг деления которых для моих ШВП был 5/512= 0.0098мм.
Кстати, использование оптических энкодеров высокого разрешения, без аппаратной схемы работы с ними (в STM32 она есть) – бессмысленно. Ни обработка по прерыванию, ни, тем более, программный опрос никогда не справятся с «дребезгом» (это говорю для любителей ATMega).

В первую очередь, я хотел для следующих задач:

  1. Ручное позиционирование на столе с высокой точностью.
  2. Контроль пропуска шагов с контролем отклонение траектории от расчетной.

Однако, нашел им еще одно применение, пусть и в довольно узкой задаче.

Использование энкодеров для коррекции траектории станка с шаговыми двигателями

ЧПУ фрезерный станок с автономным контроллером на STM32 - 1
Заметил, что при вырезании рельефа, при задании ускорения по Z больше определенной величины, ось Z начинает медленно, но уверенно ползти вниз. Но, время вырезания рельефа при этом ускорении на 20% меньше. По окончанию вырезания рельефа 17x20 см с шагом 0.1мм фреза может уйти вниз на 1-2 мм от расчетной траектории.
Анализ ситуации в динамике по энкодерам, показал, что при подъеме фрезы иногда теряется 1-2 шага.
Простой алгоритм коррекции шагов с использованием энкодера дает отклонение не более 0.03 мм и позволяет уменьшить время обработки на 20%. А даже 0.1 мм выступ на дереве заметить сложно.

Конструкция

ЧПУ фрезерный станок с автономным контроллером на STM32 - 2
Идеальным вариантом для хоббийных целей посчитал настольный вариант с полем чуть больше чем A4. И до сих пор мне этого хватает.

Подвижный стол

Для меня до сих пор остается загадкой, почему все выбирают для настольных станков конструкцию с подвижным порталом. Единственное ее преимущество – возможность обработать по частям очень длинную доску или, если приходится регулярно обрабатывать материал вес которого больше веса портала.
За все время эксплуатации ни разу не было необходимость выпилить по частям рельеф на 3-х метровой доске или сделать гравировку на каменной плите.
Подвижный стол обладает следующими преимуществами для настольных станков:

  1. Конструкция проще и, в общем случае, конструкция более жесткая.
  2. На неподвижный портал навешиваются все потроха (блоки питания, платы и пр.) и станок получается компактнее и удобнее для переноски.
  3. Масса стола и куска типичного материала для обработки существенно ниже чем масса портала и шпинделя.
  4. Практически исчезает проблема с кабелями и шлангами водяного охлаждения шпинделя.

Шпиндель

Хотел бы заметить, что данный станок не для силовой обработки. ЧПУ станок для силовой обработки проще всего сделать на базе обычного фрезерного станка.
На мой взгляд, станок для силовой обработки металла и станок с высоко оборотистым шпинделем для обработки дерева/пластмасс — это совершенно разные типы оборудования.
Создать в домашних условия универсальный станок как минимум не имеет смысла.

Выбор шпинделя для станка с данным типом ШВП и направляющими с линейными подшипниками однозначен. Это высоко оборотистый шпиндель.
Для типичного высоко оборотистого шпинделя (20000 об/мин) фрезеровка цветных металлов (про сталь даже речи не идет) – это экстремальный режим для шпинделя. Ну, разве что очень надо и тогда съем по 0.3 мм за проход с поливом ОЖ.
Шпиндель для станка рекомендовал бы с водяным охлаждением. С ним слышно во время работы только «пение» шаговых двигателей и бульканье аквариумного насоса в контуре охлаждения.

Что можно сделать на таком станке

В первую очередь у меня ушла проблема корпусов. Любой формы корпус фрезеруется из «оргстекла» и по идеально по гладким срезам склеивается растворителем.

Стеклотекстолит отказался универсальным материалом. Точность станка позволяет вырезать посадочное место под подшипник, в которое он холодный зайдет, как положено с легким натягом, а после уже не вытащить. Шестерни из текстолита отлично вырезаются с честным эвольвентным профилем.

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

Вот только ювелирку не пробовал. Негде опоки прокаливать/плавить/лить. Хотя брусок ювелирного воска ждет своего часа.

Автор: mmMike

Источник

Поделиться

* - обязательные к заполнению поля