MATLAB中用李沙育图形分析光栅尺sincos信号正交性
在光栅编码器应用中,细分技术是核心。影响细分精度的其中一个重要因素就是模拟量sin/cos信号的正交情况。理想情况下sin/cos相位差=90°,实际输出的信号相位会有偏差,根据偏差的情况并结合应用需求判断,由该偏差引起的细分误差对应用有多大影响,若影响较大,就要考虑相位补偿措施。
在细分前最好还是先观察一下光栅尺输出的sin/cos信号质量,这里只观察正交情况。当两个信号相位差为90°时,合成图形为正椭圆,此时若两个信号的振幅相同的话,合成图形为圆。示波器中可以直接设置观察李沙育图形,我用示波器的时候没有调出来李沙育图形(后来调出来了),就想到把提取的数据用matlab做李沙育图形。
//-------------------------------------------------------------------------
clear
clc
data = csvread(‘sincos信号.CSV’,2,4); //读取示波器从光栅尺中提取的两路sincos信号;
sinn = data(:,1); //提取sin信号
cosn = data(:,2);//提取cos信号
s_p = in4(16050:25420,:);%选一段数据
s_n = in3(16050:25420,:);%选一段数据
%sin/cos信号归一化
outaa = s_p’;
outbb = s_n’;
y1 = mapminmax(outaa)’;
y2 = mapminmax(outbb)’;
%生成标准正交sin/cos信号,用作对比
x = 0:0.1:2*pi;
p1=sin(x);
p2=cos(x);
plot(p1,p2) %sin/cos值分别作为x,y轴就可以生成李沙育图形
hold on
plot(y1,y2)
grid on
//-----------------------------------------------------------------------------------
从图中跟标准正交信号对比可以看出,光栅尺输出的sin/cos信号并不是标准的圆。幅值不相等,差别很小,相位不完全正交,但相位偏差很小。从图中只能大体的判断信号质量。更精确的分析还需要进一步的数据处理,做定量相位偏差分析。
另外一种判断正交情况的方法是,利用示波器读到的数据,将sin/cos归一化在[-1,1]后,进行曲线拟合,然后求sin.*cos在[0,2Π]上的积分。积分值越接近0就说明越趋于相位差90°。