ant*_*rry 5 c++ arrays math lookup
我在校准期间从编码器(已知速度)记录 2 个电压。创建这个(角度上的电压),然后我需要测量电压并获得相应的角度。
我也想在记录点之间找到值以获得更高的精度,某种 arccos 查找表,我被卡住了,无法找到一种有效的方法来做到这一点。
我是否必须通过比较大量数组来研究我在数组中的值?那会很慢吧?
我曾尝试使用 Arcos 函数,但我猜这不会补偿机械不规则性。此外,我已经计算了波的平均值和幅度。
编辑:正如所问,目标是测量 FOC 电机的位置。设置如下。
这是我使用 atan2 函数得到的结果:
x = 2*(hallA.read() - moyenneA)/(maxA-minA); y = 2*(hallB.read() - moyenneB)/(maxB-minB);

小智 1
最终,您无法向数据添加比已有信息更多的信息。除了更频繁地采样。也就是说,您可以使用线性插值来估计任意两个测量点之间的电压。查找线性插值的详细信息,但总结一下,如果 A 点和 B 点之间的时间点 C 是 A 点和 B 点之间时间的 25%。然后计算加权相同的电压。所以电压C = 电压A + 25%(电压A - 电压B)。
至于计算角度,那不是我的专业领域。但我想我会计算我感兴趣的点后面 1/2 采样时间的线性插值和我感兴趣的点之前 1/2 采样时间的插值,并计算斜率的角度。但是,我不是信号处理专家。有很多关于这个主题的书。还有其他可用的插值函数,在互联网上阅读有关信号处理插值的内容可能会为您提供大量更多信息。
如果您担心数据中的机械或电气噪声,那么我建议使用平滑算法。我知道快速傅立叶变换非常流行。但我确信还有很多其他选择。网上肯定有过滤库和算法。但正如我所说,这不是我的专业领域。也许我的回答会触发其他人以更专业的方式回答。消除高频噪声的一种方法就是减少采样频率。