最近做一个PWM驱动LED呼吸灯电路,使用STC12C5604AD内置的PWM输出,发现在低占空比时,LED的亮度变化非常快,可以说肉眼能非常容易分辨的亮度变化区域在占空比5%~30%之间就完成了,剩下变化阶段亮度变化都不怎么明显。因此最终效果非常不好!
请问这是由于占空比分辨率不够高引起的么?如果改用软件PWM提高分辨率到1000级会不会好一些?我的打算是低占空比段(0~300)放慢速度,其它部分加快以获得比较线性的亮度变化输出
请高人指点
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
10:255
09:146.52
08:84.18
07:48.37
06:27.79
05:15.97
04:9.17
03:5.27
02:3.03
01:1.74
00:1
马上改写程序试试效果
分10级亮度,亮度变化的视觉效果比较线性,但是亮度跳跃过于明显。也许至少得分20级以上才行。这个需要慢慢测试了!
不过用对数曲线区控制基本上是可行了,再次感谢iamyanh的指教
值是256 , STC的PWM控制有9位, 最后一位就是为256设计的
255的话应该会有个小脉冲, 虽然在led上无关紧要, 不过还是应该注意的问题呢
-----------------------------------------------------------------------
你这个差值不是关键问题
你的计算方法比较简单,但是级数有所减少(255范围的PWM实际只能做出9段亮度),实际测试亮度变化更激进!
不过无论是你的算法还是iamyanh的算法,STC内置的硬件PWM输出是完全不够用的,为了得到比较理想的效果,必须使用更多bit的PWM。考虑硬件电路已经定型,决定做软件PWM输出,具体参数明天计算!
一周热门 更多>