Нужен алгоритм, чтобы найти минимум и сбалансировать его - PullRequest
0 голосов
/ 08 мая 2019

Я управляю шаговым двигателем, и мне нужно найти положение, в котором он измеряет минимальное напряжение, а затем продолжать балансировать двигатель вокруг этого положения.

У меня есть базовый алгоритм для нахождения минимума исбалансировать количество «шагов» вокруг позиции (она находит минимум, а затем перемещается на 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;

Код, который я вставил поверх, уравновешивает двигатель по положению, и яне знаю, как сбалансировать это по разнице в%.

Ребята, у вас есть идеи?

Спасибо

...