Сделай сам Солнечная система слежения: Оптимизация использования солнечной энергии
В этом руководстве подробно рассказывается о том, как построить недорогую систему слежения за солнечными батареями на основе монопольного наземного крепления LINKSOLAR (официальная ссылка), которая может повысить эффективность производства энергии фотоэлектрической панелью мощностью 100 Вт на 30%-45%. Учебник включает в себя код, список материалов и решения по защите от погодных условий.
1. Зачем нужна система слежения за солнечными батареями?
1.1 Повышение эффективности производства электроэнергии
- Фиксированное крепление: Суточное потребление энергии составляет около 70%.
- Слежение за одной осью: Эффективность увеличивается до 85%-90% (данные NREL).
- Двухосевое слежение: Может достигать 95% (цель данного проекта).
1.2 Преимущества Крепление LINKSOLAR
- Грузоподъемность промышленного класса: Один столб поддерживает до 6 панелей мощностью 100 Вт.
- Быстрая модификация: Совместим с шаговым двигателем NEMA17.
- Ветроустойчивый дизайн: 4-дюймовый столб из оцинкованной стали + предварительно заглубленный фундамент.
2. Список материалов и подготовка инструментов
Категория | Модель/спецификация | Оптимизированное по ключевым словам описание |
---|---|---|
Крепление для сердечника | Монопольное наземное крепление LINKSOLAR | Крепление для солнечных батарей для наземной установки |
Приводной двигатель | NEMA17 + плата драйвера DRV8825 | Шаговый двигатель с высоким крутящим моментом для слежения за солнечными батареями |
Датчик освещенности | Модуль цифрового датчика освещенности TSL2591 | Датчик освещенности I2C для слежения за фотоэлектрическими приборами на улице |
Главный контроллер | Плата разработки ESP32 | Контроллер слежения за солнечными батареями с поддержкой WiFi-технологий |
3. Пошаговое руководство по установке
3.1 Этапы модификации крепления
- Усиление столбов
- Приварите фланцевый подшипник (модель FYLC-205) к верхней части крепления LINKSOLAR.
- Закрепите двигатель NEMA17 с помощью U-образных болтов (горизонтальная ось вращения).
- Конструкция для регулировки наклона
- Для соединения панели со вторым двигателем используйте L-образный алюминиевый профиль (6061-T6).
- Установите концевые выключатели (KW12-3), чтобы предотвратить чрезмерное вращение.
3.2 Схема подключения цепей
[SEO-совет] Используйте alt-текст для описания изображения:
"Схема подключения солнечной следящей системы - ESP32 управляет двухосевыми двигателями и датчиком освещенности".
4. Объяснение кода Arduino (с алгоритмом PID)
4.1 Обзор структуры кода
Код Arduino для этой системы основан на алгоритме ПИД-регулирования, использующем датчик освещенности TSL2591 и датчик ориентации MPU6050 для регулировки угла наклона солнечной панели в режиме реального времени для двухосевого слежения. Код разделен на следующие разделы:
- Инициализация датчика: Включает в себя датчик освещенности TSL2591 и датчик ориентации MPU6050.
- ПИД-регулирование: Использует ПИД-алгоритм для расчета шагов двигателя для точного управления по горизонтали (азимут) и вертикали (высота).
- Моторный привод: Управляет направлением и шагом шагового двигателя на основе выходного сигнала ПИД.
- Мониторинг данных: Выводит данные датчиков и расчеты ПИД через последовательный порт для отладки.
4.2 Полный код
#include
#include
#include
#include
// Объекты датчиков
Adafruit_TSL2591 tslEast = Adafruit_TSL2591(0x29);
Adafruit_TSL2591 tslWest = Adafruit_TSL2591(0x30);
MPU6050 mpu;
// параметры ПИД
double Kp = 2.0, Ki = 0.5, Kd = 0.1;
double inputEast, inputVertical, outputStepH, outputStepV;
double setpointH = 0, setpointV = 45; // Начальный угол наклона 45°
ПИД горизонтальныйPID(&inputEast, &outputStepH, &setpointH, Kp, Ki, Kd, DIRECT);
PID verticalPID(&inputVertical, &outputStepV, &setpointV, Kp, Ki, Kd, DIRECT);
// Определения выводов
#define STEP_H 12
#define DIR_H 13
#define STEP_V 14
#define DIR_V 15
void setup() {
Serial.begin(115200);
Wire.begin();
// Инициализация датчиков
tslEast.begin();
tslWest.begin();
mpu.initialize();
// Установите коэффициент усиления TSL2591
tslEast.setGain(TSL2591_GAIN_MED);
tslWest.setGain(TSL2591_GAIN_MED);
// Инициализируем PID
horizontalPID.SetMode(AUTOMATIC);
verticalPID.SetMode(AUTOMATIC);
horizontalPID.SetOutputLimits(-200, 200);
verticalPID.SetOutputLimits(-100, 100);
// Установите режимы работы пинов двигателя
pinMode(STEP_H, OUTPUT);
pinMode(DIR_H, OUTPUT);
pinMode(STEP_V, OUTPUT);
pinMode(DIR_V, OUTPUT);
}
void loop() {
// Считываем интенсивность света на востоке и западе
uint32_t eastLux = tslEast.getFullLuminosity();
uint32_t westLux = tslWest.getFullLuminosity();
inputEast = (eastLux - westLux) / 1000.0;
// Считывание текущего угла наклона
int16_t ax, ay, az;
mpu.getAcceleration(&ax, &ay, &az);
inputVertical = atan2(ay, az) * 180 / M_PI;
// Рассчитываем выход ПИД-регулятора
horizontalPID.Compute();
verticalPID.Compute();
// Привод горизонтального двигателя
digitalWrite(DIR_H, outputStepH > 0 ? HIGH : LOW);
for(int i=0; i 0 ? HIGH : LOW);
for(int i=0; i<abs(outputStepV); i++){
digitalWrite(STEP_V, HIGH);
delayMicroseconds(500);
digitalWrite(STEP_V, LOW);
delayMicroseconds(500);
}
// Печать данных
Serial.print("Восток:");
Serial.print(eastLux);
Serial.print(" Запад:");
Serial.print(westLux);
Serial.print(" Угол:");
Serial.println(inputVertical);
delay(1000);
}
4.3 Анализ ключевых кодов
- ПИД-регулирование
horizontalPID
иverticalPID
управляют горизонтальными и вертикальными двигателями, соответственно.входВосток
иinputVertical
ПИД-регуляторы, представляющие разность интенсивности света с востока на запад и угол наклона тока.outputStepH
иoutputStepV
это выходы ПИД-регулятора, обозначающие шаги двигателя.- Моторный привод
- Используйте
digitalWrite
для управления направлением вращения двигателя (DIR_H
иDIR_V
). - Используйте
для
петля иdelayMicroseconds
для управления скоростью вращения двигателя. - Мониторинг данных
- Вывод интенсивности света с востока на запад и текущего угла наклона через последовательный порт для отладки и мониторинга.
4.4 Установка библиотеки ключей
- Менеджер библиотек Arduino IDE
- Поиск и установка
Библиотека Adafruit TSL2591
. - Поиск и установка
MPU6050 от Electronic Cats
. - Поиск и установка
PID от Brett Beauregard
.
4.5 Процесс калибровки
- Калибровка датчика освещенности
void calibrateTSL() {
tslEast.setGain(TSL2591_GAIN_LOW);
tslWest.setGain(TSL2591_GAIN_LOW);
// Запуск после выравнивания обоих датчиков по одному и тому же источнику света
while(abs(tslEast.getLuminosity() - tslWest.getLuminosity()) > 100) {
delay(1000);
}
}
- Калибровка MPU6050
void calibrateMPU() {
mpu.CalibrateAccel(6); // калибровка по 6 образцам
mpu.CalibrateGyro(6);
mpu.PrintActiveOffsets();
}
4.6 Корпуса для 3D-печати
- Крепления двигателя
- Корпуса для датчиков
5. Советы по отладке и обслуживанию
5.1 Процесс калибровки
- Калибровка датчика освещенности
- Сравните показания TSL2591 с показаниями люксметра (погрешность в пределах ±3%).
- Механический сброс нуля
- Используйте концевые выключатели для установки начальных горизонтальных/вертикальных положений.
5.2 Текущее обслуживание
- Ежеквартальная проверка: Очистите рельс от мусора и смажьте подшипники.
- Ежегодное обновление: Обновление параметров ПИД (оптимизация на основе местных погодных данных).
7. Часто задаваемые вопросы (FAQ)
Примите меры: Свяжитесь с официальными сотрудниками LINKSOLAR и начните свой проект по производству зеленой энергии!
Мы надеемся, что это руководство поможет вам успешно построить эффективную систему слежения за солнечными батареями.