52 char filename[] = {
"state.bms" };
57 sprintf ( timestamp,
"20%02i-%02i-%02i %02i:%02i:%02i", now.year, now.month, now.day, now.hours, now.minutes, now.seconds );
60 sd_file_open ( filename );
62 for (
int i = 0; i <= 7; i++ )
64 sprintf ( zeile,
"%03i;%03i;%03i;%03.0f;%06li;%06li;%04.1f;%s\r", SOC[i], SOH[i], c_max[i], charge[i], betriebszeit_s[i], ladezeit_s[i], ladezyklus[i], timestamp );
65 file_write_line ( i + 1, zeile );
90 char filename[] = {
"state.bms" };
91 char zeile[70], wert[70];
94 sd_file_open ( filename );
97 for (
int i = 0; i <= 7; i++ )
99 file_getLine ( i + 1, zeile );
101 for (
int n = 0; n <= 69; n++ )
103 if ( zeile[n] >= 0x30 && zeile[n] <= 0x39 ) wert[n] = zeile[n] - 0x30;
107 SOC[i] = wert[0] * 100 + wert[1] * 10 + wert[2];
108 SOH[i] = wert[4] * 100 + wert[5] * 10 + wert[6];
109 c_max[i] = wert[8] * 100 + wert[9] * 10 + wert[10];
110 charge[i] = (float) (wert[12] * 100 + wert[13] * 10 + wert[14]);
111 betriebszeit_s[i] = wert[16] * 100000 + wert[17] * 10000 + wert[18] * 1000 + wert[19] * 100 + wert[20] * 10 + wert[21];
112 ladezeit_s[i] = wert[23] * 100000 + wert[24] * 10000 + wert[25] * 1000 + wert[26] * 100 + wert[27] * 10 + wert[28];
113 ladezyklus[i] = (float) (wert[30] * 10.0 + wert[31] * 1.0 + wert[33] / 10.0);
134 char filename[] = {
"base.bms" };
138 uint8_t dd = 29, mm = 3;
139 uint16_t max_capa[8] = { 750, 750, 750, 750, 750, 750, 750, 750 };
142 sd_file_delete ( filename );
143 sd_file_new ( filename );
144 sd_file_open ( filename );
146 for (
int i = 0; i <= 7; i++ )
149 sprintf ( zeile,
"%04i;%02i;%02i;%02i\r", max_capa[i], yy, mm, dd );
150 sd_file_write_append ( zeile );
170 char filename[] = {
"base.bms" };
171 char zeile[20], wert[20];
174 uint8_t dd[8], mm[8];
175 uint16_t max_capa[8];
178 sd_file_open ( filename );
181 for (
int i = 0; i <= 7; i++ )
183 file_getLine ( i + 1, zeile );
185 for (
int n = 0; n <= 19; n++ )
187 if ( zeile[n] >= 0x30 && zeile[n] <= 0x39 ) wert[n] = zeile[n] - 0x30;
191 max_capa[i] = wert[0] * 1000 + wert[1] * 100 + wert[2] * 10 + wert[3];
192 yy[i] = wert[5] * 10 + wert[6];
193 mm[i] = wert[8] * 10 + wert[9];
194 dd[i] = wert[11] * 10 + wert[12];
227 char filename[] = {
"betrieb.csv" };
230 static bool einmal =
true;
233 sprintf ( timestamp,
"20%02i-%02i-%02i %02i:%02i:%02i", now.year, now.month, now.day, now.hours, now.minutes, now.seconds );
237 if ( !sd_file_open ( filename ) )
239 sd_file_new ( filename );
240 sd_file_open ( filename );
245 sprintf ( zeile,
"Zeit" );
246 sd_file_write_append ( zeile );
248 for (
int i = 0; i <= 7; i++ )
250 sprintf ( zeile,
";Zelle;Vorhanden;Aktiv;Strom;Spannung;Temperatur;Ladung;SOC" );
251 sd_file_write_append ( zeile );
254 sprintf ( zeile,
"\r" );
255 sd_file_write_append ( zeile );
260 sprintf ( zeile,
"%s", timestamp );
261 sd_file_write_append ( zeile );
263 for (
int i = 0; i <= 7; i++ )
265 sprintf ( zeile,
";%i;%i;%i;%i;%5.2f;%i;%7.2f;%i", i, akku[i], akku_an[i], current[i], voltage[i], temp[i], charge[i], SOC[i] );
266 sd_file_write_append ( zeile );
269 sprintf ( zeile,
"\r" );
270 sd_file_write_append ( zeile );
300 char filename[] = {
"laden.csv" };
303 static bool einmal =
true;
306 sprintf ( timestamp,
"20%02i-%02i-%02i %02i:%02i:%02i", now.year, now.month, now.day, now.hours, now.minutes, now.seconds );
310 if ( !sd_file_open ( filename ) )
312 sd_file_new ( filename );
313 sd_file_open ( filename );
318 sprintf ( zeile,
"Zeit" );
319 sd_file_write_append ( zeile );
321 for (
int i = 0; i <= 7; i++ )
323 sprintf ( zeile,
";Zelle;Strom;Spannung;Temperatur;Ladung;SOC" );
324 sd_file_write_append ( zeile );
327 sprintf ( zeile,
"\r" );
328 sd_file_write_append ( zeile );
333 sprintf ( zeile,
"%s", timestamp );
334 sd_file_write_append ( zeile );
336 for (
int i = 0; i <= 7; i++ )
338 sprintf ( zeile,
";%i;%i;%5.2f;%i;%7.2f;%i", i, current[i], voltage[i], temp[i], charge[i], SOC[i] );
339 sd_file_write_append ( zeile );
342 sprintf ( zeile,
"\r" );
343 sd_file_write_append ( zeile );
Konstanten, Filter und Commands für den Temperatursensor MCP 9843.
Header, Definition der Konstanten und Commands für DS1388.
void DS1388_get_datetime(void)
Die Uhrzeit und das Datum werden ausgelesen.
SD-Card Reader Bibliothek von Roland Riegel.
void sdcard_bms_read_state(void)
Zustandsdaten der Batterien werden gelesen.
Standard Header Datei, Definition der Batteriekonstanten und Grenzwerte.
void sdcard_bms_write_state(void)
Zustandsdaten der Batterien werden gespeichert.
Standardheader und Auswahl der Übertragungsgeschwindigkeit.
void sdcard_bms_write_base(void)
Basisdaten der Batterien werden gespeichert.
void sdcard_bms_daten_laden(void)
Daten im Modus "Laden" werden auf die SD-Karte geschrieben.
Datei aus der SD-Card Reader Bibliothek von M. Junghans.
Standardheader. Datenmanagement für BMS-Daten mit SD Card Reader.
void sdcard_bms_daten_betrieb(void)
Daten im Modus "Betrieb" werden auf die SD-Karte geschrieben.
void sdcard_bms_read_base(void)
Basisdaten der Batterien werden gelesen.
SD-Card Reader Bibliothek von M. Junghans.
Header für ADC AD7997, Definition der Register und Commands.