《QEI编程笔记.pdf》由会员分享,可在线阅读,更多相关《QEI编程笔记.pdf(6页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、QEI 编程笔记2010 年 8 月 23 日 14:35:011.1.1.1.正交编码器下面是几张工业上常用的正交编码器图正交编码器(又名增量式编码器或光电式编码器),用于检测旋转运动系统的位置和速度。正交编码器可以对多种电机控制应用实现闭环控制,诸如开关磁阻(SR)电机和交流感应电机(ACIM)。典型的增量式编码器包括一个放置在电机传动轴上的开槽的轮子和一个用于检测该轮上槽口的发射器/检测器模块。通常,有三个输出,分别为:A 相、B 相和索引(INDEX),所提供的信息可被解码,用以提供有关电机轴的运动信息,包括距离和方向。A 相(QEA)和 B 相(QEB)这两个通道间的关系是惟一的。如
2、果 A 相超前 B 相,那么电机的旋转方向被认为是正向的。如果 A 相落后 B 相,那么电机的旋转方向则被认为是反向的。第三个通道称为索引脉冲,每转一圈产生一个脉冲,作为基准用来确定绝对位置。编码器产生的正交信号可以有四种各不相同的状态(00,01,10,11)。请注意,当旋转的方向改变时,这些状态的顺序与此相反(11,10,01,00)。正交解码器捕捉相位信号和索引脉冲,并将信息转换为位置脉冲的数字计数值。通常,当传动轴向某一个方向旋转时,该计数值将递增计数;而当传动轴向另一个方向旋转时,则递减计数。选择“x4”测量模式,QEI 逻辑在 A 相和 B 相输入信号的上升沿和下降沿都使位置计数器
3、计数,可以为确定编码器位置提供更高精度的数据(更多位置计数)。正交编码器接口(QEI)模块提供了与增量式编码器的接口。QEI 由对 A 相和 B 相信号进行解码的正交解码器逻辑以及用于累计计数值的递增/递减计数器组成。QEI 模块包括:三个输入引脚,即两个相位信号和一个索引脉冲提供计数器脉冲和计数方向的正交解码器16 位递增/递减位置计数器计数方向状态X2 和 X4 计数分辨率两种位置计数器复位模式通用 16 位定时器/计数器模式由 QEI 或计数器事件产生的中断2.2.2.2.QEIQEIQEIQEI 功能概述功能概述QEI 模块对正交编码器转轮所产生的两位格雷码进行解码,从而通过位置计数器
4、累计值计算位置,以及确定旋转的方向。另外,该接口还能够捕获编码转轮运行时的速率。位置积分器和速度捕获功能可以单独使用,但是在使能速度捕获前必须先使能位置积分器才可以。phA 和 phB 这两个相位信号在被 QEI 模块解码前可以进行交换,以改变正向和反向的意义和纠正系统的错误接线。QEI 模块支持两种信号操作模式:正交相位模式和时钟/方向模式。在正交相位模式中,编码器产生两个相位差为 90 度的时钟信号,它们的边沿关系被用来确定旋转的方向。在时钟/方向模式中,编码器产生一个时钟信号和一个方向信号来分别表示步长和旋转方向。QEI 模块配置为何种模式主要依赖于所选用的码盘是何种类型。群星系列单片机
5、自带的 QEI 模块,在控制方面提供了极大的方便,在许多电机控制领域都可以胜任其职能。1.位置捕获当在正交模式时,phA 的边沿超前与 phB 的边沿时,位置计数器在每检测到一个边沿就加 1,phA 的边沿落后与 phB 的边沿时,位置计数器在每检测到一个边沿就减 1。当一对上升沿和下降沿出现在其中一个相位上,而在另一个相位上没有任何边沿时,旋转方向已经发生了改变。在时钟和方式模式下,当方向信号为高电平时,位置计数器在每检测到一个边沿就加 1;当方向信号为低电平时,位置计数器在每检测到一个边沿就减 1。位置计数器的值在感测到索引脉冲或者达到最大位置时会复位。2.速度检测QEI 模块里面自带一个
6、定时器,设置定时器的定时时间,在预设的时间周期内,获取捕获到的 pha 和 phB 的边沿数目,此数目与编码器的速率成正比例。软件初始化 QEI 时,设置好捕获的模式和捕获的边沿对象,并设置好定时器的时间,即可读取在预设时间内的边沿数,就可以换算出编码器的速率。3 中断控制QEI 模块可以在以下 4 种情况下产生中 断:?检测到相位错误时?方向改变时?速率定时器定时时间到时?检测到索引脉冲时QEI 的中断,可以灵活配置,对编码器的状态进行监测,实现方便的控制,也可以配合定时器外设的 CCP,对编码器进行精确的控制。也可以利用 QEI 去扩展其他外设的不足,比如把速率定时器当作一个普通定时器用。
7、2010 年 8 月 23 日 18:19:31三大主要功能:大主要功能:在 QEI 的使用中,实际上是一个定时器进行计数和定时,从而测试出输入 PHa 和 PHb的脉冲个数,进而测出转速,由 PHa 和 PHb 的相位前后判断旋转方向。通过设定一圈有多少脉冲,在计数的作用下进行脉冲计数,可以确定出绝对位置。由于 index 信号的作用是每转一圈产生一个脉冲,也可以作为基准用来确定绝对位置。绝对位置捕捉绝对位置捕捉而当前时间周期的边沿计数在 QEICOUNT 寄存器中进行累加。当前时间周期一结束,这时 QEICOUNT 复位为 0,并在一个新的时间周期开始计数。在给定时间周期内所计得的边沿数目
8、与编码器的速度成正比例。通过设定每圈的脉冲个数可以确定绝对位置。测速测速速度捕获包含一个可配置的定时器和一个计数寄存器。定时器在给定时间周期内对相位边沿进行计数(使用与位置积分器相同的配置)。控制器通过 QEISPEED 寄存器来获得上一个时间周期内的边沿计数值,而当前时间周期的边沿计数在 QEICOUNT 寄存器中进行累加。当前时间周期一结束,在该段时间内计得的边沿总数便可以从 QEISPEED 寄存器中获得(上一个值丢失)。这时 QEICOUNT 复位为 0,并在一个新的时间周期开始计数。在给定时间周期内所计得的边沿数目与编码器的速度成正比例。可以使用下面的等式将速率计数器的值转换为 rp
9、m(每分钟的转数):rpm=(clock*(2VelDiv)*Speed*60)(Load*ppr*edges)此处:clock 表示定时器的时钟频率ppr 表示实际编码器旋转一圈的脉冲数edge 为 2 或 4,根据 QEICTL 寄存器中设置的捕获模式来决定(CapMode 设为 0 时,edge 为 2,CapMode 为 1 时 edge 为 4)。注意:使用库函数时是记录的 Speed。由于某些立即数可能会超过 32 位整数,因此,在计算这个等式时要特别注意。在上例中,时钟为 10,000,除法器为 2,500,我们可以将这两个值预先除以 100(如果它们在编译时是常数),因此这两个
10、值就变为 100 和 25。事实上,如果它们在编译时是常数,则可将它们简化为只简单地乘以 4,而又由于边沿计数因子为 4,因此两个值刚好抵消。QEIVelocityConfigure()的第三个参数为:ulPeriod。所以:rpm=(2VelDiv*Speed*60)*(Sysclk/ulPeriod)(ppr*edges)获取方向获取方向A 相(QEA)和 B 相(QEB)这两个通道间的关系是惟一的。如果 A 相超前 B 相,那么电机的旋转方向被认为是正向的。如果 A 相落后 B 相,那么电机的旋转方向则被认为是反向的。库函数编程:库函数编程:编程步骤:1、使能 QEI2、使能 QEI 所
11、在 PORT3、设置 QEI 所在 PIN 的 Type4、EQI 配置(基本配置 和 速度模式配置)5、使能 QEI功能模块 和 速度模块。6、根据自己实际需要获取 方向 速度 绝对位置。注意:QEI 基本配置函数 QEIConfigure()和速度模式配置函数使用 QEIVelocityConfigure().QEIQEIQEIQEI 具有以下特殊特点:具有以下特殊特点:1 1 1 1、可以配置获取脉冲的方式:可以配置获取脉冲的方式:PhAPhAPhAPhA 信号的上升和下降沿或是在信号的上升和下降沿或是在 PhAPhAPhAPhA 和和 PhBPhBPhBPhB 的上的上升和下降沿对位置
12、计数器进行更新。升和下降沿对位置计数器进行更新。QEI_CONFIG_CAPTURE_AQEI_CONFIG_CAPTURE_AQEI_CONFIG_CAPTURE_AQEI_CONFIG_CAPTURE_A/仅使用仅使用 PhAPhAPhAPhA 边沿进行计数边沿进行计数QEI_CONFIG_CAPTURE_A_BQEI_CONFIG_CAPTURE_A_BQEI_CONFIG_CAPTURE_A_BQEI_CONFIG_CAPTURE_A_B/使用使用 PhAPhAPhAPhA 和和 PhBPhBPhBPhB 边沿进行计数边沿进行计数2 2 2 2、QEIQEIQEIQEI 模块支持两种信
13、号操作模式:正交相位模式和时钟模块支持两种信号操作模式:正交相位模式和时钟/方向模式。方向模式。QEI_CONFIG_QUADRATUREQEI_CONFIG_QUADRATUREQEI_CONFIG_QUADRATUREQEI_CONFIG_QUADRATURE/使用正交相位信号使用正交相位信号QEI_CONFIG_CLOCK_DIRQEI_CONFIG_CLOCK_DIRQEI_CONFIG_CLOCK_DIRQEI_CONFIG_CLOCK_DIR/使用时钟方向信号使用时钟方向信号3 3 3 3、INDEXINDEXINDEXINDEX 使用可选择:使用可选择:QEI_CONFIG_NO
14、_RESETQEI_CONFIG_NO_RESETQEI_CONFIG_NO_RESETQEI_CONFIG_NO_RESET/忽略索引信号,不复位位置计数忽略索引信号,不复位位置计数QEI_CONFIG_RESET_IDXQEI_CONFIG_RESET_IDXQEI_CONFIG_RESET_IDXQEI_CONFIG_RESET_IDX/有索引信号则复位位置计数有索引信号则复位位置计数4 4 4 4、PhAPhAPhAPhA、PhBPhBPhBPhB 信号在使用前交换线路信号在使用前交换线路,可以让硬件错误在软件上纠正可以让硬件错误在软件上纠正,也可以实也可以实现硬件加密(设置明显的现硬
15、件加密(设置明显的“错误错误”,通过软件更正,通过软件更正)。QEI_CONFIG_NO_SWAPQEI_CONFIG_NO_SWAPQEI_CONFIG_NO_SWAPQEI_CONFIG_NO_SWAP/不交换两相的信号不交换两相的信号QEI_CONFIG_SWAPQEI_CONFIG_SWAPQEI_CONFIG_SWAPQEI_CONFIG_SWAP/交换两相的信号交换两相的信号在在 PhAPhAPhAPhA 和和 PhBPhBPhBPhB 的上升和下降沿上更新位置计数器提供更高精度的数据(更多位置计的上升和下降沿上更新位置计数器提供更高精度的数据(更多位置计数数),但位置计数器的计数范围却相对变少了但位置计数器的计数范围却相对变少了。工业上常用高精度的数据工业上常用高精度的数据,所以在配置时选所以在配置时选择这个参数择这个参数 QEI_CONFIG_CAPTURE_A_BQEI_CONFIG_CAPTURE_A_BQEI_CONFIG_CAPTURE_A_BQEI_CONFIG_CAPTURE_A_B。ByByByBy paul!paul!paul!paul!