发明内容
为了保证电机控制***可以在增量编码器断线后,依然获取到正确的位置信息,本发明一方面提供了一种增量式编码器位置校正***。
其中所述增量式编码器分别在A相信号线和B相信号线中具有A相输入信号和B相输入信号,该增量式编码器位置校正***包括:
输入单元,其功能包括:
检测A相输入信号的边沿;
检测B相输入信号的边沿;
交换A相输入信号和B相输入信号;
根据A相和B相的边沿和电平的相对关系,确定编码器的旋转方向;
根据A相和B相的输入状态,判断是否有信号发生断线,若有,则输出对应的断线标志,并锁存当前编码器的旋转方向;
AB相计数器,用于对编码器的A相输入信号和B相输入信号的边沿进行计数,其中在编码器正转时,所述AB相计数器的值在每个有效边沿增加1,并且在编码器反转时,所述AB相计数器的值在每个有效边沿减小1;
控制器,其功能包括:
在A相输入信号线或B相输入信号线发生断线的情况下存储当前计数值作为第一计数值并且使AB相计数器复位;
从AB相计数器接收第二计数值;以及
根据第一计数值和第二计数值确定第三计数值;以及
计数值输出模块,用于第三计数值的输出。
进一步地,所述第三计数值的确定包括:将第一计数值的一半、第二计数值、以及断线标志输出前丢失的有效边沿个数的一半相加以得到第三计数值。
进一步地,A相信号线和B相信号线正常输入时,所述AB相计数器为双脉冲计数模式,其有效边沿为A相和B相两路信号的上升沿和下降沿;B相信号线的信号发生断线时,所述AB相计数器配置为单脉冲计数模式,其中所述其有效边沿为A相信号的上升沿和下降沿;以及A相信号线的信号发生断线时,所述AB相计数器配置为单脉冲计数模式,其其中所述通过所述输入单元交换A相和B相输入,将其中所述有效边沿配置为B相信号的上升沿和下降沿。
进一步地,所述***包括以下五个运行状态:
S10初始状态;
S11锁存AB相计数器的计数值;
S12切换到单脉冲计数模式;
S121 A相、B相输入交换;以及
S13复位AB相计数器到0x0000。
当输入单元产生B相断线标志后,所述计数模式切换状态机状态按如下顺序切换:S11->S12->S13->S10;
当输入单元产生A相断线标志后,所述计数模式切换状态机状态按如下顺序切换:S11->S12->S121->S13->S10。
另一方面,本发明还提供了一种增量式编码器位置校正方法,包括:
切换计数模式,当输入单元产生断线标志后,内部状态机控制硬件启动计数模式切换流程,包括:
锁存AB相计数器当前的计数值作为第一计数值N1;
将AB相计数器的计数模式切换到单脉冲计数模式;以及
复位AB相计数器的计数值到0x0000;
重新计数,下一个A相或B相的边沿到来后,根据断线标志产生时锁存的编码器旋转方向,确定AB相计数器计数方向,并重新开始计数,以得到第二计数值N2,若断线标志产生时,编码器正转,则计数器的值在计数脉冲的每个边沿加1,若断线标志产生时,编码器反转,则计数器的值在计数脉冲的每个边沿减1;
校正计数值,根据第一计数值N1、第二计数值N2以及断线标志输出前丢失的计数值N3,计算第三计数值N,
N=N1/2+N2+N3/2;以及
确定编码器位置,所述计数值输出模块将第三计数值通过总线发送给CPU,CPU根据所述第三计数值确定编码器当前的位置和速度。
进一步地,如果是编码器的A相发生断线,则在将AB相计数器的计数模式切换到单脉冲计数模式后,启动输入交换功能。
进一步地,所述断线标志输出前丢失的计数值N3计算如下:N3=(M+1)*2,其中,M为预设的数值,当断线检测电路检测到编码器在两个错误状态之间切换M次后产生断线标志。
进一步地,编码器输入信号恢复正常后,AB相计数器的计数模式切换到双脉冲计数模式,校正计数值,根据当前旋转方向重新计数。
本发明提供的增量式编码器位置校正***和方法,内置于芯片中,无需额外的外接电路,降低了***设计成本。此外,在增量式编码器的A相或B相发生断线后,可以由硬件自动切换AB相计数器的计数模式,进而获取校正后的位置信息,整个切换过程仅需几个工作时钟,运算简单,可以适用于高转速的应用。
具体实施方式
以以下的描述中,参考各实施例对本发明进行描述。应当指出,各附图中的各组件可能为了图解说明而被夸大地示出,而不一定是比例正确的。在各附图中,给相同或功能相同的组件配备了相同的附图标记。
在本说明书中,对“一个实施例”或“该实施例”的引用意味着结合该实施例描述的特定特征、结构或特性被包括在本发明的至少一个实施例中。在本说明书各处中出现的短语“在一个实施例中”并不一定全部指代同一实施例。
在此还应当指出,在本发明的实施例中,为清楚、简单起见,可能示出了仅仅一部分部件或组件,但是本领域的普通技术人员能够理解,在本发明的教导下,可根据具体场景需要添加所需的部件或组件。
在此还应当指出,在本发明的范围内,“相同”、“相等”、“等于”等措辞并不意味着二者数值绝对相等,而是允许一定的合理误差,也就是说,所述措辞也涵盖了“基本上相同”、“基本上相等”、“基本上等于”。以此类推,在本发明中,表方向的术语“垂直于”、“平行于”等等同样涵盖了“基本上垂直于”、“基本上平行于”的含义。
另外,本发明的各方法的步骤的编号并未限定所述方法步骤的执行顺序。除非特别指出,各方法步骤可以以不同顺序执行。
本发明提供一种内置于芯片的增量式编码器位置校正***和方法,无需额外的外接电路,降低了***设计成本。此外,在增量式编码器的A相或B相发生断线后,由硬件自动切换AB相计数器的计数模式,进而获取校正后的位置信息,整个切换过程仅需几个工作时钟,运算简单,可以适用于高转速的应用。
下面结合图1,详细介绍根据本发明的一种增量式编码器位置校正***。如图1所示,本发明提供一种增量式编码器位置校正***,包括输入单元101,AB相计数器102,控制器103以及计数值输出模块104。
所述输入单元101用于检测A相输入信号及和B相输入信号的边沿上升沿和下降沿,并根据A相输入信号和B相输入信号的边沿和电平的相对关系,从以下状态及其切换模式确定增量式编码器的状态,判断A相信号线和B相信号线是否发生断线,并输出断线标志:
S0:A相信号的电平为0且B相信号为下降沿,或A相信号为下降沿且B相信号的电平为0;
S1:A相信号为下降沿且B相信号的电平为1,或A相信号的电平为0且B相信号为上升沿;
S2:A相信号为上升沿且B相信号的电平为0,或A相信号的电平为1且B相信号为下降沿;以及
S3:A相信号的电平为1且B相信号为上升沿,或A相信号为上升沿且B相信号的电平为1。
所述状态切换模式包括:
S0->S2->S3->S1->S0,表明A相信号的相位超前B相信号的相位90°,编码器正转;
S0->S1->S3->S2->S0,表明A相信号的相位滞后B相信号的相位90°,编码器反转;
S0->S1->S0->S1或S2->S3->S2->S3,表明A相信号发生断线,此时,状态每切换一次,内部计数器数值加1,当计数器数值达到预设值M时,所述输入单元101输出A相断线标志,并锁存当前编码器的旋转方向;以及
S0->S2->S0->S2或S1->S3->S1->S3,表明B相信号发生断线,此时,状态机状态每切换一次,内部计数器数值加1,当计数器数值达到预设值M时,所述输入单元101输出B相断线标志,并锁存当前编码器的旋转方向;
所述输入单元101功能还包括交换A相和B相输入。
所述AB相计数器102,用于对编码器的A相和B相的边沿进行计数,从而确定编码器当前的位置。A相和B相有正常输入时,所述AB相计数器102采用双脉冲计数模式,如图2所示,所述双脉计数模式的计数脉冲为A相和B相两路信号的边沿,当编码器正转时,计数器的值在A相和B相的每个边沿增加1,当编码器反转时,计数器的值在A相和B相的每个边沿减小1。B相的信号发生断线时,所述AB相计数器102采用单脉冲计数模式,所述单脉冲计数模式的计数脉冲默认为A相信号的边沿,当编码器正转时,计数器的值在A相信号的每个边沿增加1,当编码器反转时,计数器的值在A相信号的每个边沿减小1。A相的信号发生断线时,启动所述输入单元101中的A相和B相输入交换功能,可以将所述单脉冲计数模式的计数脉冲切换为B相信号,当编码器正转时,计数器的值在B相信号的每个边沿增加1,当编码器反转时,计数器的值在B相信号的每个边沿减小1。
所述控制器103,用于在A相输入信号线或B相输入信号线发生断线的情况下存储当前计数值作为第一计数值并且使AB相计数器复位,从AB相计数器接收第二计数值,并根据第一计数值和第二计数值确定第三计数值。在本发明提供的一个实施例中,所述控制器包括计数模式切换状态机及校正电路,所述计数模式切换状态机用于当A相和B相有某一路信号发生断线后,控制硬件,将AB相计数器的双脉冲计数模式切换为单脉冲计数模式切换,所述校正电路用于计数值校正。
所述计数模式切换状态机包括五个状态:S10初始状态、S11锁存AB相计数器的计数值、S12切换到单脉冲计数模式、S121 A相、B相输入交换功能以及S13复位AB相计数器到0x0000。当输入单元产生B相断线标志后,所述计数模式切换状态机状态切换为S11,并按如下顺序切换:S11->S12->S13->S10。当输入单元产生A相断线标志后,所述计数模式切换状态机状态切换为S11,并按如下顺序切换:S11->S12->S121->S13->S10。
所述校正电路的输入包括:
第一计数值N1,为断线发生时锁存的计数值;
第二计数值N2,为当前AB相计数器的计数值;以及
断线标志输出前,丢失的AB相计数器的边沿个数N3。
所述计数值输出模块104,用于输出第三计数值。
如图3所示,正常状况下,增量式编码器的输出信号经滤波后进入AB相计数器,且AB相计数器工作于双脉冲计数模式,一旦检测到编码器断线,则所述计数模式切换状态机开始进入计数模式切换流程,切换完成后,所述AB相计数器开始工作,并将输出送到计数值校正电路,经由所述计数值输出模块输出校正计数值。
图4示出基于所述增量式编码器位置校正***的一种增量式编码器位置校正方法的具体步骤,包括:
步骤401,判断断线线路,
若所述AB相状态机状态转换顺序为S0->S2->S0->S2或S1->S3->S1->S3,则表明B相信号发生断线。状态机状态每切换一次,内部计数器数值加1,当所述内部计数器数值达到预设值M时,所述输入单元101输出A相断线标志,并锁存当前编码器的旋转方向,存储当前AB相计数器计数值作为第一计数值N1。然后进入步骤411,切换计数模式。所述计数模式切换状态机切换至状态S11,并控制硬件启动计数模式切换流程,所述计数模式切换状态机状态切换顺序如下:S11->S12->S13->S10。接下来,步骤412,重新计数:
若断线标志产生时,编码器正转,则下一个A相的边沿到来后,AB相计数器在计数脉冲的每个边沿加1,重新开始计数,以获得第二计数值N2;
若断线标志产生时,编码器反转,则下一个A相的边沿到来后,AB相计数器在计数脉冲的每个边沿减1,重新开始计数,以获得第二计数值N2。
若所述AB相状态机状态转换顺序为S0->S1->S0->S1或S2->S3->S2->S3,则表明A相信号发生断线,状态机状态每切换一次,内部计数器数值加1,当计数器数值达到预设值M时,所述输入单元101输出B相断线标志,并锁存当前编码器的旋转方向,存储当前AB相计数器计数值作为第一计数值N1。然后进入步骤421,切换计数模式。所述计数模式切换状态机切换至状态S11,并控制硬件启动计数模式切换流程,所述计数模式切换状态机状态切换如下:S11->S12->S121->S13->S10。接下来,步骤422,重新计数:
若断线标志产生时,编码器正转,则下一个B相的边沿到来后,AB相计数器在计数脉冲的每个边沿加1,重新开始计数,以获得第二计数值N2;
若断线标志产生时,编码器反转,则下一个B相的边沿到来后,AB相计数器在计数脉冲的每个边沿减1,重新开始计数,以获得第二计数值N2。
接下来,步骤402,校正计数值。所述校正电路根据第一计数器的计数值N1、第二计数值N2以及断线标志输出前丢失的计数值N3,计算第三计数值,即校正计数值N,
N=N1/2+N2+N3/2;
其中,N3=(M+1)*2。
接下来,步骤403,确定编码器位置,所述计数值输出模块将校正后计数值N通过总线发送给CPU,CPU根据所述校正后计数值N确定编码器当前的位置和速度。
尽管上文描述了本发明的各实施例,但是,应该理解,它们只是作为示例来呈现的,而不作为限制。对于相关领域的技术人员显而易见的是,可以对其做出各种组合、变型和改变而不背离本发明的精神和范围。因此,此处所公开的本发明的宽度和范围不应被上述所公开的示例性实施例所限制,而应当仅根据所附权利要求书及其等同替换来定义。