Промышленное производство
Промышленный Интернет вещей | Промышленные материалы | Техническое обслуживание и ремонт оборудования | Промышленное программирование |
home  MfgRobots >> Промышленное производство >  >> Manufacturing Technology >> Производственный процесс

Измерение солнечной радиации на Arduino UNO с Ethernet Shield

Компоненты и материалы

Компонент Количество
Arduino UNO 1
Ethernet Shield 2 1
Солнечный элемент (фотоэлектрическая ячейка) 1
Резистор 10 кОм 1

Инструменты

О проекте

Зачем это нужно

Существует много датчиков погоды (температура, влажность, освещенность), но доступных датчиков солнечной радиации (пиранометров) нет — они стоят $200–800. Автор хотел оценить солнечный потенциал своей местности перед покупкой солнечной панели и решил сделать свой дешевый пиранометр на Arduino.

Методика

Солнечный элемент преобразует радиацию в напряжение. Чем больше радиация, тем выше напряжение. Используем прямо пропорциональную зависимость.

Необходимые параметры:

Формулы:

Типичные значения: 150–300 Вт/м² в обычный день, до 900 Вт/м² в ясный день у экватора.

Подключение

  1. Определите полярность солнечного элемента мультиметром: если напряжение положительное — черный пробник на «земле» элемента.
  2. Земля элемента → GND Arduino. Плюс элемента → резистор 10 кОм → A0 Arduino. Второй конец резистора → GND. (Делитель напряжения / измерение тока через известное сопротивление).

Код: Базовый скетч (вывод в Serial)

#define ANALOG_PIN A0
#define RESISTANCE 10      // кОм
#define PANEL_LENGTH 60    // мм
#define PANEL_WIDTH 20     // мм

volatile float Area, Power, Radiation;

void setup() {
  Serial.begin(9600);
  while(!Serial);
  delay(100);
}

void loop() {
  Area = PANEL_LENGTH * PANEL_WIDTH / 10000.0;  // м²
  Power = pow(analogRead(ANALOG_PIN), 2) / RESISTANCE;
  Radiation = Power / Area;

  char msg[64];
  sprintf(msg, "Solar Radiation: %.2f W/m2", Radiation);
  Serial.println(msg);
  delay(1000);
}

Код: С Ethernet Shield (веб-сервер)

Ethernet Shield надевается на Arduino, пины совпадают. Код создает веб-сервер на порту 80, обновляющий страницу каждые 5 секунд с текущим значением радиации.

#include <SPI.h>
#include <Ethernet.h>

#define ANALOG_PIN A0
#define RESISTANCE 10
#define PANEL_LENGTH 60
#define PANEL_WIDTH 20

volatile float Area, Power, Radiation;

byte mac[] = {0xDE, 0x0D, 0x8E, 0xEF, 0xFE, 0xED};
IPAddress ip(192, 168, 1, 177);
EthernetServer server(80);

void setup() {
  Serial.begin(9600);
  while (!Serial);
  Ethernet.begin(mac, ip);
  server.begin();
  Serial.print("Server at ");
  Serial.println(Ethernet.localIP());
}

void loop() {
  Area = PANEL_LENGTH * PANEL_WIDTH / 10000.0;
  Power = pow(analogRead(ANALOG_PIN), 2) / RESISTANCE;
  Radiation = Power / Area;

  char msg[64];
  sprintf(msg, "Solar Radiation: %.2f W/m2", Radiation);

  EthernetClient client = server.available();
  if (client) {
    boolean currentLineIsBlank = true;
    while (client.connected()) {
      if (client.available()) {
        char c = client.read();
        if (c == '\n' && currentLineIsBlank) {
          client.println("HTTP/1.1 200 OK");
          client.println("Content-Type: text/html");
          client.println("Connection: close");
          client.println("Refresh: 5");
          client.println();
          client.println("");
          client.print(msg);
          client.println("
"); client.println(""); break; } if (c == '\n') currentLineIsBlank = true; else if (c != '\r') currentLineIsBlank = false; } } delay(1); client.stop(); } }

Схема

Измерение солнечной радиации на Arduino UNO с Ethernet Shield

Производственный процесс

  1. Измерение температуры на Raspberry Pi с датчиками Maxim 1-Wire и мостом DS2482 I2C
  2. Датчик CO2 K30: мониторинг качества воздуха в реальном времени на Arduino
  3. Устройство для общения глухосліпых людей с помощью 1Sheeld и Arduino
  4. Умная копилка: управление монетоприёмником на Arduino Nano
  5. Управление светодиодом по Bluetooth с Arduino: простой DIY-гид
  6. Интеграция ёмкостного сканера отпечатков DFRobot с Arduino или ESP8266
  7. Интерактивный HMI-проект на Nextion с Arduino Mega и датчиками
  8. Роботизированная рука 6 степеней свободы на Arduino Mega с управлением через Nunchuk
  9. Солнечный трекер v2.0 — продвинутая DIY система слежения за солнцем
  10. Сборка точного измерительного колеса на Arduino Nano и вращательном энкодере