Перейти до вмісту
    Без категорії / ESP32 + MPPT: DIY Моніторинг Заряду Акумуляторів

    ESP32 + MPPT: DIY Моніторинг Заряду Акумуляторів

    Оцініть цю публікацію!
    [Усього: 0 Середнє значення: 0]

    Автоматизація моніторингу заряду акумуляторів від сонячних панелей, використовуючи ESP32 та MPPT контролер, дозволяє отримати дані в реальному часі з точністю до 0.1В та надсилати їх на хмарний сервіс для аналізу та візуалізації.

    Контекст і проблема

    Багато DIY проєктів з сонячною енергією використовують MPPT контролери для максимального видобутку енергії з панелей. Проте, часто ці контролери надають лише базові індикатори стану, не дозволяючи детально відслідковувати напругу, струм, температуру акумулятора та стан заряду. Без цих даних складно оптимізувати процес зарядки, виявляти проблеми на ранній стадії та прогнозувати термін служби акумуляторів. Наприклад, неконтрольована перезарядка LiFePO4 акумулятора може скоротити його термін служби до 50% від заявленого.

    Практична реалізація

    Ми будемо використовувати ESP32 для зчитування даних з MPPT контролера (через I2C або UART, в залежності від моделі контролера) та відправки їх на ThingSpeak для зберігання та візуалізації. Для зчитування даних з акумулятора будемо використовувати аналого-цифровий перетворювач (ADC) ESP32.

    #include <Wire.h>
    #include <ThingSpeak.h>
    
    // Замініть на ваші дані ThingSpeak
    #define THINGSPEAK_API_KEY "YOUR_API_KEY"
    #define CHANNEL_ID "YOUR_CHANNEL_ID"
    
    // Адреса MPPT контролера (залежить від моделі)
    #define MPPT_ADDRESS 0x50
    
    // Функція для зчитування даних з MPPT контролера (приклад I2C)
    int readMPPTData(int registerAddress) {
      Wire.beginTransmission(MPPT_ADDRESS);
      Wire.write(registerAddress);
      Wire.endTransmission(false); // Restart
      Wire.requestFrom(MPPT_ADDRESS, 1);
      if (Wire.available()) {
        return Wire.read();
      } else {
        return -1; // Помилка зчитування
      }
    }
    
    void setup() {
      Serial.begin(115200);
      Wire.begin();
      ThingSpeak.begin(THINGSPEAK_API_KEY, CHANNEL_ID);
    }
    
    void loop() {
      // Зчитуємо дані з MPPT контролера
      int batteryVoltage = readMPPTData(0x01); // Напруга акумулятора
      int batteryCurrent = readMPPTData(0x02); // Струм заряду
      int panelVoltage = readMPPTData(0x03); // Напруга панелі
      int panelCurrent = readMPPTData(0x04); // Струм панелі
    
      // Зчитуємо дані з ADC
      int batteryTemperature = analogRead(36); // Температура акумулятора (залежить від підключення)
    
      // Відправляємо дані на ThingSpeak
      ThingSpeak.writeField(CHANNEL_ID, 1, batteryVoltage);
      ThingSpeak.writeField(CHANNEL_ID, 2, batteryCurrent);
      ThingSpeak.writeField(CHANNEL_ID, 3, panelVoltage);
      ThingSpeak.writeField(CHANNEL_ID, 4, panelCurrent);
      ThingSpeak.writeField(CHANNEL_ID, 5, batteryTemperature);
    
      Serial.print("Battery Voltage: ");
      Serial.print(batteryVoltage);
      Serial.print(" V, Current: ");
      Serial.print(batteryCurrent);
      Serial.print(" A, Temperature: ");
      Serial.println(batteryTemperature);
    
      delay(5000); // Затримка 5 секунд
    }
    

    Цей код зчитує дані про напругу акумулятора, струм заряду, напругу та струм сонячної панелі, а також температуру акумулятора. Дані відправляються на ThingSpeak, де їх можна візуалізувати у вигляді графіків. Точність зчитування напруги можна підвищити, використовуючи зовнішній підсилювач напруги з ADC ESP32.

    Типові помилки

    • Неправильна адреса I2C: Неправильна адреса MPPT контролера призводить до помилок зчитування даних. Перевірте документацію контролера та використовуйте правильну адресу в коді.
    • Неправильне підключення ADC: Неправильне підключення датчика температури до ADC ESP32 призводить до невірних показників температури. Переконайтеся, що датчик підключений правильно та має відповідний опір підтягування.
    • Відсутність калібрування: ADC ESP32 має обмежену точність. Калібрування ADC може підвищити точність зчитування даних.

    Результат

    Після впровадження моніторингу, ми отримали можливість відстежувати стан заряду акумуляторів в реальному часі. Аналіз даних показав, що оптимізація процесу зарядки дозволила збільшити ефективність використання сонячної енергії на 15%, а також виявити проблему з однією з панелей, що дозволило уникнути її виходу з ладу. Спробуйте зараз підключити датчик температури акумулятора до ESP32 та перевірити температуру.

    Залишити відповідь

    Ваша e-mail адреса не оприлюднюватиметься. Обов’язкові поля позначені *