一种自适应的编码器测速装置和方法
技术领域
本发明涉及一种自适应的编码器测速装置和方法,属于电学领域,更具体而言,具体涉及一种QEP模块只是一个独立外设,而不是一个独立的处理器的基于硬件的编码器测速装置和方法。
背景技术
现有方案采用的是软硬件结合的方法来测量和计算电机的转速,通常解码有硬件完成,计算有软件完成,而乘法在嵌入式软件中运算比较复杂,运算周期长,这样会使软件的处理流程变长,负担加大,在实时的应用控制系统中,可能没有足够的时间来处理更重要的事情。软件具有延时性,对电机转速的计算和控制的实时性较差。
现有电机编码器解码中,电机高速与低速运行时,分别使用两套不同的解码方式,且切换点由软件定义。这样会使软件负担加重,如果软件正在处理重要进程或中断没有及时处理电机解码程序,那么会使电机得不到有效控制,使电机转速不平稳而产生波动,严重还会损坏应用系统。同时在切换点处不能精确采集到电机的转速,导致软件解码精度有一定的影响。
其次,软件本身进行数据的数学运算的时候,耗时比较长,这样很容易导致软件解码后获得的电机转速不准确,致使对电机的速度的控制效果不理想。
发明内容
本发明针对上述问题,提供一种自适应的编码器测速装置和方法,包括一个QEP模块,将将电机解码和速度计算算法(QEP)硬件化为微控制器的一个独立外设,配合专门的调试工具,开发人员只需配置切换点速度之类的参数,无需很复杂的操作即可实现电机速度计算与控制的功能。硬件化后可以减轻软件的负担,使软件可以由更充足的时间去处理其他的进程,还可以减轻软件的维护成本,缩短软件的开发与调试周期。
本发明解决上述问题所采用的技术方案是:
一种自适应的编码器测速装置和方法,包括一个QEP模块,所述QEP模块只是将电机解码和速度计算算法硬件化为微控制器的一个独立外设,而不是一个独立的处理器,它的控制参数向CPU完全开放,不需要额外的编译工具和目标代码链接工具,只需要通过CPU就可以对其进行操作。
进一步地,所述QEP模块包括:
QDU单元,用于根据寄存器的配置,将输入的编码器脉冲正确的采到有效边沿和,并判断电机的转动方向,同时生成Timer、计数器的复位和锁存信号;
Capture单元,用于对特定的编码盘生成的编码脉冲进行捕获,并计算脉冲有效边沿的时间;
Wdt单元,用于做模块内部的看门狗单元,可以检测长时间没有编码脉冲的有效沿到来。在规定的Wdt计时范围内若无编码脉冲的有效边沿,则给出中断。用来防止编码盘的异常工作;
Timer单元,用于做模块内部的计时器单元,计时范围可以通过软件配置。计时时间到后会产生中断;
PCCU单元,用于做计数器计数单元,根据QDU单元生成的编码脉冲有效沿和正反转标记,来进行正向或反向计数,并通过QDU产生的复位和锁存信号来进行对计数器的复位和锁存;
SCU单元,用于做速度计算单元,该单元主要进行速度的计算,通过软件配置的狭缝数量和当前时钟频率来计算当前一段时间的速度值,并可以通过寄存器传递给CPU;
MSU单元,用于做模式切换单元,该单元通过SCU单元输出的当前速度,并且参照当前的测速模式,根据软件配置的临界速度寄存器值,来进行判断何时切换测速模式和切换到何种测速模式。
更进一步地,所述QDU单元输入端A、B、Z、mode_switch连接所述QEP单元外部,输出端qa_cap、qb_cap、qc_cap连接Capture单元,输出端q_clk、q_dir、RST连接PCCU单元,输出端clk同时连接Wdt单元,双向总线中的timer_intr、timer_rst连接Timer单元;
所述Capture单元输出数据到寄存器CAPStatus、CAPCntLatch,通过总线从寄存器QEPCAPEn、CAPConfig、RsetCap中读取数据,输出端capcnt连接SCU单元,输入端mode_switch连接MSU单元;
所述Wdt单元通过总线从寄存器WDTEn、WDTvalue中读取数据;
所述Timer单元通过输入端mode_switch连接MSU单元,输出端timer_latch连接SCU单元,通过总线从寄存器TimerEn、TimerValue中读取数据;
所述PCCU单元通过输出端qepcnt连接SCU单元,通过总线输出数据到寄存器QEPPosCnt、QEPPosNum,通过总线从寄存器QEPCAPEn、QEPConfig、QEPPosCntMax中读取数据;
所述SCU单元通过输出端speed连接MSU单元,通过总线从寄存器CrackNum、FreClock中读取数据,通过总线输出数据到寄存器Speed;
所述MSU单元通过总线从寄存器CriSpeed1、CriSpeed2中读取数据。
更进一步地,一种自适应的编码器测速方法,包括以下步骤:
(1)CPU配置QEP模块的相关参数,包括使能QEP、QEP的最大计数值、QEP的计时值和速度切换点的速度值;
(2)外部电机开始转动,产生编码脉冲A、B和Z;
(3)QEP根据编码脉冲来计算速度并根据速度切换点的速度值自动切换高低速测速模式,到达一定条件时产生中断;
(4)QEP产生中断后CPU可以将速度寄存器中的当前电机速度值读出,并通过其他相关外设对电机转速进行控制;
(5)重复上述第三步,计算电机当前速度。
更进一步地,所述计算电机当前速度,在低速模式的情况下,由于电机转动速度较慢,两个编码器脉冲的间隔较长,那么采用计算固定脉冲次数之间的时间,再用已知脉冲次数对应的角度除以这段脉冲的时间,即得出角速度。
更进一步地,所述自适应的编码器测速方法,所述计算电机当前速度,在高速模式的情况下,与低速模式不同,此种模式下,由于电机转动速度比较快,两个编码脉冲的时间间隔比较短,采用低速模式的计数方法会计算不准确,那么此种模式采用的是在固定时间内计算脉冲次数的方法,再由此段时间内的脉冲次数和设定的时间来计算角速度计算方法和低速模式相同。
本发明的优点是:
1.将编码器解码功能、速度计算功能和高低速自动切换功能完全硬件化成微控制器的一个独立外设,而不是一个独立的芯片,这样节约了应用系统的成本,也使微控制器的功能更加多样化。硬件化后,硬件模块可以及时的计算出电机的速度并传输给软件对电机加以控制,由于处理速度快,在速度切换点处可以实现很平稳的控制电机的速度。实现了电机的安全与精确控制。
2.纯硬件实现QEP算法可以减少软件的运算压力,增加软件的工作效率,使软件可以高效的处理其他进程。硬件的速度较快,可以比较实时的计算电机转速并进行控制。此种方法可以使电机转速波动较小。
3.纯硬件的维护成本也比较小,集成到微处理器中后,基本不需要维护成本。
除了上面所描述的目的、特征和优点之外,本发明还有其它的目的、特征和优点。下面将参照图,对本发明作进一步详细的说明。
附图说明
构成本申请的一部分的附图用来提供对本发明的进一步理解,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。
在附图中:
图1为MCU架构框图;
图2为QEP模块架构框图;
图3为测速模式切换示意图;
图4为低速模式测速方法图;
图5为高速模式测速方法图。
具体实施方式
下面将参考附图并结合实施例,来详细说明本发明。
参考图1至图5,如图1至图5所示的一种自适应的编码器测速装置和方法,包括一个QEP模块,所述QEP模块只是将电机解码和速度计算算法硬件化为微控制器的一个独立外设,而不是一个独立的处理器,它的控制参数向CPU完全开放,不需要额外的编译工具和目标代码链接工具,只需要通过CPU就可以对其进行操作。
所述QEP模块包括:
QDU单元,用于根据寄存器的配置,将输入的编码器脉冲正确的采到有效边沿和,并判断电机的转动方向,同时生成Timer、计数器的复位和锁存信号;
Capture单元,用于对特定的编码盘生成的编码脉冲进行捕获,并计算脉冲有效边沿的时间;
Wdt单元,用于做模块内部的看门狗单元,可以检测长时间没有编码脉冲的有效沿到来。在规定的Wdt计时范围内若无编码脉冲的有效边沿,则给出中断。用来防止编码盘的异常工作;
Timer单元,用于做模块内部的计时器单元,计时范围可以通过软件配置。计时时间到后会产生中断;
PCCU单元,用于做计数器计数单元,根据QDU单元生成的编码脉冲有效沿和正反转标记,来进行正向或反向计数,并通过QDU产生的复位和锁存信号来进行对计数器的复位和锁存;
SCU单元,用于做速度计算单元,该单元主要进行速度的计算,通过软件配置的狭缝数量和当前时钟频率来计算当前一段时间的速度值,并可以通过寄存器传递给CPU;
MSU单元,用于做模式切换单元,该单元通过SCU单元输出的当前速度,并且参照当前的测速模式,根据软件配置的临界速度寄存器值,来进行判断何时切换测速模式和切换到何种测速模式。
所述QDU单元输入端A、B、Z、mode_switch连接所述QEP单元外部,输出端qa_cap、qb_cap、qc_cap连接Capture单元,输出端q_clk、q_dir、RST连接PCCU单元,输出端clk同时连接Wdt单元,双向总线中的timer_intr、timer_rst连接Timer单元;
所述Capture单元输出数据到寄存器CAPStatus、CAPCntLatch,通过总线从寄存器QEPCAPEn、CAPConfig、RsetCap中读取数据,输出端capcnt连接SCU单元,输入端mode_switch连接MSU单元;
所述Wdt单元通过总线从寄存器WDTEn、WDTvalue中读取数据;
所述Timer单元通过输入端mode_switch连接MSU单元,输出端timer_latch连接SCU单元,通过总线从寄存器TimerEn、TimerValue中读取数据;
所述PCCU单元通过输出端qepcnt连接SCU单元,通过总线输出数据到寄存器QEPPosCnt、QEPPosNum,通过总线从寄存器QEPCAPEn、QEPConfig、QEPPosCntMax中读取数据;
所述SCU单元通过输出端speed连接MSU单元,通过总线从寄存器CrackNum、FreClock中读取数据,通过总线输出数据到寄存器Speed;
所述MSU单元通过总线从寄存器CriSpeed1、CriSpeed2中读取数据。
一种自适应的编码器测速方法,包括以下步骤:
(1)CPU配置QEP模块的相关参数,包括使能QEP、QEP的最大计数值、QEP的计时值和速度切换点的速度值;
(2)外部电机开始转动,产生编码脉冲A、B和Z;
(3)QEP根据编码脉冲来计算速度并根据速度切换点的速度值自动切换高低速测速模式,到达一定条件时产生中断;
如图3所示,之所以有两个临界速度,是因为临界点时切换测速模式和电机稳定后可能电机的速度会有波动,如果电机速度值波动到临界点处,那么会使QEP模块不断的再高速和低速之间切换,会影响电机速度的测量与控制。采取了两个临界速度则会避免此种问题。电机加速阶段,在T1处,经过“临界速度1”后,QEP处于高速模式,直到转速稳定。电机减速阶段,经过T2处,QEP切换到低速模式,直到转速为0;
其中0~T1阶段和T2~T3阶段QEP处于低速模式,T1~T2阶段QEP处于高速模式。由图可以看出,T1和T2处为不同的临界速度值。但低速切换到高速的“临界速度1”一定要大于高速切换到低速的“临界速度2”,否则容易因速度波动影响电机速度的测量与控制;
(4)QEP产生中断后CPU可以将速度寄存器中的当前电机速度值读出,并通过其他相关外设对电机转速进行控制;
(5)重复上述第三步,计算电机当前速度。
所述计算电机当前速度,在低速模式的情况下,由于电机转动速度较慢,两个编码器脉冲的间隔较长,那么采用计算固定脉冲次数之间的时间,再用已知脉冲次数对应的角度除以这段脉冲的时间,即得出角速度。
所述测速方法测量的是角速度,单位是转每分(rpm),错误!未找到引用源。。
在低速模式的时候,由于电机转动速度较慢,两个编码器脉冲的间隔较长,那么采用计算固定脉冲次数之间的时间,再用已知脉冲次数对应的角度除以这段脉冲的时间,即得出角速度。例如,设置固定脉冲数为Q,那么Q个编码器脉冲计数到的时间为T,那么根据已知的编码盘上平均分配着N个缝隙,如果只采用上升沿计数,那么编码盘转动一周QEP计N个数,则根据Q和N可以计算出计Q个脉冲编码盘所转的圈数,即Q/N,再除以时间T,经过单位换算即可计算出当前时间段的角速度。
所述自适应的编码器测速方法,所述计算电机当前速度,在高速模式的情况下,与低速模式不同,此种模式下,由于电机转动速度比较快,两个编码脉冲的时间间隔比较短,采用低速模式的计数方法会计算不准确,那么此种模式采用的是在固定时间内计算脉冲次数的方法,再由此段时间内的脉冲次数和设定的时间来计算角速度计算方法和低速模式相同。
综上所述,本发明的一种自适应的编码器测速装置和方法,包括一个QEP模块,所述QEP模块只是将电机解码和速度计算算法硬件化为微控制器的一个独立外设,而不是一个独立的处理器,它的控制参数向CPU完全开放,不需要额外的编译工具和目标代码链接工具,只需要通过CPU就可以对其进行操作。
以上所述仅为本发明的优选实施例而已,本发明包括但不限于本实例,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。