Forum

Unterstützte das Deye Forum

 Deye Hybrid Angebote   Deye Zubehör Produkte

Custom Batterie und...
 
Benachrichtigungen
Alles löschen

Custom Batterie und BMS an DEYE SUN 50K anschließen

8 Beiträge
3 Benutzer
0 Reactions
86 Ansichten
(@lucaten)
Mitglied Neues Mitglied
Mitglied seit: Vor 3 Wochen
Beiträge: 4
Themenstarter  

Hallo liebes Forum,

 

ich habe ein DIY Projekt gestartet, um einen eigenen Heimspeicher aus Tesla Batterien zu entwickeln. Dafür habe ich 8 Tesla Model S Module gekauft und deren Temperatur und Spannungswerte über einen Arduino ausgelesen ( https://github.com/collin80/TeslaBMS).

 

Die Module habe ich seriell verschaltet (175 V) und an den DEYE SUN 50K-SG01 HP3-EU-BM4 Hybrid-Wechselrichter (50KW) angeschlossen. Um das BMS an den Wechselrichter anzuschließen, habe ich einen CAN Tranceiver an den Arduino Due angeschlossen (SN65HVD230) und will dann über das CAN Protokoll am BMS1 die Kommunikation herstellen.

 

Hier ist der Code, den ich verwende:

 

#include <due_can.h> // For the Arduino Due built-in CAN controller

 

 

 

void setup() {

 

Serial.begin(9600);

 

 

 

// Initialize CAN0 at 500 kbps

 

if (!Can0.begin(CAN_BPS_500K)) {

 

Serial.println(„Starting CAN0 failed!“);

 

while (1);

 

}

 

 

 

// Configure CAN0 for sending

 

Can0.setNumTXBoxes(3); // Allocate 3 mailboxes for transmitting

 

Serial.println(„CAN0 initialized successfully!“);

 

}

 

 

 

void loop() {

 

// Example battery data (replace with actual values):

 

float voltage = 180.0; // Battery voltage in volts

 

int soc = 80; // State of Charge in %

 

float temperature = 25.0; // Temperature in Celsius

 

float chargeLimit = 50.0; // Max charge current in amps

 

float dischargeLimit = 60.0; // Max discharge current in amps

 

 

 

// Convert data to protocol resolution:

 

int16_t voltageData = voltage * 10; // 0.1 V resolution

 

uint8_t socByte = map(soc, 0, 100, 0, 255); // 1% resolution

 

int16_t temperatureData = (temperature + 100) * 10; // 0.1°C resolution with offset

 

int16_t chargeData = (chargeLimit + 3000) * 10; // 0.1 A resolution with offset

 

int16_t dischargeData = (dischargeLimit + 3000) * 10; // 0.1 A resolution with offset

 

 

 

// Send Battery Voltage, SOC, and Temperature

 

CAN_FRAME frame1;

 

frame1.id = 0x1801F456; // CAN ID for Battery Voltage, SOC, Temperature

 

frame1.length = 6; // 6 bytes of data

 

frame1.data[0] = (uint8_t)(voltageData >> 8); // Voltage high byte

 

frame1.data[1] = (uint8_t)(voltageData & 0xFF); // Voltage low byte

 

frame1.data[2] = socByte; // SOC byte

 

frame1.data[3] = (uint8_t)(temperatureData >> 8); // Temperature high byte

 

frame1.data[4] = (uint8_t)(temperatureData & 0xFF); // Temperature low byte

 

frame1.data[5] = 0x00; // Reserved

 

Can0.sendFrame(frame1);

 

Serial.println(„Battery Voltage, SOC, and Temperature sent.“);

 

 

 

delay(1000);

 

 

 

// Send Charge/Discharge Current Limits

 

CAN_FRAME frame2;

 

frame2.id = 0x1802F456; // CAN ID for Charge/Discharge Current Limits

 

frame2.length = 4; // 4 bytes of data

 

frame2.data[0] = (uint8_t)(chargeData >> 8); // Charge limit high byte

 

frame2.data[1] = (uint8_t)(chargeData & 0xFF); // Charge limit low byte

 

frame2.data[2] = (uint8_t)(dischargeData >> 8); // Discharge limit high byte

 

frame2.data[3] = (uint8_t)(dischargeData & 0xFF); // Discharge limit low byte

 

Can0.sendFrame(frame2);

 

Serial.println(„Charge/Discharge Current Limits sent.“);

 

 

 

delay(1000);

 

 

 

// Send Enable Communication Command

 

CAN_FRAME frame3;

 

frame3.id = 0x1803F456; // CAN ID for Enable Communication

 

frame3.length = 8; // 8 bytes of data

 

frame3.data[0] = 0xAA; // Enable communication byte

 

for (int i = 1; i < 8; i++) {

 

frame3.data[i] = 0x00; // Reserved bytes

 

}

 

Can0.sendFrame(frame3);

 

Serial.println(„Enable communication command sent.“);

 

 

 

delay(1000); // Wait 1 second before the next loop

 

}

 

 

 

Leider erscheint beim Verbinden des Arduino zum Wechselrichter leider der Fehler F58. Da dieser sehr allgemein ist, komme ich nicht so ganz weiter.

 

Hat jemand Erfahrung beim Verbinden eines Custom BMS/Arduino zum Wechselrichter über CAN und kann mir da etwas weiterhelfen?

 

 

 

Viele Grüße Luca


   
Zitat
Schlagwörter für Thema
(@plastiko-fantastiko)
Deye Experte Neues Mitglied
Mitglied seit: Vor 1 Jahr
Beiträge: 1561
 

Das schöne an den Deye ist ja dass man die ohne BMD Koppelung betreiben kann sicher das deine 175 V wirklich ausreichen dass der WR sie akzeptiert? Leistungsmässig ist das natürlich jämmerlich was Du da rausholen kann

aber jeder wie er will.


   
AntwortZitat
(@lucaten)
Mitglied Neues Mitglied
Mitglied seit: Vor 3 Wochen
Beiträge: 4
Themenstarter  

Hi Plastiko,

danke dir für deine Antwort. Ich schaffe es auf jeden Fall, die Batterie über den BattV Modus zu laden und entladen. Also gehe ich davon aus, dass die Spannung ausreichend ist. 

Die Leistung ist tatsächlich sehr überschaubar, aber das ganze ist als proof of concept gedacht und perspektivisch wollen wir in die MWh Richtungen gehen. Genau dafür benötigen wir die Software Kopplung und würden gerne unser eigenes BMS und Lastmanagement an den Wechselrichter anschließen. Kennst du dich damit aus?

Grüße Luca 


   
AntwortZitat
(@plastiko-fantastiko)
Deye Experte Neues Mitglied
Mitglied seit: Vor 1 Jahr
Beiträge: 1561
 

sorry, keinen Plan...aber gibt es nicht schon Lösungen um einer Tesla Batterie unter den Rock zu schauen?

aber jeder wie er will.


   
AntwortZitat
(@lucaten)
Mitglied Neues Mitglied
Mitglied seit: Vor 3 Wochen
Beiträge: 4
Themenstarter  

Ja da kann man relativ gut reinschauen. Ich brauche letztendlich auch nur die Funktion, dem Wechselrichter SoC, Temperaturen, SoH, Spannungsgrenzen mitzugeben und aktiv den Ladestrom zu begrenzen bzw. zu regeln. Also das sind absolute Basis Funktionen, aber über CAN bekomme ich sie aktuell nicht angesteuert.


   
AntwortZitat
(@plastiko-fantastiko)
Deye Experte Neues Mitglied
Mitglied seit: Vor 1 Jahr
Beiträge: 1561
 

wozu begrenzen?

Hole Dir die ganzen 85 kWh denen wirst Du bei Raumtemperatur dem dem 50K kaum weh tun können.

aber jeder wie er will.


   
AntwortZitat
(@lucaten)
Mitglied Neues Mitglied
Mitglied seit: Vor 3 Wochen
Beiträge: 4
Themenstarter  

Dabei geht es hauptsächlich um Lebensdaueroptimierung der Zellen und austesten der Betriebsgrenzen. 

Wie gesagt, soll ein Proof of Concept sein und deshalb kommen wir an einer aktiven Steuerung nicht vorbei.


   
AntwortZitat
(@kuchengeschmack)
Neuling Neues Mitglied
Mitglied seit: Vor 7 Monaten
Beiträge: 21
 

Hey, eventuell wirst du hier fündig wenn du ein Tesla BMS verwendest: https://github.com/dalathegreat/Battery-Emulator/wiki/Tesla-Model-S-3-X-Y-battery

Ich persönlich verwende Batrium und bin damit sehr zufrieden. Ich habe ESS Zellen mit 305Ah verschalten und habe mit dem Batrium BMS keine Probleme.


   
AntwortZitat