加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

物联网大学开课啦!| 开发实战技巧大揭秘之巧用PWM

(2016-03-03 19:48:02)
标签:

杂谈

值此春暖花开,小李子终于称帝奥斯卡的大好日子,首届英特尔物联网大学也开学啦!专业大拿授课,不收学费,不会点名,从入门理论到实践技巧,你需要的都能在物联网大学中学到。新学期第一课,大神教大家如何利用PWM进行物联网开发。
物联网大学开课啦!| <wbr>开发实战技巧大揭秘之巧用PWM今天是个好日子,首要喜事自然是小李子用了22年终于将小金人追求到手。第二大喜事便是首届英特尔物联网大学开学啦,除了鞭炮和锣鼓,我们也邀请了有着丰富理论和实践经验的郑东跃郑老师来为我们上第一课——物联网开发实战技巧大揭秘之巧用PWM。课程内容可谓深入浅出,理论与实践充分结合,下面我们一起来上课吧~
物联网大学开课啦!| <wbr>开发实战技巧大揭秘之巧用PWM提到创客,一定会想到电子;提到电子,一定会想到数字电路与模拟电路。现代的电子系统设计中数字电路与模拟电路是相辅相成,缺一不可。而只有01的数字电路与电压(或电流)成比例的模拟电路之间,看似界限分明,它们是如何相互联系与转化的?有请PWM——这个模糊数字电路与模拟电路界限的技术。


什么是PWM           

PWM在拼音输入法里是抛物面的缩写,英文全称为“Pulse-Width Modulation”,当然,也有一些外行人士将其译为脉冲宽度调制

至此,今天的主角已经粉墨登场。就像所有的剧情一样,这里还要请出来一位配角占空比(Duty。占空比是指脉冲信号的通电时间与通电周期之比。在一串理想的脉冲周期序列中(如方波),正脉冲的持续时间与脉冲总周期的比值。

从上面的可以看出,PWM波有两个重要变量,Duty与周期(T)。对于应用设计来说,我们是预先设定周期,仅通过调节Duty的大小来实现我们的应用设计,也正是如此,用数字电路的方式实现了模块电路的功能。接下来,我们再来仔细讨论一下为什么要有PWM

为什么要有PWM

 物联网大学开课啦!| <wbr>开发实战技巧大揭秘之巧用PWMPWM波形示例)

我们知道,模拟信号的值可以连续变化,其时间和幅度的分辨率都没有限制。模拟电压和电流可直接用来进行控制,如收音机的音量控制,拧动旋钮时,电阻值变大或变化,从而改变了驱动扬声器的电流值,使音量相应变大或变小。

尽管模拟控制看似直观而简单,但它并不总是非常经济或可行的。其中重要一点就是,模拟电路容易随时间漂移,因而难以调节。精密模拟电路可以解决这个问题,但难免非常庞大、笨重和昂贵。模拟电路还可能严重发热,其功耗于工作元件两端电压与电流的乘积成正比。模拟电路还对噪声很敏感,任何扰动或噪声都会改变电流值的大小。

而通过以数字方式控制模拟电路,可以大幅度降低系统的成本和功耗。具体的原理就是对冲量(脉冲)作用于时间函数器件(典型的电感电容)而言。即冲量作用于时间函数器件时,如果冲量幅值对时间的积分相等(冲量时间曲线下的面积相等)则可以认为这些冲量等效。毕竟这里不是学堂,上面这段话是本篇最具有学术的文字了,其实,数字电路只会输出01,那么想输出0.5肿么办啊?便高速输出01010101…,取平均之后就是0.5了,是不是早这么说就可以了。以下将进入我们实践与应用之中。

如何产生PWM

对我们英特尔伽利略开发板而言,开发板上内置了6PWM输出IO,分别为IO3IO5, IO6, IO9, IO10, IO11六路,虽然,伽利略使用了专用芯片来实现PWM输出,并且有8路,但是我们目前只能使用这六路。

其实,伽利略有三种方式来实现PWM波的输出,分别为使用PWM寄存器方式,手动控制输出方式与用analogWritepin, val)命。第一个实现方式较为复杂,不是本文的重点,在此忽略。第二方式呢,实现也比较简单,例如下面的代码:

       void setup(){

        pinModePWMpin,OUTPUT;

}

void loop(){

digitalWritePWMpin, HIGH;

delayMicroseconds200;

digitalWritePWMpin, LOW;

delayMicroseconds500 - 200;

}

简简几行代码过后,英特尔伽利略就会产生一个占空比为40%,周期为2msPWM波(500Hz),可以看出所有引脚均可输出PWM波,但是,MCU也只能干这一个活了……

对于当今复杂系统与多种应用来说,上面的方式无疑是不可取的。那么第三种方式analogWritepin, val)函数便是我们所希望的,正如其命名一样——模拟写入。

Int duty = 64;

void setup(){

pinModepin, OUTPUT;

}

void loop(){

analogWritepin, duty;

  delay500;

}

上面这段代码同样可以产生20%的占空比,只是频率为Arduino的固定值约490Hz。我们可以通过修改duty值来改变占空比,并实现我们自己的应用设计。

PWM主要用来做什么

通过上面的理论知识,再联系我们的实际应用。PWM波调制主要用于以下几个方面的控制:

1PWM波调节LED灯亮度;

2PWM波控制直流电机;

3PWM波控制舵机;

4、还有很多很多应用……

物联网大学开课啦!| <wbr>开发实战技巧大揭秘之巧用PWM调节LED灯亮度

物联网大学开课啦!| <wbr>开发实战技巧大揭秘之巧用PWM控制直流电机

物联网大学开课啦!| <wbr>开发实战技巧大揭秘之巧用PWM控制舵机

物联网大学开课啦!| <wbr>开发实战技巧大揭秘之巧用PWM还有更多

文章写到这里,并没有贴出典型应用的源代码,一方面是篇幅的原因,另一方面,我想Maker们也想去设计并实现自己的应用了。

加入我们的粉丝群,就有机会和这些老师一起切磋讨论哟,不要犹豫速速动手。

物联网大学开课啦!| <wbr>开发实战技巧大揭秘之巧用PWM作者简介 郑东跃

EEPW论坛版主,硕士研究生学历,中级工程师职称,研发项目经理。从事公司主要产品的硬件与软件设计,项目管理等。

                                               (图片来自网络)

长按下方二维码,关注英特尔物联网微信平台,了解更多物联网精彩资讯!

物联网大学开课啦!| <wbr>开发实战技巧大揭秘之巧用PWM 

0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有