ArduinoGRBL: различия между версиями

Материал из cnc-club
Перейти к навигации Перейти к поиску
(Новая страница: «тут будет описание настройки работы с контроллером»)
 
 
(не показано 14 промежуточных версий 2 участников)
Строка 1: Строка 1:
тут будет описание настройки работы с контроллером
+
'''Виды ардуино-контроллеров'''
 +
 
 +
Ардуино-контроллеры используемые в любительском ЧПУ, бывают различного вида, но все содержат одинаковые компоненты:
 +
 
 +
# Микроконтроллер - который в себе содержит не только прошивку (программа по которой он работает), но и специальную память EEPROM в которой можно хранить настройки контроллера, и они не теряются, при отключении контроллера от питания.
 +
# Микросхема преобразования USB сигнала в USART сигнал, для связи компьютера с микроконтроллером.
 +
# Драйвера моторов - специальные модули преобразующие цифровые данные от микроконтроллера, в нужное напряжение, и ток, который подается на моторы.
 +
Возможные варианты:
 +
<gallery>
 +
2016-09-20_212946.jpg|Контроллер лазерного выжигателя
 +
2016-09-20 213128.jpg|Контроллер микро-фрезерного станка
 +
2016-09-20_213225.jpg|Ардуино контроллер
 +
2016-09-20_213251.jpg|И плата подключаемая к ардуино контроллеру
 +
</gallery>
 +
 
 +
По умолчанию в 0.9 версии контакты настроены следующим образом:
 +
 
 +
[[Файл:2016-09-20 214420.jpg|Карта контактов]]
 +
 
 +
Карта контактов для платы Arduino Mega версия GRBL 0.9:<br />
 +
[[Файл:Arduino Mega connect.jpg|750px|Карта контактов]]
 +
 
 +
Ссылка на прошивку GRBL 0.9j для Arduino Mega с хомлением по осям X и Y.
 +
https://yadi.sk/d/UL0NA_hyvTrdm
 +
 
 +
'''Драйвера моторов'''
 +
 
 +
Применяемые драйвера моторов бывают различных видов, но принцип работы, подключения, и управления одинаковый, на следующем рисунке, представлен один из них:
 +
 
 +
[[Файл:2016-09-21 211926.jpg|Драйвер мотора]]
 +
 
 +
Контакты драйвера:
 +
 
 +
1) EN (Enable) - Данный вывод может применяться для остановки работы шагового двигателя, если подать на этот вход +5 вольт, то управляющие сигналы, приходящие на этот драйвер не будут применяться, а мотор остановиться.
 +
 
 +
5) STP (STEP) - На данный вход драйвера, с ардуино-контроллера приходят импульсы, каждый импульс вызывает поворот оси мотора на 1 шаг, 1 шаг соответствует углу указанному на моторе:
 +
 
 +
[[Файл:2016-09-21 214708.jpg|мотор]]
 +
 
 +
В данном примере 1 шаг соответствует углу 1.8 градуса, если на данный вывод подать 10 импульсов, то ось мотора повернется на 18 градусов, а если подать 100 импульсов, то ось повернется на 180 градусов.
 +
 
 +
2,3,4) M0,M1,M2 - Данные выводы позволяют настраивать дробление шага, т.е. подавая импульсы на вывод №5, можно уменьшить угол поворота, например если настроить дробление 1/2, то для поворота оси мотора на 180 градусов потребуется подать уже 200 импульсов, а если сделать дробление 1/4, то потребуется уже подать 400 импульсов, для поворота на 180 градусов.
 +
 
 +
6) DIR - Управление направлением вращения, если на данном входе 0 вольт то ось мотора вращается в одном направлении, если +5 вольт, то в обратном.
 +
 
 +
7,8) Внешнее питание для подачи его на шаговый мотор, дело в том что для моторов используется отдельное питание, которое зачастую намного выше того, что используется для ардуино-контроллера, и цифровых входах драйвера.
 +
 
 +
9,10,11,12) Контакты доля подключения шагового мотора, шаговый мотор представляет собой 2 отдельные обмотки, которые называют A и B, в месте подключения часто можно видеть надписи +A и -A, что означает подключение первой обмотки, и +B и -B, что означает подключение второй обмотки.
 +
 
 +
''Дополнительно: Если взять и поменять местами контакт +А и -А, то мотор изменит направление вращения, т.е. если раньше он вращался по часовой стрелке, то станет против часовой, и тоже самое в обратном направлении. Что позволяет инвертировать направление вращения, в "железной части", а можно это делать программным путем, в настройке прошивки.''
 +
 
 +
'''Подключение концевиков'''
 +
 
 +
У станка есть рабочее поле, в пределах которого выполняется фрезеровка/гравировка, но в случае неправильных настроек, или указании координат куда двигаться, находящимися за пределами рабочей зоны, может повредиться механика и электроника. Для того что-бы такого не было, добавлена возможность подключать концевики, для каждой из оси, на каждую ось приходится по одному входу, методика подключения следующая:
 +
 
 +
[[Файл:2016-09-22 092943.jpg|подключение концевиков]]
 +
 
 +
Для примера подключение концевиков к оси X, к входу микроконтроллера подключается 2 кнопки/тумблера, которые располагают на краях по оси X, по умолчанию кнопки разомкнуты, и значит +5 вольт, на вход микроконтроллера не подается. Но как только механика станка достигнет границы по оси X, сработает одна из кнопок, и на вход микроконтроллера попадет +5 вольт, что вызовет немедленную остановку станка.
 +
 
 +
''!!!Но это нужно настроить, будет описано ниже''
 +
 
 +
Но на схеме так-же нарисован резистор, обычно ставится с сопротивлением 10 килоОм. Данный резистор нужен для того, что-бы в тот период времени, когда не нажата ни одна кнопка концевика, на вход микроконтроллера подавалось 0 вольт.
 +
 
 +
''Наверняка у многих возникает вопрос, зачем??? если на вход и так не подается +5 вольт, а связано это с тем, что вход микроконтроллера, не подключенный, либо к +5, либо к GND (земле), работает как антенна, собирающая помехи, наводки, которые могут вызвать ложное срабатывание''
 +
 
 +
<b>Настройка GRBL версии 0.9</b> <br />
 +
Ссылка на официальный англоязычный ресурс GitHub https://github.com/grbl/grbl/wiki/Configuring-Grbl-v0.9 <br /><br />
 +
<b>Список параметров хранящихся в EEPROM контроллера.</b><br />
 +
<b>$0 = 10</b>  Ширина импульса Step, мкс.<br />
 +
<b>$1 = 25</b>  Задержка перед переходом на удержание, мс.<br />
 +
<b>$2 = 0</b>  Маска инвертирования сигналов Step: 00000000<br />
 +
<b>$3 = 6</b> Маска инвертирования сигналов Dir: 00000110<br />
 +
<b>$4 = 0</b> Инвертирование сигнала Step enable, BOOL<br />
 +
<b>$5 = 0</b> Инвертирование входов от конечных датчиков (концевики), BOOL<br />
 +
<b>$6 = 0</b> Инвертирование входа от датчика поверхности Probe, BOOL<br />
 +
<b>$10 = 3</b> Маска получения статуса от GRBL: 00000011<br />
 +
<b>$11 = 0,020</b> Отклонение при прохождении крутых поворотов, мм.<br />
 +
<b>$12 = 0,002</b> Величина сегмента дуги, мм.<br />
 +
<b>$13 = 0</b> Данные от контроллера GRBL в дюймах, BOOL<br />
 +
<b>$20 = 0</b> Включить программное ограничение перемещений (параметры $130,$131,$132) BOOL<br />
 +
<b>$21 = 0</b> Включить ограничение по концевым датчикам, BOOL<br />
 +
<b>$22 = 0</b> Автопозиционирование по концевикам, поиск точки Home, BOOL<br />
 +
<b>$23 = 1</b> Маска инвертирования направления движения к точке Home 00000001<br />
 +
<b>$24 = 50,000</b> Скорость движения у концевиков, мм / мин<br />
 +
<b>$25 = 635,000</b> Скорость движения к точке Home, мм / мин<br />
 +
<b>$26 = 250</b> Задержка срабатывания концевиков (антидребезг) мс.<br />
 +
<b>$27 = 1,000</b> Расстояние «отскока» от концевиков, мм.)<br />
 +
<b>$100 = 314,961</b> Число шагов на мм. по оси X,  шаг / мм<br />
 +
<b>$101 = 314,961</b> Число шагов на мм. по оси Y,  шаг / мм<br />
 +
<b>$102 = 314,961</b> Число шагов на мм. по оси Z,  шаг / мм<br />
 +
<b>$110 = 635,000</b> Максимальная скорость перемещений по оси X мм / мин<br />
 +
<b>$111 = 635,000</b> Максимальная скорость перемещений по оси Y мм / мин<br />
 +
<b>$112 = 635,000</b> Максимальная скорость перемещений по оси Z мм / мин<br />
 +
<b>$120 = 50,000</b> Ускорение по оси X (чем больше значение тем быстрее разгон) мм / сек ^ 2<br />
 +
<b>$121 = 50,000</b> Ускорение по оси Y (чем больше значение тем быстрее разгон) мм / сек ^ 2<br />
 +
<b>$122 = 50,000</b> Ускорение по оси Z (чем больше значение тем быстрее разгон) мм / сек ^ 2<br />
 +
<b>$130 = 225,000</b> Программное ограничение перемещения по оси X мм (включение $20 = 1)<br />
 +
<b>$131 = 125,000</b> Программное ограничение перемещения по оси Y мм (включение $20 = 1)<br />
 +
<b>$132 = 170,000</b> Программное ограничение перемещения по оси Z мм (включение $20 = 1)<br />
 +
 
 +
Вывод списка параметров, команда: <b>$$</b><br />
 +
Изменение параметра: <b>$x = значение</b> (x - номер параметра, например $100=90, новое значение количества шагов на один миллиметр для оси X = 90)<br /><br />
 +
 
 +
<b>RST=$, $RST=#, $RST=* - Команды восстановление настроек и параметров Grbl по умолчанию.</b>
 +
<br /><b>RST=$</b> - Восстанавливает параметры из списка <b>$$</b> на значения из прошивки (заданные по умолчанию перед компиляцией).
 +
<br /><b>RST=#</b> - Обнуляет все значения заданные через команды <b>G54-G59, G28, G30</b> (смещения и позиции), хранящиеся в EEPROM.
 +
<br /><b>RST=*</b> - Обнуляет и восстанавливает все настройки и параметры GRBL, хранящиеся в EEPROM.
 +
<br /><span style="color:#ff0000">RST=*  рекомендуется выполнить после прошивки, перед дальнейшей настройкой).</span>
 +
<br />
 +
<br /><b>Таблица значений для масок инвертирования:</b>
 +
{| class="wikitable"
 +
|-
 +
! Инв. X !! Инв. Y !! Инв. Z !! Маска<br /> bit !! Значение<br /> dec
 +
|-
 +
| Нет || Нет || Нет || 00000000 || <center>0</center>
 +
|-
 +
| Да || Нет || Нет || 00000001 || <center>1</center>
 +
|-
 +
| Нет || Да || Нет || 00000010 || <center>2</center>
 +
|-
 +
| Да || Да || Нет || 00000011 || <center>3</center>
 +
|-
 +
| Нет || Нет || Да || 00000100 || <center>4</center>
 +
|-
 +
| Да || Нет || Да || 00000101 || <center>5</center>
 +
|-
 +
| Нет || Да || Да || 00000110 || <center>6</center>
 +
|-
 +
| Да || Да || Да || 00000111 || <center>7</center>
 +
|}
 +
Если например нужно инвертировать направление движения по осям X и Y, выбираем маску 00000011 значение 3.<br />
 +
Вводим команду: <b>$3 = 3 OK</b><br /><br />
 +
После внесения изменений в параметры, выполняем сброс контроллера (команда <b>CTRL-X OK</b> или
 +
соответствующая кнопка в управляющей программе).<br />
 +
<br /><b>Настройка параметров ($100, $101, $102) количество шагов на миллиметр для осей X, Y, Z.</b><br />
 +
<b>Для ШВП. Вводные:</b><br />
 +
1. Шаг винта мм/оборот<br />
 +
2. Число полных шагов на один оборот вала двигателя, для шагового двигателя обычно 200 но может быть и меньше (смотрите документацию на двигатель).<br />
 +
3. Микрошаг (деление шага, установленное на драйвере двигателя) если полный шаг берем 1.<br />
 +
Шагов на миллиметр = Число полных шагов * микрошаг / Шаг винта. <br />
 +
Пример для оси <b>Y</b>: Шаг винта = 5, Число полных шагов = 200, микрошаг = 8; <b>200 * 8 / 5 = 320</b><br />
 +
Задаем новое значение для оси Y: <b>$101 = 320 OK</b>, делаем сброс <b>CTRL-X</b> и проверяем перемещение (например <b>F500 G1 Y30</b>).<br />
 +
Тоже самое для других осей.<br />
 +
<br /><b>Метод подбора (пример для оси X). Входящие:</b><br />
 +
1. Заданный путь, например <b>F500 G1 X10</b>.<br />
 +
2. Реально пройденный путь (замеряем линейкой), к примеру получилось 16 мм.<br />
 +
3. Текущее количество шагов на миллиметр для оси X (смотрим параметр <b>$100</b> по команде <b>$$</b>), допустим у нас $100 = 314.961.<br />
 +
Считаем: шагов на мм. (новое значение) = Реально пройденный путь мм / Заданный путь мм * Шагов на мм (текущее значение); 16 / 10 * 314.961 = 503.9376<br />
 +
Задаем новое значение для оси X: <b>$100 = 503.9376 OK</b>, делаем сброс <b>CTRL-X</b> затем проводим замер заново но с большим перемещением<br />
 +
(например <b>F500 G1 X100</b>). И так несколько раз до получения приемлемой точности. Тоже самое для других осей.<br />
 +
 
 +
 
 +
'''Инструкция - как записать прошивку в ардуино-контроллер: http://www.cnc-club.ru/wiki/index.php/FirmwareGRBL'''

Текущая версия на 17:46, 22 сентября 2016

Виды ардуино-контроллеров

Ардуино-контроллеры используемые в любительском ЧПУ, бывают различного вида, но все содержат одинаковые компоненты:

  1. Микроконтроллер - который в себе содержит не только прошивку (программа по которой он работает), но и специальную память EEPROM в которой можно хранить настройки контроллера, и они не теряются, при отключении контроллера от питания.
  2. Микросхема преобразования USB сигнала в USART сигнал, для связи компьютера с микроконтроллером.
  3. Драйвера моторов - специальные модули преобразующие цифровые данные от микроконтроллера, в нужное напряжение, и ток, который подается на моторы.

Возможные варианты:

По умолчанию в 0.9 версии контакты настроены следующим образом:

Карта контактов

Карта контактов для платы Arduino Mega версия GRBL 0.9:
Карта контактов

Ссылка на прошивку GRBL 0.9j для Arduino Mega с хомлением по осям X и Y. https://yadi.sk/d/UL0NA_hyvTrdm

Драйвера моторов

Применяемые драйвера моторов бывают различных видов, но принцип работы, подключения, и управления одинаковый, на следующем рисунке, представлен один из них:

Драйвер мотора

Контакты драйвера:

1) EN (Enable) - Данный вывод может применяться для остановки работы шагового двигателя, если подать на этот вход +5 вольт, то управляющие сигналы, приходящие на этот драйвер не будут применяться, а мотор остановиться.

5) STP (STEP) - На данный вход драйвера, с ардуино-контроллера приходят импульсы, каждый импульс вызывает поворот оси мотора на 1 шаг, 1 шаг соответствует углу указанному на моторе:

мотор

В данном примере 1 шаг соответствует углу 1.8 градуса, если на данный вывод подать 10 импульсов, то ось мотора повернется на 18 градусов, а если подать 100 импульсов, то ось повернется на 180 градусов.

2,3,4) M0,M1,M2 - Данные выводы позволяют настраивать дробление шага, т.е. подавая импульсы на вывод №5, можно уменьшить угол поворота, например если настроить дробление 1/2, то для поворота оси мотора на 180 градусов потребуется подать уже 200 импульсов, а если сделать дробление 1/4, то потребуется уже подать 400 импульсов, для поворота на 180 градусов.

6) DIR - Управление направлением вращения, если на данном входе 0 вольт то ось мотора вращается в одном направлении, если +5 вольт, то в обратном.

7,8) Внешнее питание для подачи его на шаговый мотор, дело в том что для моторов используется отдельное питание, которое зачастую намного выше того, что используется для ардуино-контроллера, и цифровых входах драйвера.

9,10,11,12) Контакты доля подключения шагового мотора, шаговый мотор представляет собой 2 отдельные обмотки, которые называют A и B, в месте подключения часто можно видеть надписи +A и -A, что означает подключение первой обмотки, и +B и -B, что означает подключение второй обмотки.

Дополнительно: Если взять и поменять местами контакт +А и -А, то мотор изменит направление вращения, т.е. если раньше он вращался по часовой стрелке, то станет против часовой, и тоже самое в обратном направлении. Что позволяет инвертировать направление вращения, в "железной части", а можно это делать программным путем, в настройке прошивки.

Подключение концевиков

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

подключение концевиков

Для примера подключение концевиков к оси X, к входу микроконтроллера подключается 2 кнопки/тумблера, которые располагают на краях по оси X, по умолчанию кнопки разомкнуты, и значит +5 вольт, на вход микроконтроллера не подается. Но как только механика станка достигнет границы по оси X, сработает одна из кнопок, и на вход микроконтроллера попадет +5 вольт, что вызовет немедленную остановку станка.

!!!Но это нужно настроить, будет описано ниже

Но на схеме так-же нарисован резистор, обычно ставится с сопротивлением 10 килоОм. Данный резистор нужен для того, что-бы в тот период времени, когда не нажата ни одна кнопка концевика, на вход микроконтроллера подавалось 0 вольт.

Наверняка у многих возникает вопрос, зачем??? если на вход и так не подается +5 вольт, а связано это с тем, что вход микроконтроллера, не подключенный, либо к +5, либо к GND (земле), работает как антенна, собирающая помехи, наводки, которые могут вызвать ложное срабатывание

Настройка GRBL версии 0.9
Ссылка на официальный англоязычный ресурс GitHub https://github.com/grbl/grbl/wiki/Configuring-Grbl-v0.9

Список параметров хранящихся в EEPROM контроллера.
$0 = 10 Ширина импульса Step, мкс.
$1 = 25 Задержка перед переходом на удержание, мс.
$2 = 0 Маска инвертирования сигналов Step: 00000000
$3 = 6 Маска инвертирования сигналов Dir: 00000110
$4 = 0 Инвертирование сигнала Step enable, BOOL
$5 = 0 Инвертирование входов от конечных датчиков (концевики), BOOL
$6 = 0 Инвертирование входа от датчика поверхности Probe, BOOL
$10 = 3 Маска получения статуса от GRBL: 00000011
$11 = 0,020 Отклонение при прохождении крутых поворотов, мм.
$12 = 0,002 Величина сегмента дуги, мм.
$13 = 0 Данные от контроллера GRBL в дюймах, BOOL
$20 = 0 Включить программное ограничение перемещений (параметры $130,$131,$132) BOOL
$21 = 0 Включить ограничение по концевым датчикам, BOOL
$22 = 0 Автопозиционирование по концевикам, поиск точки Home, BOOL
$23 = 1 Маска инвертирования направления движения к точке Home 00000001
$24 = 50,000 Скорость движения у концевиков, мм / мин
$25 = 635,000 Скорость движения к точке Home, мм / мин
$26 = 250 Задержка срабатывания концевиков (антидребезг) мс.
$27 = 1,000 Расстояние «отскока» от концевиков, мм.)
$100 = 314,961 Число шагов на мм. по оси X, шаг / мм
$101 = 314,961 Число шагов на мм. по оси Y, шаг / мм
$102 = 314,961 Число шагов на мм. по оси Z, шаг / мм
$110 = 635,000 Максимальная скорость перемещений по оси X мм / мин
$111 = 635,000 Максимальная скорость перемещений по оси Y мм / мин
$112 = 635,000 Максимальная скорость перемещений по оси Z мм / мин
$120 = 50,000 Ускорение по оси X (чем больше значение тем быстрее разгон) мм / сек ^ 2
$121 = 50,000 Ускорение по оси Y (чем больше значение тем быстрее разгон) мм / сек ^ 2
$122 = 50,000 Ускорение по оси Z (чем больше значение тем быстрее разгон) мм / сек ^ 2
$130 = 225,000 Программное ограничение перемещения по оси X мм (включение $20 = 1)
$131 = 125,000 Программное ограничение перемещения по оси Y мм (включение $20 = 1)
$132 = 170,000 Программное ограничение перемещения по оси Z мм (включение $20 = 1)

Вывод списка параметров, команда: $$
Изменение параметра: $x = значение (x - номер параметра, например $100=90, новое значение количества шагов на один миллиметр для оси X = 90)

RST=$, $RST=#, $RST=* - Команды восстановление настроек и параметров Grbl по умолчанию.
RST=$ - Восстанавливает параметры из списка $$ на значения из прошивки (заданные по умолчанию перед компиляцией).
RST=# - Обнуляет все значения заданные через команды G54-G59, G28, G30 (смещения и позиции), хранящиеся в EEPROM.
RST=* - Обнуляет и восстанавливает все настройки и параметры GRBL, хранящиеся в EEPROM.
RST=* рекомендуется выполнить после прошивки, перед дальнейшей настройкой).

Таблица значений для масок инвертирования:

Инв. X Инв. Y Инв. Z Маска
bit
Значение
dec
Нет Нет Нет 00000000
0
Да Нет Нет 00000001
1
Нет Да Нет 00000010
2
Да Да Нет 00000011
3
Нет Нет Да 00000100
4
Да Нет Да 00000101
5
Нет Да Да 00000110
6
Да Да Да 00000111
7

Если например нужно инвертировать направление движения по осям X и Y, выбираем маску 00000011 значение 3.
Вводим команду: $3 = 3 OK

После внесения изменений в параметры, выполняем сброс контроллера (команда CTRL-X OK или соответствующая кнопка в управляющей программе).

Настройка параметров ($100, $101, $102) количество шагов на миллиметр для осей X, Y, Z.
Для ШВП. Вводные:
1. Шаг винта мм/оборот
2. Число полных шагов на один оборот вала двигателя, для шагового двигателя обычно 200 но может быть и меньше (смотрите документацию на двигатель).
3. Микрошаг (деление шага, установленное на драйвере двигателя) если полный шаг берем 1.
Шагов на миллиметр = Число полных шагов * микрошаг / Шаг винта.
Пример для оси Y: Шаг винта = 5, Число полных шагов = 200, микрошаг = 8; 200 * 8 / 5 = 320
Задаем новое значение для оси Y: $101 = 320 OK, делаем сброс CTRL-X и проверяем перемещение (например F500 G1 Y30).
Тоже самое для других осей.

Метод подбора (пример для оси X). Входящие:
1. Заданный путь, например F500 G1 X10.
2. Реально пройденный путь (замеряем линейкой), к примеру получилось 16 мм.
3. Текущее количество шагов на миллиметр для оси X (смотрим параметр $100 по команде $$), допустим у нас $100 = 314.961.
Считаем: шагов на мм. (новое значение) = Реально пройденный путь мм / Заданный путь мм * Шагов на мм (текущее значение); 16 / 10 * 314.961 = 503.9376
Задаем новое значение для оси X: $100 = 503.9376 OK, делаем сброс CTRL-X затем проводим замер заново но с большим перемещением
(например F500 G1 X100). И так несколько раз до получения приемлемой точности. Тоже самое для других осей.


Инструкция - как записать прошивку в ардуино-контроллер: http://www.cnc-club.ru/wiki/index.php/FirmwareGRBL