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

MAB72

ТОЛЬКО ВОТ...
ПРОВЕРЕННЫЙ
Регистрация
13.01.2025
Сообщения
3
Реакции
2
Баллы
1
Город
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    Нет, я не буду ничего отключать