搜索
bottom↓
回复: 37

LED调光曲线怎么样才能出光不抖

  [复制链接]

出0入0汤圆

发表于 2015-11-11 09:42:34 | 显示全部楼层 |阅读模式
本帖最后由 lazybonesyang 于 2015-11-11 09:45 编辑

MCU STM8S105
LED调光方式 PWM
位数 16Bit
用指数曲线,出光的时候,特别是亮度高的时候,变化不够顺滑,感觉有点跳。
如果单用一个固定斜线出光应该也是不满足的。
想问下怎么样才可以让LED的光过渡顺滑。
8Bit PWM如果也可以就更佳。

帖上调光数据,比值是1.03493
16bit PWM调光数据
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
36
37
38
39
41
42
44
45
47
49
50
52
54
56
58
60
62
64
66
68
71
73
76
78
81
84
87
90
93
96
100
103
107
111
114
118
123
127
131
136
141
146
151
156
161
167
173
179
185
192
198
205
212
220
227
235
244
252
261
270
279
289
299
310
321
332
343
355
368
381
394
408
422
437
452
468
484
501
518
537
555
575
595
616
637
659
682
706
731
756
783
810
838
868
898
929
962
995
1030
1066
1104
1142
1182
1223
1266
1310
1356
1403
1452
1503
1556
1610
1666
1724
1785
1847
1911
1978
2047
2119
2193
2269
2349
2431
2516
2603
2694
2788
2886
2987
3091
3199
3311
3426
3546
3670
3798
3931
4068
4210
4357
4509
4667
4830
4999
5173
5354
5541
5735
5935
6142
6357
6579
6809
7046
7293
7547
7811
8084
8366
8658
8961
9274
9598
9933
10280
10639
11011
11395
11793
12205
12631
13073
13529
14002
14491
14997
15521
16063
16624
17205
17806
18428
19071
19738
20427
21141
21879
22643
23434
24253
25100
25977
26884
27823
28795
29801
30842
31919
33034
34188
35382
36618
37897
39221
40591
42009
43476
44994
46566
48193
49876
51618
53421
55287
57218
59217
61286
63426
65642

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

阿莫论坛20周年了!感谢大家的支持与爱护!!

月入3000的是反美的。收入3万是亲美的。收入30万是移民美国的。收入300万是取得绿卡后回国,教唆那些3000来反美的!

出0入0汤圆

发表于 2015-11-11 10:18:21 | 显示全部楼层
本帖最后由 myqiang1990 于 2015-11-11 10:20 编辑

插补,然后控制插补周期~~光有曲线还不行,还得配合调光算法~~

出0入0汤圆

发表于 2015-12-9 11:46:42 | 显示全部楼层
怎么样插补

出0入0汤圆

 楼主| 发表于 2015-12-30 14:10:05 | 显示全部楼层
myqiang1990 发表于 2015-11-11 10:18
插补,然后控制插补周期~~光有曲线还不行,还得配合调光算法~~

应该是中间选择些点,然后通过算法连接起来。但这些点怎么确定 呢?

出0入4汤圆

发表于 2015-12-30 17:59:59 | 显示全部楼层
lazybonesyang 发表于 2015-12-30 14:10
应该是中间选择些点,然后通过算法连接起来。但这些点怎么确定 呢?

LZ一个问题搞个把月,也不贴贴中间的故事。有啥经验呢?

出0入0汤圆

发表于 2015-12-30 19:19:33 | 显示全部楼层
本帖最后由 myqiang1990 于 2015-12-30 23:14 编辑
lazybonesyang 发表于 2015-12-30 14:10
应该是中间选择些点,然后通过算法连接起来。但这些点怎么确定 呢?


你上面不是算出一些调光曲线的数据点了吗?吧这些点装在一个表里,然后根据实际调光指令查询需要调到的亮度(对应表里的PWM值),然后控制亮度从表中0开始按照+1+1+1的方式从曲线表中取值,控制+1+1+1的速度,就可以了~其实你还可以用PID算法来调光~~原理类似的~就是插补~然后控制插补的速度~为什么要插补呢?因为如果亮度值一下子阶跃的话,调出来的光是闪动的!这个不行~得柔和线性的变化,为什么要控制插补周期呢?因为如果不控制插补周期(就是+1+1+1的速度),那么调光会严重会滞后与调光指令~~不能及时响应亮度的变化~
插补周期的原则就是:与当前亮度跟设定亮度的差值成反比(频率成正比)。(是不是有点像PID算法呢?)

出0入0汤圆

 楼主| 发表于 2015-12-31 17:20:16 | 显示全部楼层
myqiang1990 发表于 2015-12-30 19:19
你上面不是算出一些调光曲线的数据点了吗?吧这些点装在一个表里,然后根据实际调光指令查询需要调到的亮 ...

插快了会感觉跳,插慢了又滞后。大神,谢谢你。

出0入0汤圆

发表于 2015-12-31 18:31:42 | 显示全部楼层
lazybonesyang 发表于 2015-12-31 17:20
插快了会感觉跳,插慢了又滞后。大神,谢谢你。

对的~~所以控制插补周期~插补周期的原则,最后一句我已经说明了~

出0入0汤圆

发表于 2015-12-31 19:50:12 来自手机 | 显示全部楼层
lazybonesyang 发表于 2015-12-31 17:20
插快了会感觉跳,插慢了又滞后。大神,谢谢你。

插。。。插。。。啪。。。啪

出0入0汤圆

发表于 2016-3-26 15:16:32 | 显示全部楼层
谢谢6楼分享,尝试发现调光低端不闪,另外问题出现切光不够快,即0跳到100%出光响应不够快。

出0入0汤圆

发表于 2016-3-26 16:31:35 | 显示全部楼层
Mark!!!!!!!!!

出350入8汤圆

发表于 2016-3-26 23:27:15 来自手机 | 显示全部楼层
速度控制好就可以了。

出0入0汤圆

发表于 2016-4-1 16:37:32 | 显示全部楼层
是怎么生成优秀的调光曲线的

出0入0汤圆

发表于 2016-4-1 17:01:20 | 显示全部楼层
好像用呼吸灯方式可以否

出0入0汤圆

发表于 2016-4-12 09:38:20 | 显示全部楼层
调光曲线:
u16 data2[256]={
0 ,0 ,1 ,1 ,2 ,2 ,3 ,4 ,5 ,6 ,8 ,9 ,11 ,12 ,14 ,16 ,18 ,20 ,23 ,25 ,28 ,
        30 ,33 ,36 ,39 ,42 ,46 ,49 ,53 ,56 ,60 ,64 ,68 ,72 ,77 ,81 ,86 ,90 ,95 ,
        100 ,105 ,110 ,116 ,121 ,127 ,132 ,138 ,144 ,150 ,156 ,163 ,169 ,176 ,182 ,
        189 ,196 ,203 ,210 ,218 ,225 ,233 ,240 ,248 ,256 ,264 ,272 ,281 ,289 ,298 ,
        306 ,315 ,324 ,333 ,342 ,352 ,361 ,371 ,380 ,390 ,400 ,410 ,420 ,431 ,441 ,
        452 ,462 ,473 ,484 ,495 ,506 ,518 ,529 ,541 ,552 ,564 ,576 ,588 ,600 ,613 ,
        625 ,638 ,650 ,663 ,676 ,689 ,702 ,716 ,729 ,743 ,756 ,770 ,784 ,798 ,812 ,
        827 ,841 ,856 ,870 ,885 ,900 ,915 ,930 ,946 ,961 ,977 ,992 ,1008 ,1024 ,1040 ,
        1056 ,1073 ,1089 ,1106 ,1122 ,1139 ,1156 ,1173 ,1190 ,1208 ,1225 ,1243 ,1260 ,
        1278 ,1296 ,1314 ,1332 ,1351 ,1369 ,1388 ,1406 ,1425 ,1444 ,1463 ,1482 ,1502 ,
        1521 ,1541 ,1560 ,1580 ,1600 ,1620 ,1640 ,1661 ,1681 ,1702 ,1722 ,1743 ,1764 ,
        1785 ,1806 ,1828 ,1849 ,1871 ,1892 ,1914 ,1936 ,1958 ,1980 ,2003 ,2025 ,2048 ,
        2070 ,2093 ,2116 ,2139 ,2162 ,2186 ,2209 ,2233 ,2256 ,2280 ,2304 ,2328 ,2352 ,
        2377 ,2401 ,2426 ,2450 ,2475 ,2500 ,2525 ,2550 ,2576 ,2601 ,2627 ,2652 ,2678 ,
        2704 ,2730 ,2756 ,2783 ,2809 ,2836 ,2862 ,2889 ,2916 ,2943 ,2970 ,2998 ,3025 ,
        3053 ,3080 ,3108 ,3136 ,3164 ,3192 ,3221 ,3249 ,3278 ,3306 ,3335 ,3364 ,3393 ,
        3422 ,3452 ,3481 ,3511 ,3540 ,3570 ,3600 ,3630 ,3660 ,3691 ,3721 ,3752 ,3782 ,
        3813 ,3844 ,3875 ,3906 ,3938 ,3969 ,4001 ,4032 ,4064 ,4096 ,
};

定义TIM2比较中断       
   (  u16 CCR1_Val=3000;
     u16 CCR2_Val=3000;
        u16 CCR3_Val=1500;
        u16 CCR4_Val=1500;
      RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2, ENABLE);
        TIM_TimeBaseStructure.TIM_Period = 65535;  
        TIM_TimeBaseStructure.TIM_Prescaler = 5;        。。。)
中断处理:void TIM2_IRQHandler(void)
                                {    extern u16 TIM3CCR1_Val;
                                        extern u8 pwm_mark;
                                        u16 capture,capturey;
                                         if (TIM_GetITStatus(TIM2, TIM_IT_CC1) != RESET)
                                                {       TIM_ClearITPendingBit(TIM2, TIM_IT_CC1);      
                                               
                                                        capture=TIM_GetCapture1(TIM2);
                                                        TIM_SetCompare1(TIM2,  capture+TIM1CCR3_Val);
                                                        if(ledvalx<data2[DMX_buf[0]]){ledvalx++;TIM1CCR3_Val=(data2[DMX_buf[0]]-ledvalx);}
                                                       
                                                        }   
                                         if (TIM_GetITStatus(TIM2, TIM_IT_CC2) != RESET)  
                                                {  
                                                        TIM_ClearITPendingBit(TIM2, TIM_IT_CC2);  
                                                       
                                                        capturey=TIM_GetCapture2(TIM2);
                                                        TIM_SetCompare2(TIM2,  capturey+TIM3CCR3_Val);
                                       
                                                if(ledvalx>data2[DMX_buf[0]]){ledvalx--;TIM3CCR3_Val=(ledvalx-data2[DMX_buf[0]]);}       
                                               
                                                        }   。。。}
请问这种方法可以吗?我试了好久,不是低端闪烁,就是调光响应太慢。怎么改进呢?

出0入0汤圆

发表于 2016-4-12 09:49:01 | 显示全部楼层
myqiang1990 发表于 2015-12-30 19:19
你上面不是算出一些调光曲线的数据点了吗?吧这些点装在一个表里,然后根据实际调光指令查询需要调到的亮 ...

受教了,我看懂了,不知道楼主看懂没,呵呵,感觉这个是不是还能用到调节色温之类的上

出0入0汤圆

发表于 2016-4-12 10:00:00 | 显示全部楼层
请问那个插补周期怎么设置,我使用的那种方式是正确的吗?

出0入0汤圆

发表于 2016-4-12 11:43:32 | 显示全部楼层
调光曲线,mark

出0入0汤圆

发表于 2016-4-15 17:55:32 | 显示全部楼层
记号一下,也在做类似产品,一直觉得效果不太好

出0入0汤圆

发表于 2016-4-15 21:40:29 | 显示全部楼层
直接上芯片SN3193A

出0入0汤圆

发表于 2016-4-15 21:41:28 | 显示全部楼层

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

出0入0汤圆

发表于 2016-4-19 17:32:11 | 显示全部楼层
mark,学习一下

出0入0汤圆

发表于 2016-4-19 17:44:32 | 显示全部楼层
这个必须好好学一下

出0入0汤圆

发表于 2016-4-19 17:46:22 | 显示全部楼层
楼主用的哪款调光芯片?最近在做一款调光板,使用的是LM3409,这两天准备打版了,到时候也要调光

出0入0汤圆

发表于 2016-4-19 17:56:59 | 显示全部楼层
make,学习一下

出0入0汤圆

发表于 2016-4-20 11:36:30 | 显示全部楼层
make,学习一下

出0入0汤圆

发表于 2016-4-20 12:31:32 | 显示全部楼层
把曲线拟合成函数运算一下呢,应该会顺滑一点吧

出0入0汤圆

发表于 2016-4-28 23:38:05 | 显示全部楼层
插补周期指的是什么,你那数组里面有多少个数   插补周期是不是从表头位置每一次指向下一个的速度吗

出0入0汤圆

发表于 2016-5-2 20:34:38 | 显示全部楼层
楼主位画了一幅漂亮的二极管V-I指数曲线。你是不是忘记在二极管上串联电阻了?串联电阻以后,亮度与PWM的关系就接近线性了。

出0入0汤圆

发表于 2019-8-19 18:43:32 | 显示全部楼层
学习学习

出0入0汤圆

发表于 2019-8-19 22:43:38 | 显示全部楼层
刷新频率在200hz以上就不抖了,曲线没问题,如果你要获得更好效果,参考gamma调整

出0入8汤圆

发表于 2019-11-27 17:21:08 | 显示全部楼层
这个调光数据、比值1.03493是怎么来的

出10入10汤圆

发表于 2019-11-27 17:42:08 | 显示全部楼层

问一下,价格大概多少

出0入0汤圆

发表于 2020-7-1 18:35:53 | 显示全部楼层
raydsp 发表于 2016-4-12 09:38
调光曲线:
u16 data2[256]={
0 ,0 ,1 ,1 ,2 ,2 ,3 ,4 ,5 ,6 ,8 ,9 ,11 ,12 ,14 ,16 ,18 ,20 ,23 ,25 ,28 , ...

请问你这个表是怎么生成的?

出0入0汤圆

发表于 2020-7-6 13:48:36 | 显示全部楼层
参考别人的,然后根据实际情况再修改。

出0入0汤圆

发表于 2020-10-11 20:44:58 | 显示全部楼层
调光算法是为了调光值大范围变化时,出来的光不闪动吗?

出0入0汤圆

发表于 2023-7-7 22:29:59 | 显示全部楼层
也要做调光产品,进来学习一下

出0入0汤圆

发表于 2023-7-10 10:53:43 | 显示全部楼层
做成PID控制,一个比例,一个积分就够用了。
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-4-24 09:43

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表