【润和Neptune测评】五 PWM
<div class='showpostmsg'><p style="text-align:justify"><span style="font-size:10.5pt"><span style="font-family:等线"><b>PWM:脉冲宽度调制</b></span></span></p><p style="text-align:justify"><span style="font-size:10.5pt"><span style="font-family:等线">就是周期性的控制IO拉高拉低的时间(占空比),来控制开关管的通断,实现功率的控制,比如LED调光,直流电机速度控制等等。</span></span></p>
<p style="text-align:justify"><span style="font-size:10.5pt"><span style="font-family:等线">我这里主要是用来控制LED调光,我们知道人眼看灯不闪的频率是50hz以上,所以要想眼睛看灯不闪,PWM的高低各10ms,关断时间不能大于10ms,大于这个值我们就会看到闪频,如果我想不要那么亮开关导通时间小于10ms,那我们只能提高频率,通过提高频率控制开关管导通的时间长短,来达到功率控制,控制LED灯亮度还不闪的目的。</span></span></p>
<p style="text-align:justify"><span style="font-size:10.5pt"><span style="font-family:等线"><b>W800的PWM使用</b>:</span></span></p>
<p style="text-align:justify"><span style="font-size:10.5pt"><span style="font-family:等线"><b>初始化:</b>由于官方已经封装好了,初始化非常简单,只需调用一个初始化就能打开PWM功能,通过下面的枚举值我们知道最多可以打开6路PWM通道。</span></span></p>
<p style="text-align:justify"> </p>
<p style="text-align:justify"><span style="font-size:10.5pt"><span style="font-family:等线"><b>启动:</b>启动也只有一个函数,但是我们要注意入口参数,第一个是配置PWM通道,第二个是周期,也就是占空比,第三个是频率,更改后面两个参数就能实现我们想要的PWM参数。</span></span></p>
<p style="text-align:justify"> </p>
<p style="text-align:justify"><span style="font-size:10.5pt"><span style="font-family:等线"><b>测试</b>:测试可能很多同学也会跟我一样,没有示波器,我们怎么看波形呢?作为硬件开发者,一些小工具可以自己备着,下图这个是我在网上买的一个简易逻辑分析仪,可以用来抓PWM波形,以及抓串行通信协议(如:UART I2C SPI等)波形分析,都挺有用。</span></span></p>
<p style="text-align:justify"> </p>
<p style="text-align:justify"><span style="font-size:10.5pt"><span style="font-family:等线">为了观看波形方便,我写了一个操作:协议接口收到数据,PWM值就增加10,这样循环,下图可以看出我的频率设置1000也就是1K,周期是255,为什么是255,接口上没有写注释,也没有翻到手册来说明这个周期怎么设置的,通过测试我发现这个周期只是一个8位的寄存器,溢出就从头开始,所以给了255。</span></span></p>
<p style="text-align:justify"> </p>
<p style="text-align:justify"><span style="font-size:10.5pt"><span style="font-family:等线">下面几张图是用逻辑分析仪软件抓出来的波形:通过发指令操作,只更改通道0的波形,通道1一直不变,图1是开机PWM两路都设置为0波形,频率也正好1K.</span></span></p>
<p style="text-align:justify"> </p>
<p style="text-align:justify"> </p>
<p style="text-align:justify"> </p>
<p style="text-align:justify"><span style="font-size:10.5pt"><span style="font-family:等线">设置接近50%的波形:</span></span></p>
<p style="text-align:justify"> </p>
<p style="text-align:justify"> </p>
<p style="text-align:justify"><span style="font-size:10.5pt"><span style="font-family:等线">设置接近100%的波形:</span></span></p>
<p style="text-align:justify"> </p>
<p style="text-align:justify"> </p>
<p style="text-align:justify"><span style="font-size:10.5pt"><span style="font-family:等线">这节就简单讲讲PWM,知道PWM的作用,下一节要做的双色LED灯,调亮度调色温都是基于PWM来做的。</span></span></p>
</div><script> var loginstr = '<div class="locked">查看精华帖全部内容,请<a href="javascript:;" style="color:#e60000" class="loginf">登录</a>或者<a href="https://bbs.eeworld.com.cn/member.php?mod=register_eeworld.php&action=wechat" style="color:#e60000" target="_blank">注册</a></div>';
if(parseInt(discuz_uid)==0){
(function($){
var postHeight = getTextHeight(400);
$(".showpostmsg").html($(".showpostmsg").html());
$(".showpostmsg").after(loginstr);
$(".showpostmsg").css({height:postHeight,overflow:"hidden"});
})(jQuery);
}
</script><script type="text/javascript">(function(d,c){var a=d.createElement("script"),m=d.getElementsByTagName("script"),eewurl="//counter.eeworld.com.cn/pv/count/";a.src=eewurl+c;m.parentNode.insertBefore(a,m)})(document,523)</script> <p>启动是哪一个函数,可以改变PWM的频率,占空比呢</p>
<p>255 这个计数器有点短啊,脉冲时间有点短。好歹给个16位的啊。</p>
Jacktang 发表于 2021-11-9 07:17
启动是哪一个函数,可以改变PWM的频率,占空比呢
<p>pwmStart这个函数,第一个参数是通道,第二个参数是占空比,第三个是频率</p>
页:
[1]