这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 嵌入式开发 » STM32 » 【原创】PWM的使用介绍和简单的小车实例操作--from梁

共2条 1/1 1 跳转至

【原创】PWM的使用介绍和简单的小车实例操作--from梁

工程师
2023-10-19 21:22:49   被打赏 50 分(兑奖)     打赏

脉冲宽度调制(PWM),是利用微处理器的数字输出来对模拟电路调控的手段,实例如:对小车轮子的速度或者说舵机的角度、拖尾流水灯一类的调控等。

简单介绍一下,STM32F1系列共有8个定时器:高级定时器(TIM1、TIM8);通用定时器(TIM2、TIM3、TIM4、TIM5);基本定时器(TIM6、TIM7)。

STM32F4 系列是有15个定时器 多加通用定时器 TIM9~TIM14。

每个通用定时器都有四个通道来作为:输出捕获,输出比较,PWM输出,单脉冲模式等。

除了TIM6和TIM7(基本定时器)外,都可以产生PWM输出 高级定时器TIM1、TIM8可以同时产生七路的PWM输出。

 

图片1.png 

图中标注的是PWM输出模式的CNT(计数器当前值)、ARR(自动重装载值)、CCRx(捕获/比较寄存器值)。,

由CNT和CCRx的大小比较来 判断TIMx_CHx通道输出高低电平。

当CNT小于CCRx时,TIMx_CHx通道输出低电平;

当CNT等于或大于CCRx时,TIMx_CHx通道输出高电平。

 

该图是向上计数模式的例子:

定时器从0开始向上计数,由CCRx的值作为分界线,当TIMx_CNT数值高时输入高电平,数值低时输入低电平,到达ARR时溢出从新计数,反复循环...

也就是说 ARR确定PWM的频率,CCRx确定占空比。

可以设置PWM的模式来确定向上计数,向下计数。

下面是利用这个原理对小车轮子速度和舵机角度进行的调整,代码部分是标准库。

初始化定时器 TIM3,TIM4并且开启时钟,我这里电机驱动用的是TIM3,舵机是TIM4.

图片2.png 

 

 

然后配置IO口,毕竟是受内部外设控制,所以就复用推挽输出。

图片3.png 

 

再调用内部时钟,配置时基单元参数,设置向上计数模式,定时器分不分频其实无所谓,这个配置流程中的psc预分频的时候已经设置了,然后就是设置ARR触发中断停止计数,初始化单元,这个环节是PWM中很重要的一步。

拿第二部分 舵机的时基单元参数的配置来说。

我用的STM32F103系列 时钟频率本身是72MHZ,预分频值降速到10的-6次方再乘以ARR自动重装载值就是2ms一运行周期,这其中的作用嘛,下面找的两个舵机图就比较生动形象。

看似舵机和电机的配置很像,但也就是这关键的两个地方当初让我烦恼很久,我把两个合并为一个,舵机能动的时候轮子不能动,轮子能动的时候舵机不能动.....

图片4.png 

 

图片5.png 

 

 

 

这里就是选择向上计数,超出CCR的部分输出高电平,然后输出使能。

通俗点来说,就是ARR确定上限,这一步设置这个曲线从0开始随时间递增。

PWM1模式1(向上计数):计数器从0计数然后加到自动重装载值(TIXx—_ARR),然后重新从0开始递增,并且产生一个计数器溢出事件

PWM2 模式2(向下计数):计数器从自动重装载值(TIMx_ARR)减到0,然后重新从重装载(TIMx_ARR)开始递减,并且产生一个计数器

图片6.png 

定时器通道的初始化,CCR自动重装,开启预装载,定时器使能,都是一些必要的步骤。

图片7.png 

不同定时器CCR的初始化,然后电机和舵机具体到各个c文件中调节。

PWM的使用流程基本就是这样的,用的时候可以复制下来改一改就可以。

 图片8.png

下面就是各个C文件中的一些调节部分。

 

图片9.png 

 

舵机到最后具体的角度就是根据占空比,后续设置的CCR值来调整。

占空比:重载寄存器TIMx_ARR配置为N;

比较寄存器TIMx_CCR预先存储A;

PWM的占空比为A/(N+1)。

图片10.png

这个是设置电机右轮的一个PWM中调整CCR的地方

图片11.png 

ARR自动重装载值是100嘛,所以范围也是在100以内。

图片12.png 

 

 

对于PWM实施在小车和舵机上的结果,很难以动态展示这里就放一下成品图吧

 

图片13.png 

这里应该是超声波和舵机连接到一起的,成为一个避障小车,但是我想有更多一点的可能性,加了个不需要舵机的一个方案,所以这个图片是这样的。





关键词: MarsZ的嵌入式    

工程师
2023-11-21 08:28:18     打赏
2楼

PCB的丝印不错,STM32的PWM也是非常灵活


共2条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]