一个encoder里面总共有2组二极管,产生相位差90度的方波。
例如,一个光栅有1000条线,那么转子每转一周,会遮挡二极管1000次,产生1000个方波信号。每个信号对应的转子角度变化就是360°/1000。
一共2组二极管,对应状态++,+-,--,-+,每个状态占90°的相位,所以最终分辨率再除以4.即360/4000
组1:+ + - - + + - - + + - -
组2:+ - - ++ - - ++ - - +
这个组1的信号叫做A信号,
组2的信号叫做B信号。
通过这两个信号可以判断转子转过的角度。这两个信号的任何一个变化的时候,转子转过360/4000度。 转动方向通过信号的变化规则来判断。
除了A信号和B信号以外,还有一个叫做Z信号。Z信号是转子每转360给出一个信号,用来确定转子的绝对位置。
ABZ信号构成了光栅计的信号输出。这3个信号又称为“quadractic encoder interface”, 在TI,microchip等单片机中有对应的信号读取端口,你可以参见TI芯片的QEI模块。
回到你的问题,伺服电机如何测速。毕竟光栅只能测位置。
最简单的方法是两个采样点之间角度差除以采样间隔时间,这样推算出速度。说白了就是离散方式求微分。不过这个方法得到的速度会有比较大的杂散信号。
为了减小杂散信号,可以用一个低通滤波,这样比较简单的过滤noise。不过滤波的缺点就是有相角位移,导致信号有延时。在非常高精度快速的控制里不好用。
更高级的可以用一个控制系统里面的可观观测器(observer),这样输出的速度准确且noise小,不过这个用的人不多,所以他们控制的精度都不咋地。
当然,伺服电机的控制基础还是dq变换,所以比起控制速度,光栅计的到的位置信号更加重要,特别重要,最重要。有了位置信号,就可以控制转矩。有了转矩,才能控制速度。有了速度,才能控制位置。。
总之,实际的电机速度就是通过电机转矩内环来控制的。电机转矩内环通过电机电流内内环来控制。这就是电机双环控制,简化的结果叫做PID。不过PID的参数太难调,99%的人都是瞎扯淡,没有理论依据。最标准的做法是不简化双环控制,调2个PI环。
都是手打的哈。本人绝不复制粘贴
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)