Кремень КД Реклама
Кремень КМ Реклама

Marlin и Mega: частота сигнала STEP

eta4ever
Идет загрузка
Загрузка
29.01.2016
21568
103
Техничка

Подпишитесь на автора

Подпишитесь на автора, если вам нравятся его публикации. Тогда вы будете получать уведомления о его новых статьях.

Отписаться от уведомлений вы всегда сможете в профиле автора.

42
Marlin и Mega: частота сигнала STEP
Вообще-то, я собирался сегодня садиться за продолжение материала об электронике RepRap. Но для сначала надо попытаться разобраться с одним спорным моментом. Кто читал комментарии, думаю, догадывается. Началось все с упоминания о потенциальных проблемах с микрошагом 1/32. Потом на пальцах прикинул вообще странное - получилось, что производительности не должно хватать для перемещения со скоростью выше 125 мм/с.

Сегодня построил 'тестовый стенд', подключил логический анализатор, и стал экспериментировать. 'Стенд' представляет собой классический бутерброд 'Mega+RAMPS' с переделанным пятивольтовым питанием, установлен один драйвер DRV8825 (1/32). Двигатель и ток упоминать смысла нет - результаты полностью идентичны при 'полном' подключении, при наличии драйвера и отсутствии двигателя, при отсутствии и драйвера и двигателя.

Анализатор - китайский клон Saleae Logic, подключен к пину STEP драйвера. Прошивка Marlin 1.0.2 настроена следующим образом: максимальная скорость 1000 мм/с на ось, CoreXY, 160 шагов на мм (это для двигателя с шагом 1.8', 20-зубого шкива, ремня GT2 и дробления 1/32).

Методика эксперимента

Задаем маленькое ускорение (100 мм/с) и запускаем перемещение по оси X на 1000 мм с различными целевыми скоростями. Например, G-код G1 X1000 F20000. 20000 - это скорость в мм/мин, 333.3(3) мм/с. И смотрим, что у нас с импульсами STEP.

Общие результаты

Marlin хитрая. Она где-то внутри прикидывает, хватит ли частоты выдачи сигнала STEP при одном импульсе на прерывание. Если не хватает - то начинает выдавать по два импульса на прерывание. Эффективная частота увеличивается, но импульсы следуют не через равный промежуток. А если опять не хватает - то уже по четыре на прерывание. Выглядит это примерно так.
Marlin и Mega: частота сигнала STEP
То есть, отталкиваясь от частоты прерываний в 10 КГц, мы получаем эффективную частоту до 40 КГц. Применив к этому немножко арифметики, получаем вот что:

до 62.5 мм/с - один шаг на прерывание;

до 125 мм/с - два шага на прерывание;

до 250 мм/с - четыре шага на прерывание.

Это теория. А что на практике? А если задать больше 250 мм/с? Ну, хорошо, даю G1 X1000 F20000 (333.3(3) мм/с) и анализирую полученное. Измеренная частота импульсов при этом составляет почти 40 КГц (250 мм/с). Логично.

Хрень
Marlin и Mega: частота сигнала STEP
Marlin и Mega: частота сигнала STEP
На скорости выше 10000 мм/мин (166,6(6) мм/с) я стабильно получаю провалы в тактировании. На обоих движках синхронно (напомню, CoreXY). Длятся они 33 мс, находятся примерно за 0.1 с до начала снижения скорости. Иногда такой же провал есть в начале движения - через 0.1 после завершения набора скорости. Вообще, есть подозрение, что он устойчиво пропадает на скорости до 125 мм/с - то есть, когда не применяются 4 шага на прерывание, но это только подозрение.

Как интерпретировать 'хрень' - я не знаю. С какими-то внешними воздействиями она не коррелирует - с общением по последовательному порту не совпадает, прошивка собрана без поддержки всяких дисплеев и SD-карт.

Мысли

1. Если не пытаться что-то нашаманить с Marlin, потолок скорости (1.8', 1/32, 20 зубов, GT2) - 250 мм/с.

2. На скоростях выше 125 мм/с (гипотетически) есть глюк с провалом тактирования. Где и как он будет проявляться в реальной работе - я предсказать не могу.

3. В более сложных условиях (когда процессор что-то усиленно считает) точно будет не лучше, а скорее - хуже. Насколько - вопрос для куда более монументального исследования, ведь придется сопоставлять запланированные программой перемещения с реально выданными (и захваченными) импульсами - на это у меня пороху не хватит.

Вывод

Не будет вывода. Очень надеюсь на обсуждение.

Подпишитесь на автора

Подпишитесь на автора, если вам нравятся его публикации. Тогда вы будете получать уведомления о его новых статьях.

Отписаться от уведомлений вы всегда сможете в профиле автора.

42
Комментарии к статье