7.5.3 输出比较功能应用:直流电机驱动设计

更新于 2026年10月10日 版权声明
7.5.3 输出比较功能应用:直流电机驱动设计

1.任务要求

利用定时器TIM3产生频率为10 kHz的PWM脉宽调制信号,驱动直流电机运行,并可通过按键实现对转速的调节,设置定时器时钟为8 MHz。请设计程序,并通过Proteus完成仿真和调试。

2.硬件设计

硬件电路如图7.18所示,图中PB10、PB11分别外接个按钮用于调节PWM脉冲宽度,电阻R15、R16接10 kΩ上拉电阻。PB1外接场效应管驱动电动机,MOT为直流电动机。

3.软件设计

要产生频率为10 kHz的信号,那么周期为0.1 ms,TIM3的时钟为8 MHz,经8分频可得到1 MHz。设置定时器向下计数,设计数次数为N,由图示图示可得到N=100,即计数器/定时器初值为100-1。

图示

图7.18 硬件电路

设初始占空比为50%,则比较值为50-1。

定时器TIM3通过通道4输出PWM信号。运行中,占空比通过PWM中断来修改。

设置PB10和PB11两引脚为按键,并采用中断形式修改比较值。

将以上TIM3参数和GPIO引脚参数通过STM32CubeMX建立工程,并生成MDK工程文件,PWM配置如图7.19所示。(https://www.daowen.com)

图示

图7.19 PWM配置

工程文件夹中有“main.c”“gpio.c”“tim.c”这3个文件。

定时器的初始化在“tim.c”文件中,需要在void MX_TIM3_Init(void)函数的末尾或“main.c”文件中定时器初始化部分后面添加HAL_TIM_PWM_Start_IT()函数,以便开启PWM功能,程序如下。

图示

两个按键PB10、PB11的初始化配置函数在“gpio.c”文件中,该函数自动生成,无须修改。

用户要完成两个按键修改比较值的程序,要设置PWM的回调函数,通过函数图示HAL_TIM_SET_COMPARE()完成比较值的修改设置。“main.c”文件中的程序如下。

图示

4.仿真与调试

在Keil-MDK中进行编辑、编译、调试后,生成可执行文件。在Proteus中绘制仿真电路图,并加载编译后的.hex文件到工程中。分别调节按键,用示波器可观察PWM波形占空比变化情况,也可较直观地观察直流电机的转速变化情况。仿真电路图与调试效果如图7.20所示。

图示

图7.20 仿真电路图与调试效果

↑上一章 ↓下一章
关注公众号获取验证码
复制内容需要验证码(7.99元/天)