Измеритель интенсивности солнечного излучения на Arduino


В настоящее время все большую популярность набирает возобновляемая энергетика или, как ее еще называют, "зеленая энергетика". Одним из самых значимых элементов подобной энергетики является преобразование энергии солнечного излучения в электрическую энергию. Эту операцию выполняют солнечные панели, стоимость которых в последнее время неуклонно снижается. Однако эффективность работы солнечной панели значительным образом от интенсивности солнечного излучения в месте ее установки. Поэтому солнечные панели желательно устанавливать в местах с наибольшей плотностью потока солнечного излучения (в рассматриваемой местности).

Внешний вид измеритель интенсивности солнечного излучения на Arduino

Обычно измерение плотности потока солнечного излучения осуществляют с помощью пиранометров (pyranometer, прибор для измерения солнечной радиации), однако данные устройства очень дороги и не подходят для использования в домашних условиях. В этом случае стоимость пиранометра будет составлять значительную величину от стоимости используемых вами солнечных панелей, что, конечно же, с экономической точки зрения невыгодно. Поэтому в данной статье мы рассмотрим создание своими руками простого измерителя интенсивности солнечного излучения (солнечной радиации) на основе платы Arduino и протестируем его работу в различных условиях эксплуатации. Также на нашем сайте вы можете посмотреть проект солнечной панели, следящей за движениями Солнца.

Необходимые компоненты

  1. Плата Arduino Nano (купить на AliExpress).
  2. Датчик интенсивности света/датчик освещенности (Light Intensity Sensor Module) BH1750 (купить на AliExpress).
  3. Соединительные провода.
  4. Компьютер с установленной Arduino IDE.
  5. Программа Teraterm для построения графика солнечной радиации (можно свободно скачать в сети).

Выбор датчика интенсивности света

Для измерения интенсивности светового потока в нашем проекте можно использовать большое число разнообразных датчиков. Простейшим из них является фоторезистор, который может измерять интенсивность падающего на него света, но делает он это неточно. Для нашего проекта нам необходим сравнительной дешевый датчик, но при этом обладающий достаточной точностью измерения светового потока. В качестве такого датчика мы выбрали датчик освещенности BH1750, который плохо подходит для измерения интенсивности прямых солнечных лучей, но хорошо работает в качестве измерителя интенсивности окружающего (рассеянного) света. Датчик BH1750 поддерживает диапазон измерения интенсивности света вплоть до 65535 lx (люкс – единица измерения освещённости), что составляет половину фотометрической яркости яркого солнечного света.

Внешний вид датчика освещенности BH1750

В следующей таблице представлены яркости различных источников света.

Brightest Sunlight (очень яркий солнечный свет) Illuminance
Bright Sunlight (яркий солнечный свет) 100000-110000 Lux
Shaded Clear sky (пасмурное небо) 20000 Lux

Датчик BH1750 способен измерять освещенность в условиях ясного/безоблачного неба. BH1750 является цифровым датчиком, работает от напряжения 3.3V и подключается к микроконтроллерам (микроконтроллерным платам) по интерфейсу I2C. Более подробно про датчик BH1750 вы можете прочитать в статье про его подключение к плате Arduino.

Схема проекта

Схема измерителя солнечной радиации на основе платы Arduino представлена на следующем рисунке.

Схема измерителя солнечной радиации на основе платы Arduino

Как видим, схема очень проста. Датчик BH1750 подключается к плате Arduino Nano по интерфейсу I2C. При этом датчик BH1750 имеет внутренние подтягивающие резисторы для интерфейса I2C, поэтому отпадает необходимость в использовании внешних подтягивающих резисторов. Подавая на плату Arduino питание 5V мы на ее выводе 3.3V получаем стабилизированное с помощью ее внутреннего регулятора напряжение 3.3V, которое используется для питания датчика BH1750. Контакт ADDR датчика замыкается на землю, что приводит к тому, что адрес по умолчанию датчика BH1750 становится его адресом I2C.

Объяснение программы для Arduino

Полный код программы приведен в конце статьи, здесь же мы кратко рассмотрим его основные фрагменты.

В коде программы мы будем использовать режим непрерывной работы датчика BH1750 с высоким разрешением и измерять интенсивность света каждую секунду.

Первым делом в программе подключим используемые библиотеки. Библиотека Wire.h используется для осуществления связи по интерфейсу I2C, а библиотека BH1750.h – для работы с датчиком BH1750.

Далее внутри функции setup инициализируем связь по протоколу I2C (библиотека BH1750 не делает этого автоматически) и последовательную связь со скоростью 9600 бод для целей отладки.

Затем внутри функции void loop(), мы будем конвертировать значение интенсивности светового потока (Flux value) в значение солнечной радиации (irradiance). Для подобной конвертации нет строгой математической формулы, но можно использовать приближенную формулу, основанную на длине волны светового излучения. Интенсивность светового потока (flux) может быть конвертирована в значение интенсивности света, приходящейся на м2 (W/m2), при помощи умножения ее на коэффициент 0.079. Обоснование подобного подхода можно посмотреть по этой ссылке.

После этого полученное значение интенсивности света мы будем выводить через последовательный порт связи (UART) чтобы сохранять данные в формате excel для дальнейшего построения графика.

Тестирование работы проекта

Тестирование работы проекта

После сборки проекта вы можете протестировать его работу в различных условиях освещенности. Условия проведения измерений, в которых данный измеритель солнечной радиации тестировали его авторы, изменялись от условий яркого солнечного света до условий пасмурной погоды, поэтому они смогли протестировать его в широком диапазоне интенсивностей светового потока. Результаты их измерений показаны на следующем графе.

Результаты измерения солнечной радиации

Эти измерения производились авторами проекта в штате Западная Бенгалия (Индия) 27 октября 2021 года с 12 PM до 2.45 PM.

Исходный код программы (скетча)

Видео, демонстрирующее работу проекта

Источник статьи

(Проголосуй первым!)
Загрузка...
947 просмотров

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *