1000字范文,内容丰富有趣,学习的好帮手!
1000字范文 > 搭建机器人电控系统——PWM原理——舵机和TMOTOR电机

搭建机器人电控系统——PWM原理——舵机和TMOTOR电机

时间:2020-03-23 06:09:14

相关推荐

搭建机器人电控系统——PWM原理——舵机和TMOTOR电机

文章目录

什么是PWM?一个最简单的PWM输出例子:定时器对PWM输出的作用如何利用定时的功能控制PWM占空比?PWM输出实例——舵机和电机以舵机为例:以PWM控制的TMOTOR电机为例:

什么是PWM?

到目前为止,我们在谈论单片机输入输出的时候,都是以数字信号传输,也就是0(低电平)和1(高电平)状态,如果你用电压表去测量单片机IO口的引脚电平,那么0就为0V,1就为3.3V/5V。

PWM所要做的,就是实现[0,1]之间的电平状态,也就是说PWM输出的时候,电压就可以是0到3.3V/5V之间的任意一个值。

PWM(Pulse Width Modulation),全称是脉冲宽度调制技术,简称脉宽调制,是利用MCU的数字输出来对模拟电路进行控制的一种技术。

一个最简单的PWM输出例子:

While(1){IO输出高电平;Delay(1S);IO输出低电平;Delay(1S);}

以上的代码我们可以输出一个占空比为50%的PWM波。我们把一个周期内高电平时间所占整个周期的比例称为占空比,在这里,我们的周期是2S。

一个PWM输出的占空比决定了输出的模拟量大小,如果此时你用电压表测量输出,那么你将会得到U=2.33V有效值的定义)。

同样我们可以通过调整延时时间的方式来调整占空比,进而得到不同的电压值。

占空比=20%,U=1.47V

由此我们也可以推出,如果单纯让我们的IO口输出一个高电平,这相当于我们输出了一个周期为无穷大,占空比为1的PWM波(虽然此时我们一般不叫它为PWM波了)。

对于一个控制对象而言,功率是决定它正常工作程度的一个物理量,所以当我们可以调整输出的电压时,也就改变了控制对象的工作状态。电机调速的例子就是这样,当输出的功率不同时,电机的工作状态即转速就会不一样。

定时器对PWM输出的作用

定时器/计数器,几乎是每个MCU都有的一个功能,他们的本质是有一个累加的计数寄存器,可以实现从0开始计数到计数寄存器位数充满为止。(如8位的计数寄存器,计数范围就是0到255,16位的就是0到65535)

对于一个MCU来说,拥有“可编程功能”是最核心的东西。对于STM32的定时器和单片机来说,你可以设置它的:

----------------------------------------------------------------------------------------------------------------------

计数方向:向上计数/向下计数/中间计数模式。

计数下限/初始值:通常称为重装值ARR,即当计数满溢出后新的计数初始值,STM32设置ARR的寄存器为16位,就是能设置0到65535之间的任意整数值。

计数周期/频率f:和你设置的重装值ARR有关,和你所使用的定时器TIMX挂载在哪条外设时钟线上的时钟频率Clock有关,也和定时器内部的分频系数PSC有关(PSC寄存器为16位,能设置0到65535之间)。

----------------------------------------------------------------------------------------------------------------------

以上,我们能够知道定时器是怎么计数的、计数的初始值是多少、计数的周期是多少。

如何利用定时的功能控制PWM占空比?

PWM输出的关键在于周期占空比,我们可以用定时器的计数周期作为PWM的周期。那么如何控制占空比?即什么时候输出高电平,什么时候输出低电平。

思路:找一个变量X,让它的值在ARR和上限65535之间,然后写一个判断语句,当计数值大于X时,引脚输出高电平;当计数值小于X时,引脚输出低电平。这样一来,即可实现占空比可调的PWM输出。

如果是51单片机的话,你只用按照这样的思路封装一个函数即可。对于STM32来说,它已经有封装好的函数可以用,你可以设置:

----------------------------------------------------------------------------------------------------------------------

起始电平TIM_OCPolarity:可以设置成低电平或者高电平。

输出比较模式TIM_OCMode:可以设置PWM1模式1和PWM2模式2。

PWM1: 当计时器值小于比较器设定值时则TIMX输出脚此时输出有效高电位。当计时器值大于或等于比较器设定值时则TIMX输出脚此时输出低电位。PWM2: 当计时器值小于比较器设定值时则TIMX输出脚此时输出有效低电位。当计时器值大于或等于比较器设定值时则TIMX输出脚此时输出高电位。

比较参数X:可以用TIM_SetCompare函数设置比较的参数,通常称为工作脉宽,范围在0到T之间。

以初始电平为低电平,高于X输出高电平为例:

----------------------------------------------------------------------------------------------------------------------

至此我们就可以得到PWM输出的占空比,调整比较参数X的值即可调整占空比。

PWM输出实例——舵机和电机

舵机和电机是我们最常用PWM控制的自动控制元件之一,也是PWM调速的典型应用。

无论是什么元件,当你要用PWM控制时,关键需要知道对象的两个参数

它的PWM频率(对应定时器周期)它的工作脉宽(对应PWM占空比)

以舵机为例:

①PWM频率为50HZ,即PWM周期20MS;

②工作脉宽:0.5—2.5MS,及占空比2.5%到12.5%,对应角度从0到最大角度(最大角度看不同舵机的参数)

以PWM控制的TMOTOR电机为例:

①PWM频率为500HZ,即2000微秒;

②工作脉宽:1120到1920微秒,即1120对应转速为0,1920对应满转速。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。