Разбираюсь с пропорциональной частью для начала. Выставил в прошивке фиксированную установку, соответствующую 10 шагам скорости, и корректирую ее дробной частью ошибки. Пока что пытаюсь обойтись дробями степеней двойки, получается так себе.
В качестве моста использую чип A4953 от Allegro. Я его ставил в самодельный шилд DCC++, работает отлично, решил поставить в декодер. Как дело дошло до BEMF, выяснилась неприятная особенность моста - время перехода в Z состояние у него около 1мс, поэтому процедура замера не может производиться слишком часто. Сейчас замер выполняется каждые 20мс.
bemf speed 10 with commutation.png (7.23 КБ) 1727 просмотров
После остановки PWM приходится ждать 1мс и потом еще немного для надежности. Желтый прямоугольник - 16 выборок АЦП, каждая прогоняется через простой цифровой фильтр. После фильтра данные суммируются, и сумма используется как входная величина для регулятора.