![](https://csdnimg.cn/release/download_crawler_static/64022503/bg1.jpg)
PWM 简介:
PWM 为脉宽调试波,其在本设计中主要用来调节电机转速,从而实现对小车行驶速度
的灵活把握。
PWM 波可以通过多种方法得到,基于本设计中的主控芯片是 MCS-51 单片机,所以,
通过定时器编程产生 PWM 波。考虑到小车的灵活控制和调速的方便,程序采用两个定时器
产生两路独立的占空比可调的 PWM 波,即 PWM_1(由 T0 产生)和 PWM_2(由 T1 产生)。
其设计思想如下:
52 单片的定时器 T0 和 T1 是具有独立定时功能的,而定时器产生定时溢出时会产生定
时中断, 此时, 程序进入定时中断服务子程序。 在中断服务子程序中除了做装入定时初值的
工作外,还可以设计一些与定时器相关的操作,这里要介绍的 PWM 波就是在这个过程当中
编程产生的。我们可以假设某一正整型变量 PWM_ZHANKONG(它在产生 PWM_1 波时为
PWM_1_ZHANKONG,在产生 PWM_2 波时为 PWM_2_ZHANKONG)用来调节所产生的 PWM
波的占空比的大小,再假设某一正整型变量 PWM_COUNTER(它在产生 PWM_1 波时为
PWM_1_ COUNTER, 在 产 生 PWM_2 波 时 为 PWM_2_ COUNTER), 该 变 量 在 0 到
PWM_COUNTER_MAX(本程序中设为 200)之间变化, 当程序每进入一次定时中断服务子程
序,就使 PWM_ COUNTER自加一次,且当 PWM_ COUNTER等于 PWM_COUNTER_MAX时,
使 PWM_ COUNTER从 0 重新进行计数,依次往复。现我们以 PWM_1 的产生过程为例进行
说明, PWM_2 的产生相同。当 PWM_1_ COUNTER小于等于 PWM_1_ZHANKONG 时使
PWM_1=0;当 PWM_1_ COUNTER大于 PWM_1_ZHANKONG时使 PWM_1=1,这样, PWM_1
重复地出现“ 0”、“1”变化,就产生了 PWM 波。需要说明的是, PWM_1_ZHANKONG是可
以通过编程在 0 到 PWM_COUNTER_MAX之间自由浮动的, 这样就实现了占空比的灵活变化,
体现在小车控制上就是对车速的灵活掌控。
现将 PWM_1 的 PWM 波产生及占空比调节程序流程图给出: