打印
[单片机芯片]

利用ch32v003的ADC采光强,再转PWM控制LCD屏幕亮度遇到的问题

[复制链接]
633|7
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
lilijin1995|  楼主 | 2023-5-14 21:22 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
AD, ADC, CD, LCD, PWM
本帖最后由 lilijin1995 于 2023-5-14 21:25 编辑

利用ch32v003的ADC采光强,再转PWM控制LCD屏幕亮度遇到的问题:
1.一致性不好,虽然都是200Hz的PWM,但是不同屏响应不同;
2.光敏二极管灵敏度很高,虽然有做算术均平滤波,1S周期采样完成进入PWM渐变调控
3.但客户反馈有两段变化,手一挥过就能检测到由亮变暗,由暗变亮过程。
所以希望各位能够不吝赐教,如何进行AD采样和PWM调整。
/***********************************************************************************
* 渐变算法
* 误差 <= 2
************************************************************************************/
u32 ColorToColor(u32 last_pwm, u32 _pwm)
{

    u32 NStep=0,i=0,temp=0;                            // 需要几步
    int32_t differPWM=0;
    float  avrStep=0;
    (last_pwm<_pwm)?(NStep=_pwm-last_pwm):(NStep=last_pwm-_pwm);
    differPWM=_pwm-last_pwm;
    // 渐变开始
    avrStep   = (float)differPWM   / NStep;
    for(i=0; i<NStep; i++)
    {
        temp   = last_pwm   + (int)(avrStep   * i);
        TIM_SetCompare2(TIM2, temp);
        Delay_Ms(100);
    }
    // 渐变结束
    return 1;
}

    while(1)
    {
        sum+=ADC_ConvertedValue;
        if(++count==1000)
        {
            currpwm=map(sum/count,0,826,25,499);
            printf("lastpwm=%d,currpwm=%d\r\n",lastpwm,currpwm);
            ColorToColor(lastpwm,currpwm);//渐变调光
            lastpwm=currpwm;
            sum=0;count=0;
        }
        Delay_Ms(1);
    }


使用特权

评论回复
沙发
tpgf| | 2023-6-5 12:14 | 只看该作者
感觉这个就得根据实际用的屏幕进行参数的调整了

使用特权

评论回复
板凳
qcliu| | 2023-6-5 13:53 | 只看该作者
手一挥过就能检测到由亮变暗,由暗变亮过程。这个的实现对外部的光线条件有限制吗

使用特权

评论回复
地板
drer| | 2023-6-5 14:02 | 只看该作者
qcliu 发表于 2023-6-5 13:53
手一挥过就能检测到由亮变暗,由暗变亮过程。这个的实现对外部的光线条件有限制吗 ...

另外是不是能可靠的检测呢?会不会产生误操作呢

使用特权

评论回复
5
coshi| | 2023-6-5 14:40 | 只看该作者
1S周期采样会不会产生信号的严重滞后啊

使用特权

评论回复
6
kxsi| | 2023-6-5 15:02 | 只看该作者
这种有没有比较成熟的采集计算方法呢 感觉有点复杂了

使用特权

评论回复
7
wiba| | 2023-6-5 15:17 | 只看该作者
如果提高adc的采样频率的话 算法的复杂程度也就上升了

使用特权

评论回复
8
ufbycd| | 2023-6-6 09:08 | 只看该作者
用滑动平均

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

54

主题

162

帖子

4

粉丝