基于F28335的Simulink代码生成(三)——EQEP模块获取光电编码器的速度与角度信息

11 篇文章 24 订阅
8 篇文章 27 订阅

基于F28335的Simulink代码生成系列文章目录

基于F28335的Simulink代码生成(一)——搞懂模型的运行逻辑
基于F28335的Simulink代码生成(二)——EPWM模块同步设置问题
基于F28335的Simulink代码生成(三)——EQEP模块获取光电编码器的速度与角度信息
基于F28335的Simulink代码生成(四)——如何链接可以访问底层文件的外部源文件和头文件
基于F28335的Simulink代码生成(五)——DMA的使用
基于F28335的Simulink代码生成(六)——如何修改变量的存储类型
基于F28335的Simulink代码生成(七)——成果展示



前言

随着对于各种模块的使用越来越深入,逐渐感受到了代码生成的不友好与不完善性。基于一开始的目的,我进行代码生成的目的只是为了解决电机无位置控制中的滤波以及注入的复杂编程才进行的。但是目前代码生成对于底层的链接方式让我感到很不舒服。


OK,接下来开始本节的正文

一、28335的EQEP模块

EQEP模块的正交解码单元对于光电编码器的AB脉冲可以十分方便的测量,只需要在特定情况下去读取计数寄存器即可。
另外EQEP的时钟就是系统时钟,内部主要有两个时钟:捕获时钟和单位事件的时钟。
针对编码器在高速和低速情况下同一种测量方式会存在较大误差的问题。因此边沿捕获单元提供了两种方式进行计算。下图为EQEP模块总体配置。
在这里插入图片描述

二、角度测量

角度测量主要是实时读取捕获单元的QPOSCNT寄存器,这个寄存器也就是存放脉冲数的地方,一般我们需要对捕获模块进行4倍频,也就是将AB相的上升沿和下降沿都处理成一个脉冲,从而确定是在当前转速的方向以及加减速。
EQEP中还有个最大脉冲数的寄存器QPOSMAX,这个寄存器的存在是有意义的。虽然我们可以在模块中设置当索引事件来临时将当前脉冲数置0,这样的话,当我们计数时遇到Z信号的脉冲,计数器的值就会归零重新计数。也就是说此时我不论最大脉冲数是多少,但我计数到最大的脉冲数(例如2500线的编码器的话就是10000个脉冲)的时候就会自动归零。但是这个思路有个问题,因为我们的计数器在编码器正转时的确是会一直增加计数并在10000个脉冲时清零并重新计数。但是当我们是反向旋转编码器时,计数是会在当前的计数值上一直减小的,当减小到0时,他并不会复位到最大脉冲数继续减小,而是会直接变成QPOSMAX。这与我们的期望不符,当然可以通过程序改变这种情况,但是为了简单起见,我还是选择在模块中设置好QPOSMAX=2500*4。下图为位置计数器的设置。
在这里插入图片描述

三、高速测量

高速测量的思想是在设定的单位时间T内,计算采集到的脉冲数X,即可确定这部分脉冲数所花的时间,对应到转一圈总共的脉冲数就可以算出一圈的速度,也就是我们认知的转速。捕获时钟寄存器和捕获周期寄存器会在CPU读取QPOSCNT寄存器时(或者单位时间事件发生时)将计数得到的锁存到QCTMRLAT和QCPRDLAT,这两个寄存器是捕获的定时时间和周期的锁存寄存器。通过锁存的方式就不会导致由于程序没有实时读取而造成误差的情况。当设定单位时间事件发生时,我们的QPOSCNT寄存器此时也会锁存到一个新的寄存器QPOSLAT,因此只要测量前后两次的QPOSLAT的差值(要考虑过Z信号的情况),再配合单位时间,就可以计算出对应该脉冲数下的转速,从而得到转一圈的速度。
这里要注意的是,一般我们采取的都是单位时间事件到来后,将计数值进行锁存。
单位时间的设置主要根据QUPRD寄存的大小来算:单位时间频率=系统时钟/QUPRD。该部分的配置如下:
在这里插入图片描述

针对这部分的代码让我存在过的疑惑是:当单位时间事件来临时,我会需要读取UTO标志位来确定是否已经到来,然后需要对锁存的寄存器进行读取并处理。然后在SImulink中我很难得到标志位的实时状态,另外在处理结束后还要对标志为进行清零操作,十分繁琐。所以我想到了中断的办法,在中断中进行读取和处理更加方便,因为EQEP模块可以设置中断产生的方式,如果只是做高速测量,完全可以设置在单位时间事件到来时才中断,进入中断后直接进行寄存器的读取和处理就可以了。而且所有的标志位中断都会自动清零,并不需要我们手动操作。但是如果还需要考虑其他的中断状态,这种方式,依旧需要读取寄存器的值,进一步在中断里判断:当UTO=1时,进行高速测量和采集。
读取UTO的状态目前我只想到了一种办法,就是定义一个全局变量,在"System out"中,将UTO赋值给该变量,然后在函数中读取该变量的状态即可。但是要注意该变量的读取虽然是放在EQEP的中断里,不过一定要比中断函数对标志位清零的操作要早!!!,不然每次UTO=1时就会马上被重新清零了哦。
高速测量大概就这么多要说的了。

四、低速测量

低速测量实质上也很简单,就是在编码器A相其中一个脉冲的时间中用一个高频脉冲信号去测量,A相的一个脉冲里有多少个高频脉冲信号,这么一个脉冲信号是多少时间了。对应的也就知道转速的时间了。但是低速测量有诸多限制,注入不能有换向产生,不然测出来的肯定不对,另外单位事件发生时,EQEP并没有对应的中断会产生,只能实时读取,当转速过快时,捕获的太快,而程序读取到事件标志位却存在延迟,因此从复杂度和效益上,低速测量的方法都不是很好的选择,目前也还在测试,故不做过多的说明了。

  • 10
    点赞
  • 49
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 7
    评论
### 回答1: 在日常生活,我们经常会遇到各种各样的问题,需要解决。而在解决这些问题的过程,我们可以使用不同的方法和工具,其之一就是利用28335eqep实例。 28335eqep是一款经济实用的电气设备,常用于测量角度速度。它采用编码器技术,可以准确测量旋转物体的角度,并将测量结果转化为数字信号进行处理。 举一个应用28335eqep实例的例子,假设我们需要对一台机械臂进行控制,使其按照既定的路径移动。我们可以安装28335eqep在机械臂的关节上,并通过测量关节的角度来控制机械臂的运动。当我们向机械臂发送控制信号时,28335eqep会实时测量关节的角度,并将测量结果反馈给控制系统。通过分析和处理这些测量数据,控制系统可以精确地控制机械臂的运动,使其按照预定路径进行移动。 这只是对28335eqep实例的一个简单应用示例,实际上,它在许多领域都有广泛的应用。比如,它可以用于风力发电机组的控制、机械设备的运动控制、车辆导航系统的定位和导航等。 总之,28335eqep实例是一种非常有用的电气设备,可用于测量角度速度,并将其应用于各种实际问题的解决。它在自动化、机械控制和导航领域具有广泛的应用前景。 ### 回答2: 28335eqep是一种可编程计数器,专为配合TI C2000系列微控制器使用的。它能够通过编码器的输入信号来精确地测量旋转速度、位置和方向。 28335eqep实例,我们可以利用这个模块来监测和控制旋转机械设备,如电机。首先,我们需要连接编码器eqep接口,将其输出信号传递给模块。 当编码器开始旋转时,eqep模块会自动根据输入信号进行计数。我们可以通过读取计数器的值来获取当前的位置。对于位置关闭环控制应用,我们可以使用这些位置信息来进行精确的控制。 除了位置测量,eqep模块还可以用于测量旋转速度。通过测量两个相邻位置之间的时间差,我们可以计算出角速度。这在许多应用是非常有用的,如电机控制系统速度闭环。 28335eqep还提供了其他功能,如旋转方向监测和脉冲计数。旋转方向监测可以确定旋转的方向是顺时针还是逆时针。脉冲计数则可以记录每次旋转的脉冲数,用于其他进一步的计算和分析。 总的来说,28335eqep实例是一个非常有用的模块,可以提供精确的旋转位置、速度和方向测量。它可以广泛应用于各种旋转机械设备的控制系统,帮助实现更高的控制精度和性能。 ### 回答3: 28335eqep实例是Texas Instruments(TI)公司的一个编码器接口模块EQEP是"Enhanced Quadrature Encoder Pulse"的缩写,表示增强型正交编码器脉冲。 28335eqep是该模块的型号,适用于TI的C2000系列数字信号控制器。 编码器是一种测量物理量的传感器,它可以将物理量转换为数字脉冲信号。正交编码器则是一种特殊的编码器,可以同时测量位置和速度,通过拾取器件和光电传感器的组合,可以将旋转或线性运动转换为脉冲信号。 28335eqep模块具有多个输入捕获单元和计数器,可以实现高分辨率的位置和速度测量。它可以直接与TI的C2000系列数字信号控制器相连,实现实时的位置反馈和运动控制。该模块还具有配置灵活、易于使用和集成程度高的特点。 这个实例可以在旋转电机、位置控制和机器人等应用使用。通过连接编码器和28335eqep模块,可以获得精准的位置和速度测量数据,从而实现精确的位置控制。这对于需要高精度、实时反馈控制的应用非常重要。 总的来说,28335eqep实例是一种用于编码器接口的模块,通过它可以实现高分辨率的位置和速度测量,为各种应用提供精确的位置控制功能。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

LEODWL

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值