8940|9

70

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

STM32编码器接口,如何判断编码器换向呢? [复制链接]

我们项目需要对编码器计数,但是只以正向计数,对反像计数超过4个脉冲,就是异常状态.

那么哪果分别对正向,和反向分别计数呢? 对是对编码器换向能产生中断,

STM32的编码接口不知道如何实现!
此帖出自stm32/stm8论坛

最新回复

  详情 回复 发表于 2020-10-18 21:09
点赞 关注(1)
 

回复
举报

76

帖子

0

TA的资源

一粒金砂(初级)

沙发
 
1. SMS=011: 可实现对A和B的边沿同时计数;
2. 编码器换向时DIR位(TIMx_CR1寄存器)的值会改变,但没有中断产生。

从你描述的现象来看,可能是你的定时器没有配置对。
请参照附件中的例程。

example_Encoder.zip (180.08 KB)

此帖出自stm32/stm8论坛
 
 

回复

85

帖子

0

TA的资源

一粒金砂(初级)

板凳
 


不知道楼主电机最大转速是多少,编码器是多少线的
最简单的办法就是定时去读编码器时钟的CNT值,与上一次的作差,正数就是正转,负数就是反转
这个是我在一个机器人项目中用的编码器处理函数,MAX_COUNT与最大转速和编码器线数相关,ENCODER_TIM_PERIOD为编码器Timer的Period值。不用去处理Timer的Update中断

s16   Enc_GetCount(void)
{
  static  u16   lastCount = 0;
  u16  curCount = ENCODER_TIM->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;
}
此帖出自stm32/stm8论坛
 
 

回复

65

帖子

0

TA的资源

一粒金砂(初级)

4
 
                                 我主要用于编码器计数, 正常情况都是正转计数, 但出现倒转四个脉冲之后就要报警,按楼上的方法,那我要差不多每隔400US左右,去判断一次是不出现,换向,反转,如果超过四个脉冲就停机
此帖出自stm32/stm8论坛
 
 
 

回复

76

帖子

0

TA的资源

一粒金砂(初级)

5
 
                                 个人觉得这种处理方式不是很合理,实时性较差
此帖出自stm32/stm8论坛
 
 
 

回复

97

帖子

7

TA的资源

一粒金砂(初级)

6
 
                                 大家好 我想问一下就是当我的电机转动到一个速度后 给了一个负向的加速度 也就是反向,但电动机由于惯性太大 这时电动机还是以这个方向运动 但计数器是向上计数 还是向下计数呢
此帖出自stm32/stm8论坛
 
 
 

回复

74

帖子

0

TA的资源

一粒金砂(初级)

7
 
既然有硬件接口,需要你做的应该就是读数而已了吧!

这还需要那么为难的吗?
此帖出自stm32/stm8论坛
 
 
 

回复

85

帖子

0

TA的资源

一粒金砂(初级)

8
 
                                 虽然问题没解决 还是挺感谢上面的楼主给了我回复
此帖出自stm32/stm8论坛
 
 
 

回复

61

帖子

0

TA的资源

一粒金砂(初级)

9
 
                                 问题为啥还没解决呢,出现新的问题了??
此帖出自stm32/stm8论坛
 
 
 

回复

1

帖子

0

TA的资源

一粒金砂(初级)

10
 

此帖出自stm32/stm8论坛
 
 
 

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

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/10 下一条
直播报名最后1周:艾迈斯欧司朗 OSP 开放协议,从氛围灯动态照明到传感器交互融合
直播时间:4月22日(周二)10:00
直播奖励:京东卡、蓝牙温湿度计、定制水杯

查看 »

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

 
机器人开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网 13

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表