求助~无刷电机电调给入PWM后 还是无法驱动。

2019-08-19 19:35发布

我买了套 无刷电机+电调
老板说 50Hz + 1-2ms 电平 就能驱动,为什么我写入后还是没反应。



白 {MOD}我接的TIM3 CH1口。  A6

void PWM_Config(){
   TIM_TimeBaseInitTypeDef timeBaseStance;
   TIM_OCInitTypeDef ocStance;

   TIM_DeInit(TIM3);
   timeBaseStance.TIM_Period = 20;
  timeBaseStance.TIM_Prescaler = 0;
  timeBaseStance.TIM_CounterMode = TIM_CounterMode_Up;
  timeBaseStance.TIM_ClockDivision = TIM_CKD_DIV1;

  TIM_TimeBaseInit(TIM3,&timeBaseStance);

  ocStance.TIM_OCMode = TIM_OCMode_PWM1;    
  ocStance.TIM_OutputState = TIM_OutputState_Enable;
  ocStance.TIM_Pulse = 1;
TIM_OC1Init(TIM3, &ocStance);

TIM_OC1PreloadConfig(TIM3, TIM_OCPreload_Enable);
TIM_ARRPreloadConfig(TIM3,ENABLE);
TIM_Cmd(TIM3,ENABLE);
}

void GPIO_Config(){

GPIO_InitTypeDef GPIO_InitStructure;
GPIO_DeInit(GPIOA);
GPIO_AFIODeInit();

GPIO_InitStructure.GPIO_Pin = GPIO_Pin_6 |GPIO_Pin_7;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP ; 
GPIO_Init(GPIOA, &GPIO_InitStructure);


}
其他时钟已经开启。

友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
39条回答
阿拓
2019-08-22 19:31
timeBaseStance.TIM_Period = 20;
  timeBaseStance.TIM_Prescaler = 0;

楼主这里设置不合理啊,要求的PWM是50Hz,即周期是20ms,你这个PWM的周期是远小于20ms的。
应设置成这样
     timeBaseStance.TIM_Period = 200-1;    //设置ARR的值为199,从0计数到199,刚好是20ms
     timeBaseStance.TIM_Prescaler = 7200-1;//设置PSC的值为7199,这样的话每计数一次为0.1ms

然后你再通过控制CCR来调节占空比,就可以控制无刷电机转动了。

一周热门 更多>