Я управляю шаговым двигателем, и мне нужно найти положение, в котором он измеряет минимальное напряжение, а затем продолжать балансировать двигатель вокруг этого положения.
У меня есть базовый алгоритм для нахождения минимума исбалансировать количество «шагов» вокруг позиции (она находит минимум, а затем перемещается на 10 шагов вправо, 20 влево, 20 вправо ... и т. д.).Теперь я хочу, чтобы он уравновешивался, но не по количеству шагов, мне нужно, чтобы он уравновешивался с мерой (она находит минимальное значение, а затем уравновешивает + 20%, например, если минимальное значение равно 10, мне нужен двигатель для перемещениядо 12, и если он не определяет новый минимум и измеряет больше 12, измените направление и сделайте то же самое).
switch (DIR){
case 0:{
if (lastMeasure > measure)
steps = 10;
else
steps--;
if (steps == 0){
steps = 10;
DIR = 1;
}
makeAStep();
}break;
case 1:{
if (lastMeasure > measure)
steps = 10;
else
steps--;
if (steps == 0){
steps = 10;
DIR = 0;
}
makeAStep();
}break;
lastMeasure = measure;
Код, который я вставил поверх, уравновешивает двигатель по положению, и яне знаю, как сбалансировать это по разнице в%.
Ребята, у вас есть идеи?
Спасибо