亿迅智能制造网
工业4.0先进制造技术信息网站!
首页 | 制造技术 | 制造设备 | 工业物联网 | 工业材料 | 设备保养维修 | 工业编程 |
home  MfgRobots >> 亿迅智能制造网 >  >> Manufacturing Technology >> 制造工艺

UltraV:便携式紫外线指数计

组件和用品

Arduino Nano R3
× 1
德州仪器 ML-8511
× 1
128x64 OLED 显示屏
× 1
MT3608 DC-DC 自激转换器
× 1
CR2 (3v) 电池
× 1
CR2 电池座
× 1

关于这个项目

由于皮肤病无法让自己暴露在阳光下,我利用在海滩上度过的时间制作了紫外线计。超V。

它建立在 Arduino Nano rev3 上,带有一个紫外线传感器、一个 DC/DC 转换器以提高 3v 电池电压,以及一个小型 OLED 显示屏。我的主要目标是保持它的便携性,以便我可以随时随地轻松了解紫外线指数。

第 1 步:零部件

  • 微控制器 Arduino Nano rev.3
  • ML8511 紫外线传感器
  • 128×64 OLED 显示屏 (SSD1306)
  • MT3608 DC-DC 升压
  • CR2 电池
  • CR2 电池座
  • 切换
  • 外壳

第 2 步:传感器

ML8511 (Lapis Semiconductors) 是一款紫外线传感器,适用于获取室内或室外的紫外线强度。 ML8511 配备了一个内部放大器,可根据紫外线强度将光电流转换为电压。这种独特的功能为外部电路(如 ADC)提供了一个简单的接口。在掉电模式下,典型待机电流为0.1μA,从而延长电池寿命。

特点:

  • 对 UV-A 和 UV-B 敏感的光电二极管
  • 嵌入式运算放大器
  • 模拟电压输出
  • 低电源电流(典型值 300µA)和低待机电流(典型值 0.1µA)
  • 小而薄的表面贴装封装(4.0mm x 3.7mm x 0.73mm,12 引脚陶瓷 QFN)

不幸的是,我没有机会找到任何紫外线透明材料来保护传感器。我测试过的任何类型的透明盖(塑料、玻璃等)都会减弱紫外线测量。更好的选择似乎是石英熔融石英玻璃,但我没有找到价格合理的,所以我决定把传感器放在盒子外面,露天。

第 3 步:操作

要进行测量,只需打开设备并将其指向太阳几秒钟,使其与太阳光线的方向保持一致。然后在显示屏上观察:左侧的索引始终显示即时测量(每 200 毫秒一个),而右侧的读数是此会话期间获得的最大读数:这就是您需要的读数。

在显示屏的左下方,还报告了测量的紫外线指数的 WHO 等效命名法(低、中、高、非常高、极端)。

第 4 步:电池电压和读数

我选择 CR2 电池,因为它的尺寸和容量 (800 mAh)。我整个夏天都在使用 UltraV,电池仍然显示为 2.8 v,所以我对这个选择非常满意。运行时,电路消耗约 100 mA 电流,但读数测量不会超过几秒钟。由于电池标称电压为 3v,我添加了一个 DC-DC 升压转换器,将电压升至 9 伏并将其连接到 Vin 引脚。

为了在显示屏上显示电池电压,我使用了模拟输入 (A2)。 Arduino 模拟输入可用于测量 0 到 5V 之间的直流电压,但这种技术需要校准。要执行校准,您将需要一个万用表。首先用最后一块电池(CR2)为电路供电,不要使用计算机的 USB 电源;从调节器(在 Arduino 5V 引脚上找到)测量 Arduino 上的 5V:默认情况下,此电压用于 Arduino ADC 参考电压。现在将测量值放入草图中如下(假设我读到5.023):

电压 =((long)sum / (long)NUM_SAMPLES * 5023) / 1024.0; 

在草图中,我将电压测量值作为 10 个样本的平均值。

第 5 步:原理图和连接

第 6 步:软件

显示器方面,我使用了U8g2lib,对于这种OLED显示器来说,它非常灵活和强大,可以提供多种字体选择和良好的定位功能。

关于 ML8511 的电压读数,我使用 3.3v Arduino 参考引脚(精度在 1% 以内)作为 ADC 转换器的基础。因此,通过在 3.3V 引脚上进行模数转换(通过将其连接到 A1),然后将此读数与传感器读数进行比较,我们可以推断出真实的读数,无论 VIN 是多少(只要在3.4V以上。

int uvLevel =averageAnalogRead(UVOUT);int refLevel =averageAnalogRead(REF_3V3);float outputVoltage =3.3 / refLevel * uvLevel; 

从以下链接下载完整代码。

UltraV_OLED.ino.zip

第 7 步:外壳

在对商用塑料盒上的矩形展示窗口进行手动切割的几次(糟糕的)测试之后,我决定为它设计自己的。因此,我使用 CAD 应用程序设计了一个盒子并使其尽可能小,我将 CR2 电池安装在背面的外部(电池座粘在盒子上)。

从以下链接下载外壳的 STL 文件。

UltraV.stl.zip

第 8 步:未来可能的改进

  • 使用紫外线光谱仪测量各种条件下的实际实时紫外线指数值(紫外线光谱仪非常昂贵);
  • 使用 Arduino 微控制器同时记录 ML8511 的输出;
  • 编写算法,将 ML8511 输出与各种大气条件下的实时 UVI 值相关联。

第 10 步:积分

  • Carlos Orts:https://create.arduino.cc/projecthub/McOrts/mobil...
  • Arduino 论坛:http://forum.arduino.cc/index.php?topic=3922.0
  • 启动电子产品:https://startingelectronics.org/articles/arduino/...
  • U8g2lib:https://github.com/olikraus/u8g2/wiki/u8g2referen...
  • 世界卫生组织,紫外线指数:http://www.who.int/uv/intersunprogramme/activitie...
https://github.com/olikraus/u8g2/wiki/u8g2reference

代码

  • UltraV
UltraVC/C++
Code
 /* Fabio Marzocca @ 2018 模数转换完全依赖于 VCC。我们假设这是 5V,但如果电路板由 USB 供电,这可能高达 5.25V 或低至 4.75V:http://en.wikipedia.org/wiki/USB#Power 由于这个未知的窗口在大多数情况下,ADC 相当不准确。为了解决这个问题,我们使用了非常精确的板载 3.3V 参考电压(精度在 1% 以内)。因此,通过在 3.3V 引脚 (A1) 上执行 ADC,然后将其与传感器读数进行比较,无论 VIN 是多少(只要它高于 3.4V),我们都可以推断出真实的读数。 2.0.0 - 2018 年 7 月 - 从 16x2 LCD 转移到 OLEDv。 2.0.1 - 2018 年 9 月 - 更改读取电池功能*/#include #include #include U8G2_SSD1306_128X64_NONAME_F_SW_I2C u8g2(U8G2_R0, /* clock=/**/ SCL, =*/ SDA, /* 重置=*/ U8X8_PIN_NONE); // 没有重置显示器的所有板#define FIRST_ROW_Y 16#define FIRST_ROW_X 16#define BOX_H 38//硬件引脚定义const int UVOUT =A0; //sensorconst 的输出 int REF_3V3 =A1; // Arduino board 上的 3.3V 电源const int VBATT =A2; //电池电压浮动 maxUV =0; //最大紫外线指数 readvoid setup(){ pinMode(UVOUT, INPUT); pinMode(REF_3V3,输入); pinMode(VBATT,输入); u8g2.begin();}void loop(){ u8g2.firstPage();做 { int uvLevel =averageAnalogRead(UVOUT); int refLevel =averageAnalogRead(REF_3V3); //以3.3V电源引脚为参考,从sensor float outputVoltage =3.3 / refLevel * uvLevel获得非常准确的输出值; float uvIntensity =mapfloat(outputVoltage, 0.99, 2.6, 0.0, 15.0); //将电压转换为紫外线强度级别 readBattery(); if (maxUV =0) &&(categ <3)) { strcpy(strCat, "LOW"); } else if ((categ>=3) &&(categ <6)) { strcpy(strCat, "MODERATE"); } else if ((categ>=6) &&(categ <8)) { strcpy(strCat, "HIGH !"); } else if ((categ>=8) &&(categ <10)) { strcpy(strCat, "VERY HIGH!"); } else if (categ>=11) { strcpy(strCat, "EXTREME!"); } u8g2.setCursor(0,64); u8g2.print(strCat); }//取给定引脚读数的平均值//返回平均值int averageAnalogRead(int pinToRead){ byte numberOfReadings =16;无符号整数运行值 =0; for(int x =0; x  

制造工艺

  1. 分压器
  2. 马铃薯电池
  3. 什么是仪表?
  4. 万用表
  5. 电池结构
  6. 电池额定值
  7. 便携式厕所
  8. 什么是便携式点焊机?
  9. 便携式三坐标测量机——固定式还是便携式?
  10. 了解汽车中使用的电池
  11. 测试交流发电机的不同方法
  12. 交流发电机坏或故障的 7 个迹象