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

Arduino MPPT-контроллер заряда для максимальной эффективности солнечных панелей

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

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

Программное обеспечение

О проекте

Обычные дешевые контроллеры заряда (PWM) неэффективны: они просто снижают напряжение панели до напряжения аккумулятора без увеличения тока. Дорогие MPPT-контроллеры стоят много. Цель проекта — сделать свой эффективный MPPT-контроллер, который:

  1. Использует понижающий преобразователь (buck converter) на N-канальном MOSFET с КПД >90%.
  2. Реализует алгоритм MPPT (Maximum Power Point Tracking) для выработки максимальной мощности с панели в любой момент времени.
  3. Управляется Arduino Nano, измеряющей входные/выходные напряжения и токи.

Шаг 1: Что такое MPPT и зачем он нужен

Солнечная панель 12В/100Вт выдает 18–21В, а аккумулятор 12В заряжается при 11–13.6В. PWM-контроллер просто «сбрасывает» лишнее напряжение, теряя мощность. Buck-преобразователь же преобразует избыточное напряжение в дополнительный ток зарядки.

Вторая проблема — нелинейная ВАХ панели. Точка максимальной мощности (MPP) смещается в течение дня. MPPT-алгоритм отслеживает её, меняя коэффициент заполнения ШИМ.

Шаг 2: Как работает MPPT в этом проекте

Измеряются входная мощность (Pin = Vin × Iin) и выходная мощность (Pout = Vout × Iout). Алгоритм сравнивает текущую входную мощность с предыдущей и корректирует выходное напряжение (через duty cycle ШИМ):

Так система «крутится» вокруг MPP. Коллебания минимизируются эффективным алгоритмом.

Шаг 3: Реализация MPPT на Arduino

Основная функция регулировки (упрощенно):

void regulate(float Iout, float Vin, float Vout) {
  float Pin = Vin * Iin; // входная мощность
  // Логика Perturb & Observe
  if ((Vout > Vout_max) || (Iout > Iout_max) || 
      ((Pin > Pin_previous && Vout_sense < Vout_last) || 
       (Pin < Pin_previous && Vout_sense > Vout_last))) {
    if (duty_cycle > 0) duty_cycle--;
    analogWrite(BUCK_PIN, duty_cycle);
  } else if ((Vout < Vout_max) && (Iout < Iout_max) &&
             ((Pin > Pin_previous && Vout_sense > Vout_last) ||
              (Pin < Pin_previous && Vout_sense < Vout_last))) {
    if (duty_cycle < 240) duty_cycle++;
    analogWrite(BUCK_PIN, duty_cycle);
  }
  Pin_previous = Pin;
  Vin_last = Vin;
  Vout_last = Vout;
}

Шаг 4: Buck-преобразователь (понижающий)

Arduino MPPT-контроллер заряда для максимальной эффективности солнечных панелей
Схема понижающего преобразователя с низкосторонним ключом на N-MOSFET

Использована нестандартная схема с низкосторонним ключом (low-side switching) на N-канальном MOSFET (IRFZ44N). Это позволяет управлять мощным транзистором прямо от пина Arduino (логический уровень), не требуя драйвера или bootstrap-схемы.

Особенности схемы:

Шаг 5: Дополнительные функции

Шаг 6: Итоговая схема, спецификация (BOM) и полный код

Arduino MPPT-контроллер заряда для максимальной эффективности солнечных панелей
Итоговая принципиальная схема (немного упрощенная для повторения)

Полный код скетча Solar_charger_tutorial_code.ino включает:

// Пример основных настроек (в начале скетча)
float Vout_boost = 14.5;   // Напряжение буст-зарядки
float Vout_float = 13.5;   // Напряжение удержания
float Iout_max = 5.0;      // Макс. ток зарядки, А
float Vin_thresold = 10.0; // Порог отключения по низкому входу

Файл прошивки и BOM доступны для скачивания в разделе Code исходного проекта.

Схемы (Eagle/изображения)

Arduino MPPT-контроллер заряда для максимальной эффективности солнечных панелей
Вариант схемы 1
Arduino MPPT-контроллер заряда для максимальной эффективности солнечных панелей
Вариант схемы 2

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

  1. Технология бульдозеров: дизайн, производство и будущие инновации
  2. Солнечные ячейки: от ранних экспериментов к современной фотовольтаике — технологии, производство и перспекти…
  3. Мониторинг солнечной панели в реальном времени: дешёвая система сбора данных на Arduino и Excel
  4. Сборка Bluetooth-робота-шпиона на Arduino с управлением с телефона
  5. FlickMote: жестовое IR-пульт для умного дома на Arduino 101 и ультразвуковом датчике
  6. DIY Arduino TV-B-Gone: универсальный пульт для выключения любого телевизора
  7. Создание пользовательских LED-часов с будильником — видно с 12 метров
  8. Find Me: Умный поисковик вещей на Arduino и Bluetooth
  9. Солнечный трекер v2.0 — продвинутая DIY система слежения за солнцем
  10. Ветровая энергетика: превращение движения воздуха в чистую электроэнергию