Надо, наверное, копать в сторону формулы определения расстояния при равноускоренном движении:

где:
S - пройденное расстояние, м
v1 - начальная скорость при ускорении или конечная при замедлении, м/с
v2 - конечная скорость при ускорении или начальная при замедлении, м/с
a - ускорение, м/с^2
Только вместо метров и секунд подставить шаги двигателя и миллисекунды. То есть:
S - количество сделанных шагов
v1 - начальная скорость при ускорении или конечная при замедлении, шагов/миллисекунду
v2 - конечная скорость при ускорении или начальная при замедлении, шагов/миллисекунду
a - ускорение, шагов/мс^2
Тогда получается, что если, к примеру, нужно снизить скорость от 50 до 2 шага в миллисекунду с ускорением (значением торможения) 2 шага в миллисекунду, тогда находим количество шагов, которые двигатель сделает в процессе торможения:

Значит за 624 шага до того как скорость должна стать равной 1 начинаем снижать скорость по 2 шага в миллисекунду.
Я не уверен во всем этом, не пробовал, но мне кажется, что должно работать
UPD: Не, фигня это. Не получается почему-то так.
Добавлено after 1 hour 23 minutes 48 seconds:
Re: Алгоритм плавного разгона и торможения шгового двигателя
Тогда смотреть в сторону суммы членов арифметической прогрессии

S - количество сделанных шагов
v1 - начальная скорость при ускорении или конечная при замедлении, шагов/миллисекунду
v2 - конечная скорость при ускорении или начальная при замедлении, шагов/миллисекунду
a - ускорение, шагов/мс^2
t - это количество шагов уменьшения скорости до достижения нужной
Вот так вроде все сходится с подсчетом в лоб на калькуляторе
