xiao_he 发表于 2016-5-7 18:22:34

求一个8位PWM控制LED亮度的方法

诚心请教前辈:
如题,用8位单片机的PWM控制LED亮度,亮度在128级(最好64或32级)内,如何实现线性平滑由暗到亮(或由亮到暗)没有闪烁感?

冬天的野狼V2 发表于 2016-5-7 19:54:56

帮顶,等高手来

hhjjstu 发表于 2016-5-7 20:22:20

一个8位PWM,占空比0-255可调

117433525 发表于 2016-5-7 21:27:34

8位做不了很平滑的调整.至少10位以上.如果能16位更好.查表分200段就行了.

k_er_tlwei 发表于 2016-5-7 21:31:57

8位占空比的pwm似乎只能做到10级线性亮度

117433525 发表于 2016-5-7 21:33:55

hhjjstu 发表于 2016-5-7 20:22
一个8位PWM,占空比0-255可调

你实际调一下就知道不是你想像中的那样0-255连续的亮度.在低亮的时候,PWM每加一个值,LED灯明显亮了很多(就感觉跳上去的一样).而在高亮的时候,你加一个PWM值跟没加一样加10个都没感觉.
所以要用很高的分辩率,在低亮的时候PWM一个一个加,然后线性的灯越亮,PWM加的越多.这样就可以做到全量程都很线性.眼睛看起来非常舒服和柔合.

chenchaoting 发表于 2016-5-7 21:35:28

记得论坛里有个贴出了例子,不用那么高分辨率,照样实现平滑

117433525 发表于 2016-5-7 21:37:42

chenchaoting 发表于 2016-5-7 21:35
记得论坛里有个贴出了例子,不用那么高分辨率,照样实现平滑

在低亮度的时候,分辩率低了没办法消除跳动感的,就是LZ说的闪烁感.

chenchaoting 发表于 2016-5-7 21:54:47

117433525 发表于 2016-5-7 21:37
在低亮度的时候,分辩率低了没办法消除跳动感的,就是LZ说的闪烁感.

那个帖子是用其他方法,间接提高分辨率,我找找看

chenchaoting 发表于 2016-5-7 21:58:34

http://www.amobbs.com/thread-5635609-1-1.html ,看这个帖子,是否对你有帮助

xiao_he 发表于 2016-5-7 22:48:15

chenchaoting 发表于 2016-5-7 21:58
http://www.amobbs.com/thread-5635609-1-1.html ,看这个帖子,是否对你有帮助

这个好,不过用到了中断,如果要输出三路PWM分别控制RGB的话,还有至少一个定时中断,会占用CPU过多时间吗?

wcl_0308 发表于 2016-5-7 22:59:33

查表和线性拟合

guyue180 发表于 2016-5-7 23:07:02

这种不就是呼吸灯吗?

xiao_he 发表于 2016-5-7 23:08:59

wcl_0308 发表于 2016-5-7 22:59
查表和线性拟合

能说具体点吗?

xiao_he 发表于 2016-5-7 23:16:03

guyue180 发表于 2016-5-7 23:07
这种不就是呼吸灯吗?

应该差不多吧

honeybear 发表于 2016-5-7 23:31:21

现在有很多控制LED的恒流芯片,能支持8位,12位,16位的都有,具体型号马上想不起来,你查查天微,绿联这两个厂家,使用这类型的芯片控制也简单,效果也比较平滑

闪耀的空白 发表于 2016-5-8 13:06:14

{:smile:}支持一下{:smile:}

Ray______ 发表于 2016-5-8 15:02:35

8位做过20来段就不好做了

at90s 发表于 2016-5-9 09:03:16

加上gama校正就好了

xiao_he 发表于 2016-5-10 18:10:35

考虑用改变脉冲频率替代调整脉冲宽度的方法试试,不知可行否?

zyqcome 发表于 2016-5-10 18:21:17

加快频率,可以减轻闪烁,占空比的任意细分

xiao_he 发表于 2016-5-10 19:42:38

是用STC的高速脉冲输出功能,需要增加亮度时提高输出脉冲的频率。
页: [1]
查看完整版本: 求一个8位PWM控制LED亮度的方法