|
现今有越来越多的人在使用可再生能源,尤其是太阳能。然而,正确预测太阳状况或在特定地点可以从太阳接收多少能量所需的仪器对于成功的太阳能运营至关重要。预测一个地方可以产生多少能量以及放置太阳能电池板的位置非常有用。用于预测这一点的方法是太阳辐照度测量,其中需要估计平方米区域内可用的功率(以瓦特为单位)。现在,这通常是使用总辐射表完成的,这是一种非常昂贵的仪器,将其用于小型MPPT或通用DIY太阳能电池板项目是没有意义的,因为项目成本甚至不到仪器的10%。
在本篇文章中,我们将制作一个简易的太阳辐照度测量设备,使用现场进行测试并收集数据并检查这如何反映结果。这是一个简单的DIY 太阳辐照度计项目,主要用于非商业、DIY级项目的目的,但这足以测试使用简单光强度传感器是否能满足要求。
所需的组件 ● Arduino Nano开发板 ● BH1750光强传感器模块 ● 连接导线 ● Arduino IDE
光强度传感器的选择 光强度传感器对这个项目非常重要。市场上有多种类型的传感器可用于此目的,即使是简单的光敏电阻也可以测量通量但不准确。还需要为此目的获取具有成本效益的、广泛可用的解决方案。因此,我们选择了BH1750作为光强度传感器。但是,它不用于直射阳光测量,但对于支持高达65535流明单位范围的环境光传感器很有用。
该传感器可以提供晴朗的环境光范围,并且可以将其转换为可用于一般用途的典型辐照度。因此,从技术上讲,它可以提供一定范围的辐照度。因此,如果使用更高范围的环境光,则可以实现全光谱。 BH1750是一种数字环境光传感器,它使用I2C与微控制器进行通信,工作电压为3.3V。
太阳辐照度测量电路 制作太阳辐照度电路的完整原理图如下:
原理图很简单。使用I2C与Arduino Nano相连。BH1750模块有用于I2C的上拉电阻,因此不需要额外的电阻。使用5V为Arduino nano供电,在3.3V引脚上提供3.3V输出。ADDR引脚设置为接地,使BH1750的默认地址成为传感器的 I2C 地址。
太阳辐照度测量的代码 在这里,我们对Arduino nano进行了编程,以使用默认的高分辨率连续模式初始化BH1750对象,然后每秒读取一次光照强度。本节我们将逐行解释代码。
因此,首先在代码中包含所有必需的库文件。 Wire.h库用于设置传感器和微控制器之间的I2C通信,而BH1750.h用于读取BH1750传感器数据。 - #include <Wire.h>
- #include <BH1750.h>
复制代码
然后在setup()函数中,初始化I2C总线(BH1750 库不会自动执行此操作),初始化串口监视器以进行调试。 - void setup(){
- Serial.begin(9600);
- Wire.begin();
- lightMeter.begin();
- Serial.println(F("BH1750 Test begin"));
- }
复制代码
在loop()函数中,传感器接收到的Flux值被转换为辐照度。可以使用0.079的乘法将通量转换为近似的W/m2。可以参考这篇论文。
之后,将从传感器接收到的值打印在UART端口上,以excel格式存储数据以制作图形。 - void loop() {
- float lux = lightMeter.readLightLevel();
- float irr = (lux*0.0079);
- Serial.print("irradiance: ");
- Serial.print(irr);
- Serial.println(" W/m2");
- delay(1000);
- }
复制代码
测试太阳辐照度测量电路 将组件按照原理图进行连接,然后上传代码进行测试。幸运的是,这一整天都是晴天。因此,在图表上反映了清晰的结果。
连接后的组件请参阅下图,了解如何放置和捕获数据
下图是从光传感器接收到的数据:
以上数据并不完全准确,但可以记录非常接近的数据。如果您对这个项目有任何建议或任何问题,可以随时在本帖下面回复。 |