Я пишу некоторое программное обеспечение для управления пятифазным шаговым двигателем. Скорость шагового двигателя регулируется частотой импульса, который я посылаю на контроллер двигателя. Моя нынешняя проблема заключается в том, что я хочу облегчить движения. На самом деле я копирую поведение некоторых старых программ, для которых у меня нет исходного кода. У меня есть понимание логики смягчения, и оно ведет себя так:
- когда окончание / устойчивая скорость медленная, ускорение медленнее / занимает больше времени
- когда окончание / устойчивая скорость высокая, ускорение быстрее / короче
Например… когда устойчивая скорость составляет 693 Гц, длительность замедления составляет 766 миллисекунд. Я измерил эту кривую легкости с помощью логического анализатора Saleae. Вот кривая:
Начальная частота 97,77 Гц. Вот ссылка на актуальные данные. Поэтому я пытаюсь понять, как реализовать правильную логику/формулу для этого в коде. Следующий фрагмент кода будет выдавать приращения в Гц, которые относительно близки к приращениям, которые мне нужны, но я не могу понять, как заставить его повторять/удерживать одно и то же current_freq
в течение все более длительного периода времени — именно это создает кривую, которую вы видите на графике. Мой множитель, создающий приращения, тоже выключен, но он относительно близок…
** редактировать - я думаю, что приведенное ниже в теории работает, поскольку добавляет измерение увеличения времени для удержания повышения current_freq
, но что-то не так с моей реализацией ... она просто делает каждую частоту один раз.
current_freq = 97.
end_freq = 1134
t = 4
# number of times to send the current freqency
print current_freq
while current_freq < end_freq:
i = 1
t = t+t * .1673
print i
while i <= t:
print current_freq
i = i+1
break
current_freq = current_freq + current_freq * .1673
Любые идеи? Это логарифм? Грех или потому? Если это не очевидно, я ужасно разбираюсь в математике.