Cnc Контроллер

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

Постарался написать только те моменты, которые лично мне показались важными.

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

Регулярно сталкиваясь, с необходимостью сделать ту или иную мелкую «штучку» сложной формы, первоначально задумался о 3D принтере. И даже начал его делать. Но почитал форумы и оценив скорость работы 3D принтера, качество и точность результата, процент брака и конструкционные свойства термопластмассы, понял, то это не более чем игрушка.

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

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

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

После первоначальной эксплуатации заказал шпиндель с водяным охлаждением и решил сделать контроллер для автономной работы на самом дешевом варианте STM32F103, продаваемом в комплекте с 320x240 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. Контроль пропуска шагов с контролем отклонение траектории от расчетной.

Похожие страницы: