воскресенье, 10 сентября 2017 г.

CNC 2418 с платой WOODPECKER - обновляем GBRL 0.9j => 1.1f

Всё описанное здесь - испытано "на собственной шкуре".. буду признателен, если кто дополнит или сделает видео-инструкцию.. для популяризации темы ЧПУ..  (как ни крути. а без паяльника тут.. ну ни как ))) ) 

   Давно хотел стать рабовладельцем владельцем небольшого настольного ЧПУ станка...  Основное целеполагание  - фрезеровка дорожек, сверловка и обрезка печатных плат..  В общем после полугода чтений обзоров, просмотров видео.. решился.. на вид - всё очень просто.. Мдя.. даже и не думал.. сколько "нам открытий чудных, готовит просвещенья дух"..  Сколько разных приколов было с ПО.. только после "танцев на граблях", удалось добиться результата...  сломанные фрезы, запорченные платы.. 

   В общем, приобретя некоторый опыт работы.. пришёл к выводу.. что глюки станка связаны со связкой: прошивка GRBL + ПО GRBLControl.  Решил я это дело обновить.. но на Русскоязычных ресурсах - информации нуль.. Зато на форуме GitHub - этой информации вполне достаточно. Я её немного собрал в кучу, обновил свой контроллер и дарю Вам - пользуйтесь:

1. Обновить прошивку можно через Arduino IDE
2. Но везёт не всем... у некоторых, в т.ч и у меня, в лоб не проходит..
3. Для тех, кому не повезло - придётся программировать контроллер через SPI
4. SPI-программатор можно сделать из любой платы Ардуино.. лучше брать платы с usb-портом.. так комфортнее..


Перед тем, как приступить к обновлению ПО - крайне рекомендую сохранить настройки платы "по умолчанию" в файл.. для этого через терминал соеденяемся с платой и вводим команду $$
На что получаем ответ - список параметров с моей платы:

Grbl 0.9j ['$' for help]
$0=10 (step pulse, usec)
$1=25 (step idle delay, msec)
$2=0 (step port invert mask:00000000)
$3=5 (dir port invert mask:00000101)
$4=0 (step enable invert, bool)
$5=0 (limit pins invert, bool)
$6=0 (probe pin invert, bool)
$10=3 (status report mask:00000011)
$11=0.010 (junction deviation, mm)
$12=0.002 (arc tolerance, mm)
$13=0 (report inches, bool)
$20=0 (soft limits, bool)
$21=0 (hard limits, bool)
$22=0 (homing cycle, bool)
$23=0 (homing dir invert mask:00000000)
$24=25.000 (homing feed, mm/min)
$25=500.000 (homing seek, mm/min)
$26=250 (homing debounce, msec)
$27=1.000 (homing pull-off, mm)
$100=800.000 (x, step/mm)
$101=800.000 (y, step/mm)
$102=800.000 (z, step/mm)
$110=800.000 (x max rate, mm/min)
$111=800.000 (y max rate, mm/min)
$112=500.000 (z max rate, mm/min)
$120=10.000 (x accel, mm/sec^2)
$121=10.000 (y accel, mm/sec^2)
$122=10.000 (z accel, mm/sec^2)
$130=200.000 (x max travel, mm)
$131=200.000 (y max travel, mm)
$132=200.000 (z max travel, mm)

Отлично!  Теперь нужно сделать следующее:
0. Скачать и установить Arduino IDE с сайта www.arduino.cc
1. Скачать архив grbl-master с  GitHub
2. Извлечь содержимое архива куда удобно
3. В папке содержимого архива, найти папку grbl и скопировать её в библиотеки Arduino IDE (библиотеки лежат в каталоге пользователя (ОС Windows) - C:\Users\ИмяПользователя\Documents\Arduino\libraries
4. После того, как скопировали, заходим в каталог Arduino\libraries\grbl и редактируем содержимое двух файлов: defaults.h и config.h


4.1  Редактируем defaults.h

для этого  открываем файл в блокноте или как я - notepad++, копируем любую секцию между #ifdef DEFAULTS_XXX и #enddef, даём ей своё уникальное имя и правим - ставим параметры, которые установлены для нашего ЧПУ в прошивке 0.9j

Вот так выглядит у меня:

А вот и текст.. как видно из не удалённых комментариев  - скопирована секция для OpenBuilds OX, внесены изменения, и дано своё имя - DEFAULTS_2418... запоминаем его...

#ifdef DEFAULTS_2418
  // Grbl settings for OpenBuilds OX CNC Machine
  // http://www.openbuilds.com/builds/openbuilds-ox-cnc-machine.341/
  #define DEFAULT_X_STEPS_PER_MM 800
  #define DEFAULT_Y_STEPS_PER_MM 800
  #define DEFAULT_Z_STEPS_PER_MM 800
  #define DEFAULT_X_MAX_RATE 800.0 // mm/min
  #define DEFAULT_Y_MAX_RATE 800.0 // mm/min
  #define DEFAULT_Z_MAX_RATE 500.0 // mm/min
  #define DEFAULT_X_ACCELERATION (10.0*60*60) // 10*60*60 mm/min^2 = 10 mm/sec^2
  #define DEFAULT_Y_ACCELERATION (10.0*60*60) // 10*60*60 mm/min^2 = 10 mm/sec^2
  #define DEFAULT_Z_ACCELERATION (10.0*60*60) // 10*60*60 mm/min^2 = 10 mm/sec^2
  #define DEFAULT_X_MAX_TRAVEL 200.0 // mm NOTE: Must be a positive value.
  #define DEFAULT_Y_MAX_TRAVEL 200.0 // mm NOTE: Must be a positive value.
  #define DEFAULT_Z_MAX_TRAVEL 200.0 // mm NOTE: Must be a positive value.
  #define DEFAULT_SPINDLE_RPM_MAX 10000.0 // rpm
  #define DEFAULT_SPINDLE_RPM_MIN 100.0 // rpm
  #define DEFAULT_STEP_PULSE_MICROSECONDS 10
  #define DEFAULT_STEPPING_INVERT_MASK 0
  #define DEFAULT_DIRECTION_INVERT_MASK 5
  #define DEFAULT_STEPPER_IDLE_LOCK_TIME 25 // msec (0-254, 255 keeps steppers enabled)
  #define DEFAULT_STATUS_REPORT_MASK 3 // MPos enabled
  #define DEFAULT_JUNCTION_DEVIATION 0.01 // mm
  #define DEFAULT_ARC_TOLERANCE 0.002 // mm
  #define DEFAULT_REPORT_INCHES 0 // false
  #define DEFAULT_INVERT_ST_ENABLE 0 // false
  #define DEFAULT_INVERT_LIMIT_PINS 0 // false
  #define DEFAULT_SOFT_LIMIT_ENABLE 0 // false
  #define DEFAULT_HARD_LIMIT_ENABLE 0  // false
  #define DEFAULT_INVERT_PROBE_PIN 0 // false
  #define DEFAULT_LASER_MODE 0 // false
  #define DEFAULT_HOMING_ENABLE 0  // false
  #define DEFAULT_HOMING_DIR_MASK 0 // move positive dir
  #define DEFAULT_HOMING_FEED_RATE 25.0 // mm/min
  #define DEFAULT_HOMING_SEEK_RATE 500.0 // mm/min
  #define DEFAULT_HOMING_DEBOUNCE_DELAY 250 // msec (0-65k)
  #define DEFAULT_HOMING_PULLOFF 1.0 // mm
#endif

Изумительно!!!  теперь 

4.2  Редактируем config.h

здесь всё очень просто.. указываем свои Defauls


   Ну вот.. первый шаг сделан.. влили grbl в библиотеку Arduino IDE, подправили конфиг. Осталось только залить в контроллер..

   Вторая часть балета скучная.. и требует навыков работы с паяльником.. Припаиваем три провода к выводам контроллера на плате "дятла".. эти проводники подключаем к SPI интерфейсу и заливаем прошивку..
 
   Ну а теперь - об особенностях... я прошивал через плату RobotDyn UNO - клон UNO R3.. для этого нужно плату перевести в режим программатора.. В среде Arduino IDE выбираем Файл-Примеры-11ArduinoSPI-ArduinoSPI.  Проверяем порт, тип платы,  программатор AVRISP mkII

и нажимаем кнопку - загрузить прошивку.... После загрузке скетча ArduinoSPI, можем использовать плату как SPI программатор.

!!! хочу предостеречь тех, кто решит подключаться к ICSP разъёму на плате клона...  скетч написан для использования пинов 13,12,11,10.. да.. пины с 11 до 13 выведены на ICSP-разъём.. но RESET (SS) на нём не актвивен в данном скетче.. поэтому его нужно брать с 10 пина  !!! Учитывайте это! Я сначала подключился к ICSP  и убил часа два времени.. пока разобрался, где проблема.. В общем истина в очередной раз. делай по мануалу и не выпендривайся )))

Куда припаивать провода на плате "дятла" - выводы


А вот фото с форума, я нашёл отличие от своей платы - расположение кнопки RESET.. и да.. к RESET можно не припаиваться.. он выведен отдельным пином на грепбёнке


 Пины питания так-зже выведены на гребёнку, и к ним можно подключиться с помощью дюпонд коннекторов..


ну и завершающий шаг - как прошить.. тут всё просто.. делаем в среде Arduino IDE следующие настройки: плата - Arduino Nano, программатор - Arduino as SPI


уфф!!... вышли на финишную прямую..  Осталось выбрать нужный скетч и записать его через  получившийся из ардуины программатор..



и теперь записываем


теперь скрестим пальцы и ждём..  У меня процедура завершилась успехом..  после подключении платы "дятла", и видим в терминале кое-что поменялось.. прошивка стала 1.1f

Как видите, кое-что добавилось в настройках..


Проверил работу инструмента "в холостую" с по Candle 1.1.7... первое что заметил - при загрузке файлов, сформированных их CopperCam - станок выставляет обороты.. если раньше это было кратное число.. то сейчас - это фактические значения,.. вот такой бонус в новом grbl 1.1f,  поэтому учитывайте этот факт.. )))
   Самое главное, из-за чего всё затевалось. ушёл глюк, когда после снятия карты высот и отправки команды на фрезеровку.. каретка уходила в сторону с опусканием по оси Z..
Надеюсь что теперь свёрла и фрезы не будут ломаться из-а глюков софта..

После загрузки G-кода, сделанного в CopperCam, вылезли ошибки.. но если игнорировать - то фрезеровку дорожек делает.. буду разбираться дальше.. Возможно стоит повозиться с настройками CopperCam.. Но  в любом случае - нет глюка, который меня реально "парил".. и да.. сейчас всё прекрасно работает под Вин10х64.. и надобности в древних ПК с аппартным com-портом.. уже нет..  Правда есть один "косяк" - не работает кнопка "домой".. возможно стоит почитать комментарии в файле конфигурации config.h и первоисточник..


Можно углубиться в чтение мануалов, сделать удобный для себя config.h и залить в "дятла"..
Я пока подумаю, как и в каком виде вывести SPI с платы "дятла".. дабы избавиться от "сопельного" монтажа при очередном обновлении ПО..



Для тех кто дружит с англицким..
 форум: https://github.com/gnea/grbl/issues/123
GRB: https://github.com/gnea/grbl  и
Candle: https://github.com/Denvi/Candle

13 комментариев:

  1. Круто! А готовый програматор разве не подойдет?

    ОтветитьУдалить
  2. Этот комментарий был удален автором.

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

    ОтветитьУдалить
  4. Этот комментарий был удален автором.

    ОтветитьУдалить
  5. Если еще актуально. Аналогичная плата, и задача обновления. Пробовал программатор usbasp - не прошил. Arduino as isp не прошил. Но зато смог прошить загрузчик.
    Получилось так: делал все по вашей инструкции. Когда arduino была подключена к woodpecker из среды ARDUINO IDE->Инструменты->Записать загрузчик.
    Далее плата прошивается из ARDUINO IDE без надобности во внешних программаторах. Загрузчик занял примерно 1.5кб.
    Огромное спасибо за инструкцию!

    ОтветитьУдалить
  6. Пожалуйста! Рад что помог!
    Ваш опыт - тоже безценный, может многим помочь!

    ОтветитьУдалить
  7. День добрый! Я тоже попытался проделать такой фокус, но что-то пошло не так...)) Вобщем не буду вдаваться в подробности, но я спалил порт MISO на МК. Заменить МК не проблема, и даже готовая прошивка у меня есть, но программатор у меня USBAsp с прогой SinaProg, а там помимо самой прошивки необходимо выставить фьюзы, а их я не знаю. У вас в ардуине, видимо, это уже вшито в саму программу. Отсюда вопрос, не знаете ли вы случаем какие должны быть фьюзы? Или, если не затруднит, то прочитайте их из своего станка.

    ОтветитьУдалить
  8. Здравствуйте!
    Обновил прошивку китайского CNC 2418 до grbl_v1.1f.20170801
    Candle 1.1.7
    Не работает кнопка домой, выдаёт ошибку $H < error:5
    И не работает кнопка восстановления СК, пишет всё ок, но ничего не происходит.
    Как с этим бороться?

    ОтветитьУдалить
  9. Здравствуйте!
    * "кнопка восстановления СК" - настройки/Управление/ставим галку на против "Перемещение по "Восстановить СК""
    * "хомление" - у меня тоже не работает, но по аналогии с пром. контроллером: пока не включишь в опциях лимиты и не установишь датчики... не будет работать.

    ОтветитьУдалить
    Ответы
    1. Огромное спасибо, "Восстановить СК" заработало.
      Кнопкой "домой" я не пользуюсь, спросил что называется до кучи, концевиков пока нет. :)

      Удалить
  10. у меня cnc 3018 прошивку обновлял идущей в китайском наборе по, называется xloader. в первом окошке выбрал хекс файл, во втором надо из выпадающего списка выбрать модель микроконтроллера в моем случае uno(atmega328). путь к хексу не должен содержать кириллицы. в идеале корень диска.

    ОтветитьУдалить