PWM 驱动电机

文章主要是个人的笔记,所以很多地方可能是根据自己的情况来写的

驱动器在这里插入图片描述

使用的是L298N

CubeMX的配置

基本的配置略过(时钟源等)
我们使用定时器1
1
在这里插入图片描述
选择内部时钟 通道1 PWM互补通道
2
在这里插入图片描述
这里我们后面把预分频的值改为了3,计数值改为4000,使得输出频率达到了10k
1 预分频的值 分频后得到的值才是定时器1的时钟
2 这个主要是死区和滤波器的时钟
auto-reload preload 是用于设置定时器的ARR自动重装寄存器是更新事件产生时写入有效还是立即写入有效。如果使能了表示更新事件产生时写入有效,否则反之。
在这里插入图片描述
这个主要是主从模式的配置,一般感觉用不到。
在这里插入图片描述
死区时间设置为20 这个是为了避免驱动的损坏
在这里插入图片描述
Pulse 的值除以我们总的计数值得到占空比

占空比控制的原理

我觉得L298N使用PWM一共有两种方法,一种是取掉驱动上面的使能跳冒,输出PWM波来控制 第二种也就是我现在学习的这种方法,使用互补输出来控制。
在这里插入图片描述
这里的占空比设定是30%,根据驱动器的表我们可以知道,前三分之一的时间电机转动的方向与后面的时间不同(我们假设前面时间使电机正转,后面时间使电机反转),由于这个输出信号周期短(我现在使用的是TT电机,一般需要几k的波去驱动。),我们从整体上看到的是反转,只是前面时间的正转削弱了反转。当占空比为50%的时候,电机不转,而占空比与50%的绝对值大小决定了电机的转速。

代码

HAL_TIM_Base_Start(&htim1);开启定时器1
HAL_TIM_PWM_Start(&htim1,TIM_CHANNEL_1);//开启定时器Pwm通道1
HAL_TIMEx_PWMN_Start(&htim1,TIM_CHANNEL_1);//开启定时器Pwm通道1互补通道
__HAL_TIM_SET_COMPARE(&htim1,TIM_CHANNEL_1,500);

__HAL_TIM_SET_COMPARE(&htim1,TIM_CHANNEL_1,500);
是一个宏定义,它改变了CCR寄存器中的值,不用对寄存器进行操作。

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值