Портирование прошивки GRBL на полностью отечественный МК Амур (K1948BK015)
Отсутствие опенсорсного решения для управления ЧПУ на отечественном микроконтроллере 1‑го уровня локализации — существенный барьер для развития собственных систем управления станками. Портирование кода GRBL решает эту проблему: оно позволяет создать надёжную, прозрачную и адаптируемую прошивку, полностью соответствующую требованиям локализации.
В качестве прототипа выбрана плата‑расширение для Arduino UNO, позволяющая быстро верифицировать алгоритмы управления ЧПУ и отработать взаимодействие с драйверами шаговых двигателей и периферией. Целевая платформа — отечественный микроконтроллер 1‑го уровня локализации K1948BK015, на который планируется портировать адаптированную прошивку GRBL.
Цель проекта — создать полноценное решение для управления фрезерным или лазерным ЧПУ‑станком со следующими возможностями:
* управление до 4-х шаговых двигателей с поддержкой микрошага;
* ШИМ‑управление шпинделем или лазерным модулем (частота ≥ 15 кГц) с поддержкой команд M3/M5 и S‑параметров;
* использование концевых выключателей для автоматического поиска нулевой точки парковки каретки станка;
* поддержка датчика высоты/неровностей заготовки (Z‑probe) для компенсации рельефа;
* совместимость со стандартным подмножеством G‑кода и популярными GUI‑интерфейсами (Candle, UGS);
* изменение количества шагов в зависимости от механики станка и сохранение настроек во EEPROM;
* диагностика и вывод логов через UART.
Проект обеспечивает технологическую независимость, открытый аудит кода и возможность адаптации под российские аппаратные платформы, что делает его востребованным для образовательных, исследовательских и производственных задач.
Работает не большая команда из 3-х человек:
Денис П. - профессиональный инженер-программист МК.
Глеб Н. - инженер-электронщик.
Сандалов В. - инженер-программист
На текущий момент реализована работа концевых выключателей для определения крайних положений при движении каретки, приём команд по UART, чтение/запись настроек из EEPROM, перенесен алгоритм вычисления микрошага, реализовано управление инструментом посредством ШИМ.
Тестировали прошивку на следующей на следующей программе:
G21 G17 G90
G1 X10 Y0 F5000
G2 X0 Y10 I-10 J0
G2 X-10 Y0 I0 J-10
G2 X0 Y-10 I10 J0
G2 X10 Y0 I0 J10
Частота выборки логического анализатора задана 16 MS/s
Логический анализ в формате “Saleae”. Более подробно можно посмотреть скачав файл
GRBL_RISC_V_K1948BK018__circular_motion.sal Открывается он в приложении которое можно скачать по этой ссылке Logic Analyzers | Saleae .
На осциллографе получилось такое же значение.
Нам удалось добиться чтобы ширина импульса соответствовала ширине импульса на Atmega 328. Это было самое сложное в проекте.
Добиться такого результата удалось переносом всех функций связанных с формированием импульса для шаговых двигателей в RAM.
uint32_t(process_irqs) = 0x020005A0
uint32_t(limits_irqs) = 0x02000212
uint32_t(ISR_TIMER1_COMPA_vect) = 0x02000284
uint32_t(ISR_TIMER0_OVF_vect) = 0x020001F2
uint32_t(probe_state_monitor) = 0x02000246
uint32_t(st_go_idle) = 0x02000160
uint32_t(probe_get_state) = 0x02000150
На видео представлена работа выше указанной программы сначала на Atmega, затем на Амур. Повторяемость один к одному.
Запускали программу через приложение Candle верcии 1.0.7 под управлением ОС Windows 7.
Пробовали запускать программу более 15 Кб. При буфере команд 1Кб работа прерывалась в начале. После увеличения буфера до 4Кб зависания прекратились.
Сейчас мы разрабатываем финальную версию платы.
Всем добра!















