class="markdown_views prism-dracula">
一、PWM信号是什么信号?它有什么作用?
1、简单的说,比如你有5V电源,要控制一台灯的亮度,有一个传统办法,就是串联一个可调电阻,改变电阻,灯的亮度就会改变。
2、还有一个办法,就是PWM调节。不用串联电阻,而是串联一个开关。假设在1秒内,有0.5秒的时间开关是打开的,0.5秒关闭,那么灯就亮0.5秒,灭0.5秒。这样持续下去,灯就会闪烁。如果把频率调高一点,比如是1毫秒,0.5毫秒开,0.5毫秒灭,那么灯的闪烁频率就很高。我们知道,闪烁频率超过一定值,人眼就会感觉不到。所以,这时你看不到灯的闪烁,只看到灯的亮度只有原来的一半。同理,如果1毫秒内,0.1毫秒开,0.9毫秒灭,那么,灯的亮度就只有原来的10分之一。
3、这就是PWM的基本原理。专业的说法百度一下就很多,我说了也不专业。但是道理就是这么简单,具体PWM还分几种,总的来说,都是保持一定的电压或电流不变,但改变一定周期内的导通和关断时间。这样等效于保持导通,但改变电压或电流大小。
4、这样的PWM控制方式,在数字控制电路上应用很方便。因为让电脑去控制一个可调电阻是比较困难的,而且可调电阻还有模拟电路固有的不稳定问题。
二、pwm的频率和占空比之间的关系
1、频率不控制什么,但是频率的高低会产生其他一些副作用。比如在电机控制中,频率太低会导致运动不稳定,如果频率刚好在人耳听觉范围,有时还会听到呼啸声。对于需要进行直流滤波的场合,频率越高,滤波的效果就越好。但是也不是说频率高一定好,太高的频率电机可能反应不过来。而且,如果PWM是由单片机产生的,那么他的频率和位数是成反比的(一些低端的单片机频率基本是确定的,位数也是确定的,不存在这个问题),比如说,单片机频率10M,如果PWM频率是5M,那么一个PWM周期内就只有两个机器周期,那么占空比的值就只有 0、50%、100%这三种。如果PWM频率是5k,那么一个PWM周期有2000个机器周期,占空比最小就可以去到1 / 2000 = 0.05%。所以实际运用中,要根据硬件因素设定频率,一旦设定了,也就不需要更改了,因为硬件是不会改变的。
2、占空比才是真正PWM应用的,其实就是开关的打开和关断的时间比值,这个比值在宏观上可以欺骗人眼,于是形成和电位器一样的作用。比如对一个电灯来说,你在1秒内,打开开关0.5秒,再关闭0.5秒,如此反复,那么电灯就会闪烁,但是如果是1毫秒内,0.5毫秒打开,0.5毫秒关闭,由于视觉暂留作用,也可能由于灯光的亮灭速度赶不上开关速度(还没全亮就又没电了),于是人眼不感觉电灯在闪烁,而是感觉灯的亮度少了一半。同理,如果是0.1毫秒开,0.9毫秒灭,感觉灯的亮度就只有1/10了。对于电机的原理也差不多,开关开时电机加速,关闭时电机减速,根据是加速时间多还是减速时间多,我们感觉总体的转速就是快了或慢了。当然,具体分析时还需考虑电机的电感作用,电感有滤波效果,但是用这个方式去理解也是成立的。
3、回到前面的频率问题,就如刚才说的,1秒内,0.5秒开,0.5秒灭,占空比是50%对吧?那么,1毫秒内,0.5毫秒开,0.5毫秒灭,占空比也是50%,对吧?如果是1秒呢,频率就是1HZ,如果是1毫秒,频率就是1KHZ,显然,同样是50%占空比,如果频率是1HZ,那电机肯定是跳着走的,灯光肯定闪得可以跳舞,不具有调速和调光的意义。
4、单片机有一个基本时钟,就是晶振发生的,发生一个脉冲时,单片机做一个动作,PWM的高低电平的切换都是每一个脉冲发生的,比如要产生精确的33%的占空比,就一定至少要100个机器周期,其中33个周期保持高电平,77个周期保持低电平。如果只要50个机器周期,无论如何也无法实现33%的占空比。要的机器周期越多,就是要越长的时间来完成一个PWM周期,周期长了,频率就低了,所以频率和占空比的精度成反比