Оглавление

Сделай сам Солнечная система слежения: Оптимизация использования солнечной энергии

Изображение Dean Ding
Дин Динг

В течение 15 лет мы занимаемся солнечной энергетикой.

Сделай сам Солнечная система слежения: Оптимизация использования солнечной энергии

В этом руководстве подробно рассказывается о том, как построить недорогую систему слежения за солнечными батареями на основе монопольного наземного крепления 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 и начните свой проект по производству зеленой энергии!

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

Для заполнения данной формы включите JavaScript в браузере.
Имя

ru_RURussian
Для заполнения данной формы включите JavaScript в браузере.
Имя