Код шагового двигателя. Задержка или Миллис

Я буду проектировать робота с несколькими шаговыми двигателями. целесообразно ли использовать здесь миллис вместо задержки или нет? прямо сейчас я проверяю, будет ли работать Millis(), но мне все еще трудно это программировать.

, 👍-1

Обсуждение

Зависит от того, что вам нужно сделать. delay — это блокирующий вызов, а если вы используете millis, вы можете делать другие вещи между проверками на время. Это может быть не важно, если вы используете многоядерный Arduino, или это может означать разницу между отзывчивостью и медлительностью., @Ron Beyer

Это плохой способ управления шаговым двигателем, который требует ускорения, ограничения скорости и замедления до целевого положения. Получите защитный экран с ЧПУ и мост драйвера FET и сделайте это правильно с помощью панели GRBL, программного обеспечения для интерфейса Uno uC на USB, @Tony Stewart Sunnyskyguy EE75

Я использую шаговые импульсы 10 мкс, используя Arduino + CNC Shield + GRBL PANEL s/w через Windows через USB и получаю отличные скорости сервопривода, кнопку «Домой» (автокалибровка), кнопки Jog с настроенными g, v, максимальными константами и оптимальными шагами. Бит-бэнг — это так архаично., @Tony Stewart Sunnyskyguy EE75


1 ответ


1

Функция Arduino delay(), которая приостанавливает выполнение программы на количество миллисекунд, указанное в качестве параметра.

millis(), с другой стороны, — это функция, которая возвращает количество миллисекунд, прошедших с момента запуска программы.

Точно так же, как у delay() есть микросекундная версия, называемая delayMicroseconds(), у millis() есть micros(). Если вам нужно лучшее разрешение, вам может подойти micros().

Однако имейте в виду, что micros() переполнится примерно через 70 минут по сравнению с 50 днями для millis(). Это означает, что возвращаемые значения функций будут начинаться с нуля.

,