Мікрокроки з прискоренням

Кілька тижнів тому я грався з програмною реалізацією мікрокроків (microsteps) для маленького крокового двигуна.

З мікрокроками двигун звучить тихіше і рухається начебто більш плавно.

Перехід між кроками роблю якось так: спочатку пишемо старий стан і чекаємо 300 μs (мікросекунд), потім на 10 μs робимо новий, потім ще 290 μs старий, потім 20 μs новий, і так далі. Дуже просто і примітивно. 9 ms на один повний крок.

Моя наступна мета така: хочу починати рух повільно, а потім збільшувати швидкість. Питання в тому, як же це порахувати правильно. Ну, нехай це буде звичайний рівноприскорений обертальний рух аж до виходу на максимальну швидкість. Наче має бути проста арифметика з шкільного підручника фізики, чи не так?

Щось не зовсім проста. І щось я туплю.

Далі буде.