人眼感受LED亮度非线性校正

人眼感受LED亮度非线性校正

  • LED实际亮度与PWM成正比,但由于人眼感受LED亮度是非线性的。即当PWM达到一定值后LED亮度变化不明显。弱光时,光强增加一倍,人眼感觉到的强度多于一倍;强光时,光强增加一倍,人眼感到的增强只有大约一半的强度。
  • 亮度感受非线性矫正原理
    以F 表示人眼对亮度的感受,φ表示光通量F =φ^1/2.2。其中,φ∝D(Duty,PWM 调 节 信 号 的 占 空 比,以下简称 D).线性的亮度感受需要非线性变化的φ,由于φ 与 D 严格线性,故线性变化的亮度感受需要遵从某种规律的非线性变化的φ,所谓的某种规律,即 (线性调节对应的非线性变化)φ———人眼亮度感受的反非线性特性,映射在系统中,就是 AD 采样后的值A 在控制 PWM 的占空比时(A 作为查找表的地 址 取φ 值 时),φ 值 按 照 D =λA^2.2 的 规律,如图所示。

在这里插入图片描述

  • 由以上结果可知,利用电位器调节LED亮度时,电位器的ADC采样值与LED的PWM占空比成非线性关系,具体PWM占空比计算公式如下所示。
      P W M = P W M 总 ∗ ( A D 实 / A D 总 ) 2.2   \ PWM = PWM_{总} * (AD_实/AD_总)^{2.2}\,  PWM=PWM(AD/AD)2.2
    C语言实现代码如下:
#include <stdio.h>
#include <math.h>

#define PWM_MAX        				800							// PWM 最大值
#define AD_SAMPLE_MAX   		    4095                        // AD采样最大值

// 输入AD采样值,返回对应的PWM值
int get_PwmDuty(int AD_Sample)
{
    return PWM_MAX*pow(((double)AD_Sample/AD_SAMPLE_MAX),2.2);
}

结果

get_PwmDuty(1000);
输出:35
  • 3
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值