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

使用 Arduino 测量太阳辐射

组件和用品

Arduino UNO
× 1
Arduino Ethernet Shield 2
× 1
太阳能电池
× 1
电阻 10k ohm
× 1

必要的工具和机器

数字万用表

关于这个项目

关于

有很多传感器可用于测量各种天气条件,如温度、湿度、光照强度等,但没有易于使用的传感器来测量太阳辐射量。这是因为太阳辐射很难测量,即使我们每天都能在皮肤上感受到它。

太阳辐照度是在测量仪器的波长范围内以电磁辐射形式从太阳接收到的单位面积功率。太阳波长的宽范围是另一个使其难以测量的因素。

测量太阳辐射的仪器称为总辐射表。总辐射表的价格在 200 美元到 800 美元之间,即使是来自中国供应商,普通爱好者也无法获得。您可以在此处阅读有关它们的更多信息:https://en.wikipedia.org/wiki/Pyranometer

我最近正在考虑为我的家购买一块太阳能电池板,想知道它是否值得,因此想估计我住的地方可用的太阳能量。

我对购买总辐射表不感兴趣,所以我想我可以通过自己制作来节省一些钱并同时享受一些乐趣。

这就是我如何制作自己的酷小工具,它便宜得多,它可以帮助估计太阳辐射量。它使用一些易于访问的组件和 Arduino 进行计算。我从 Chinavasion 获得了我的大部分组件,但您可以从许多其他地方获取工具和设备,因为它们都很常见。

设置

1. 您的太阳能电池应该有 2 根电线,一根接地(黑色),另一根带电(红色)。如果您有不同的颜色代码或无法区分它们,请检查您的万用表。把万用表的表笔接在两根线上,如果显示的电压是正的,那么黑色万用表表笔接的那根线是地线,红色的是带电的,如果电压是负的,就反了

2. 将太阳能电池的地线连接到 Arduino 地,并将 VCC 线通过我们选择的电阻连接到任何模拟引脚。对于这个项目,我们将使用模拟引脚 A0。电阻器对我们的计算非常重要,因为我们预计它会比电池的内阻大很多倍。

这就是我们现在所需要的。转到编码部分。太阳能电池通过将来自太阳的太阳能转化为电能来产生能量,来自太阳的能量(辐射能和光能)越高。产生的电压越高。我们将使用这个正比关系来估计太阳辐射。

需要以下参数:

  • Arduino 模拟参考电压 =5V(可能在您的板上有所不同)
  • 太阳能电池的最大电压输出(这取决于您使用的太阳能电池板,您必须检查以确认这一点,因为这对我们的计算非常重要,对于平均计算器太阳能电池,它约为 5V) .
  • 太阳能电池的尺寸。您可以使用标尺(长度和使用或您需要的任何参数来计算面积)来测量它。

因此,我们将通过计算太阳能电池的功率并除以面积来估算我们的太阳辐射。

  • 功率 =pow (analogRead(A0), 2) / 电阻
  • 面积 =长 * 宽 (假设我们有一个矩形)
  • 太阳辐射 =功率/面积

下面是示例代码:

/*------------------------------------------- -------------------------------------------------- ----------------------------*/#define ANALOG_PIN A0 // 模拟引脚#define RESISTANCE 10 // 电阻千欧# define PANEL_LENGTH 60 // 太阳能电池的长度,单位为 mm#define PANEL_WIDTH 20 // 太阳能电池的宽度,单位为 mmvolatile float Area;volatile float Power;volatile float Radiation;/** Main Setup function*/void setup() {// Begin串行通信Serial.begin(9600);while(!Serial);delay(100);}/** Main Setup function*/void loop() {Area =PANEL_LENGTH * PANEL_WIDTH / (100*100); // 我们除以 10000 得到以平方米为单位的面积Power =pow(analogRead( ANALOG_PIN ), 2) / RESISTANCE; // 计算 powerRadiation =Power / Area;char *msg; sprintf(msg, " 太阳辐射是 %f W/M2 ", 辐射); // 生成要打印的消息 Serial.println(msg);delay(1000);}/*---------------------------- -------------------------------------------------- ----------------------------------------------*/ 

正常一天的平均辐照度值范围为 150 到 300 W/M2。但这会因您所在的位置而有很大差异。在晴天或赤道附近地区,它可以高达 900。

要添加互联网功能,我们可以使用以太网屏蔽。我们不必进行任何其他新连接,只需将屏蔽安装在 Arduino 上并将引脚放在屏蔽上的相应位置(即 Arduino 上的引脚 1 仍然是屏蔽上的引脚 1)

代码

  • 总辐射表示例代码
  • 以太网功能代码
总辐射表示例代码Arduino
#define ANALOG_PIN A0 // 模拟引脚
#define RESISTANCE 10 // 以千欧姆为单位的电阻
#define PANEL_LENGTH 60 // 太阳能电池的长度(毫米)
#define PANEL_WIDTH 20 // 太阳能电池的宽度(mm)

volatile 浮动区域;
易失性浮动电源;
挥发性浮动辐射;

/*
* 主要设置功能
*/
无效设置(){
// 开始串行通信
Serial.begin(9600);
而(!串行);

延迟(100);
}


/*
* 主要设置功能
*/
无效循环(){

面积 =PANEL_LENGTH * PANEL_WIDTH / (100*100); // 我们除以 10000 得到以平方米为单位的面积

Power =pow(analogRead(ANALOG_PIN), 2) / RESISTANCE; // 计算功率

辐射 =功率 / 面积;

字符 *msg;

sprintf(msg, " 太阳辐射是 %f W/M2 ", 辐射); // 生成要打印的消息

Serial.println(msg);

延迟(1000);
}
无预览(仅限下载)。
以太网功能代码Arduino
#include
#include

#define ANALOG_PIN A0 // 模拟引脚
#define RESISTANCE 10 // 以千欧姆为单位的电阻
#define PANEL_LENGTH 60 // 太阳能电池的长度(毫米)
#define PANEL_WIDTH 20 // 太阳能电池的宽度(mm)

volatile 浮动区域;
易失性浮动电源;
挥发性浮动辐射;


// 在下方输入控制器的 MAC 地址和 IP 地址。
// IP 地址将取决于您的本地网络:
字节 mac[] ={
0xDE、0x0D、0x8E、0xEF、0xFE、0xED
};
IP地址 ip(192, 168, 1, 177);

// 初始化以太网服务器库
// 使用您要使用的 IP 地址和端口
//(端口 80 是 HTTP 的默认端口):
以太网服务器服务器(80);

无效设置(){
// 打开串口通信并等待端口打开:
Serial.begin(9600);
而(!串行){
; // 等待串口连接。仅本地 USB 端口需要
}


// 启动以太网连接和服务器:
Ethernet.begin(mac, ip);
server.begin();
Serial.print("服务器在");
Serial.println(Ethernet.localIP());
}


无效循环(){

面积 =PANEL_LENGTH * PANEL_WIDTH / (100*100); // 我们除以 10000 得到以平方米为单位的面积
Power =pow(analogRead(ANALOG_PIN), 2) / RESISTANCE; // 计算功率
辐射 =功率 / 面积;
字符 *msg;
sprintf(msg, " 太阳辐射是 %f W/M2 ", 辐射); // 生成要打印的消息


// 监听传入的客户端
EthernetClient 客户端 =server.available();
如果(客户端){
Serial.println("新客户端");
// http 请求以空行结束
boolean currentLineIsBlank =true;
而 (client.connected()) {
如果(客户端可用()){
char c =client.read();
串行写入(c);
// 如果你已经到了行尾(收到一个换行符
// 字符)且该行为空,http 请求已结束,
// 所以你可以发送回复
if (c =='\n' &¤tLineIsBlank) {
// 发送一个标准的 http 响应头
client.println("HTTP/1.1 200 OK");
client.println("内容类型:文本/html");
client.println("连接:关闭"); // 连接将在响应完成后关闭
client.println("刷新:5"); // 每 5 秒自动刷新一次页面
客户端打印();
client.println("");
client.println("");

/*
* 发送消息给客户端
*/
客户端打印(味精);
client.println("
");

client.println("");
休息;
}
如果 (c =='\n') {
// 你正在开始一个新行
currentLineIsBlank =真;
} else if (c !='\r') {
// 你在当前行得到了一个字符
currentLineIsBlank =false;
}
}
}
// 给浏览器时间来接收数据
延迟(1);
// 关闭连接:
客户端停止();
Serial.println("客户端断开连接");
}
}
无预览(仅限下载)。

示意图

太阳能电池板、电阻器和连接示意图

制造工艺

  1. 使用 RASPBERRY PI 测量温度
  2. 使用 K30 传感器监测二氧化碳
  3. 聋盲通信与 1Sheeld/Arduino
  4. 使用 Arduino 控制硬币接收器
  5. Arduino 带蓝牙控制 LED!
  6. 带有 Arduino 或 ESP8266 的电容式指纹传感器
  7. 玩 Nextion Display
  8. Nunchuk 控制机械臂(使用 Arduino)
  9. 太阳能追踪器 V2.0
  10. 带旋转编码器的DIY简易测量轮
  11. 带 Arduino 的迷你雷达
  12. 如何用 Arduino 制作音乐