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

Измерение солнечной радиации с помощью Arduino

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

Arduino UNO
× 1
Arduino Ethernet Shield 2
× 1
солнечная батарея
× 1
Резистор 10 кОм
× 1

Необходимые инструменты и машины

Цифровой мультиметр

Об этом проекте

О

Существует множество датчиков для измерения всевозможных погодных условий, таких как температура, влажность, интенсивность света и т. Д., Но нет легкодоступных датчиков для измерения количества солнечного излучения. Это связано с тем, что солнечное излучение трудно измерить, даже если мы каждый день ощущаем его на коже.

Солнечное излучение - это мощность на единицу площади, полученная от Солнца в виде электромагнитного излучения в диапазоне длин волн измерительного прибора. Широкий диапазон длин волн Солнца - еще один фактор, затрудняющий измерения.

Прибор для измерения солнечной радиации называется пиранометром. Пиранометры могут стоить от 200 до 800 долларов даже у китайских поставщиков, что делает их недоступными для среднего любителя. Вы можете прочитать о них подробнее здесь:https://en.wikipedia.org/wiki/Pyranometer

Недавно я подумывал о покупке солнечной панели для своего дома и хотел знать, будет ли это целесообразным, и поэтому хотел оценить количество солнечной энергии, доступной там, где я живу.

Меня не интересовала покупка пиранометра, поэтому я подумал, что смогу сэкономить немного денег и в то же время повеселиться, сделав свой собственный.

Так я создал свой собственный крутой гаджет, который намного дешевле и может помочь оценить количество солнечного излучения. Он использует некоторые легкодоступные компоненты и Arduino для вычислений. Я получил большую часть своих компонентов от Chinavasion, но есть много других мест, где вы можете получить инструменты и оборудование, поскольку все они общедоступны.

Настройка

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

2. Подключите заземляющий провод солнечного элемента к заземлению Arduino, а провод VCC - к любому аналоговому выводу через выбранный нами резистор. Для этого проекта мы будем использовать аналоговый вывод A0. Резистор очень важен для наших расчетов, поскольку мы ожидаем, что он будет во много раз больше внутреннего сопротивления ячейки.

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

Потребуются следующие параметры:

  • Аналоговое опорное напряжение Arduino =5 В (на вашей плате может отличаться)
  • Максимальное выходное напряжение вашего солнечного элемента (оно будет варьироваться в зависимости от используемой солнечной панели, вы должны проверить это, чтобы подтвердить это, поскольку это очень важно для наших расчетов, для среднего солнечного элемента калькулятора оно составляет около 5 В) .
  • Размер солнечного элемента. Вы можете измерить это с помощью линейки (длина и с или любые параметры, необходимые для определения площади).

Итак, мы будем оценивать нашу солнечную радиацию, рассчитав мощность солнечного элемента и разделив его на его площадь.

  • Мощность =pow (analogRead (A0), 2) / Сопротивление
  • Площадь =длина * ширина (при условии, что у нас есть прямоугольник)
  • солнечное излучение =мощность / площадь

Вот пример кода ниже:

  / * ------------------------------------------ -------------------------------------------------- ---------------------------- * / # define ANALOG_PIN A0 // Аналоговый вывод # define RESISTANCE 10 // Сопротивление в тысячах Ом # define PANEL_LENGTH 60 // Длина солнечного элемента в мм # define PANEL_WIDTH 20 // Ширина солнечного элемента в мм volatile float Area; volatile float Power; volatile float Radiation; / ** Основная функция настройки * / void setup () {// Begin последовательная связьSerial.begin (9600); while (! Serial); delay (100);} / ** Основная функция настройки * / 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 Вт / м2», Радиация); // Создание сообщения для печати Serial.println (msg); delay (1000);} / * ---------------------------- -------------------------------------------------- ---------------------------------------------- * /  

Среднее значение энергетической освещенности для обычного дня может составлять от 150 до 300 Вт / м2. Но это будет широко варьироваться в зависимости от вашего местоположения. Она может достигать 900 в солнечный день или в районах вокруг экватора.

Чтобы добавить Интернет-функциональность, мы можем использовать экран Ethernet. Нам не нужно делать никаких других новых подключений, просто установите экран на Arduino и поместите контакты в соответствующие положения на экране (т.е. контакт 1 на Arduino остается контактом 1 на экране)

Код

  • пример кода для пиранометра
  • Код функции Ethernet
пример кода для пиранометра Arduino
#define ANALOG_PIN A0 // Аналоговый вывод
#define RESISTANCE 10 // Сопротивление в тысячах Ом
#define PANEL_LENGTH 60 // Длина солнечного элемента в мм
#define PANEL_WIDTH 20 // Ширина солнечного элемента в мм

volatile float Area;
непостоянная мощность поплавка;
летучий поплавок Радиация;

/ *
* Основная функция настройки
* /
void setup () {
// Начинаем последовательную связь
Serial.begin (9600);
в то время как (! серийный);

задержка (100);
}


/ *
* Основная функция настройки
* /
void loop () {

Площадь =PANEL_LENGTH * PANEL_WIDTH / (100 * 100); // делим на 10000 получаем площадь в квадратных метрах

Мощность =pow (analogRead (ANALOG_PIN), 2) / СОПРОТИВЛЕНИЕ; // Расчет мощности

Радиация =Мощность / Площадь;

char * msg;

sprintf (msg, «Солнечная радиация составляет% f Вт / м2», Радиация); // Создание сообщения для печати

Serial.println (сообщение);

задержка (1000);
}
 Без предварительного просмотра (только загрузка). 
Код функции Ethernet Arduino
#include
#include

#define ANALOG_PIN A0 // Аналоговый вывод
#define RESISTANCE 10 // Сопротивление в тысячах Ом
#define PANEL_LENGTH 60 // Длина солнечного элемента в мм
#define PANEL_WIDTH 20 // Ширина солнечного элемента в мм

volatile float Area;
непостоянная мощность поплавка;
летучий поплавок Радиация;


// Введите MAC-адрес и IP-адрес вашего контроллера ниже.
// IP-адрес будет зависеть от вашей локальной сети:
byte mac [] ={
0xDE, 0x0D, 0x8E, 0xEF, 0xFE, 0xED
};
IP-адрес ip (192, 168, 1, 177);

// Инициализируем библиотеку сервера Ethernet
// с IP-адресом и портом, который вы хотите использовать
// (порт 80 по умолчанию для HTTP):
Сервер EthernetServer (80);

void setup () {
// Открываем последовательную связь и ждем открытия порта:
Serial.begin (9600);
while (! Serial) {
; // ждем подключения последовательного порта. Требуется только для собственного USB-порта
}


// запускаем соединение Ethernet и сервер:
Ethernet.begin (mac, ip);
server.begin ();
Serial.print («сервер находится в»);
Serial.println (Ethernet.localIP ());
}


void loop () {

Площадь =PANEL_LENGTH * PANEL_WIDTH / (100 * 100); // делим на 10000 получаем площадь в квадратных метрах
Мощность =pow (analogRead (ANALOG_PIN), 2) / СОПРОТИВЛЕНИЕ; // Расчет мощности
Радиация =Мощность / Площадь;
char * msg;
sprintf (msg, «Солнечная радиация составляет% f Вт / м2», Радиация); // Создание сообщения для печати


// слушаем входящих клиентов
EthernetClient client =server.available ();
if (client) {
Serial.println («новый клиент»);
// http-запрос заканчивается пустой строкой
логическое currentLineIsBlank =true;
while (client.connected ()) {
if (client.available ()) {
char c =client.read ();
Serial.write (c);
// если вы дошли до конца строки (получили новую строку
// символ) и строка пуста, http-запрос завершен,
// чтобы вы могли отправить ответ
if (c =='\ n' &¤tLineIsBlank) {
// отправляем стандартный HTTP-заголовок ответа
client.println («HTTP / 1.1 200 ОК»);
client.println ("Content-Type:text / html");
client.println ("Соединение:закрыть"); // соединение будет закрыто после завершения ответа
client.println («Обновить:5»); // автоматически обновлять страницу каждые 5 секунд
client.println ();
client.println ("");
client.println ("");

/ *
* Отправить сообщение клиенту
* /
client.print (сообщение);
client.println ("
");

client.println ("");
ломать;
}
if (c =='\ n') {
// вы начинаете новую строку
currentLineIsBlank =true;
} else if (c! ='\ r') {
// у вас есть символ в текущей строке
currentLineIsBlank =false;
}
}
}
// даем время браузеру получить данные
задержка (1);
// закрываем соединение:
client.stop ();
Serial.println («клиент отключен»);
}
}
 Без предварительного просмотра (только загрузка). 

Схема

Схема солнечной панели, резистора и соединений

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

  1. Измерение температуры с помощью RASPBERRY PI
  2. Мониторинг CO2 с помощью датчика K30
  3. Слепоглухое общение с 1Sheeld / Arduino
  4. Управление монетоприемником с помощью Arduino
  5. Arduino с Bluetooth для управления светодиодом!
  6. Емкостной датчик отпечатков пальцев с Arduino или ESP8266
  7. Игра с дисплеем Nextion
  8. Роботизированная рука, управляемая нунчук (с Arduino)
  9. Solar Tracker V2.0
  10. Простое измерительное колесо с поворотным энкодером, сделанное своими руками