站内搜索
发作品签到
标准版

2021年电赛K题

工程标签

5.2k
0
0
1

简介

独立自主设计研发的照度稳定可调 LED 台灯分为调光台灯与数字显示照度表。

简介:独立自主设计研发的照度稳定可调 LED 台灯分为调光台灯与数字显示照度表。

开源协议

GPL 3.0

创建时间:2021-12-25 19:02:17更新时间:2022-01-04 18:04:21

描述

一、前言

        独立自主设计研发的照度稳定可调 LED 台灯分为调光台灯与数字显示照度表。覆盖黑色绒布胶带的木板连接一根 60cm 的光轴为调光台灯的框架;两块软串通讯交互的 ArduinoNano 单片机统筹台灯各功能实现;一枚 BH1750 照度传感器采集照度信息;四组均匀分散排列 LED 灯珠以三串两并(三个串联灯为一组,两组灯并联)电路连接;一颗按键实现台灯手动、自动模式自
由切换;使用输出稳定的可调电源为台灯供电。
       
数字显示照度表使用一枚块 Arduino Nano 单片机为控制中心;一块照度传感器为照度信息采集部分;一块 LCD1602 液晶显示屏为照度信息显示部分;一个可手动开关的蜂鸣器为照度信息提醒部分;使用两块 18650 可充电电池为照度表供电

二、团队介绍

参赛队员:刘志鹏 李宇恒 赖鹏

指导教师:姜大伟

三、基于本题目的方案论证

1、题目要求

1)、基本要求

        1、 数字显示照度表由电池供电,相对照度数字显示不少于3位半,不需照度校准。数字显示照度表检测头置于调光台灯正下方0.5米处,调整台灯亮度,最大照度时显示数字大于1000;遮挡检测头达到最低照度时显示数字小于100。台灯亮度持续变化时,数显也随之连续变化。亮度稳定时,数显稳定,跳变不大于10。数字显示照度表和调光台灯间不能有信息交换。

         2、调光台灯输入电压Vi:直流10V-15VVi变化不影响亮度。

         3、亮度从最亮到完全熄灭连续可调,无频闪(LED灯板供电电压纹波小于5%)。

         4、台灯供电电压为12V时,电源效率(LED灯板消耗功率与供电电源输出功率之比)不低于90%。

2)、发挥要求

         1、 将台灯调整到最大亮度,在其下方0.5米距离处放置一张A4白纸,要求白纸整个区域内亮度均匀稳定,各点照度差小于5%。台灯的照度检测头可有多个,位于A4纸面以外任何位置。

        2、用另一调至最大亮度的LED灯板作为测试用环境干扰光源,改变距离实现干扰光强变化。当环境光缓慢变化时,最弱和最强变化时长不小于10秒,台灯能自动跟踪环境光的变化调节亮度,保持纸面中心照度变化不大于5%;当环境光突变时,最弱最强变化时长不大于2秒,纸面中心照度突变变化不大于10%。当环境光增强直至台灯熄灭,纸面中心照度变化不大于10%。

        3、环境干扰光强变化对纸面照度影响越小越好。

3)、其他创新

        我们本组所创新是,是在数字显示照度表放置可开关蜂鸣器在开启状态下照度数值越大,蜂鸣器越响;照度数值越小蜂鸣器声音越弱。

2、中心控制器方案的比较与选择

       根据题目要求,调光台灯与数字显示照度表为两独立部分,需要实现不同的功能,于是单片机的选择十分重要。
       
方案一:采用 STM32 单片机为中心控制器
       STM32
系列有多种内核版本,且封装不一,可选择型号丰富多样。STM32功能强大,能出色应对实际操作中各式各样的情况。而STM32单片机配置复杂,在实际使用中出现问题难以调试。
       
方案二:采用 Arduino Nano 单片机为中心控制器
       Arduino Nano
单片机体积小,在保持高效运算处理能力的同时,兼顾了造价低、操作简单的特点。同时,为确保调光台灯各功能的稳定实现,我们采取了两块 Nano 单片机软串口通讯交互的方式作为解决方案。
       
综上,调光台灯的控制中心采用两块 Arduino Nano 单片机软串口通讯交互,照度表的控制中心使用一块 Nano

3、台灯在手动模式下亮度调节方案的比较与选择

        由题意,台灯既需要自动调光也需要手动调光,在模式的切换上,我们采用了按键控制两种状态的解决方案。而如何实现台灯在手动模式中实现亮度的稳定调控,是我们需要解决的重要问题。
       
方案一:使用可调升降压模块改变电压值
       LM2596S
降压模块可实现 5A 大功率高效率降压低纹波,且具备能够显示三位数字的数码管实时显示输入输出电压值。模块带有高效低空间占用的散热片,防止温度变化对模块功能造成影响。但在实际使用中,改变电压以改变 LED 灯板的亮度势必会对整体电路造成不利影响,且不方便台灯功能的调试工作。
       
方案二:使用电位器反馈模拟值实现亮度调控
       
通过调节电位器的阻值不同,反馈到单片机上的 PWM 值不同,根据 PWM 值不同从而控制LED灯板的亮灭,实现手动控制,此方案不仅符合题目要求,且操作简单,便于后续代码调试工作。
       
综上所述,使用电位器反馈模拟值实现台灯在手动模式下的亮度调控为最优解决方案。

4、实现无极调光的方案比较与选择

        按照题目需求,调光台灯需实现亮度的稳定可调,我们选择了 PWM 高频脉宽技术为解决方案。而该技术的使用离不开继电器与 MOS 管的选择与比较。
       
方案一:继电器
       
继电器作为常见的一种电控制器件,当激励量达到指定阈值时,输入回路与输出回路存在一定的互动关系。将继电器用于自动化的控制电路中,能够起到自动调节功能。继电器制造技术成熟,对环境要求低。但是继电器控制状态只有两种状态开合,无法实现高频开断功能,显然无法实现 LED 的无极调光技术。
       
方案二:MOS
        MOS
管开关速度快,具有优越的响应能力。且具有功耗低、噪音小的物理特点。将 MOS 管接在单片机的 PWM 引脚上使之高频开断实现 LED 无极调光。但因其连续高频开合,将会出现严重发热影响器件性能的问题。
       
综上,我们选择暴露空气中充分散热的 MOS 管以实现 LED 无极调光技。

四、作品组成

作品是由Arduino NANOBH1750LED灯珠、LCD1602LM2596S降压模块、电位器。

五、模块简介

1、主控

        采用Aruino NANO优点在于它调试简单,性能稳定,价格便宜。

 

2、照度传感器

        采用BH1750作为照度测量传感器。BH1750照度传感器具有测量准确、在体积上较为小巧、在价格方面较其他产品性价比较高。BH1750照度传感器采用I2C通讯,在代码的编写过程中较为方便,并且可靠性更强。

数字显示照度表实物如图

 

 

3LCD1602显示屏

        我们的照度检测表采用LCD1602作为数据显示屏幕。LCD1602,是一种十分常见的显示屏幕,价格低廉、操作简单,体积较小,但同时也存在着接线较为复杂等缺点。但我们考虑到整体的造价与后期代码的编写上,我们决定依旧采用LCD1602作为我们的数据显示部分。

4、台灯电路设计

       在灯珠部分我们采用24的灯珠用作照明,我们将灯珠分为四个部分,每部分6个灯珠。6个灯珠采用三串联然后两组并联电路进行并联的电路设计,这样可以保证灯光较为均匀。下面就是我们的原理图。

实物如图

5、其他部分

       还有很多的小部件,太过于常见就不做过多的解释了,就例如电位器、按键开关、4v锂电池等一些小部件。

6、整体部分

       下面我将我们用到的元器件原理图同意呈现出来,以便大家学习交流。

7、代码部分

部分代码:

#include <Wire.h>

#include <SoftwareSerial.h>

SoftwareSerial myserial(11, 10);

#define ADDR 0b1011100

String teststring = "";

void setup() {

  Serial.begin(9600);

  myserial.begin(9600);

  Wire.begin();

  Wire.beginTransmission(ADDR);

  Wire.write(0b00000001);

  Wire.endTransmission();

}

void loop() {

  int val = 0;

  Wire.beginTransmission(ADDR);

  Wire.write(0b00000111);

  Wire.endTransmission();

 

  Wire.beginTransmission(ADDR);

  Wire.write(0b00100000);

  Wire.endTransmission();

  delay(50);

  Wire.requestFrom(ADDR, 2);

  for (val = 0; Wire.available() >= 1; ) {

    char c = Wire.read();

    val = (val << 8) + (c & 0xFF);

  }

  delay(70);

   myserial.print(val);

   myserial.print("v");

}

void setup() {

  Serial.begin(9600);

  myserial.begin(9600);

  for(int i=0;i<=3;i++)

  {

  pinMode(led[i], OUTPUT);

  }

  pinMode(8, INPUT);

}

void light_work1() {

  for(int n=0;n<=9;n++)

  {

    light[n] = analogRead(A1);

    delay(5);

  }

  for(int n=0;n<=9;n++)

  {

    light[n]>MAX;

    MAX=light[n];

}

  for(int n=0;n<=9;n++)

  {

    light[n]<MIN;

    MIN=light[n];

}

设计图

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

BOM

暂无BOM

3D模型

序号文件名称下载次数
暂无数据

附件

序号文件名称下载次数
1
QQ视频20220101105619.mp4
317
2
报告.docx
235
3
视频演示百度网盘链接.docx
40
克隆工程
添加到专辑
0
0
分享
侵权投诉

工程成员

知识产权声明&复刻说明

本项目为开源硬件项目,其相关的知识产权归创作者所有。创作者在本平台上传该硬件项目仅供平台用户用于学习交流及研究,不包括任何商业性使用,请勿用于商业售卖或其他盈利性的用途;如您认为本项目涉嫌侵犯了您的相关权益,请点击上方“侵权投诉”按钮,我们将按照嘉立创《侵权投诉与申诉规则》进行处理。

请在进行项目复刻时自行验证电路的可行性,并自行辨别该项目是否对您适用。您对复刻项目的任何后果负责,无论何种情况,本平台将不对您在复刻项目时,遇到的任何因开源项目电路设计问题所导致的直接、间接等损害负责。

评论

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

底部导航