使用QEI模块测量速度和位置_cn
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
应用实例
图 3 所示是使用 QEI 模块的典型应用, 其中, 交流感应 电机 (ACIM)的控制,是通过使用正交编码器获得反 馈信息来进行的。
图 3:
120-230 VAC
典型应用与简化原理图
整流器
AN1 AN7
IBUS VBUS
交流电机 +5V 3相 逆变器 dsPIC® DSC
QEA QEB INDEX
GS002
使用 QEI 模块测量速度和位置
作者:
Jorge Zambada Microchip Technology Inc. A 相(QEA)和 B 相(QEB)这两个通道的关系是唯一 的。如果 A 相超前 B 相,就认为电机转动方向为正(或 正向);如果 A 相滞后于 B 相,则认为电机转动方向为 负 (或反向) 。第三个通道称作索引脉冲,每转动一圈 产生一个索引脉冲,作为基准用来确定绝对位置。不是 所有编码器都提供索引信号, 索引信号并不是 QEI 正确 工作所必需的。这三个信号的相对时序参见图 1。 QEI 由正交解码器逻辑电路和向上 / 向下计数器组成 : 正 交解码器逻辑用来解释 A 相、 B 相和索引信号;向上 / 向下计数器用来累计计数。输入端的数字毛刺滤波器用 来对输入信号进行滤波。 图 2 所示为 QEI 模块的简化框 图。 QEI 模块具有如下特征: • • • • • • • • • 三个输入引脚,用于两个相信号和一个索引脉冲 输入端上的可编程数字噪声滤波器 正交解码器 (提供计数器脉冲和计数方向) 16 位向上 / 向下位置计数器 计数方向状态 X2、 X4 计数分辨率 两种位置计数器复位模式 通用 16 位定时器 / 计数器模式 由 QEI 或计数器事件产生的中断
识别索引 产生 QEI 中断 POSCNT 置为 0000
2005 Microchip Technology Inc.
高级信息
DS93002A_CN 第 5 页
GS002
代码示例
下面的代码示例将根据本应用实例的要求, 对 QEI 模块 进行初始化:
示例 1:
初始化 QEI 模块
void InitQEI(void) { ADPCFG |= 0x0038; QEICONbits.QEIM = 0; QEICONbits.CNTERR = 0; QEICONbits.QEISIDL = 0; QEICONbits.SWPAB = 0; QEICONbits.PCDOUT = 0; QEICONbits.POSRES = 1; DFLTCONbits.CEID = 1; DFLTCONbits.QEOUT = 1; DFLTCONbits.QECK = 5; DFLTCONbits.INDOUT = 1; DFLTCONbits.INDCK = 5; POSCNT = 0; QEICONbits.QEIM = 6; return;
注:
根据配置, POSCNT 位。
由索引脉冲自动复
2005 Microchip Technology Inc.
高级信息
DS93002A_CN 第 7 页
GS002
使用 QEI 计算角速度
在周期性的中断中进行速度计算,因为角速度是固定长 度时间段内的递增数。中断时间间隔必须小于最大速度 下 ½ 分辨率所要求的最小时间。 电机的额定转速是 3450 RPM, 所以,在本示例中使用 4000 RPM, 以避免任何速 度计算溢出。下面的公式 4 用来计算时间间隔。
引言
本文档给出了电机控制系列 dsPIC30F 数字信号控制器 中正交编码器 (Quadrature Encoder Interface, QEI) 模块的概述。 还提供了一个需要测量转子速度和 位置的 典型电机控制应用的代码示例。
QEI 模块
正交编码器 (又称增量式编码器或光电式编码器) ,用 于检测旋转运动系统的位置和速度。使用正交编码器, 能够对多种电机控制应用实现闭环控制。 QEI 模块提供了与增量光电式编码器的简单接口,从而 能够从电机或机械系统中获得有符号速度和转子的相对 位置信息。 QEI 模块接受来自增量式编码器的 A、 B 和 索引连接, 并以专用 16 位时基保存累计的计数脉冲。 可 以以 X2 或 X4 分辨率来测量速度和位置信息。
dsPIC30F6010
PWM3H PWM3L PWM2H PWM2L PWM1H PWM1L FLTA AN6 AN0 QEA QEB INDEX
故障
正交 编码器
增量式编码器
DS93002A_CN 第 2 页
高级信息
2005 Microchip Technology Inc.
GS002
应用实例的要求是: 1. 测量转子的角位置 (在 0° 至 360° 之间) 。 为了设 置恰当的换算因子,必须知道增量式编码器的线 数。一个 16 位无符号变量用来满足此要求。 2. 测量有符号的角速度。为了正确转换,需要知道 电机的最大速度。 使用一个有符号的 16 位变量, 其中符号位代表转动的方向:正向 (+)或反向 (-) 。 为了满足上述要求,需要所用增量式编码器的信息,需 要电机的速度范围信息。 在设计本应用实例时,使用的电机和编码器如下: 电机 编码器 Leeson Cat# 102684 额定转速 3450 RPM。 U.S. Digital model E3-500-500-IHT。 500 线分辨率
DS93002A_CN 第 6 页
高级信息
2005 Microchip Technology Inc.
GS002
使用 QEI 计算角位置
为了为控制算法进行小数运算准备变量,需要将位置计 数器结果转换为有符号小数。 公式 3 说明如何根据增量 式编码器和 QEI 模块配置信息计算每转动一周的最大计 数值。
所以对于这个应用,将滤波器配置为滤除脉冲宽度小于 15 µs 的信 号就 可以 了。在本 示例 中,由于 运行 在 14.75 MIPS,所以,为了满足要求,最接近的滤波器配 置按照公式 2 计算:
wk.baidu.com
公式 2:
滤波器分频比
x FILTERED_PULSE = 14.75 MIPS x 15µs = 73.7 ⇒ 64 FILTER_DIV = MIPS -----------------------------------------------------------------------------------------------------------------3 3
}
// // // // // // // // // // // // // //
将 QEI 引脚配置为数字输入 禁止 QEI 模块 清除任何计数错误 休眠期间继续工作 QEA 和 QEB 不交换 正常 I/O 引脚操作 索引脉冲复位位置计数器 禁止计数错误中断 对于 QEn 引脚,使能数字滤波器输出 将 QEn 的数字滤波器设置为 1:64 时钟分频 使能索引引脚的数字滤波器输出 将索引的数字滤波器设置为 1:64 时钟分频 复位位置计数器 X4 模式,位置计数器由索引复位
图 6:
正交 状态 QEA QEB INDX 1
索引模式复位脉冲计数器
2 3 4 1 2 3 4 1 2 2 1 4 3 2 1 4 3 2 1 4 3 2
计数时钟 POSCNT 00E3 00E4 00E5 00E6 0000 0001 0002 0003 0004 UPDN 产生 QEI 中断 POSCNT 置为 MAXCNT 识别索引 转子 反向 0005 0004 0003 0002 0001 0000 00E6 00E5 00E4 00E3 00E2 00E1 00E0
时钟分频器 QEA 数字 滤波器 TCY
时钟 QEB 数字 滤波器 正交 解码器逻辑 方向
16 位向上 / 向下 计数器 (POSCNT)
复位
INDX
数字 滤波器
比较器 / 零检测
相等
最大计数寄存器 (MAXCNT) UPDN
关于 CPU、 外设、 寄存器说明以及一般器件功能的详细信 《dsPIC30F 系列参考手册》 (DS70046D_CN) 。 息, 参见
代码示例
下面的代码示例, 说明如何用 C 语言来实现这个简单的 子程序:
示例 2:
使用 QEI 计算角位置
int AngPos[2] = {0,0}; // 用于速度计算的两个变量 int POSCNTcopy = 0; void PositionCalculation(void) { POSCNTcopy = (int)POSCNT; if (POSCNTcopy < 0) POSCNTcopy = -POSCNTcopy; AngPos[1] = AngPos[0]; AngPos[0] = (unsigned int)(((unsigned long)POSCNTcopy * 2048)/125); // 从 0 <= POSCNT <= 1999 转换至 0 <= AngPos <= 32752 return; }
TCY QEn 引脚 QEn 滤波器
计算滤波器的经验准则基于编码器的最小脉冲宽度,这 个宽度由电机最大转速决定。在本示例中,最小脉冲宽 度由公式 1 决定:
公式 1:
最小脉冲宽度
30 30 = 15 µs MIN_PULSE = MAX_RPM x ENCODER_PULSES = 4000 x 500
高级信息
DS93002A_CN 第 3 页
GS002
初始化 QEI 模块
根据在本示例中所使用的增量式编码器,模块配置如 下:
使能数字滤波器
为了对在增量式编码器信号上可能出现的干扰进行滤 波,需要使能数字滤波器。对于本示例中所使用的配 置,图 4 的时序图显示了如何对输入信号进行滤波。
图 4:
经由滤波器的信号传输, 1:1 滤波器时钟分频
图 5:
QEA QEB
X4 模式下的正交编码器信号
计数时钟 POSCNT UPDN
+1 +1 +1 +1 +1 +1 +1 +1 +1 +1 -1 -1 -1 -1 -1 -1 -1 -1 -1
复位脉冲计数器
脉冲计数器由索引引脚复位。有些增量式编码器没有这 个产生绝对基准位置的索引输出。不过,本示例中使用 的增量式编码器有索引输出,我们将利用索引输出。索 引脉冲复位计数器时的时序图,参见图 6。
在 QEI 模块提供的可能选择中,选择 64 的分频比,于 是脉冲宽度小于 13 µs 的脉冲将被滤除。
DS93002A_CN 第 4 页
高级信息
2005 Microchip Technology Inc.
GS002
递增脉冲计数器
在每次 QEn 引脚电平翻转时递增脉冲计数器。 为了获得 尽可能高的分辨率, QEI 配置为 X4。 X4 计数模式在每 个 QEA、QEB 信号边沿递增或递减 POSCNT 寄存器。 图 5 所示为 X4 配置的时序图。
公式 3:
每转动一周的最大计数值
MAX_COUNT_PER_REV = PULSES_PER_REV x COUNT_INC_PER_REV – 1 = 500 × 4 – 1 = 1999
其中,分辨率将是: 360° RESOLUTION = ----------- = 0.18° 2000 有了这个分辨率, 还需要将位置计数变量( 范围在 0 至 1999 之间)转换为有符号 16 位小数值 (范围在 0 至 32767 之间) 。换算因子的计算公式如下: POSCNT × 2048 AngPos[0] = -----------------------------------------125
注:
可从电机代理商处购买 Leeson 电机, 或者 向 Microchip 定购。 编码器可在 U.S. Digital 网站上定购, 网址 : www.usdigital.com。如 果需要的话,可使用具有 500 线分辨率的 任何其他类似编码器来代替 U.S. Digital 器 件。
2005 Microchip Technology Inc.
图 1:
正交编码器接口信号
正向转动 QEA QEB INDX 01 00 10 11 反向转动 QEA QEB INDX 11 10 00 01 1 个周期
2005 Microchip Technology Inc.
高级信息
DS93002A_CN 第 1 页
GS002
图 2: 正交编码器接口模块简化框图