OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 20301|回复: 5

STM32编码器 测速 和测角度 在论坛里搜到了算法 看不明白 呀 !算法贴上

[复制链接]

18

主题

102

帖子

0

精华

初级会员

Rank: 2

积分
194
金钱
194
注册时间
2012-12-2
在线时间
0 小时
发表于 2013-8-22 00:22:17 | 显示全部楼层 |阅读模式



#define   MAX_COUNT               1200    这是10ms内可能出现最大差值[/mw_shl_code]
#define  ENCODER_TIM_PERIOD  (MAX_COUNT*3)  最大ARR值[/mw_shl_code]
s16 ENC_Get_Electrical_Angle(void)

{

static u16   lastCount = 0;

u16 curCount = ENCODER_TIMER->CNT;

s32 dAngle = curCount - lastCount;

if(dAngle >= MAX_COUNT){

    dAngle -= ENCODER_TIM_PERIOD;

}else if(dAngle < -MAX_COUNT){

    dAngle += ENCODER_TIM_PERIOD;

}

lastCount = curCount;

return (s16)dAngle;

}

或者 哪位有可以的算法 能否分享下


正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2013-8-22 00:51:20 | 显示全部楼层
回复 支持 反对

使用道具 举报

0

主题

3

帖子

0

精华

新手入门

积分
23
金钱
23
注册时间
2013-8-22
在线时间
0 小时
发表于 2013-8-22 10:09:36 | 显示全部楼层
10ms调用一次,得到10ms内转过的角度
回复 支持 反对

使用道具 举报

18

主题

102

帖子

0

精华

初级会员

Rank: 2

积分
194
金钱
194
注册时间
2012-12-2
在线时间
0 小时
 楼主| 发表于 2013-8-23 14:55:48 | 显示全部楼层
回复【3楼】Han2625:
---------------------------------
if(dAngle >= MAX_COUNT){

    dAngle -= ENCODER_TIM_PERIOD;

}else if(dAngle < -MAX_COUNT){

    dAngle += ENCODER_TIM_PERIOD;

}  这几行程序呢?视乎 他这个不用判断 DIR计数方向
回复 支持 反对

使用道具 举报

0

主题

3

帖子

0

精华

新手入门

积分
23
金钱
23
注册时间
2013-8-22
在线时间
0 小时
发表于 2013-8-24 18:44:34 | 显示全部楼层
回复【4楼】电子好学者:
---------------------------------
如果变化角度大于可能的最大值,说明肯定是计数器从0向下溢出。。反过来一样。。间接判断了方向
回复 支持 反对

使用道具 举报

0

主题

48

帖子

0

精华

初级会员

Rank: 2

积分
84
金钱
84
注册时间
2021-7-27
在线时间
18 小时
发表于 2021-7-28 13:24:11 | 显示全部楼层
6666666
回复 支持 反对

使用道具 举报

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

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-6-25 14:28

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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