Управление самодельным лазерным гравером посредством Arduino Mega с TFT дисплеем

Контроллеры, драйверы, датчики, управляющие устройства.
Leha_
Новичок
Сообщения: 13
Зарегистрирован: 20 янв 2021, 22:58
Репутация: 4
Контактная информация:

Управление самодельным лазерным гравером посредством Arduino Mega с TFT дисплеем

Сообщение Leha_ »

Идея гравировки без использования компьютера пришла сразу после сборки станка. Стало крайне неудобно держать компьютер включенным под задачу гравировки, которая может выполняться до нескольких часов, а в некоторых случаях десятков часов. Гравер стоит в квартире на небольшом балконе, и выделить место под компьютер (в любом исполнении) это проблема, а тянуть кабель из соседней комнаты – так себе идея. Решение было принято следующее - попробовать свои силы в программировании и собрать устройство самостоятельно из того что было (устройство назову - блок управления). Используемые комплектующие -это оставшиеся модули от старых и нереализованных проектов на платформе Arduino, ждущих свою очередь в различных коробках.

Напишу сразу, я не считаю себя профессиональным программистом и данный вид деятельности не является источником моего дохода. Проект был реализован исключительно в личных интересах в свободное от основной работы время (вдруг начальство сможет меня идентифицировать). Хобби у меня такое. Было интересно смогу или нет. Взял себя на «СЛАБО».

В проекте использовал (все ранее покупалось на Aliexpress):
1. Arduino Mega 2560 .
2. TFT модуль 3.5 дюйма.
3. Модуль джойстика KY-023.
4. SD удлинитель + адаптер с SD на микро SD.
5. Соединительные провода.
6. 3D принтер для печати корпуса блока управления.

Проект разделил на этапы:
Первый – определение подключения блока управления к лазерному граверу, который управляется Arduino UNO с CNC шилдом. Подача питание и передача данных между ними.
Второй – учитывая, что софт на устройство пишется самостоятельно, определение функциональных возможностей программы по управлению станком и моих хотелок.
По моему мнению, блок управления должен выполнять следующие функции:
Основные:
- работать с файловой системой CD карты (открывать и считывать данные из файлов);
- передавать управляющие команды на CNC шилд и обрабатывать принятые;
- отображать информацию о текущем состоянии станка;
- перемещать голову с лазером по осям для определения точки старта станка (начало гравировки);
Дополнительные:
- обходить лазером периметр места гравировки (полезная опция, подсмотрел на профессиональных станках);
- перемещать голову с лазером в центр гравировки (для наглядности, проверка центра гравировки);
- отображать на дисплее гравируемое изображение (то, что выжигает в текущий момент времени, то и прорисовывает на дисплее);
- возможность менять скорость перемещения по осям и мощность лазера в процессе гравировки. Очень удобно для подбора скорости и мощности, для материала, на котором производится гравировка, без изменения G-CODa;
- расчет оставшегося времени до конца гравировки;
- возможность изменять настройки GRBL.
Третий – разработка и печать корпуса блока управления на 3D принтере.
Четвертый – тестирование софта в боевых условиях (на станке). Устранение ошибок выявленных в ходе тестирования.

В итоге 2-х недельной работы, основное время было затрачено на программирование, поиск путей решения неожиданно возникающих проблем, отладку и исправления выявленных косяков. Те, кто знаком с программированием на IDE под ARDUINO, поймут меня. Это те еще танцы, начиная с проблем напряжения питания модулей и заканчивая самой совместимостью модулей и многообразностью библиотек для них.

Коротко принцип работы блока управления:
Arduino Mega с TFT дисплеем на борту которого есть SD ридер, под управлением программы считывает G-COD из файла и передает его по Serial порту на Arduino UNO с CNC шилдом, которая в свою очередь управляет самим станком. Примерно так.

Ниже фото каждого экрана программы блока управления.
Изображение
1. Основной экран.
Изображение
2. Экран выбора файла с G-CODом гравировки.
Изображение
3. Экран анализа файла и определения стартовой точки.
Изображение
4. Экран гравировки.
Изображение
5. Экран настройки параметров GRBL.

Алгоритм гравировки с помощью блока управления такой:
1. В любой программе на компе генерируем G-COD, того изображение которое нужно гравировать (обычно использую «LaserGRBL», программа простая и удобная, без всяких навороченных труднообъяснимых возможностей).
2. Копируем файл с G-CODом на SD карту.
3. Вставляем в карту в блок управления.
4. Выбираем файл.
5. Определяем станку начальную точку гравировки.
6. Запускаем гравировку.
7. Ждем и наслаждаемся работой станка (не забывая о защите глаз). Пока станок работает, думаем, что с этой штукой, которая получится делать и что еще на нем прикольного выжечь.

Проблемы, с которыми столкнулся в процессе разработки:

1. Первоначально хотел использовать TFT дисплей c тачем (есть один у меня такой подопытный), но одновременное использование тача и SD ридера на Arduino Mega возник программный конфликт они оба используют SPI, по факту из них работает только первый инициализированный либо тач, либо SD. Одновременно – Х**. Убил трое суток, перепробовав кучу библиотек так не смог решить проблему, ничего не помогло. Китайцы тоже ничего толкового не посоветовали. Плюнул, взял другой TFT без тача. Может кто сталкивался с такой проблемой, подскажите как ее решить.
2. Из-за недостаточного количества внутренней памяти в Arduino Mega пришлось все изображения, используемые в программе (картинки кнопок, фон главного экрана) хранить в отдельной папке на внешней CD карте памяти. Перспективно, наверно, подумаю и сделаю какие-нибудь шаблонные кнопки, чтобы исключить такую ситуацию. Пока смысла не вижу - некритично.
3. Arduino на безе чипа ATmega2560 с функционалом справляется - нормально, но для некоторых вещей, которые можно было реализовать в данном проекте производительности такого микроконтроллера не достаточно. Например, предпросмотр изображения картинки по G-CODу перед запуском выжигания. На мой взгляд, очень полезная опция, но с ATmega2560 анализ G-CODа с прорисовкой займет достаточное время по этой причине пришлось от нее отказаться. Да, знающие люди скажут, ведь есть STM32, но для меня это очередной этап самосовершенствования, пока только знакомлюсь с этой архитектурой.
4. Библиотека работы с SD картой, которую использую, кириллицу в названиях файлов вообще не переваривает и длина имени файла должна быть не более 15 символов. Если что-то не так, то файл тупо не открывает.
Итог: Проект реализован в конечное устройство, задача выполнена. Еще раз себе доказал, что нет не решаемых задач.
В процессе реализации проекта получил массу морального удовольствия и самое главное, бесценный опыт. Не скрою, уже есть некоторые мысли, что можно оптимизировать, подкорректировать. Прижмет, займусь, пока все устраивает.

В заключении несколько фоток:
Изображение
Изображение
Изображение
Изображение
Изображение

На этом все. Если будут вопросы – пишите, с ответами постараюсь долго не тянуть.
Аватара пользователя
Q-starь
Мастер
Сообщения: 904
Зарегистрирован: 04 апр 2011, 16:50
Репутация: 604
Настоящее имя: Гэн
Откуда: Казахстан
Контактная информация:

Re: Управление самодельным лазерным гравером посредством Arduino Mega с TFT дисплеем

Сообщение Q-starь »

А схема то где? Мож будут адепты :monkey:
Винтовка, жена и ложка - оружие строго индивидуальное!
Изображение
svm
Мастер
Сообщения: 367
Зарегистрирован: 23 ноя 2017, 12:56
Репутация: 75
Настоящее имя: Владимир Сергеев
Откуда: Бузулук
Контактная информация:

Re: Управление самодельным лазерным гравером посредством Arduino Mega с TFT дисплеем

Сообщение svm »

Выглядит неплохо, но пока не пощупаешь руками, трудно что-то обсуждать или советовать. В какой среде программировалось? GRBL сидит в контроллере или отдельно? Информации никакой. Одни картинки.
Аватара пользователя
Rom327
Почётный участник
Почётный участник
Сообщения: 2940
Зарегистрирован: 03 апр 2015, 13:23
Репутация: 431
Настоящее имя: Роман
Откуда: Подольск
Контактная информация:

Re: Управление самодельным лазерным гравером посредством Arduino Mega с TFT дисплеем

Сообщение Rom327 »

Leha_ писал(а): В процессе реализации проекта получил массу морального удовольствия и самое главное, бесценный опыт.
Приветствую автора! Leha_, а нет желания поделиться бесценным опытом с общественностью в виде схем и прошивок? Спасибо!
Это сугубо мое мнение, могу и ошибаться...
https://vk.com/rom327
GRBL настройки: http://blogandbux.blogspot.com/2018/07/ ... revod.html
G коды: http://3d-stanki.ru/spravochnik/program ... stankov-2/
Аватара пользователя
Ev3658
Новичок
Сообщения: 35
Зарегистрирован: 13 фев 2017, 16:08
Репутация: 29
Настоящее имя: Евгений
Контактная информация:

Re: Управление самодельным лазерным гравером посредством Arduino Mega с TFT дисплеем

Сообщение Ev3658 »

Можно по проще сделать, экран особо и не нужен.
Если правильно понял, то нужно просто создать связь по Uart с GRBL модулем станка.

Как команда паузы передачи данных от GRBL модуля осуществляется?

Arduino вроде как не на чётных для Uart кварцах, может кварц перепаять под UART? (Я использую 11.0592, 14.7456, это важно).
Leha_
Новичок
Сообщения: 13
Зарегистрирован: 20 янв 2021, 22:58
Репутация: 4
Контактная информация:

Re: Управление самодельным лазерным гравером посредством Arduino Mega с TFT дисплеем

Сообщение Leha_ »

Q-starь писал(а): 21 янв 2021, 06:01 А схема то где? Мож будут адепты :monkey:
ОК
Изображение
Leha_
Новичок
Сообщения: 13
Зарегистрирован: 20 янв 2021, 22:58
Репутация: 4
Контактная информация:

Re: Управление самодельным лазерным гравером посредством Arduino Mega с TFT дисплеем

Сообщение Leha_ »

svm писал(а): 21 янв 2021, 07:43 В какой среде программировалось?
Среда программирования ----> Arduino IDE
svm писал(а): 21 янв 2021, 07:43 GRBL сидит в контроллере или отдельно?
Не совсем понял как может GRBL сидеть не в контроллере ???
GRBL залит на Arduino UNO c CNC шилдом.
svm
Мастер
Сообщения: 367
Зарегистрирован: 23 ноя 2017, 12:56
Репутация: 75
Настоящее имя: Владимир Сергеев
Откуда: Бузулук
Контактная информация:

Re: Управление самодельным лазерным гравером посредством Arduino Mega с TFT дисплеем

Сообщение svm »

Leha_ писал(а): 21 янв 2021, 21:17
svm писал(а): 21 янв 2021, 07:43 В какой среде программировалось?
Среда программирования ----> Arduino IDE
svm писал(а): 21 янв 2021, 07:43 GRBL сидит в контроллере или отдельно?
Не совсем понял как может GRBL сидеть не в контроллере ???
GRBL залит на Arduino UNO c CNC шилдом.
Т.е. GRBL не в Вашем контроллере, а на отдельной UNO. Есть варианты где автономный контроллер и GRBL на одном камне
Leha_
Новичок
Сообщения: 13
Зарегистрирован: 20 янв 2021, 22:58
Репутация: 4
Контактная информация:

Re: Управление самодельным лазерным гравером посредством Arduino Mega с TFT дисплеем

Сообщение Leha_ »

Ev3658 писал(а): 21 янв 2021, 11:48 Можно по проще сделать, экран особо и не нужен.
Если правильно понял, то нужно просто создать связь по Uart с GRBL модулем станка.
Абсолютно правильно, можно и без экрана, но теряется информативность, и потребуется дополнительно подключать SD-модуль для работы с картами памяти. На борту TFT, который использовал, уже есть встроенный SD ридер.
Изображение
Ev3658 писал(а): 21 янв 2021, 11:48 Как команда паузы передачи данных от GRBL модуля осуществляется?
Arduino вроде как не на чётных для Uart кварцах, может кварц перепаять под UART? (Я использую 11.0592, 14.7456, это важно).
Команд паузы нет. C кварцами не заморачивался.
Передача команд в GRBL передается по следующему алгоритму:
Arduino Mega с TFT
1. Считывает строку из файла с G-CODом.
2. Передает считанную строку через последовательный порт (используются пины RX и TX).
3. Мониторит последовательный порт в цикле. Ждет ответ. Как только в порт пришло "ОК" или "ERROR" переходим к пункту 1. И так до последней строки в файле.

Arduino UNO (залита программа GRBL) c CNC шилдом
1. Мониторит последовательный порт в бесконечном цикле.
2. Есть что то есть в порту, то проверяет команда это или нет. Если команда, то её выполняет и после выполнения выдает в порт "ОК". "ERROR" в противном случае.
Примерно так.
Leha_
Новичок
Сообщения: 13
Зарегистрирован: 20 янв 2021, 22:58
Репутация: 4
Контактная информация:

Re: Управление самодельным лазерным гравером посредством Arduino Mega с TFT дисплеем

Сообщение Leha_ »

svm писал(а): 21 янв 2021, 21:17 Т.е. GRBL не в Вашем контроллере, а на отдельной UNO.
Да, GRBL отдельно на Arduino UNO.
svm писал(а): 21 янв 2021, 21:17 Есть варианты где автономный контроллер и GRBL на одном камне
Думаю есть (промышленные), частно не узнавал.
Самому тоже можно заморочиться, но нужно будет пилить код GRBL, довешивать его своим, а там памяти в Arduino UNO только-только хватает.
Аватара пользователя
Ev3658
Новичок
Сообщения: 35
Зарегистрирован: 13 фев 2017, 16:08
Репутация: 29
Настоящее имя: Евгений
Контактная информация:

Re: Управление самодельным лазерным гравером посредством Arduino Mega с TFT дисплеем

Сообщение Ev3658 »

Тогда предложил бы сперва сделать самое простое устройство с рядом кнопок и переключателей GRBL
Индикатор можно простой сегментный на SPI для указания строки или номера программы.
Тут скорей простота повторения нужна, многодрыг LCD тоже сложно многим сделать, а вот кнопочную версию может склепать каждый по нужному функционалу.
Можно сделать индикацию G и М команд светодиодиками :cheesy:

С кварцами стоит заморочится если будет большая скорость передачи данных и аппаратная реализация UART. Хотя связь тоже с GRBL у которой тоже кварц далеко не для UART :thinking:

При кварце 16 000 000 герц:
115200 - 7.84% ошибок
57600 - 2.08% ошибок
38400 - 0.16% ошибок
19200 - 0.16% ошибок
9600 - 0.16% ошибок
1200 - 0.04% ошибок

К примеру при кварце 11 059 200 герц 0% ошибок.

При отрисовке лазером G-code чем быстрей выплеснуть, тем быстрей прорисуется, иногда даже передача данных останавливает всё, а поддержка лазерного режима в GRBL 1.1 кажись так вообще шикарно реализована по сравнению с 0.9, там нет засветок в начале и в конце и передача нужна не от ОК до ОК, а как-то сразу до заполнения буфера GRBL системы, тот в свою очередь как раз и делает равномерный засвет лазеров и в начале и в конце луча двигаясь с одинаковой скоростью.

Для гравировки так-то проще, там дольше отрабатывается, чем гравируется, хотя в большинстве случаев все окружности и т.п. так-же просто координатами сделаны без всяких J и I и многих вкусностях G-кода, тоже нужно быстро реагировать.

Подробнее о частотах кварцевого резонатора и почему, да что и куда вот тут есть (в таблице область применения): http://microsin.net/adminstuff/hardware ... ncies.html
2021-01-21_23-26-05.png (2483 просмотра) <a class='original' href='./download/file.php?id=191363&sid=cd5a9c31e7fa2b0d85459f31af7e9ad2&mode=view' target=_blank>Загрузить оригинал (12.34 КБ)</a>
Последний раз редактировалось Ev3658 21 янв 2021, 23:27, всего редактировалось 1 раз.
Leha_
Новичок
Сообщения: 13
Зарегистрирован: 20 янв 2021, 22:58
Репутация: 4
Контактная информация:

Re: Управление самодельным лазерным гравером посредством Arduino Mega с TFT дисплеем

Сообщение Leha_ »

Rom327 писал(а): 21 янв 2021, 08:45 Приветствую автора! Leha_, а нет желания поделиться бесценным опытом с общественностью в виде схем и прошивок? Спасибо!
Если нужен листинг для Arduino IDE пишите в личку email ---> вышлю.
Leha_
Новичок
Сообщения: 13
Зарегистрирован: 20 янв 2021, 22:58
Репутация: 4
Контактная информация:

Re: Управление самодельным лазерным гравером посредством Arduino Mega с TFT дисплеем

Сообщение Leha_ »

Ev3658 писал(а): 21 янв 2021, 23:23 С кварцами стоит заморочится если будет большая скорость передачи данных и аппаратная реализация UART. Хотя связь тоже с GRBL у которой тоже кварц далеко не для UART :thinking:
В программе реализован подсчет ошибок. Скорость передачи стоит стандартная, по прошивке GRBL 115200 ( Serial.begin(115200);)
Ошибки были но их очень мало, можно сказать практически нет.
Заметил когда станок был подключен к компу, ошибки было почти при каждом выжигании (от 1 до 10 за 3 часа работы). Связываю это с длиной кабеля и радиопомехами.
А сейчас длина соединения минимальная не более 10 см.
svm
Мастер
Сообщения: 367
Зарегистрирован: 23 ноя 2017, 12:56
Репутация: 75
Настоящее имя: Владимир Сергеев
Откуда: Бузулук
Контактная информация:

Re: Управление самодельным лазерным гравером посредством Arduino Mega с TFT дисплеем

Сообщение svm »

Leha_ писал(а): 21 янв 2021, 23:07
svm писал(а): 21 янв 2021, 21:17 Т.е. GRBL не в Вашем контроллере, а на отдельной UNO.
Да, GRBL отдельно на Arduino UNO.
svm писал(а): 21 янв 2021, 21:17 Есть варианты где автономный контроллер и GRBL на одном камне
Думаю есть (промышленные), частно не узнавал.
Самому тоже можно заморочиться, но нужно будет пилить код GRBL, довешивать его своим, а там памяти в Arduino UNO только-только хватает.
Я с этим немного занимался. Для фрезера полноценный GRBL вполне оправдан, а для лазерного гравера, несколько избыточен. Вот я собирал ЧПУ плазморез на основе автономного контроллера для лазера. Там под видео есть ссылки на несколько рабочих вариантов.
https://www.youtube.com/watch?v=0uOpTMjR5Qk

Достаточно одной любой Ардуинки не ниже 328 первая ссылка на двух ардуино похожа на Вашу конструкцию, только элементная база попроще.
Аватара пользователя
Rom327
Почётный участник
Почётный участник
Сообщения: 2940
Зарегистрирован: 03 апр 2015, 13:23
Репутация: 431
Настоящее имя: Роман
Откуда: Подольск
Контактная информация:

Re: Управление самодельным лазерным гравером посредством Arduino Mega с TFT дисплеем

Сообщение Rom327 »

К этому проекту еще клавиатуру на Ардуино Нано добавить и блок индикации на Ардуино Про...
Не жирно ли для GRBL контроллера использовать 2 процессора ;) ?
Это сугубо мое мнение, могу и ошибаться...
https://vk.com/rom327
GRBL настройки: http://blogandbux.blogspot.com/2018/07/ ... revod.html
G коды: http://3d-stanki.ru/spravochnik/program ... stankov-2/
svm
Мастер
Сообщения: 367
Зарегистрирован: 23 ноя 2017, 12:56
Репутация: 75
Настоящее имя: Владимир Сергеев
Откуда: Бузулук
Контактная информация:

Re: Управление самодельным лазерным гравером посредством Arduino Mega с TFT дисплеем

Сообщение svm »

Rom327 писал(а): 22 янв 2021, 15:53 К этому проекту еще клавиатуру на Ардуино Нано добавить и блок индикации на Ардуино Про...
Не жирно ли для GRBL контроллера использовать 2 процессора ;) ?
По цене, габаритам и простоте эксплуатации Ардуинки выигрывают однозначно. У меня на всех станках стоят только драйвера, выведенные на LPT разъем. На стадии отладки подключаю МАЧ. Если все Ок, то GRBL контроллер, у него распайка разъема такая-же как у МАЧ. Но все равно остается ПК, что не всегда удобно. Если у меня 4 станка и используются от случая к случаю, то держать у каждого компьютер невыгодно. Поэтому автономный контроллер на Ардуинке, вполне логичное решение. Ну а лазерному граверу и GRBL лишний. Там достаточно простенького автономника. ЧПУ плазморез, тоже лучше с автономником (проще бороться с помехами). Так, что если станок не супер навороченный, а обычный хоббийный и лишних денег нет, то такое решение вполне оправданно. Хотя есть еще хороший вариант - использование старого смартфона.
shura2
Опытный
Сообщения: 113
Зарегистрирован: 01 дек 2014, 01:38
Репутация: 12
Настоящее имя: Александр
Контактная информация:

Re: Управление самодельным лазерным гравером посредством Arduino Mega с TFT дисплеем

Сообщение shura2 »

Запилил похожий проект, только на esp32, под 4 оси и экран с тачем. Причем на одной шине SPI также были проблемы с тачем и кардридером. пришлось их раскинуть на две шины.
Из плюсов esp - вайфай (или вебморда или просто скидывать файлы на флешку) и шикарная графическая библиотека LVGL https://www.youtube.com/watch?v=I5iTb9AkY2w , со всеми элементами графического интерфейса, отработкой нажатий и т.д.

Leha_ писал(а): Arduino Mega с TFT
1. Считывает строку из файла с G-CODом.
2. Передает считанную строку через последовательный порт (используются пины RX и TX).
3. Мониторит последовательный порт в цикле. Ждет ответ. Как только в порт пришло "ОК" или "ERROR" переходим к пункту 1. И так до последней строки в файле.
Если error, то снова эту же строку шлете? Других проверок нет?

Вы запрос "?" не передаете для определения координат и статуса?
Leha_
Новичок
Сообщения: 13
Зарегистрирован: 20 янв 2021, 22:58
Репутация: 4
Контактная информация:

Re: Управление самодельным лазерным гравером посредством Arduino Mega с TFT дисплеем

Сообщение Leha_ »

Да экран конечно хорош, тоже хочу в перспективе перейти в проектах на STM, по сравнению с Atmel AVR небо и земля.
shura2 писал(а): 05 мар 2021, 02:01 Если error, то снова эту же строку шлете? Других проверок нет?

Вы запрос "?" не передаете для определения координат и статуса?
Если ERROR, только фиксация (для статистики) и переход к следующей команде (не отправляю строку еще раз из-за возможно цикличной ошибки, что может привести к бесконечному циклу и зависанию станка). Других проверок нет.

Запросы для определения координат и статуса не передаю. Текущее положение координаты X,Y, S(мощность лазера), F(скорость перемещения) определяются через анализ самого G-Coda перед отправкой в станок.
shura2
Опытный
Сообщения: 113
Зарегистрирован: 01 дек 2014, 01:38
Репутация: 12
Настоящее имя: Александр
Контактная информация:

Re: Управление самодельным лазерным гравером посредством Arduino Mega с TFT дисплеем

Сообщение shura2 »

Leha_ писал(а): Если ERROR, только фиксация (для статистики) и переход к следующей команде (не отправляю строку еще раз из-за возможно цикличной ошибки, что может привести к бесконечному циклу и зависанию станка). Других проверок нет.
Понятно. А что с буфером? как идет контроль его переполнения?
Ответить

Вернуться в «Электроника»