stm32 编码器一直正反转,计数不正确怎么解决哦

[复制链接]
6920|5
 楼主| mjfmjj 发表于 2011-11-1 09:15 | 显示全部楼层 |阅读模式
电机一直工作在正反转状态,长时间后,编码器技术就不正确了,和电机位置有了错位。
 楼主| mjfmjj 发表于 2011-11-1 09:22 | 显示全部楼层
额   编码器接口没配置,直接初始化了,,, 下面是初始化函数
void Encoder_Configuration(void)
{
        TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure;
        TIM_ICInitTypeDef TIM_ICInitStructure;

       


        RCC_APB2PeriphClockCmd(RCC_APB2Periph_TIM1, ENABLE);





        TIM_DeInit(TIM1);
        TIM_TimeBaseStructInit(&TIM_TimeBaseStructure);




        TIM_TimeBaseStructure.TIM_Prescaler = 1; // No prescaling
        TIM_TimeBaseStructure.TIM_Period = 65535;
        TIM_TimeBaseStructure.TIM_ClockDivision = TIM_CKD_DIV1;
        TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;   
        TIM_TimeBaseInit(TIM1, &TIM_TimeBaseStructure);
       
        TIM_EncoderInterfaceConfig(TIM1, TIM_EncoderMode_TI2,
                                     TIM_ICPolarity_Rising, TIM_ICPolarity_Rising);
        TIM_ICStructInit(&TIM_ICInitStructure);
        TIM_ICInitStructure.TIM_ICFilter =6   ;//;TIM_ICFilter_Mask  6

        TIM_ICInit(TIM1, &TIM_ICInitStructure);
       
        // Clear all pending interrupts
        TIM_ClearFlag(TIM1, TIM_FLAG_Update);
        TIM_ITConfig(TIM1, TIM_IT_Update, ENABLE);
        //Reset counter
        TIM1->CNT = T1_Register_val;
       
        TIM_Cmd(TIM1, ENABLE);
}
peng61924 发表于 2013-1-15 20:58 | 显示全部楼层
我也遇到同样的问题,只是我的用CPLD读取计数值,还在寻找解决方法。
airwill 发表于 2013-1-15 21:59 | 显示全部楼层
会不会是硬件的问题? 信号处理得不够干净, 或者信号边沿拖尾严重.
uet_cache 发表于 2013-1-16 20:47 | 显示全部楼层
楼主解决没。。
wuzx-61 发表于 2013-1-16 21:19 | 显示全部楼层
楼主解决了通报一声,关注.
您需要登录后才可以回帖 登录 | 注册

本版积分规则

0

主题

2

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部