ИЩУ РЕШЕНИЕ Логика работы автономного контроллера?

MAB72

МЕСТНЫЙ
ПРОВЕРЕННЫЙ
Регистрация
13.01.2025
Сообщения
41
Реакции
14
Баллы
18
Город
Khabarovsk
Имя
Anton
Подскажите пожалуста, где почитать про отправку команд из контроллера на драйверы. Задумал соорудить свой контроллер (на stm32g4 or stm32h7 пока не решил). В cad/cam нарисовал чаво хочу и получил g-code. Теперь возник вопрос, как перевести этот g-cod в движение по осям. Для начала самое простое типа прямолинейное движение без ускорений и разгонов. Заранее спасибо.
 
Подскажите пожалуста, где почитать про отправку команд из контроллера на драйверы. Задумал соорудить свой контроллер (на stm32g4 or stm32h7 пока не решил). В cad/cam нарисовал чаво хочу и получил g-code. Теперь возник вопрос, как перевести этот g-cod в движение по осям. Для начала самое простое типа прямолинейное движение без ускорений и разгонов. Заранее спасибо.
Похоже эта идея не оригинальна )
 
Задумал соорудить свой контроллер (на stm32g4 or stm32h7 пока не решил). В cad/cam нарисовал чаво хочу и получил g-code. Теперь возник вопрос, как перевести этот g-cod в движение по осям.
Чтобы понять логику, разберитесь в исходнтках GRBL, там все, практически предусмотрено, и разгоны-торможения и парсирование-буферирование потока команд и многое другое.
 
Подскажите пожалуста, где почитать про отправку команд из контроллера на драйверы. Задумал соорудить свой контроллер (на stm32g4 or stm32h7 пока не решил). В cad/cam нарисовал чаво хочу и получил g-code. Теперь возник вопрос, как перевести этот g-cod в движение по осям. Для начала самое простое типа прямолинейное движение без ускорений и разгонов. Заранее спасибо.
Для начала я посоветовал бы это изучить там на где-то на 97 странице написано простейшее действие для ШД на STM, если не напугало, и все команды понятны, то смотрим уже ввод-вывод. По сути вы хотите написать новую прошивку, что-же , это похвально, не уверен что у вас что-то получиться, хватит сил и терпения, сделать прошивку и залить ее на микроконтроллер. Но почему бы и не попробовать, а вдруг что и выйдет.
 
Подскажите пожалуста, где почитать про отправку команд из контроллера на драйверы.
Логика,примерно, такая:
Команды г-кода находятся в буфере обмена.
затем, построчно обрабатываются и выстраивается уже в другой "буфер" (очередь) в виде переменных.
Далее обрабатываются и рассчитываются исходя из предыдущих переменных и настроек (шаги на мм, ускорение...) частота и количество импульсов на степ каждого драйвера а так же дир каждого драйвера.
Далее идёт команда ок на сендер и он передаёт следующую строчку кода.
Ничего сложного.
 
Подскажите пожалуста, где почитать про отправку команд из контроллера на драйверы. Задумал соорудить свой контроллер (на stm32g4 or stm32h7 пока не решил). В cad/cam нарисовал чаво хочу и получил g-code. Теперь возник вопрос, как перевести этот g-cod в движение по осям. Для начала самое простое типа прямолинейное движение без ускорений и разгонов. Заранее спасибо.
Полный автономный контроллер: считывание с карты, перевод ж-кодов в отрезки, генерация синхронизированнных импульсов для 3-х ШД для каждого отрезка. Судя по вопросам, опыта такого программирования у Вас нет, будете начинать с нуля. Года на два развлекухи хватит...
 
  • Последнее редактирование:
Последнее редактирование:
Вот именно логика из G-кода в команды step/dir. У меня только две мысли:
- по алгоритму Брезенхэма расчитывать каждый шаг(или группу шагов) в зависимости от жирности памяти и запускать из буфера через DMA в таймеры (для x свой таймер, для y свой)
- крутить с разными скоростями, я для примера намахал на скорую руку пример: проехать из А в Б прямолинейно, расчитал по X надо 7200 шагов, по Y 3200, значит при максимально доступной "скорости" на моих драйверах 200кГц необходимо 36000 микросекунд, стало быть "скорость" для Y должна быть 88889Гц. Запустил два таймера, через DMA скармливаю в один таймер свой буфер, в другой свой. И получил великолепную картинку на ЛА. За время тикания таймера 1 с частотой 200кГц, второй тамер натикал своё с частотой 88889Гц. Есть канечно нюанс, а внем и суть. Не абсолютно совпадают времена работы таймеров (погрешность около 5-10 микросекунд). Ну допустим одновременный старт таймеров можно как-то(еще не разбирался) забабахать, но вот какова приемлимая точность допустима. Как вообще правильно это делать?
 
Тема выходит за рамки "экспресс", отправляю в более подходящий раздел.
 
Полный автономный контроллер: считывание с карты, перевод ж-кодов в отрезки, генерация синхронизированнных импульсов для 3-х ШД для каждого отрезка. Судя...
Ну что ж, план есть. Начну с генерации синхронных импульсов для 3-х ШД.
 
Ну допустим одновременный старт таймеров можно как-то(еще не разбирался) забабахать, но вот какова приемлимая точность допустима. Как вообще правильно это делать?
Лет 5 назад делал полные автономные АК на СТМ: первый - на 103-ем, второй - на 407-мом. С таймерами для генерации импульсов. А в третьем, на ЕСП32, для токарника, которым занимаюсь сейчас, попробовал вместо таймеров использовать ненавидимые проффесионалами задержки. Понравилось: синхронизация проще, коды прозрачнее, подводных камней типа отлова перекрывающихся запросов на генерацию импульсов для разных ШД нет.
 
С таймерами для генерации импульсов...
А можно чутка поподробней, у меня не получается стартануть одновременно три таймера, в режиме tim_dma_burst все класно, каждый таймер берет свое , но стартовать одновремменно ну ни в какую. без dma красиво так офигенно, но придется использовать прерывания от таймеров, а тут желание забабахать аппаратно ну хотя бы эту часть.
 
Сверху Снизу
Обнаружен блокировщик рекламы AdBlock

МЫ ДОГАДЫВАЕМСЯ, ЧТО РЕКЛАМА ВАС РАЗДРАЖАЕТ!

Конечно, Ваше программное обеспечение для блокировки рекламы отлично справляется с блокировкой рекламы на нашем сайте, но оно также блокирует полезные функции. Мы стараемся для Вас и не обязываем Вас донатить и скидывать денег на наши кошельки, чтобы пользоваться форумом, но реклама это единственное, что позволяет поддерживать проект и развивать его.

Спасибо за Ваше понимание!

Я отключил свой AdBlock    Нет, я не буду ничего отключать