智能车制作

 找回密码
 注册

扫一扫,访问微社区

查看: 5304|回复: 16
打印 上一主题 下一主题

正交解码 求解

[复制链接]

14

主题

133

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1227
威望
621
贡献
340
兑换币
393
注册时间
2014-11-16
在线时间
133 小时
毕业学校
江苏大学
跳转到指定楼层
1#
发表于 2015-1-24 20:30:40 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
最近一直在调编码器,要用到正交解码,但除了原理啥都不懂,求大神详解,附一份正交解码的底层,和大家分享。void FTM_QUAD_init(void)
     {

       SIM_SCGC6 |= SIM_SCGC6_FTM1_MASK;//时钟使能
       SIM_SCGC3 |= SIM_SCGC3_FTM2_MASK;//时钟使能

       FTM1_MODE |= FTM_MODE_FTMEN_MASK;//使能FTM所有功能
       FTM2_MODE |= FTM_MODE_FTMEN_MASK;//使能FTM所有功能

       FTM1_CNT = 0;//计数值初始化
       FTM1_CNTIN = 0;//初始值
       FTM1_MOD = 0xFFFF;//计数结束值
       FTM1_QDCTRL &= ~FTM_QDCTRL_QUADMODE_MASK; //选定编码模式为A相与B相编码模式                          
       FTM1_QDCTRL |=FTM_QDCTRL_QUADEN_MASK; //使能正交解码
       FTM2_CNT = 0;//计数值初始化
       FTM2_CNTIN = 0;//初始值
       FTM2_MOD = 0xFFFF;//计数结束值
       FTM2_QDCTRL &= ~FTM_QDCTRL_QUADMODE_MASK; //选定编码模式为A相与B相编码模式                          
       FTM2_QDCTRL |=FTM_QDCTRL_QUADEN_MASK; //使能正交解码

       PORT_PCR_REG(PORTA_BASE_PTR, 8)=PORT_PCR_MUX(6);//FTM1,A
       PORT_PCR_REG(PORTA_BASE_PTR, 9)=PORT_PCR_MUX(6);//FTM1,B
       PORT_PCR_REG(PORTA_BASE_PTR, 10)=PORT_PCR_MUX(6);//FTM2,A
       PORT_PCR_REG(PORTA_BASE_PTR, 11)=PORT_PCR_MUX(6);//FTM2,B

       FTM1_SC |= FTM_SC_CLKS(3);  //选择外部时钟
       FTM2_SC |= FTM_SC_CLKS(3);  //选择外部时钟
      }
回复

使用道具 举报

6

主题

207

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1781

优秀会员奖章活跃会员奖章

威望
1030
贡献
505
兑换币
479
注册时间
2014-4-20
在线时间
123 小时
毕业学校
湖北工业大学
2#
发表于 2015-1-25 15:25:48 | 只看该作者
同求,等大神解答
回复 支持 反对

使用道具 举报

12

主题

92

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1207
威望
610
贡献
337
兑换币
363
注册时间
2014-11-18
在线时间
130 小时
3#
发表于 2015-3-26 00:16:34 | 只看该作者
输入信号那四个端口可以改变吗?怎么改变的?求告知
回复 支持 反对

使用道具 举报

20

主题

572

帖子

0

精华

常驻嘉宾

Rank: 8Rank: 8

积分
3501

优秀会员奖章活跃会员奖章论坛元老奖章在线王奖章

威望
1767
贡献
1086
兑换币
1086
注册时间
2014-5-3
在线时间
324 小时
毕业学校
江苏科技大学
4#
发表于 2015-4-5 22:57:46 | 只看该作者
顶一下,怎么与速度联系起来啊
回复 支持 反对

使用道具 举报

24

主题

244

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1513
威望
711
贡献
470
兑换币
449
注册时间
2015-1-7
在线时间
166 小时
毕业学校
幼儿园
5#
发表于 2015-4-6 13:14:29 | 只看该作者
申继鹏 发表于 2015-4-5 22:57
顶一下,怎么与速度联系起来啊

比如500线的编码器,车轮每转一圈,编码器就会发出500个脉冲,根据脉冲数的多少,就能知道车轮的速度

回复 支持 反对

使用道具 举报

24

主题

244

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1513
威望
711
贡献
470
兑换币
449
注册时间
2015-1-7
在线时间
166 小时
毕业学校
幼儿园
6#
发表于 2015-4-6 13:16:17 | 只看该作者
申继鹏 发表于 2015-4-5 22:57
顶一下,怎么与速度联系起来啊

根据编码器反馈的数据,就能对车轮的速度进行控制。所以用编码器之后,程序里面往往用多少线而不是占空比

回复 支持 反对

使用道具 举报

20

主题

572

帖子

0

精华

常驻嘉宾

Rank: 8Rank: 8

积分
3501

优秀会员奖章活跃会员奖章论坛元老奖章在线王奖章

威望
1767
贡献
1086
兑换币
1086
注册时间
2014-5-3
在线时间
324 小时
毕业学校
江苏科技大学
7#
发表于 2015-4-6 14:10:37 | 只看该作者
蓝猫 发表于 2015-4-6 13:14
比如500线的编码器,车轮每转一圈,编码器就会发出500个脉冲,根据脉冲数的多少,就能知道车轮的速度

嗯,是这样的,我们用的是500线的,不过是双相的,转一圈输出2000个脉冲,用k60的正交解码可以判断速度方向。现在不明白的一点就是怎么把两轮的编码器脉冲数(count1,count2)与实际速度联系起来(目前仅知道(count1+count2)/2),还有速度的单位是什么呢?设定速度是以什么单位?试过了无数次,控制速度的PI加进去车根本没有反应啊,还是在原地平衡
回复 支持 反对

使用道具 举报

24

主题

244

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1513
威望
711
贡献
470
兑换币
449
注册时间
2015-1-7
在线时间
166 小时
毕业学校
幼儿园
8#
发表于 2015-4-6 14:45:01 | 只看该作者
申继鹏 发表于 2015-4-6 14:10
嗯,是这样的,我们用的是500线的,不过是双相的,转一圈输出2000个脉冲,用k60的正交解码可以判断速度方 ...

正交解码只是为了辨别方向吧。
其实可以直接用每个控制周期多少线作为速度的单位的。当然如果你要转换成几米每秒也可以的。算出轮子周长,再根据500脉冲/秒来算出那个转换比例

回复 支持 反对

使用道具 举报

24

主题

244

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1513
威望
711
贡献
470
兑换币
449
注册时间
2015-1-7
在线时间
166 小时
毕业学校
幼儿园
9#
发表于 2015-4-6 14:47:15 | 只看该作者
蓝猫 发表于 2015-4-6 14:45
正交解码只是为了辨别方向吧。
其实可以直接用每个控制周期多少线作为速度的单位的。当然如果你要转换成 ...

我是直接用脉冲数作为单位的,方便一点。
至于速度PI,你看看第七届官方电磁直立的技术报告吧,或者这个http://v.pps.tv/play_38NQTK.html

回复 支持 反对

使用道具 举报

24

主题

244

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1513
威望
711
贡献
470
兑换币
449
注册时间
2015-1-7
在线时间
166 小时
毕业学校
幼儿园
10#
发表于 2015-4-6 14:47:37 | 只看该作者
发了个网站,需要审核,稍等一下
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

关于我们|联系我们|小黑屋|智能车制作 ( 黑ICP备2022002344号

GMT+8, 2024-9-21 03:23 , Processed in 0.048929 second(s), 26 queries , Gzip On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表