现在可以用编码器读取计数器的值了,但是怎么去测速呢?

2019-08-14 18:49发布

编码器怎么去测速呢?怎么通过PWM去控制直流电机呢?求教各位大神!最近在用直流电机,希望大家可以帮帮忙!谢谢啦!
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
28条回答
张晓斌
2019-08-15 22:32
回复【9楼】joe_knight:
---------------------------------
嗯,好吧!PID还完全没有接触过呢!
你能帮我看看这个编码器的代码对吗?用的400线的增量式编码器!
void TIM_Encoder(void)
{
    TIM_TimeBaseInitTypeDef TIM_TimeBaseInitStruct;
    GPIO_InitTypeDef GPIO_Initstructure;
    TIM_ICInitTypeDef TIM_ICInitStructure;
    
    GPIO_PinRemapConfig(GPIO_FullRemap_TIM3,ENABLE);    
    
    GPIO_Initstructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;
GPIO_Initstructure.GPIO_Pin = GPIO_Pin_6|GPIO_Pin_7;
GPIO_Initstructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(GPIOC,&GPIO_Initstructure);  

    TIM_TimeBaseInitStruct.TIM_ClockDivision=TIM_CKD_DIV1;
    TIM_TimeBaseInitStruct.TIM_CounterMode=TIM_CounterMode_Up;
    TIM_TimeBaseInitStruct.TIM_Period=400*4-1;
    TIM_TimeBaseInitStruct.TIM_Prescaler=0;
    
    TIM_TimeBaseInit(TIM3,&TIM_TimeBaseInitStruct);   
       
    TIM_EncoderInterfaceConfig(TIM3, TIM_EncoderMode_TI12, 
                             TIM_ICPolarity_Rising, TIM_ICPolarity_Rising);
    TIM_ICStructInit(&TIM_ICInitStructure);
    TIM_ICInitStructure.TIM_ICFilter = 6;
    TIM_ICInit(TIM3, &TIM_ICInitStructure);    

    TIM3->CNT=0;
  
    TIM_ClearFlag(TIM3, TIM_FLAG_Update);
    TIM_ITConfig(TIM3, TIM_IT_Update, ENABLE); 

    TIM_Cmd(TIM3,ENABLE);    
}

一周热门 更多>