Самодельная система солнечной энергии с слежением за солнцем на Arduino UNO
Компоненты и материалы
| Компонент | Количество |
|---|---|
| Arduino UNO | 1 |
| LDR-датчик (Analog Devices) | 1 |
| Плата для макетирования полноразмерная | 1 |
| Солнечная панель | 1 |
| Микросервопривод SG90 | 2 |
| Перемычки (generic) | 1 |
| Резистор 1 кОм | 4 |
Приложения и онлайн-сервисы
- Arduino IDE
О проекте
Кажется, не можешь пройтись по улице, не наткнувшись на солнечную панель. Их можно найти для зарядки мобильных в сельских районах, а также в виде простых садовых фонарей. Солнечная энергия проста в использовании, легко доступна и недорога.
Каждая панель, которую вы видите в повседневной жизни, находится в фиксированном положении. Хотя этот подход крайне прост и удовлетворяет потребности большинства небольших приложений, он не производит столько энергии, сколько мог бы.
Наш трекер — это двухосевой трекер, то есть он отслеживает солнце по осям X и Y. Проще говоря, он движется влево, вправо, вверх и вниз. Это означает, что после настройки трекера вам никогда не придется ничего менять или регулировать, куда бы ни двигалось солнце, ваш трекер будет за ним следовать.
Код
Система слежения за солнцем (Arduino)
/*
* Author: Mayur Rabadiya
* Email: mayurrabadiya994@gmail.com
* Code: Sun tracking solar system */
#include <Servo.h> // библиотека для сервопривода
Servo s; // вертикальный серво
Servo sh; // горизонтальный серво
int start1 = 90; // начальное положение 90 градусов
int start2 = 90;
int L1 = A0; // чтение данных с LDR1
int L2 = A1; // чтение данных с LDR2
int L3 = A2; // чтение данных с LDR3
int L4 = A3; // чтение данных с LDR4
int a = 15; // порог чувствительности
void setup() {
s.attach(9); // вертикальный серво на пин 9
sh.attach(10); // горизонтальный серво на пин 10
pinMode(L1, INPUT);
pinMode(L2, INPUT);
pinMode(L3, INPUT);
pinMode(L4, INPUT);
s.write(start1); // старт серво с 90 градусов при сбросе
sh.write(start2);
delay(2000);
}
void loop() {
int LDR1 = analogRead(L1);
int LDR2 = analogRead(L2);
int LDR3 = analogRead(L3);
int LDR4 = analogRead(L4);
int plus14 = (LDR1 + LDR4); // среднее двух угловых LDR
int plus23 = (LDR2 + LDR3);
int plus12 = (LDR1 + LDR2);
int plus34 = (LDR3 + LDR4);
int diff1 = abs(plus14 - plus23); // разница для вертикали
int diff2 = abs(plus23 - plus14);
int diff3 = abs(plus12 - plus34); // разница для горизонтали
int diff4 = abs(plus34 - plus12);
if ((diff1 <= a) || (diff2 <= a)) {
// разница меньше 15 — ничего не делаем
} else {
if (plus14 > plus23) // двигать вертикальный серво меньше 90 градусов
start2 = --start2;
if (plus14 < plus23)
start2 = ++start2; // двигать вертикальный серво больше 90 градусов
}
if (plus12 > plus34)
start1 = --start1; // двигать горизонтальный серво меньше 90 градусов
if (plus12 < plus34)
start1 = ++start1; // двигать горизонтальный серво больше 90 градусов
s.write(start1);
sh.write(start2);
delay(100);
}
Схемы
Схема подключения доступна во вложениях.
Производственный процесс
- Солнечные отопительные системы: от пассивных к активным решениям для устойчивого отопления домов
- Многопозиционная система датчиков температуры для интеграции в умный дом
- MotionSense: умная система обнаружения проникновения на Arduino и ESP8266
- Пожарная безопасность 3D-принтера: умная система обнаружения дыма
- Умная система автополива растений на Arduino Nano
- Магнитная левитация на отталкивании с Arduino: Простая схема и DIY-руководство
- Продвинутый дистанционно управляемый манипулятор-робот для точной работы
- Высокопроизводительный регистратор данных для метеозонда на Arduino
- Автономный робот-следопыт с распознаванием лиц на Arduino Nano и OpenCV
- CoroFence: термический детектор на GridEye + PIR с IoT