引言
各位大佬,晚上好啊,在上一篇博客中,我们讲了什么是UART串口通讯,以及使用USB转TTL使得单片机可以和c#上位机做一个串口通讯,接下来,为大家带来PWM的概念原理,以及实际案例,使用PWM对电机进行速度调制,因为本课程的最后是做一个红外遥控的智能小车,所以是需要电机四个,驱动四个,轮胎四个,所以PWM对于最后的成果也是极为重要,并且在实际开发中,PWM也是比较常用的调速方式。
概念
PWM全称Pulse width modulation,中文翻译为脉冲宽度调制,其基本原理为控制方式就是对逆变电路开关器件的通断进行控制,使输出端得到一系列幅值相等但宽度不一致的脉冲,用这些脉冲来代替正弦波或所需要的波形。也就是在输出波形的半个周期中产生多个脉冲,使各脉冲的等值电压为正弦波形,所获得的输出平滑且低次谐波少。按一定的规则对各脉冲的宽度进行调制,既可改变逆变电路输出电压的大小,也可改变输出频率。
可能上面对于原理的解释过于官方,大家可能看不懂,通俗易懂的来说,就是通过对电子元器件的电路进行高低电平进行控制,在一段时间内,高低电平在输出会形成一段波动,这个波动可以成为PWM波形,而我们需要使用代码去控制PWM的输出波形,高电平在这一段波动中,通电时间即高电平时间是占了总时间多少,同时在这一段PWM波形中,高低电平来回切换的频率又是多少,形成了这么一段波形,这就引入了两个概念,占空比(Duty Ratio)和频率,占空比代表着,高电平通电总时和总时的一个占比(这段波形中,高低电平的总共占用时间),而频率则是高低电平在这段波形中,来回切换的一个频率。
如下图,下方在Arduino串口绘图器中,展示了一段锯齿波形,看下方的GIF我们可以看到对应的电机运动也是有快到慢的一个运动状态。