今天小编要和大家分享的是控制,MCU相关信息,接下来我将从STM32单片机实现直流减速电机控制的程序设计,pid控制算法学习总结这几个方面来介绍。

控制,MCU相关技术文章STM32单片机实现直流减速电机控制的程序设计pid控制算法学习总结

控制,MCU相关技术文章STM32单片机实现直流减速电机控制的程序设计

在直流减速电机控制中,最常用的方法就是通过PWM来控制直流电机的转速。在控制小车走直线的过程中,需要两者的转速一置(如果要走得很直,还需要在短时间内保证两者的行程大致相当,这可以用PID算法来控制)。因此,在检测到两者转速不一样时,需要动态调整其中一个或两个轮子的PWM的点空比(简单点的就以一个轮为基准,调整另外一个轮子即可;如果以一个固定的标准的话,需要调整两个轮子的PWM占空比)。

STM32单片机实现直流减速电机控制的程序设计

 

1 程序第一步:设置GPIO,略(输出PWM的管脚用Mode_AF_PP即可)

2

3 程序第二步:设置定时器,(保证产生两路PWM即可,我用的是TIM4)

4

5 void TIM4_Configuration(void)

6 {

7 TIM_TimeBaseInitTypeDef TIM_TimeBaseInitStructure;

8 TIM_OCInitTypeDef TIM_OCInitStructure;

9

10 //时间基初始化

11 TIM_TimeBaseInitStructure.TIM_Period=144; //18K/144=125Hz,这个是电机PWM的频率

12 TIM_TimeBaseInitStructure.TIM_Prescaler=4000; //72000000/4000=18K

13 TIM_TimeBaseInitStructure.TIM_ClockDivision=TIM_CKD_DIV1;

14 TIM_TimeBaseInitStructure.TIM_CounterMode=TIM_CounterMode_Up;

15 TIM_TimeBaseInitStructure.TIM_RepetitionCounter=0x0000;

16

17 TIM_TimeBaseInit(TIM4,&TIM_TimeBaseInitStructure);

18

19 //输出比较模式设置,用于4路PWM输出

20 TIM_OCInitStructure.TIM_OCMode=TIM_OCMode_PWM2; //输出PWM

21 TIM_OCInitStructure.TIM_OutputState=TIM_OutputState_Enable; //使能正向通道

22 TIM_OCInitStructure.TIM_OutputNState=TIM_OutputState_Disable; //失能反向通道

23 TIM_OCInitStructure.TIM_Pulse=PWM_L; //左轮DIR的占空比

24 TIM_OCInitStructure.TIM_OCPolarity=TIM_OCPolarity_Low; //输出极性为低电平

25 TIM_OCInitStructure.TIM_OCNPolarity=TIM_OCPolarity_High;//互补输出极性为高电平

26 TIM_OCInitStructure.TIM_OCIdleState=TIM_OCIdleState_Set;

27 TIM_OCInitStructure.TIM_OCNIdleState=TIM_OCNIdleState_Reset;

28

29 TIM_OC1Init(TIM4,&TIM_OCInitStructure); //PWM_L初始化

  • UC3846控制芯片工作原理控制图 逆变焊机原理与用途
  • 数字万用表电阻档测试二极管正反向没有阻值(使用万用表测量二极管的正向电阻,为什么各档)
  • 学单片机需要学数电模电吗(学单片机要先学数电模电吗)
  • 电工怎么选择适合自己用的万用表(电工初学者买什么样的万用表好)
  • 单片机需要同时运行多个任务怎么办(单片机怎么同时执行多个任务)
  • 电机保护的方案取决于负载的机械特性
  • 绝缘电阻表正负搭接不复零位是怎么回事
  • 短路怎么用万用表查