从传感器我有4个正交信号。两个信号是模拟的,两个是数字的。信号代表拾取传感器的位置,如图所示。信号是:
模拟信号相移90度。数字信号由过零检测器产生。模拟信号的一个周期表示传感器的2mm移动。
当我转换数字信号时,我可以通过ADC(10位)捕获模拟信号的最小值和最大值。我还可以使用数字信号的相位关系来检测我们是在正向还是负向移动。我还可以通过检测分辨率为1 mm的数字信号的转换来轻松测量距离。
但根据模拟信号的当前值获取距离的小数部分的最佳算法/方法是什么?我想通过组合A和B模拟信号以最大动态分辨率来做到这一点。
答案 0 :(得分:1)
如果您的模拟信号大致是正弦曲线,那么您可以将它们视为相位角的正弦和余弦(一个完整的2mm行程将是相位的2 * pi弧度)。在C(和其他语言)中,您可以使用atan2功能将模拟信号转换为相位角。在伪代码中,您将拥有:
fractional_distance = atan2(analog-A, analog-B) * 2 mm / 2 pi radians
如果您的信号实际上不是正弦信号,那么这仍然有效,它只会在您的分数距离内引入失真。