msp430g2553数据手册有计数器吗?有正交解码吗

DSP的正交解码电路与捕获单元在电机测速中的运用
1 引言 对于交流异步电机调速来讲,电机转子转角和转速的测量是一个极其关键的环节。美国TI公司专为电机调速设计的数字电机微控制器TMS320F240具有其特殊功能模块--正交解码(QEP)电路和捕获单元,它们可直接与光电编码器相连,用于转速检测。其中QEP电路内部设有转向判别和倍频功能,因此不再需要其它辅助电路,接口电路设计变得非常简单。而且F240具有三个功能强大的通用定时器,可灵活应用于各种测速方法。 TMS320F240与测速相关的管脚主要有四个:CAP1/QEP1,CAP2/QEP2,CAP3和CAP4。正交解码(QEP)电路与捕获单元CAP1、CAP2共享两个输入引脚,因此需要正确配置捕获控制寄存器CAPCON来使能正交解码电路并禁止捕获单元1、2。这样就把相应的管脚分配给QEP电路使用。 F240与增量式光电编码器连接如图一所示,光码盘的A与B信号相差900,-A、-B分别为反向1800的信号。Z、-Z信号互为反向,是每转输出一个脉冲的零位参考信号。其中TL714是高速差分比较器。 2 QEP电路和捕获单元的工作原理 正交解码电路必须选择一个计数器用于计算电路的输入脉冲次数,即将QEP电路脉冲信号作为某通用定时器的时钟源。F240的通用定时器2,3或2和3一起形成的一个32位定时器可供其选择。以通用定时器2为例,首先要求T2定时器工作在双向加/减计数模式。在这种工作模式下,QEP电路不仅为定时器T2提供计数时钟,而且还决定了计数方向。 当电机正转时,QEP电路的方向检测逻辑测定出连接到光码盘A相的QEP1输入引脚上脉冲序列的相位领先于QEP2上的脉冲信号,然后产生一个方向信号(此信号可以在特殊寄存器内读取,以此判别转向)作为T2定时器的计数方向,则计数器T2CNT递增计数;反之,若电机反转,QEP2输入是先导脉冲序列,则计数器T2CNT递减计数。定时器T2在计数器下溢或上溢时发生翻转,并重新开始计数。如果两列正交解码输入脉冲的两个边沿均被QEP电路检测,则T2的时钟频率是每个输入序列频率的4倍,如图2所示。由此省去了原有的正交解码脉冲电路4倍频电路。 F240共有四个捕获单元,每一个捕获单元都有一个相应的捕获输入引脚。用户定义捕获控制寄存器检测捕获引脚上的转换:上升沿、下降沿或二者均检测。每个捕获单元都可以选择通用定时器2或3作为其时间基准。每当在捕获输入引脚上检测到一个设定的转换时, 该捕获单元选定的通用定时器的计数器值被捕获并锁存在相应的2级深度FIFO堆栈中。如果去除了捕获中断屏蔽,捕获单元同时会向CPU发送一个中断申请。 在检测电机转角和转速之前,必须先作以下设置: 选择通用定时器1工作在连续递增计数模式,允许周期定时中断。在这种工作模式下,定时器按照定标输入时钟递增计数,直到计数器的值与周期寄存器的值相同时,计数器复位为零,周期中断标志被设置为1,然后开始另一个计数周期。通用定时器2工作在双向加/减计数模式,计算QEP电路输入脉冲个数。通用定时器3工作方式与定时器1完全相同,但是被选为捕获单元4的时间基准。 3 转角计算 在计算电机转角之前,必须先解决转角定位问题。当在捕获输入引脚CAP3上检测到零位参考信号时,定时器2的计数值T2CNT被捕获并存储在相应的2级深度FIFO堆栈中,被捕获的T2CNT值就可以作为计算转角的基准值。这样,转子每旋转一周,基准值就被重新定义一次,从而保证了转角的准确性。 为了方便说明,我们只考虑正转情况。用于正交解码电路计数的定时器T2是一个16的通用定时器,因此当定时器T2计数到最大值FFFFH时,计数器T2CNT发生翻转,重新从零开始计数。必须分两种情况来计算转角。 3.1 定时器T2不发生翻转计数 如图3(a)所示,f(1)、f(2)分别是t1、t2时刻定时器T2计数值;f(0)、f1(0)为相邻两次零位参考信号时的定时器T2计数值。那么在t1~t2时间内电机转子旋转的机械角度应是 (rad) (1) 式中PN—每转脉冲数, PN=2500脉冲/转; 式中Δ1=f(2)-f(1)。 若要计算t2时刻相对于以光码盘Z信号转角基准的旋转夹角,则必须以最后一次捕获值f1(0)为参考值。可表示为 (rad) (2) 式中Δ2=f(2)-f1(0) 3.2 定时器T2发生翻转 因为计数器T2CNT每计数FFFFH次,才翻转一次,这远远大于光码盘每转输出脉冲的四倍数(10000)。因此,在相邻两个零位参考信号之间,计数器T2CNT最多出现一次翻转的情况。如图3(b)所示。可知 (rad) (3) 其中Δ1=f(2)-f(1)+FFFFH 同定时器T2不翻转情况相同: (rad) (4) 式中Δ2=f(2)-f1(0)+FFFFH 4 转速计算 下面介绍M法、T法以及M/T法三种常用测速方法。M法测速是在相等的时间间隔Tc内用光码盘输出脉冲个数来算出转速,从而得到转速的测量值。T法测速是测出相邻两个脉冲之间的间隔时间来计算转速。根据以上定义可知,转速越低,M法测速误差越大;T法测速则正好相反,测速误差随转速加大而加大。那么若想检测低转速,同时又要保证高转速的精度,就必须综合这两种测速方法的特点,从而得到M/T法的测速方法:在M法的基础上,以时间TC之后光码盘再输出第一个脉冲为止的时间为检测时间。 4.1 M法测速 设置通用定时器T1的时钟输入为20MHz。并且开通定时器周期中断,中断周期等于计算转速的采样周期TC。则定时器每隔时间TC向CPU发出一次中断请求,CPU响应中断后,在中断服务子程序中按前面所述方法求出定时器T2变化量 ,则电机转速: (5) M法计算转速只需要检测一个变化量,即定时器T2变化量, 而且由于PN和TC均为常数,令,将上式改为: (6) 这样避免了复杂的定点除法运算,因此计算程序十分简单,只需四、五条语句便能实现。 不过,正如前面讲到的一样:转速越低,M法测速误差越大。这在DSP中更加明显。通常情况下,我们希望控制周期越短越好,而同一转速下,周期越短,能够检测到光码盘输出脉冲个数就越少,分辨率也越高。举例说明见表1。 表1 M法测速性能表 每转脉冲数PN=2500脉冲/转: 控制周期TC(ms) 转速(转/分) 定时器T2变化量△1 分辨率(q=1/△1) 1 .2% 50 8.33 12.5% 0.1 % 50 △1小于1无法检测 可知当控制周期TC=0.1ms,转速低于60转/分时,使用M法将无法检测到转速。 3.2 T法测速 T法测速可以利用捕获单元的功能来实现。选择通用定时器T3时钟频率f=20MHz,作为计算转速的时钟基准.设定当捕获引脚上发生上升或下跳沿时,均将计数器T3CNT值捕获并锁存。在计算两个连续捕获发生的间隔时间T时也必须考虑16位定时器翻转情况。与前面所述定时器T2翻转情况相同: 不翻转时,m=f(1)-f(0) (7) f(1)为当前捕获发生时16位定时器的计数值; f(2)为前一捕获发生时16位定时器的计数值; 翻转时,只考虑翻转一次的情况; m=f(1)-f(0)+0FFFFh (8) 那么转子转速: (9) 这里TC指引脚CAP3上两个连续跳变沿间隔时间,TC=(m/20)MHz 在计数器T3CNT翻转一次的情况下,T时间里内,定时器计数值最大变化量为mmax=0FFFFH,则最大检测时间 那么可测最低转速 在一般情况下,每分钟3.66转的转速已经相当低了,因此不能一味地追求低速测量,而选取由通用定时器T2和T3合成的32位定时器作为QEP电路的计数器,设计复杂的32位运算程序来计算更低转速。所以可以认为定时器出现两次或两次以上翻转的情况时,转子是静止的,即n=0rpm。 当电机转速n为3000rpm时,两个脉冲间的计数值: 分辨率q%=1/160=0.625%。这已经能满足一般测速系统要求,所以对高速的DSP而言,采用T法测速即可达到要求。 但是T法测速含有定点除法运算,因此计算过程比M法稍微复杂一些。 3.3 M/T法 仍然按M法设置通用定时器T1,按T法设置通用定时器T3。当发生定时器T1周期中断时(中断周期TC,计算定时器T2计数值变化量△1,读取此时定时器T3计数值T3CNT(0),并允许捕获单元CAP4捕获中断。在此之后,当捕获单元CAP4捕获到第一个跳变沿时,向CPU申请捕获中断。在捕获中断子程序中,根据捕获的计数值T3CNT(1),得检测时间 (10) 则电机转子转速: (11) M/T法综合了M法和T法的测速特点,能够在很宽范围内按要求检测转速。但是它涉及两个通用定时器、捕获单元、QEP电路等多个特殊寄存器的设计,所以在定义特殊寄存器时一定要小心,以免相互冲突。 5 结束语 本文主要介绍了数字电机控制专用控制芯片TMS320F240中专用模块正交解码电路和捕获单元的功能特点,给出了由它们实现M法、T法以及M/T法测速的三种方案,并做了对比。无论采用哪一种方法,在设计过程中都应该注意硬件与软件的配合,有效地利用QEP电路、捕获单元、定时器三者间的关系实现了测速功能。msp430g2553红外遥控解码_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
msp430g2553红外遥控解码
上传于||文档简介
&&m​s​p3红​外​遥​控​解​码​ ​m​p发​射​器
阅读已结束,如果下载本文需要使用1下载券
想免费下载本文?
定制HR最喜欢的简历
你可能喜欢后使用快捷导航没有帐号?
只需一步,快速开始
扫一扫,访问微社区
查看: 28712|回复: 58
K60的正交解码
主题帖子精华
金牌会员, 积分 1860, 距离下一级还需 1140 积分
金牌会员, 积分 1860, 距离下一级还需 1140 积分
在线时间165 小时
昨晚弄了一个晚上调出了K60的正交脉冲计数,和大家分享一下,不知车已经立起来的高手有没有也用K60,还用什么方法的呢?/*==============================================================================
功能:FTM1、FTM2模块双路正交脉冲计数;
引脚:PTA12、PTA13、PTA10、PTA11
内容:初始化FTM1、FTM2的正交解码功能;
==============================================================================*/
void FTM_QUAD_init()
& & /*开启端口时钟*/
& & SIM_SCGC5 |= SIM_SCGC5_PORTA_MASK;
& & /*选择管脚复用功能*/
& & PORTA_PCR12 = PORT_PCR_MUX(7);
& & PORTA_PCR13 = PORT_PCR_MUX(7);
& & PORTA_PCR10 = PORT_PCR_MUX(6);
& & PORTA_PCR11 = PORT_PCR_MUX(6);
& & /*使能FTM1、FTM2时钟*/
& & SIM_SCGC6|=SIM_SCGC6_FTM1_MASK;
& & SIM_SCGC3|=SIM_SCGC3_FTM2_MASK;
& & FTM1_MOD = 14000; //可根据需要设置
& & FTM2_MOD = 14000;
& & FTM1_CNTIN = 0;
& & FTM2_CNTIN = 0;
& & FTM1_MODE |= FTM_MODE_WPDIS_MASK; //禁止写保护
& & FTM2_MODE |= FTM_MODE_WPDIS_MASK; //禁止写保护
& & FTM1_MODE |= FTM_MODE_FTMEN_MASK; //FTMEN=1,关闭TPM兼容模式,开启FTM所有功能
& & FTM2_MODE |= FTM_MODE_FTMEN_MASK; //FTMEN=1,关闭TPM兼容模式,开启FTM所有功能
& & FTM1_QDCTRL &= ~FTM_QDCTRL_QUADMODE_MASK; //选定编码模式为A相与B相编码模式
& & FTM1_QDCTRL |= FTM_QDCTRL_QUADEN_MASK; //使能正交解码模式
& & FTM2_QDCTRL &= ~FTM_QDCTRL_QUADMODE_MASK; //选定编码模式为A相与B相编码模式
& & FTM2_QDCTRL |= FTM_QDCTRL_QUADEN_MASK; //使能正交解码模式
& & FTM1_SC |= FTM_SC_CLKS(3);&&//选择外部时钟
//& &FTM1_CONF |=FTM_CONF_BDMMODE(3); //可根据需要选择
& & FTM2_SC |= FTM_SC_CLKS(3);
//& &FTM2_CONF |=FTM_CONF_BDMMODE(3);
查看FTM1_CNT、FTM2_CNT就可知道当前计数值,查看TOFDIR、QUADIR可以知道转向。
主题帖子精华
金牌会员, 积分 1218, 距离下一级还需 1782 积分
金牌会员, 积分 1218, 距离下一级还需 1782 积分
在线时间95 小时
文圣利 发表于
正交解码计数,好像会丢,计的数比脉冲累加器得到数要小
你讲的丢是什么意思
主题帖子精华
中级会员, 积分 297, 距离下一级还需 203 积分
中级会员, 积分 297, 距离下一级还需 203 积分
在线时间13 小时
楼主 这个脉冲计算对吗 怎么接IO口啊&&还有是什么沿 记数啊 谢谢啦
主题帖子精华
金牌会员, 积分 1860, 距离下一级还需 1140 积分
金牌会员, 积分 1860, 距离下一级还需 1140 积分
在线时间165 小时
它是两路脉冲的所有边沿都检测的,所以所得计数器的值要除以4才能得到实际脉冲数
主题帖子精华
金牌会员, 积分 1872, 距离下一级还需 1128 积分
金牌会员, 积分 1872, 距离下一级还需 1128 积分
在线时间232 小时
好东西 辛苦楼主勒
主题帖子精华
高级会员, 积分 833, 距离下一级还需 167 积分
高级会员, 积分 833, 距离下一级还需 167 积分
在线时间86 小时
毕业学校昆明理工大学
lmptr可以计数
主题帖子精华
金牌会员, 积分 1860, 距离下一级还需 1140 积分
金牌会员, 积分 1860, 距离下一级还需 1140 积分
在线时间165 小时
我这里的情况指电磁组的双路脉冲检测方案
主题帖子精华
跨届大侠, 积分 6471, 距离下一级还需 5529 积分
跨届大侠, 积分 6471, 距离下一级还需 5529 积分
在线时间203 小时
陈胜利 发表于
lmptr可以计数
最近在调脉冲计数,,,,有点问题求指教啊大虾~
主题帖子精华
高级会员, 积分 833, 距离下一级还需 167 积分
高级会员, 积分 833, 距离下一级还需 167 积分
在线时间86 小时
毕业学校昆明理工大学
主题帖子精华
金牌会员, 积分 1515, 距离下一级还需 1485 积分
金牌会员, 积分 1515, 距离下一级还需 1485 积分
在线时间207 小时
请问这是实现了加减计数器的功能吗?
主题帖子精华
金牌会员, 积分 1170, 距离下一级还需 1830 积分
金牌会员, 积分 1170, 距离下一级还需 1830 积分
在线时间69 小时
大侠,查看FTM1_CNT、FTM2_CNT当前计数值,查看TOFDIR、QUADIR可以知道转向
TOFDIR、QUADIR是哪两个啊?新手求指导~ 谢谢
我将CNT读取在INT型中 但没有符号 一直是正值~
论坛元老奖章
会员等级达到元老
活跃会员奖章
经常参与各类话题讨论,发贴较有主见
站长推荐 /1
北科大超哥正在直播下午的试车
Powered by用FPGA实现的正交解码计数器_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
用FPGA实现的正交解码计数器
上传于||文档简介
&&用​F​P​G​A​实​现​的​正​交​解​码​计​数​器
阅读已结束,如果下载本文需要使用2下载券
想免费下载本文?
定制HR最喜欢的简历
下载文档到电脑,查找使用更方便
还剩2页未读,继续阅读
定制HR最喜欢的简历
你可能喜欢

我要回帖

更多关于 msp430g2553数据手册 的文章

 

随机推荐