Я бы картинку сюда загрузил, если бы мне объяснили как это сделать. Выбор режима работы, при котором ШД наиболее хорошо работает в микрошаге я себе представляю так:
на первом этапе на обмотки подаем токи, имеющие форму синуса и косинуса с шагом 90/Х градусов, где Х - кол-во микрошагов на полный шаг. Амплитуду токов подбираем таким образом, чтобы график зависимости реальной координаты от теоретической был наиболее близким к прямой. У меня получилось, что при амплитуде тока меньше оптимальной поведение ШД напоминает поведение обесточенного двигателя: ротор стремится занять положение, соответствующее полному шагу, а среднее положение как бы избегает - проходит быстро, а при очень малой амплитуде тока даже скачком. При амплитуде больше оптимальной ротор наоборот, стремится занять положение по середине между целыми шагами, в этом месте график имеет меньший наклон к оси абсцисс, а вблизи положения 'полный шаг' - больший.
Значения токов для обмоток двигателя хранятся в памяти микроконтроллера в виде таблицы, для каждого микрошага своя пара значений.
На втором этапе мы корректируем эту таблицу таким образом, чтобы еще больше приблизить график к прямой линии.
Но это еще не все, так как в реальных условиях двигатель что-то крутит, а значит работает под нагрузкой. Из за нагрузки ротор ШД проворачивается на величину, пропорциональную этой нагрузке и обратно пропорциональную моменту, создаваемому двигателем. Если момент для разных микрошагов разный, то под нагрузкой график снова станет волнистым. Короче говоря, надо искать такую таблицу, при которой обеспечивается не только одинаковый угол поворота для всех микрошагов, но и одинаковый момент удержания.
Но это не для любого мотора можно сделать.