需要一种算法来找到最小值并在其上保持平衡

时间:2019-05-08 13:37:19

标签: c++ stepper

我正在控制步进电机,我需要找到测量最小电压的位置,然后在该位置附近保持电机平衡。

我有一个基本算法来查找最小值并平衡该位置周围的多个“步数”(它找到最小值,然后向右移动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;

我粘贴的代码通过位置来平衡电动机,但我不知道如何通过%差异来平衡电动机。

你们有想法吗?

谢谢

0 个答案:

没有答案