Управление мощностью лазера сигналами Zоси на ARDUINO

Контроллеры, драйверы, датчики, управляющие устройства.
msl272
Кандидат
Сообщения: 56
Зарегистрирован: 20 янв 2017, 13:23
Репутация: 39
Настоящее имя: Вячеслав
Контактная информация:

Управление мощностью лазера сигналами Zоси на ARDUINO

Сообщение msl272 »

Случилась такая задача: Китайский лазер для гравировки регулирует мощность от внешнего ШИМ сигнала. Но купленная плата USB контроллера для MACH3 выдает только аналоговый сигнал управления 0-10В. Поэтому было решено сделать преобразователь "Аналог-ШИМ" на простом контроллере ARDUINO.
В результате тестирования вылезла очередная проблема. Мач3 очень долго выполняет команды смены скорости шпинделя из за наличия внутренних задержек. Использовать в таком режиме лазер оказалось очень неудобно. Пришлось доработать проект добавив в него управление мощностью сигналами STEP, DIR от свободной оси. Аналоговый канал остался работоспособен и может функционировать параллельно.

Устройство собрано на контроллере ARDUINO PRO MINI 5В, 16 МГц. Содержит два независимых канала управления мощностью лазерной головки.
Первый канал аналоговый: Входное напряжение 0 - 10 В через делитель напряжения 10к/1,3к подается на вывод A6. Резистор 1,3к стоит между А6 и GND. Резистор 10к между А6 и входным напряжением. На выводе 10 ардуино получаем ШИМ сигнал от 0 до 100% пропорциональный аналоговому напряжению. Дополнительно программно сделал отключение лазера при входном напряжении менее 0,15В - типа защита от помехи и случайного включения.
Второй канал цифровой: Имеет 64 градации мощности. Управляется цифровыми сигналами шага и направления. Сигнал шага STP (положительной полярности) подаем на выв. 2 ардуины. Сигнал направления DIR на выв. 3. С вывода 9 имеем ШИМ сигнал управления лазером. При положительно сигнале DIR, каждый фронт сигнала STP будет увеличивать мощность на одну градацию. Соответственно 63 импульса поднимут мощность от 0% до 100%.
На ноги RAW и GND подается питание для контроллера 6-14 В в обоих вариантах.

Использование цифрового управления позволило практически мгновенно изменять мощность лазерной головки. Возросло качество и резко снизилось время гравировки. Использование осиZ для управления мощностью требует соотв. настройки постпроцессора программы формирующей G-код.

Фото конструкции и программа для ардуино (скетч) во вложениях.
Вложения
photo_2017-02-17_13-56-22.jpg (7469 просмотров) <a class='original' href='./download/file.php?id=103662&sid=5f2365600373d6730eafddc76b8c3b6a&mode=view' target=_blank>Загрузить оригинал (122.16 КБ)</a>
photo_2017-02-17_13-58-04.jpg (7469 просмотров) <a class='original' href='./download/file.php?id=103663&sid=5f2365600373d6730eafddc76b8c3b6a&mode=view' target=_blank>Загрузить оригинал (98.48 КБ)</a>
photo_2017-02-17_14-44-09.jpg (7469 просмотров) <a class='original' href='./download/file.php?id=103664&sid=5f2365600373d6730eafddc76b8c3b6a&mode=view' target=_blank>Загрузить оригинал (98.65 КБ)</a>
pwm.rar
(1.15 КБ) 552 скачивания
Andrey@KZN
Мастер
Сообщения: 442
Зарегистрирован: 22 авг 2016, 12:21
Репутация: 44
Настоящее имя: Андрей
Контактная информация:

Re: Управление мощностью лазера сигналами Zоси на ARDUINO

Сообщение Andrey@KZN »

А чего было просто на grbl не переехать?
Quark
Кандидат
Сообщения: 49
Зарегистрирован: 25 май 2016, 13:55
Репутация: 11
Контактная информация:

Re: Управление мощностью лазера сигналами Zоси на ARDUINO

Сообщение Quark »

Andrey@KZN писал(а):А чего было просто на grbl не переехать?
Вот зачем такие комментарии?

Человек сделал нормальное устройство, поделился со всеми. Код написан аккуратно.
Многие просто ставят лазер на рабочий фрезер, настроенный работать с Mach3. И предложенное решение вполне актуально.
Аватара пользователя
rage
Мастер
Сообщения: 1006
Зарегистрирован: 13 окт 2014, 09:14
Репутация: 618
Настоящее имя: Константин
Откуда: Новосибирск
Контактная информация:

Re: Управление мощностью лазера сигналами Zоси на ARDUINO

Сообщение rage »

Andrey@KZN писал(а):А чего было просто на grbl не переехать?
Хотя бы потому, что грбл не умеет хомить ось с двумя ШД по двум концевикам и выравнивать портал, да что там хомить, он и осью с двумя ШД управлять по сути не умеет, использует один драйвер для обоих ШД... Но и в целом, грбл хрень полная. Начиная от глючного софта и заканчивая глючными прошивками.
FFO
Новичок
Сообщения: 2
Зарегистрирован: 23 ноя 2017, 15:50
Репутация: 0
Контактная информация:

Re: Управление мощностью лазера сигналами Zоси на ARDUINO

Сообщение FFO »

msl272 писал(а): Использование осиZ для управления мощностью требует соотв. настройки постпроцессора программы формирующей G-код.
Извольте узнать, что именно изменялось в постпроцессоре?
FFO
Новичок
Сообщения: 2
Зарегистрирован: 23 ноя 2017, 15:50
Репутация: 0
Контактная информация:

Re: Управление мощностью лазера сигналами Zоси на ARDUINO

Сообщение FFO »

Собрал, прошил. Шим сигнал на 9 пине есть. Но, TTL на самом лазере не срабатывает. походу в самом шиме нет абсолютного нуля. а вот через оптопару работает как положено. Возможно проблема в TTL самого лазера, так как PWM с LPT порта также воспринимает. Автору Спасибо
msl272
Кандидат
Сообщения: 56
Зарегистрирован: 20 янв 2017, 13:23
Репутация: 39
Настоящее имя: Вячеслав
Контактная информация:

Re: Управление мощностью лазера сигналами Zоси на ARDUINO

Сообщение msl272 »

По поводу постпроцессора у RAGE надо спросить. Он его писал. Я попробую ему сообщить.
Quark
Кандидат
Сообщения: 49
Зарегистрирован: 25 май 2016, 13:55
Репутация: 11
Контактная информация:

Re: Управление мощностью лазера сигналами Zоси на ARDUINO

Сообщение Quark »

msl272
Скажи пожалуйста, зачем разделены выходы Аналог и зависимый от оси Z?
Немного не понял алгоритм управления лазером. Можно и скоростью шпинделя - это аналог 0-10В и высотой Z. Но выходы с платы идут раздельно.
Как подключён лазер?
И в программе :
analogWrite(pin_an_pwm,(U_inp >> 2)); //формирование аналоговой ШИМ на выходе

Вроде как получается шим на выходе в 4 раза меньше чем входной сигнал. Или я не прав?
msl272
Кандидат
Сообщения: 56
Зарегистрирован: 20 янв 2017, 13:23
Репутация: 39
Настоящее имя: Вячеслав
Контактная информация:

Re: Управление мощностью лазера сигналами Zоси на ARDUINO

Сообщение msl272 »

Изначально планировали просто сделать преобразователь аналогового сигнала в ШИМ. Сделали, но испытания не дали положительного результата. Проблема в программе MACH3. При изменении значения аналогового выхода (т.е. меняем мощность лазера, включаем/отключаем лазер) матч автоматически выполняет остановку и задержку в несколько десятых секунды. Для резки материала это вроде терпимо, а когда делаешь гравировку с контрастами, получаешь кучу остановок каретки на каждой линии рисунка и соотв маленький прожиг в каждой точке останова...
Убрать эту задержку из мача мы не смогли. Она где то в программе зашита. Видимо фрезера не требуют постоянной смены скорости при каждом проходе.
Поэтому было решено переделать управление лазером. В той же программе был организован второй канал управления, полностью независимый от первого. Использовать можно любой, и даже оба сразу не зависимо друг от друга.
Во втором канале лазер управляется сигналами Z оси. У нас так настроено: когда Z=0 головка отключена, если Z= -1mm лазер на полной мощности.
Соответственно постпроцессор должен "поднимать" ось Z до нуля при отключении лазера и "опускать" ось Z на 1 мм (или на меньшее значение для меньшей мощности) для включения головки на полную мощность.
Постпроцессор написан для Арткама. Все как обычно, грузишь контур или рисунок в арткам, получаешь готовую программу. Более детально надо rage спрашивать, он все это писал. Я только аппаратной частью занимался.

analogWrite(pin_an_pwm,(U_inp >> 2));
Элементарное согласование. U_inp имеет тип int и содержит значение с АЦП от 0 до 1023. Функция analogWrite должна получить тип char со значением от 0 до 255.
Quark
Кандидат
Сообщения: 49
Зарегистрирован: 25 май 2016, 13:55
Репутация: 11
Контактная информация:

Re: Управление мощностью лазера сигналами Zоси на ARDUINO

Сообщение Quark »

Спасибо за развёрнутый ответ. Теперь всё понятно.
Забыл что вход аналога 10 бит а шим 8 бит.
Аватара пользователя
FLUKE
Мастер
Сообщения: 843
Зарегистрирован: 11 мар 2013, 21:18
Репутация: 187
Настоящее имя: Сергей
Откуда: Смоленск
Контактная информация:

Re: Управление мощностью лазера сигналами Zоси на ARDUINO

Сообщение FLUKE »

msl272 писал(а):автоматически выполняет остановку и задержку в несколько десятых секунды
Тоже столкнулся с этой проблемой, только в другой ситуации.
У меня ethernet smoutchstepper, там нужно использовать коды M62P* и M63P*. Они исполняются в момент начала движения.
qulet
Новичок
Сообщения: 28
Зарегистрирован: 13 май 2017, 18:30
Репутация: 5
Настоящее имя: Marek
Контактная информация:

Re: Управление мощностью лазера сигналами Zоси на ARDUINO

Сообщение qulet »

Какие настройки в MACH3 для виртуальной оси «A»


В основном это параметр «STEPS / PER
motor_tuning.jpg (5330 просмотров) <a class='original' href='./download/file.php?id=146362&sid=5f2365600373d6730eafddc76b8c3b6a&mode=view' target=_blank>Загрузить оригинал (83.72 КБ)</a>
FL@gMan
Почётный участник
Почётный участник
Сообщения: 115
Зарегистрирован: 25 янв 2017, 16:15
Репутация: 18
Настоящее имя: Дмитрий
Контактная информация:

Re: Управление мощностью лазера сигналами Zоси на ARDUINO

Сообщение FL@gMan »

А кто подскажет что надо сделать что бы комменты в этом скетче корректно отображались?
Вероятно они написаны на русском языке.
Под спойлером как он у меня открывается.
(для просмотра содержимого нажмите на ссылку)
/*
* pwm.ino
*
* Created: 1/18/2017 9:23:28 PM
* Author: msl
*/
#include <Wire.h>

//
//���������� �������
#define ledPin 13 // ���������
#define pin_napr 6 // ���� ���� ���������� 0-10 �
//� ��������� 1,3� �� ����� � 10� �� ����
#define pin_an_pwm 10 // ����� ��� �� ����������� �����
#define pin_cnt_pwm 9 // ����� ��� �� �������� ���������
#define pin_direct 3 // ���� ����������� �����
#define pin_step 2 // ���� ��������� ����
msl272
Кандидат
Сообщения: 56
Зарегистрирован: 20 янв 2017, 13:23
Репутация: 39
Настоящее имя: Вячеслав
Контактная информация:

Re: Управление мощностью лазера сигналами Zоси на ARDUINO

Сообщение msl272 »

Скетч можно тупо в блокноте открыть и посмотреть.
Если речь про ардуиновскую среду идет, то такие вопросы лучше на их форуме спросить.
Petrov
Новичок
Сообщения: 5
Зарегистрирован: 26 ноя 2020, 00:05
Репутация: 0
Настоящее имя: Андрей
Контактная информация:

Re: Управление мощностью лазера сигналами Zоси на ARDUINO

Сообщение Petrov »

FLUKE писал(а): Тоже столкнулся с этой проблемой, только в другой ситуации.
У меня ethernet smoutchstepper, там нужно использовать коды M62P* и M63P*. Они исполняются в момент начала движения.
Подскажите поподробнее, вы смогли решить вопрос с остановкой при выполнении команды M03 S ?
Аватара пользователя
FLUKE
Мастер
Сообщения: 843
Зарегистрирован: 11 мар 2013, 21:18
Репутация: 187
Настоящее имя: Сергей
Откуда: Смоленск
Контактная информация:

Re: Управление мощностью лазера сигналами Zоси на ARDUINO

Сообщение FLUKE »

Petrov, давно это было... Переходом на мач 4 я решил эту проблему и то частично на скорости ДО 2м/мин, мач 3 все равно подтормаживает при склейке траектории.
Petrov
Новичок
Сообщения: 5
Зарегистрирован: 26 ноя 2020, 00:05
Репутация: 0
Настоящее имя: Андрей
Контактная информация:

Re: Управление мощностью лазера сигналами Zоси на ARDUINO

Сообщение Petrov »

Понял, ну а имея мач3 как можно мне решить этот вопрос, управляя лазером вместо шпинделя?как сделать чтобы не было остановки при исполнении кода м3 и a, подскажите пожалуйста 😊
msl272
Кандидат
Сообщения: 56
Зарегистрирован: 20 янв 2017, 13:23
Репутация: 39
Настоящее имя: Вячеслав
Контактная информация:

Re: Управление мощностью лазера сигналами Zоси на ARDUINO

Сообщение msl272 »

Собственно эта тема для того и начата.
Никак невозможно убрать задержку у mach3 при выполнении команды M03. На фрезере этого даже не заметно, а для лазера это просто гемор какой-то.
Поэтому здесь лазером управляет ось Z. При Z=0 лазер выключен. при Z=-1 лазер включен на полную мощность. Включение/выключение происходит практически мгновенно.
Единственно, нужен построцессор который заменяет в программе коды M3, М5 на Z0, Z-1.
msl272
Кандидат
Сообщения: 56
Зарегистрирован: 20 янв 2017, 13:23
Репутация: 39
Настоящее имя: Вячеслав
Контактная информация:

Re: Управление мощностью лазера сигналами Zоси на ARDUINO

Сообщение msl272 »

Ардуина подключается к сигналам STP и DIR Z оси контроллера. На выходе ардуины ШИМ сигнал управления лазером.
Формируется 64 градации мощности лазера.
Petrov
Новичок
Сообщения: 5
Зарегистрирован: 26 ноя 2020, 00:05
Репутация: 0
Настоящее имя: Андрей
Контактная информация:

Re: Управление мощностью лазера сигналами Zоси на ARDUINO

Сообщение Petrov »

Понял вас, спасибо всем)
Ответить

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