站内搜索
发作品签到
专业版

【活动】夏日电子--智能夜灯

工程标签

326
0
0
0

简介

夏日电子--智能夜灯可以自动调整亮度以适应环境光照发生的变化

简介:夏日电子--智能夜灯可以自动调整亮度以适应环境光照发生的变化
夏日电子趣玩计划项目征集令

开源协议

Public Domain

(未经作者授权,禁止转载)
创建时间:2024-05-09 16:14:04更新时间:2024-10-18 10:43:39

描述

夏日电子--智能夜灯

一、系统方案

        1.1 照度调节电路方案

   方案一:采用stm32单片机产生PWM信号,并且PWM可以由一只100K电位器控制调节输出。

   方案二:采用555定时器输出PWM信号,  并且PWM可以由一只100K电位器控制调节输出。

方案选择:方案一,成本更大;方案二,电路简单,;综合考虑,使用方案二。

      

1.2 电源方案

   方案一:选用可调电源   

方案二:选用电池组和Type-C接口加升压模块组合   

方案选择:方案一,可调电源不易携带;方案二,台灯是实用性的产品,应更偏向于用户使用需求便捷性,故考虑干电池,易拆解或者Type-C接口,好更换购买;综合考虑,使用方案二。

 

1.3 灯板方案

方案一:选用条状灯带组合

方案二:选用点状灯板组合   

方案选择:方案一,如果需要题目中要求A4纸面光照整个区域内亮度均匀稳定,各点照度差小于 5%,则必须增加很多灯带,且灯带的LED更密集,功耗更大,不经济环保;方案二,点状灯板可以更自由分布,因为它面积小。它也可以在任何位置增加灯板数量或改变任何灯板的位置,简单可自定义调整。且LED灯不会太密集,节能;综合考虑,使用方案二。

 

1.4 照度显示方案

方案一:选用4位数码管

方案二:选用OLED屏幕   

方案选择:方案一,只能显示数字;方案二,可以显示文字和其他内容,有更好的显示界面;综合考虑,使用方案二。

 

二、理论分析与计算

在照度调节电路中,由于要适合LED的工作频率,于是需要计算电路中一个电容的数值。这个电容的作用是它通过充放电产生锯齿波,输入进入555定时器之中,555定时器产生PWM方波信号。而电容的充放电频率由一个100K电位器调节。其中锯齿波与方波信号频率是一样的,所以,确定了锯齿波的频率,就却定了PWM波的频率,从而可以通过调节电位器间接调节555定时器PWM输出,进而调节LED亮度。以下为电容数值的计算与确定:

电容计算(使用公式计算电位器在50%时充放电时间)

充电时间:t开=0.693*(R1+R2)*C

          t开=0.693*(1000欧+50000欧)*0.00000001F

          t开=0.00035343秒(0.35毫秒)

 

充电时间:t关=0.693*R3*C

          t关=0.693*50000欧*0.00000001F

          t关=0.0003465秒(0.34毫秒)

 

周期(T):t开+t关        

0.00035343+0.0003465=0.00069993(0.69毫秒)

 

频率(f):1/T      

=1/0.00069993(1.428Hz)

 

工作周期:t开/(t开+t关)=50.5%

 

其中元件取值:R1=1000欧,R2=50000欧,R3=50000欧,C=0.0000000F

 

确定电容值

由于肉眼可探测低频闪烁光线,因此LED频率不能太低。否则会看见LED在闪烁。

其中一些常见LED灯的频率对比如下:

刚计算的LED

标准家用灯

发光二极管灯板

1Hz

50-60Hz

>1400Hz

可用较大的电容器来降低较高工作频率。但是要合适,下面计算对比:

10nF小电容(高频):

100uF大电容(低频):

 

频率=1/周期

=1/0.00069993

=1.428Hz

 

周期=6.99秒

频率=0.14Hz

 

显然100uF大电容频率太低不合适,于是要选一个小电容。最后选择10nF小电容作为实验选材。

 

三.电路与程序设计

 1.照度调节电路设计

备注:其中元件选型已在原理图中标出

 

2. 照度检测电路设计

3.照度检测程序设计(keil5中的main.c程序)

#define EXAMPLE_DATE "2023-11-16"

#define DEMO_VER "1.0"

static void PrintfLogo(void);

SYSDATA_T g_tSYSDATA;

void bsp_keyProcess(void);

uint8_t buf[100]={0};

float myflux = 0.0;

uint8_t writeflag = 0;

uint8_t count; //次数

int main(void)

{

    uint8_t  i = 1; /* 按键代码 */

    uint8_t result = 0 ;

    uint8_t test[100] ="fkdjfkajkfjdskfjd12132443590549689";

    bsp_Init(); /* 硬件初始化 */

 

   // PrintfLogo(); /* 打印例程信息到串口1 */

    bsp_StartAutoTimer(3, 2000);

    printf("SYSCORE = %d \r\n",SystemCoreClock);

    for(i=0;i<100;i++)

    {

        buf[i]= 255-i;

    }

    while(1)

    {

        bsp_Idle();

        if(bsp_CheckTimer(3))

        {

            myflux = BH1750_GetLux();

            printf("当前光照值为 %0.2f\r\n",myflux);

            sprintf(buf,"%0.2fLux     ",myflux);

            

            OLED_ShowChinese(0,0,0,16,1);//光

            OLED_ShowChinese(16,0,1,16,1);//光

            OLED_ShowChinese(32,0,2,16,1);//光

            OLED_ShowString(48,0,buf,16,1);

            OLED_Refresh();

            

            g_tSYSDATA.flux = myflux;

            g_tSYSDATA.advalue = count;

            if(writeflag  == 1 )//需要存数据

            {

                if(count<20)

                {

                    printf("存入数据 次数: %02d  --> %0.02f \r\n",g_tSYSDATA.advalue,g_tSYSDATA.flux);

                    count++;

                    ee_WriteBytes((uint8_t *)&g_tSYSDATA,sizeof(g_tSYSDATA)*(count-1),sizeof(g_tSYSDATA));

                }

                else

                {

                    count =0;

                    writeflag =0;

                }

            }

        }

        bsp_keyProcess();

    }

}

 

四、测试方案与测试结果

1. 测试环境

①完全黑暗环境

②示波器:CA620T型双踪示波器

③电源:9V电池组和5.3伏Type-C输出加12V升压模块

 

2.测试方案

将整个装置置于完全黑暗环境中,以避免环境光的干扰,使用示波器检测锯齿波和555定时器发出的 pwm调制信号。调节电位器,测量在多组不同的电位器电阻阻值下流经led灯的电流大小,同时用手机软件照度计和BH1750模块照度表测量照度对比数值。用万用表测量电源输入电压和电流大小,通过功率P=电压U*电流I,计算得输入功率大小。再测量流经LED灯的电压和电流大小,通过公式计算得输出功率大小。最后计算电源效率(LED 灯板消耗功率与供电电源输出功率之比)。

 

设计图

未生成预览图,请在编辑器重新保存一次

BOM

暂无BOM

附件

序号文件名称下载次数
1
3e5a15c764fc8112358a4443de92c144.mp4
4
克隆工程
添加到专辑
0
0
分享
侵权投诉

工程成员

评论

全部评论(1
按时间排序|按热度排序
粉丝0|获赞0
相关工程
暂无相关工程

底部导航