PWM LED调光线性度怎么做好?

2020-01-12 17:14发布

最近做一个PWM驱动LED呼吸灯电路,使用STC12C5604AD内置的PWM输出,发现在低占空比时,LED的亮度变化非常快,可以说肉眼能非常容易分辨的亮度变化区域在占空比5%~30%之间就完成了,剩下变化阶段亮度变化都不怎么明显。因此最终效果非常不好!
请问这是由于占空比分辨率不够高引起的么?如果改用软件PWM提高分辨率到1000级会不会好一些?我的打算是低占空比段(0~300)放慢速度,其它部分加快以获得比较线性的亮度变化输出
请高人指点
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
94条回答
bigeblis
1楼-- · 2020-01-14 11:57
根据6楼提供的思路,亮度设置为10级的话,PWM值应该这样设置:
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
马上改写程序试试效果
bigeblis
2楼-- · 2020-01-14 17:06
测试结果:
分10级亮度,亮度变化的视觉效果比较线性,但是亮度跳跃过于明显。也许至少得分20级以上才行。这个需要慢慢测试了!
不过用对数曲线区控制基本上是可行了,再次感谢iamyanh的指教
Pony279
3楼-- · 2020-01-14 19:11
 精彩回答 2  元偷偷看……
Pony279
4楼-- · 2020-01-14 21:35
占空比真正要设置到100%的话
值是256 , STC的PWM控制有9位, 最后一位就是为256设计的
Pony279
5楼-- · 2020-01-15 02:57
255的话应该会有个小脉冲, 虽然在LED上无关紧要, 不过还是应该注意的问题呢
bigeblis
6楼-- · 2020-01-15 07:48
回复【18楼】Pony279  霍斯
255的话应该会有个小脉冲, 虽然在led上无关紧要, 不过还是应该注意的问题呢
-----------------------------------------------------------------------

你这个差值不是关键问题
你的计算方法比较简单,但是级数有所减少(255范围的PWM实际只能做出9段亮度),实际测试亮度变化更激进!
不过无论是你的算法还是iamyanh的算法,STC内置的硬件PWM输出是完全不够用的,为了得到比较理想的效果,必须使用更多bit的PWM。考虑硬件电路已经定型,决定做软件PWM输出,具体参数明天计算!

一周热门 更多>