2023-08-10 11:26:34 | 人围观 | 评论:
有很多人在使用可再生能源,尤其是太阳能。然而,正确预测太阳状况或在给定地点可以从太阳接收多少能量所需的仪器对于太阳能操作的成功至关重要。预测一个地方可以产生多少能量以及放置太阳能电池板的位置非常有用。用于预测这一点的方法是太阳辐照度测量,其中需要估计一平方米区域内可用的功率(以瓦特为单位)。现在,这通常使用日射强度计完成,这是一种非常昂贵的仪器,将其用于小型 MPPT 或通用DIY 太阳能电池板项目,项目成本甚至不到仪器的 10%。
在这里,我们将构建一个简单的辐照度测量设备,使用现场测试它并收集数据并检查它如何反映结果。这是一个简单的 DIY太阳辐照度计项目,将解决非商业、DIY 级项目的目的,但如果可以使用提供亮度的简单光强度传感器,然后将其转换为等效辐照度。除了这个辐照度测量电路,我们还用太阳能电池板建造了一些其他项目,如太阳能电池板功率监测、MPPT太阳能充电控制器等。
太阳辐照度测量电路所需的元件
Arduino纳米
BH1750 - 光强传感器模块
少数股线或伯格线
Arduino IDE 和 PC
Teraterm 记录辐照度。
光传感器的选择
嗯,光传感器对于这个项目非常重要。市场上有多种类型的传感器可用于此目的,即使是简单的光敏电阻器也可以测量通量但不准确。还需要为此目的获取具有成本效益、广泛可用的解决方案。因此,我们选择了BH1750作为光传感器。但是,它不用于直射阳光测量,但对环境光传感器很有用,它支持高达 65535 lx 单位的范围。这是最亮阳光亮度的一半。
这是不同条件的更接近的值或最大范围 -
该传感器可以提供晴朗的天空环境光范围,并且可以将其转换为可用于一般用途的典型辐照度。因此,从技术上讲,它可以提供一定范围的辐照度。因此,如果使用更高范围的环境光,则可以实现全光谱。BH1750 是一款数字环境光传感器,它使用 I2C 与微控制器通信,工作电压为 3.3V。
太阳辐照度测量电路
下面给出了构建太阳辐照度电路的完整原理图:
原理图非常简单。I2C 与 Arduino Nano 相连。幸运的是,BH1750 板为 I2C 配备了上拉电阻,因此不需要额外的电阻。使用 5V 为 Arduino nano 供电将使用内部 3.3V 稳压器在 3.3V 引脚上提供 3.3V 输出。ADDR 引脚设置为接地,使 BH1750 的默认地址成为传感器的 I2C 地址。
为太阳辐照度测量编程 Arduino Nano
在这里,我们对 Arduino nano 进行了编程,以使用默认的高分辨率连续模式初始化 BH1750 对象,然后每秒读取一次光照水平。完整的代码在文档末尾给出。这里我们逐行解释完整的代码。
因此,像往常一样通过包含所有必需的库文件来启动代码。Wire.h库用于设置传感器和微控制器之间的 I2C 通信,而BH1750.h用于读取 BH1750 传感器数据。
#include#include
然后在设置函数中,初始化 I2C 总线(BH1750 库不会自动执行此操作)并初始化串行监视器以进行调试。
无效设置(){ 序列号.开始(9600); Wire.begin(); lightMeter.begin(); Serial.println(F("BH1750 测试开始")); }
在void loop()内部,传感器接收到的通量值被转换为辐照度。对此没有具体的讨论,但可以对太阳波长进行近似计算。可以使用乘以 0.079 将通量转换为近似的 W/m2。可以参考这篇论文。任何需要进一步解释的人都可以参考这个以获得更多信息,它是一种基本类型的太阳辐照度测量。
之后,从传感器接收到的值打印在 UART 端口上,以 excel 格式存储数据以制作图表。
无效循环(){ 浮动勒克斯 = lightMeter.readLightLevel(); 浮动 irr = (lux*0.0079); Serial.print("辐照度:"); 序列号.print(irr); Serial.println("W/m2"); 延迟(1000); }
测试太阳辐照度测量电路
一切都在原地连接,并在重新分配中进行测试。幸运的是,这一天全天都被阳光明媚到阴凉的环境所覆盖。因此,清晰的结果反映在图表上。
从光传感器接收到的数据反映在下图 -
上图显示了 2021 年 10 月 27日当天西孟加拉邦的混合阴天情况,从 12 PM 到 2.45 PM 数据在一张图表上。
结论
嗯,这并不完全准确,但可以记录非常接近的数据。如果创建了具有全范围的适当传感器。是一个反映太阳辐照度的基础项目,适合小而简单的DIY项目,可以参考。如果您对此项目有任何建议或有任何疑问,可以在评论部分发表,或者您可以使用我们的论坛开始讨论。
代码
/*
BH1750 库使用示例。 此示例使用默认高分辨率初始化 BH1750 对象 连续模式,然后每秒读数一次。 联系: VCC -> 3V3 或 5V 接地 -> 接地 SCL -> SCL(Arduino Uno、Leonardo 等上的 A5 或 Mega 和 Due 上的 21,在 esp8266 上免费可选) SDA -> SDA(Arduino Uno、Leonardo 等上的 A4 或 Mega 和 Due 上的 20,在 esp8266 上免费可选) ADD ->(未连接)或 GND ADD 引脚用于设置传感器 I2C 地址。如果它的电压大于或等于 0.7VCC 电压(例如,您已将其连接到 VCC)传感器地址将是 0x5C。在其他情况下(如果 ADD 电压小于 0.7 * VCC),传感器地址将 为 0x23(默认)。 */ #include#include BH1750测光仪; 无效设置(){ 序列号.开始(9600); // 初始化 I2C 总线(BH1750 库不会自动执行此操作) Wire.begin(); // 在 esp8266 上,您可以使用 Wire.begin(D4, D3) 选择 SCL 和 SDA 引脚; // 对于 Wemos / Lolin D1 Mini Pro 和环境光防护罩,使用 Wire.begin(D2, D1); lightMeter.begin(); Serial.println(F("BH1750 测试开始")); } 无效循环(){ 浮动勒克斯 = lightMeter.readLightLevel(); 浮动 irr = (lux*0.0079); Serial.print("辐照度:"); 序列号.print(irr); Serial.println("W/m2"); 延迟(1000); }
全站搜索