Главная » Станки своими руками

Чпу станок своими руками на базе arduino



Разное Создание станка с ЧПУ из доступных деталей с минимум слесарной работы

konstantin1970 12 февраля 2015 в 08:33 72,9k

Продолжаем обзор деятельности нашего Хакспейс-клуба .

Мы давно мечтали купить в наш клуб ЧПУ станок. Но решили его сделать сами. С нуля, начиная от железа и кончая программного обеспечение (прошивка контроллера и управляющая программа). И у нас это получилось.

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



Контроллер мы выбрали Arduino Mega 2560 и что бы много не думать, драйвер шаговых двигателей использовали RAMPS 1.4 (как у RepRap 3D принтера).

Программу контроллера писали по алгоритму метода конечных автоматов. Последний раз я о нем слышал лет 20 назад в институте, не помню по какому предмету изучали. Это была очень удачная идея. Код получился маленький и легко расширяемый без потери читабельности (если в дальнейшем понадобится не только оси XYZ, или использовать другой G-код). Программа контроллера принимает с USB порта G-код и, собственно, дает команду двигателям осей XYZ двигаться в заданном направлении. Кто не знает, G-код — это последовательность конструкций типа G1X10Y20Z10, которая говорит станку переместится по оси X на 10 мм, Y на 20 мм и Z на 10 мм. На самом деле, в G-коде много различных конструкций (например, G90 — используется абсолютная система координат, G91 — относительная) и много модификаций самого кода. В интернете много о нем описано.

Подробнее остановлюсь на описание скетча (прошивка контроллера).

Вначале в описании переменных прописываем, к какому выходу контроллера будет подключены двигатели и концевые выключатели.

В этом коде метода конечных автоматов переменная принимает значение ждать с USB порта первый байт, во второй конструкции case производится проверка наличия данных и переменная _s принимает значение get_cmd. Т.е считать данные с порта.


Далее считываем все, что есть в порту, переменная _s устанавливается в get_tag; т.е. переходим на прием буквенного значение G – кода.

полный код можно посмотреть здесь.

Завершается конечный автомат конструкцией case run_cmd: где собственно и подается управляющий сигнал на двигатель. Управлением двигателем можно было бы использовать библиотеку #include Stepper.h но мы написали свою функцию(char impstep -для биполярного двигателя, void UNIimpstep — униполярного ), что бы можно было не ждать пока один двигатель отработает, что бы послать сигнал другому. Ну и на будущее, отдельная процедура позволит гибче использовать возможностями шагового двигателя. Например, если будем использовать другой драйвер двигателя программно задавать полушаг или шаг двигателя. В нынешнем исполнении с RAMPS получается 1/16 шага. Если кому интересно, про управление шаговыми двигателями можно отдельную статью часами писать.

Теперь немного о железе.

Двигатели использовали 17HS8401, самые мощные из NEMA17, которые смогли на ebay найти. Там же купили подшипники и оптические концевики.


Все остальное отечественное, родное. Оригинальная идея с направляющими, сделали их из длинных хромированных ручек для мебели, они как раз диаметром 12 мм под подшипники, длиной они продаются до метра, и прочности вполне хватает. В торцах ручек просверлили отверстия и метчиком нарезали резьбу. Это позволило просто болтом надежно соединить направляющие с несущим конструктивом. Для оси Z так вообще ручку прикрепили к пластине конструктива целиком, Вал продается в любом строительном магазине как шпилька с резьбой любого диаметра. Мы использовали на 8 мм. Соответственно и гайки 8 мм. Гайку с подшипником и несущим конструктивом оси Y соединили с помощью соединительной скобы. Скобы купили в специализированном магазине для витрин. Видели наверно такие хромированные конструкции в магазинах стоят на которых галстуки или рубашки висят, вот там используются такие скобы для соединения хромированных трубок. Двигатель соединили с валом муфтой, которую сделали из куска стального прута диаметром 14мм, просверлив по центру отверстие и пару отверстий сбоку, для зажимания винтами. Можно не заморачиваться и купить готовые на ebay по запросу cnc coupling их куча выпадает. Несущий конструктив нам вырубили на гильотине за 1000 р. Сборка всего этого заняло не много времени и получили на выходе вот такой станок, на фото еще не установлены концевики, контроллер и не установлен двигатель фрезы.

Точность получилась просто изумительная, во-первых шаговый двигатель шагает 1/16 шага, во-вторых вал с мелкой резьбой. Когда в станок вставили ручку вместо фрезы, он нарисовал сложную фигуру, потом еще несколько раз обвел эту фигуру, а на рисунке видно как будто он один раз рисовал, под лупой рассматривали пытались другую линию найти. Жесткость станка тоже хорошая. Шатается только в пошипниках в допустимых пределах их собственого допуска и посадки. Немного шатается еще по оси Y, ну здесь я думаю конструктив оси Z надо доработать.

Фото получилось не качественное, на заднем плане стекло отражает. Не знаю какой я конструктор станка, но фотограф я просто никакой. Вот чуть получше.

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

Программа написана на Microsoft Visual C++, использовалась библиотеки:

Module: SERIALPORT.H
Purpose: Declaration for an MFC wrapper class for serial ports
Copyright 1999 by PJ Naughter. All rights reserved.
Программа еще сырая, ну в двух словах используем


Использовался еще стандартный компонент msflexgrid таблица, в которую в реальном времени заносится выполняемый в настоящий момент G-код. Т.е. эта программа просто открывает готовый G-код и маленькими порциями запихивает его в контроллер.

Исходный код управляющей программы можно посмотреть здесь github.com/konstantin1970/cnc.git
Для понимания добавлю еще, что стандартный windows hyperterminal или putty делает то-же самое, запихивает данные в контроллер.
Сам G-код можно сделать в любой CAD/CAM системе например, мне понравился ARTCAM.

В планах у нас сделать более мощный станок на двигателях NEMA 23, но для этого нужно придумать, из чего делать более мощные направляющие. В прошивке контроллера добавить возможность изменять скорость вращения шпинделя. Особенно интересно нам установить камеру и сделать что-то подобное системе технического зрения, что бы станок сам определял размеры заготовки, вычислял начальную координату заготовки по всем осям в программе минимум. В программе максимум, чтобы с помощью камеры станок контролировал все этапы своей работы, возможно даже принимал решения изменить программу. Ну, например, увидел он, что шероховатость больше допустимого, взял и послал фрезу по второму кругу все отшлифовать с более высокой скоростью.

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

Проекты / Модификации

Заметки

Подключаем к станку с ЧПУ на базе Ардуино более мощные и быстрые ШД 17HS3404N в корпусе Nema 17 и драйверы шаговых двигателей DM420A

Драйвер управления гибридными шаговыми двигателями DM420A. Подключение к Ардуино.

Драйвер крайне умный и умеет работать в двух режимах. Переключение между режимами автоматическое и никакие переключатели трогать не надо.
- режим управления отрицательным сигналом;
- режим управления положительным сигналом типа LOW (0, Сток) и HIGH (5 В), который используется для цифровых Pin’ов Arduino в режиме OUTPUT.

Драйвер DM420A. Управление отрицательным сигналом

Этот режим в чистом виде не подходит для подключения к Ардуино: необходимо использовать дополнительные электронные компоненты. Подключение DM420A в режиме управления отрицательными сигналами:
- на вход +5 драйвера ШД DM420A подаём +5;
- по умолчанию, без подключения сигнала, драйвер находится в состоянии Enable (включен). Если на ENBL подвести -5 В, то драйвер перестанет управлять ШД.
- направление вращения задаётся подачей -5 В (в одну сторону) или размыканием (в другую);
- на вход PUL подаём -5В и размыкаем цепь, это соответствует перемещению ШД на один шаг.

Драйвер DM420A. Подключение к Arduino и управление сигналами LOW-HIGH цифровых пинов в режиме OUTPUT.

Этот режим подходит для работы с Ардуино. Схема подключения представлена ниже:

Обратите внимание, что земля (Gnd) Ардуино НЕ идёт на DC- драйвера DM420A, как это иногда советуют сделать. Дело в том, что при установке значения LOW на цифровом пине Ардуино, находящемся в режиме OUTPUT, этот пин работает как 0 , то есть приёмник тока.
Это подтверждается документацией по Ардуино, а также примером подключения диода к двум цифровым пинам, находящимся в режиме OUTPUT: на одном пине выставлено значение LOW, на другом HIGH.
Итак:
- на вход +5 драйвера шагового двигателя DM420A подаём +5В;
- если на ENBL подаётся значение LOW (0), то драйвер не управляет ШД, если HIGH, то переходит в состояние Enable (включен);
- направление вращения ШД определяется сигналом, поданным на DIR: LOW или HIGH;
- подача на PUL значения HIGH, а затем LOW определяет перемещение ротора ШД на один шаг;

Замечания по работе шагового двигателя 17HS3404N и драйвера ШД DM420A, подключенного к Ардуино в режиме управления значениями LOW-HIGH.

- Время переключения драйвера из режима Disabled в режим Enabled составляет 15 миллисекунд. Таким образом, если вы планируете программно управлять включением и отключением ШД, то после подачи на вход ENBL драйвера DM420A сигнала, включающего управление, необходимо сделать паузу 20 миллисекунд, и только после этого посылать управляющие сигналы на PUL.
- Если вы не собираетесь контролировать включение-выключение управления шаговым двигателем, то на вход ENBL драйвера DM420A можно подать +5В от выхода Ардуино. Также, если вообще ничего не подключать к входу ENBL драйвера DM420A, то он будет в состоянии включен (Enable).
- В режиме 200 шагов на оборот между пульсациями на входе PUL необходимо сделать паузу 2 миллисекунды, чтобы дать шаговому двигателю отреагировать на команду перемещения ротора. То есть, если на PUL передать следующие сигналы:
HIGH - LOW - [пауза 2мс] – HIGH – LOW - [пауза 2мс] – HIGH – LOW - [пауза 2мс],
то ротор ШД сделает 3 шага за 6 миллисекунд.
- Для выставления режима работы 200 шагов на оборот и подключения шагового двигателя 17HS3404N на драйвере ШД DM420A необходимо установить переключатели в следующее положение:

Сообщества › Сделай Сам › Блог › Создание ЧПУ станка с ноля своими руками.

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

Корпус станка сделан из фанеры толщиной 10 мм. Прежде всего была создана 3d модель в программе Sketchup, по ее размерам были вырезаны части чпу.

Последовательность сборки такая — ось Z, Y, X, сборка драйверов, контроллера, настройка всего станка.
Покажу на примере Z, то что потребуется:
1. Шпиндель с готовым креплением.
2. Две направляющие со старых принтеров (диаметр 8мм).
3. Линейные подшипники lm8uu (4 шт.).
4. Крепление для подшипников (4 шт.) и гайки (1 шт.).
5. Фанера (10 мм.).
6. Шаговый мотор Nema 17.
7. Муфта (5мм — резьба М5).
8. Удлиненная гайка М5.
9. Шпилька резьбовая М5.
10. Уголки.
11. Болты, гайки, шайбы, шурупы.
12. Подшипник с внутренним диаметром 5 мм.
13. Шпилька резьбовая М8.
14. Уголки.

Но лучше одни раз увидеть, чем раз сто прочитать, 3D модель оси Z и Y:

Мозговой начинкой станет ардуино с прошивкой grbl 0.9, плюс три драйвера шаговых двигателей на основе микросхем l297 и l298. Еще понадобится блок питания — взял от старого системного блока. В результате получаем не сложную схему с соединением двумя сигналами управления с ардуино к шаговым двигателям (DIR, STEP) и возможностью управления станком с ноутбука или компьютера через usb.
Начнем с простого, старый блок питания разбираем, выпаиваем все ненужные провода, оставляя две массы и два провода +12В. Одни из которых пустим на питание драйверов, другие на питание шпинделя. Для запуска блока еще нужно зеленый провод припаять на массу (имитация кнопки включения системного блока) — цвет может отличаться, нужно смотреть конкретно по марке. Еще я прикрутил болтами М3 корпус блока питания к корпусу чпу и в месте где раньше выходила охапка проводов вставил тумблер для включения шпинделя.

Проба станка производилась на оргстекле, пока нормальных наборов фрез нет взял из набора гравера насадку и попытался что-то нацарапать , получается примерно следующее (на оргстекле так-же имеются следы от прошлых неудачных работ!):

Видео работы станка:

Прошу не считать за рекламу или пиар, но все таки данный ресурс не является форумом чпу-шников и абсолютно все я здесь привести не могу, не всем это будет интересно, да и много получится! Поэтому укажу лишь, что более подробно описывается это на моем сайте (сборка и настройка драйверов, софта, подготовка файлов к гравировке) кому необходимо тот пусть смотрит.

Спасибо за внимание.

полтора года назад Метки: чпу своими руками, чпу на ардуино

Нравится 596 Поделиться:

Источники: http://m.habrahabr.ru/company/minirobot/blog/250385/, http://www.ecnc.ru/upgrade/17HS3404N_DM420A, http://www.drive2.ru/c/2141798/

Комментариев пока нет!

Ваше имя *
Ваш Email *

Сумма цифр внизу: код подтверждения