Forum: Mikrocontroller und Digitale Elektronik SD Karte/SPI Problem ab 200A -> Störungen?


von John P. (brushlesspower)


Angehängte Dateien:

Lesenswert?

Hallo,

seit einiger Zeit arbeite ich an einem BLDC Motor Regler für den 
Modellbaubereich.
Dieser ist u.a. mit einem ESP32 als Controller und einer SD Karte 
ausgestattet.

Folgendes Problem hat sich die letzten Tage beim testen ergeben:

Ab etwa 200A (Akku Strom) gibt es aussetzer in den Daten die auf der SD 
Karte gespeichert werden.
Sobald der Strom wieder unter 200A geht sind die Daten wieder 
vollständig.

Meine Vermutung ist das die SPI so stark gestört wird das keine Daten 
geschrieben werden.

Jetzt ergeben sich mir 2 Fragen:

1.Frage:

Kann das in der Firmware verhindert werden? Ich hätte erwartet das die 
SD Karte eine Art ACK sendet wenn der Schreibvorgang erfolgreich war?

Dazu prüfe ich bereits den rückgabewert:
1
size_t returnvalue;
2
      returnvalue = file.write(write_buf,copycounter);
3
      //Serial.print("returnvalue: ");
4
      //Serial.println(returnvalue);
5
      file.close();
6
      if(returnvalue =! copycounter){
7
         //schreibe fehler
8
}

Wenn der Rückgabewert falsch ist wird ein Fehler ausgegeben und der 
datensatz erneut geschrieben.
Aber der Rückgabewert ist immer richtig (kein fehler)

Das einzige was mir einfällt ist es den geschriebenen Buffer nochnal 
auszulesen und zu vergleichen. Das kostet aber Zeit.

2.Frage:

Wie kann man die SPI besser gegen diese Störungen schützen?
Dazu habe ich das Layout (EAGLE) und den Aufbau mal angehängt.
MISO und MOSI sind mit 10k auf 3V3
Takt sind 8MHz
Was könnte man im bestehenden Layout (Q&D) ändern?

Was sollte man beim Redesign ändern?
Serienterminierung? Bei gerademal 30mm Leiterbahnläne?
4 Lagen für eine GND Plane als Referenzlage?

: Bearbeitet durch User
von Horst (Gast)


Lesenswert?

Versuch mal ein Abschirmblech zwichen die beiden Platinen zu packen.

von Falk B. (falk)


Lesenswert?

John P. schrieb:
> 2.Frage:
>
> Wie kann man die SPI besser gegen diese Störungen schützen?

Willkommen in Monty Phytons wunderbarer Welt der EMV ;-)

> Dazu habe ich das Layout (EAGLE) und den Aufbau mal angehängt.
> MISO und MOSI sind mit 10k auf 3V3
> Takt sind 8MHz
> Was könnte man im bestehenden Layout (Q&D) ändern?

Muss man genauer in der .brd Datei anschauen, so sieht man kaum was.

> Was sollte man beim Redesign ändern?
> Serienterminierung? Bei gerademal 30mm Leiterbahnläne?
> 4 Lagen für eine GND Plane als Referenzlage?

Du weißt noch gar nicht,

- wo die Störung genau herkommt (Störquelle)
- wie sie in dein SPI einkoppelt (Koppelpfad)
- wo sie genau einkoppelt (Störsenke)

Ohne weitere Test und Messungen kann man GAR NICHTS sagen!

Der einzige Hinweis ist, daß ab 200A Akkustrom der Fehler auftritt. OK, 
das ist ein Ansatz. 200A DC koppeln aber nicht induktiv, bestenfalls 
galvanisch. Es sind vermutlich die Schaltstufen, welche die Probleme 
verursachen, geschaltete Ströme koppeln wunderbar induktiv.

Da die Akkuspannung ansatzweise konstant ist und die Schaltstufen auch 
bei kleinen Lastströmen gleich schnell schalten, ist es mit hoher 
Wahrscheinlichkeit KEINE kapazitive Kopplung. Damit nützt ein 
Abschirmblech zwischen Leistungsstufe und Controller gar nichts . . .

Also muss man sich die Stromschleifen deiner Leistungsstufe sowie die 
der Steuerung mit SPI aufzeichnen. Wie groß sind sie? Wo liegen sie? Wie 
liegen sie zueinander?

Es kann auch sein, daß ein Teil deines Laststroms ungünstig über die 
Masse deiner Steuerung läuft. Dann kann es zu Potentialverschiebungen 
auf den Steuersignalen kommen. Um das genauer zu prüfen, braucht man 
aber ein Blockschaltbild der Verdrahtung. Im Idealfall ist die Masse 
sternförmig verdrahtet, damit die dicken Lastströme niemals auch nur 
ansatzweise über deine Controllermasse fließen.

von John P. (brushlesspower)


Lesenswert?

Falk B. schrieb:
> Du weißt noch gar nicht,
>
> - wo die Störung genau herkommt (Störquelle)
> - wie sie in dein SPI einkoppelt (Koppelpfad)
> - wo sie genau einkoppelt (Störsenke)
>
> Ohne weitere Test und Messungen kann man GAR NICHTS sagen!

Genau das ist mein Problem.

Auf dem Labortisch kann ich die 200A nie erreichen.
Und den Labortisch bei 100kmh auf dem See neben dem Regler 
hinterherziehen wird auch schwer.

Falk B. schrieb:
> Es kann auch sein, daß ein Teil deines Laststroms ungünstig über die
> Masse deiner Steuerung läuft. Dann kann es zu Potentialverschiebungen
> auf den Steuersignalen kommen. Um das genauer zu prüfen, braucht man
> aber ein Blockschaltbild der Verdrahtung. Im Idealfall ist die Masse
> sternförmig verdrahtet, damit die dicken Lastströme niemals auch nur
> ansatzweise über deine Controllermasse fließen.

Die Steuerplatine (Layout im Anhang) ist nur in einem Punkt (so dicht 
wie möglich am Lipo) mit Masse verbunden.

D.h. ich schließe Lastströme mal aus.

von Falk B. (falk)


Lesenswert?

John P. schrieb:
> Falk B. schrieb:
>> Du weißt noch gar nicht,
>>
>> - wo die Störung genau herkommt (Störquelle)
>> - wie sie in dein SPI einkoppelt (Koppelpfad)
>> - wo sie genau einkoppelt (Störsenke)
>>
>> Ohne weitere Test und Messungen kann man GAR NICHTS sagen!
>
> Genau das ist mein Problem.
>
> Auf dem Labortisch kann ich die 200A nie erreichen.
> Und den Labortisch bei 100kmh auf dem See neben dem Regler
> hinterherziehen wird auch schwer.

???
Wieso kannst du die Last (Motor) nicht auf dem Labortisch betreiben? Es 
muss ja kein Dauerbetrieb sein. Für die Test sollten kurze 
Einschaltdauern von ein paar Sekunden reichen.

> Die Steuerplatine (Layout im Anhang)

Hier gibt es keinen Anhang.

> ist nur in einem Punkt (so dicht
> wie möglich am Lipo) mit Masse verbunden.

Wenn das wirklich so ist, ist es eine Fehlerquelle weniger.
Der heißeste Kandidat sind die Stromschleifen.

> D.h. ich schließe Lastströme mal aus.

Falsche Aussage! Damit kann man eine galvanische Kopplung von Laststrom 
auf die Steuerung ausschließen.

Aber wie sind die Treiber für die MOSFETs angebunden?

von M. K. (sylaina)


Lesenswert?

Falk B. schrieb:
> Der einzige Hinweis ist, daß ab 200A Akkustrom der Fehler auftritt. OK,
> das ist ein Ansatz. 200A DC koppeln aber nicht induktiv

BLCD-Motor wird doch getaktet angesteuert, damit dürfte also schon ein 
hoher Strom getaktet fließen, ob es jetzt konkret der Akku-Strom ist 
oder ein Phasenstrom (ich denke letzteres wird es sein) muss man halt 
genauer untersuchen.

Falk B. schrieb:
> Also muss man sich die Stromschleifen deiner Leistungsstufe sowie die
> der Steuerung mit SPI aufzeichnen. Wie groß sind sie? Wo liegen sie? Wie
> liegen sie zueinander?

Das wäre der Ansatzpunkt, den ich auch verfolgen würde. Ich denke da ist 
was ungünstig und verursacht die Einkoppelung. Auf jeden Fall mal die 
Strompfade prüfen, wo sie wie zueinander liegen.

von John P. (brushlesspower)


Angehängte Dateien:

Lesenswert?

Falk B. schrieb:
> ???
> Wieso kannst du die Last (Motor) nicht auf dem Labortisch betreiben? Es
> muss ja kein Dauerbetrieb sein. Für die Test sollten kurze
> Einschaltdauern von ein paar Sekunden reichen.

Den Motor kann ich schon auf dem Labortisch betreiben.
Aber ich kann ihn nicht belasten, bzw nicht so stark das ich auch nur 
annähernd an 200A rankomme.

Falk B. schrieb:
> Hier gibt es keinen Anhang.

im ersten Post habe ich die EAGLE Datei angehängt.

ich hänge nochmal die Eagle Datein ran vom Steuerteil und vom 
leistungsteil

von Falk B. (falk)


Lesenswert?

John P. schrieb:
> Den Motor kann ich schon auf dem Labortisch betreiben.
> Aber ich kann ihn nicht belasten, bzw nicht so stark das ich auch nur
> annähernd an 200A rankomme.

Dann wird das so nix.

> ich hänge nochmal die Eagle Datein ran vom Steuerteil und vom
> leistungsteil

Ich hab nur ein olles Eagle 6.5.0. Den Leistungsteil kann ich lesen, den 
Controller nicht. Allerdings sind im Leistungsteil einige Luftlinien 
drin. Musst du mal beide als V7 speichern. Und bitte in ein ZIP packen. 
Erstens weil es viele Dateien sind, 2. weil mein oberschlaues Edge die 
Dateien als XML erkennt und die Endung in .XML ändern.

von Olaf (Gast)


Lesenswert?

Also zunaechst mal, es ist sicher sinnvoll die Probleme in der Hardware
auszumerzen. Also Layout, verkabelung, Schaltungstechnik.


> Kann das in der Firmware verhindert werden? Ich hätte erwartet das die
> SD Karte eine Art ACK sendet wenn der Schreibvorgang erfolgreich war?

Aber auch das ist moeglich. Das Problem ist nur das man dazu nicht zu 
der Klasse der "Abschreiber" gehoeren darf die nix koennen sondern 
selber programmieren muss.
SD-Karten werden im Microcontrollerbereich ueblicherweise mit SPI 
angesprochen und der Controller in der SD-Karte schaltet die 
Pruefsummenbildung aus wenn er von SD auf SPI umgestellt wird. Du kannst 
aber in deinem Programm das einfach mit einem Kommando wieder 
einschalten und ab da erfolgt die ganze Kommunikation mit der Karte mit 
CRC7 und CRC16. Und dann kannst du erkennen ob ein Block erfolgreich 
geschrieben wurde und kannst das wiederholen wenn es einen Fehler gab.

Das setzt aber voraus das du eben aus den SD-Karten Code zumindest auf 
Blockebene selber geschrieben hast. .-)

Olaf

von Olaf (Gast)


Lesenswert?

> im ersten Post habe ich die EAGLE Datei angehängt.

Du solltest besser Bilder oder PDFs generieren damit das hier jeder
lesen kann und nicht nur du oder die Leute die zufaellig noch Eagle
in der passenden Version haben.

Olaf

von Falk B. (falk)


Lesenswert?

Olaf schrieb:
> Du solltest besser Bilder oder PDFs generieren damit das hier jeder
> lesen kann und nicht nur du oder die Leute die zufaellig noch Eagle
> in der passenden Version haben.

In diesem Falle braucht man die Egale-Dateien, denn die Ausdrucke als 
PDF sind zu unübersichtlich und man kann auch keine Netze hervorheben.

von John P. (brushlesspower)


Angehängte Dateien:

Lesenswert?

Falk B. schrieb:
> Allerdings sind im Leistungsteil einige Luftlinien
> drin. Musst du mal beide als V7 speichern. Und bitte in ein ZIP packen.

habe es dir als V7 gespeichert und ins Zip gepackt.
Dazu noch als Erklärung: Die Luftlinien sind richtig. Die elektrische 
verbindung wird erst beim Zusammenbau geschlossen. Habe noch Bilder 
hinzugefügt zum besseren Überblick

Olaf schrieb:
> Das setzt aber voraus das du eben aus den SD-Karten Code zumindest auf
> Blockebene selber geschrieben hast. .-)

Was ich natürlich nicht getan habe. Werde hier aber mal versuchen 
nachzuforschen.

von Olaf (Gast)


Lesenswert?

> Was ich natürlich nicht getan habe. Werde hier aber mal versuchen
> nachzuforschen.

Das ist Kommando 59.

        befehl[0] = 0x7b;      // CMD59
        befehl[1] = 0x00;
        befehl[2] = 0x00;
        befehl[3] = 0x00;
        befehl[4] = 0x01;      // Daten   1=on
        befehl[5] = crc7(befehl, 5);

Olaf

von Falk B. (falk)


Lesenswert?

John P. schrieb:
> habe es dir als V7 gespeichert und ins Zip gepackt.
> Dazu noch als Erklärung: Die Luftlinien sind richtig. Die elektrische
> verbindung wird erst beim Zusammenbau geschlossen. Habe noch Bilder
> hinzugefügt zum besseren Überblick

Naja, deine Masseflächen sind maximal zerstückelt. Die sind fast 
unwirksam. Ich würde hier auf eine 4-Lagen Platine gehen wollen. 
Testweise könnte man als Workaround eine Schirmfolie zwischen die 
Leistungsplatine und die Steuerung einfügen. Nicht gegen die kapazitive 
Kopplung, sondern die induktive. Die Schirmung wirkt als 
Kurzschlußwindung für die schnell geschalteten Ströme (jaja, ich hab 
oben gesagt das bringt nix, das war wohl nicht ganz zu Ende gedacht). 
Die Folie sollte halbwegs gescheit an GND der Steuerung angeschlossen 
sein, am besten an 2 Enden.

von foobar (Gast)


Lesenswert?

Dass die Versorgungsspannung einbricht kannst du ausschließen?

von John P. (brushlesspower)


Lesenswert?

foobar schrieb:
> Dass die Versorgungsspannung einbricht kannst du ausschließen?

Nicht zu 100%

die Lipospannung beträgt etwa 30V unter Last

per Step-Down wird die auf 5V und per LDO dann auch 3V3 geregelt.

Bei allen fahrten unter 150A gab es keinerlei Fehler, auch über mehrere 
Minuten nicht.

Wenn ich nach 30 sek auf 200A und mehr gehe fehlen Daten auf der SD 
Karte.

Wenn die 3V3 einbrechen würde ich auch eher erwarten, dass der ESP32 
aussetzer hat. Dies ist aber nicht der Fall.

Und ich würde erwarten, dass es einen Fehler beim öffnen der Datei gibt, 
bzw beim Zugriff auf die SD Karte.

von foobar (Gast)


Lesenswert?

> Wenn die 3V3 einbrechen würde ich auch eher erwarten, dass der ESP32
> aussetzer hat.

Der arbeitet auch bei 2.3V noch, die SD-Karte nicht.

Aber bei 30V Akkuspannung hat man ziemlich Reserve für den 
Buck-Converter - ich hatte eher 1 Zelle im Kopf.

von (Gast)


Lesenswert?

Ein Software-Problem kanns nicht sein? Klingt seltsam, ich würde 
vermuten dass irgendwo ein Fehler durchschlägt wenns Schreiben auf die 
SD-Karte plötzlich nicht mehr tut, und auch "Artefakte" in der 
geschriebenen Datei zu finden sind.

von Olaf (Gast)


Lesenswert?

> SD-Karte plötzlich nicht mehr tut, und auch "Artefakte" in der
> geschriebenen Datei zu finden sind.

Noe, das was er da beschreibt ist genau das was passiert wenn es
bei der Uebertragung zur Karte zu uebertragungsfehlern kommt und
man die Pruefsummen ausgeschaltet hat. Bekommt die Karte halt
manchmal falsche Bytes und manchmal auch ein falsche Kommando.
Und die Korrelation mit dem steigenden Strom ist auch ziemlich 
eindeutig.

Olaf

von John P. (brushlesspower)


Lesenswert?

Olaf schrieb:
> Noe, das was er da beschreibt ist genau das was passiert wenn es
> bei der Uebertragung zur Karte zu uebertragungsfehlern kommt und
> man die Pruefsummen ausgeschaltet hat. Bekommt die Karte halt
> manchmal falsche Bytes und manchmal auch ein falsche Kommando.
> Und die Korrelation mit dem steigenden Strom ist auch ziemlich
> eindeutig.

Hier mal ein Beispiel:

$35.6;250;98800;39;12.1;40;39;1747;0;1747
$35.6;249;98800;39;12.1;40;39;1747;0;1747
$35.6;250;98600;39;12.1;40;39;1747;0;1747
$35.6;250;101600;40;12.1;40;39;1747;0;1747
$35.6;250;101600;40;12.1;40;39;1758;0;1758
$35.6;251;99600;40;12.1;40;39;1766;0;1766
$35.5;252;99600;40;12.1;40;39;1775;0;1775
$35.5;252;99600;40;12.1;40;39;1784;0;1784
$35.5;253;103600;40;12.1;40;39;1793;0;1793
$

hier fehlt etwas....(bei 35V,253A,103600ERPM...)

                40;12.1;40;39;1901;0;1600
$35.2;270;84200;40;12.1;40;39;1901;0;1600
$35.2;270;84200;40;12.1;40;39;1901;0;1600
$35.2;270;84200;40;12.1;40;39;1901;0;1600
$35.2;271;86800;40;12.1;40;39;1901;0;1600
$35.2;271;86800;40;12.1;40;39;1901;0;1600
$35.2;271;86800;40;12.1;40;39;1901;0;1600
$35.1;271;86800;40;12.1;40;39;1901;0;1600


in der Firmware wird alles in einen großen RAM Ringspeicher gespeichert.
Sobald wieder 512Bytes hinzugekommen sind werden diese auf die SD Karte 
geschrieben.

Die fehlenden Daten passen dazu, dass ein solcher 512 Byte Block nicht 
geschrieben wurde.

Ich habe mal Angefragt on denn die CRC berücksichtigt wird....angeblich 
ja.
Allerdings finde ich die stellen nicht.
Nur das sie aktiviert werden mit CMD59 habe ich gefunden. Und das auch 
die CRC genutzt wird.

von Olaf (Gast)


Lesenswert?

> Allerdings finde ich die stellen nicht.
> Nur das sie aktiviert werden mit CMD59 habe ich gefunden.

Wenn CRC eingeschaltet wird dann wird der auch verwendet. Sonst wuerde 
die Karte keine Kommandos und keine Daten mehr akzeptieren.
Allerdings stellt sich natuerlich die Frage wie deine Software auf einen 
Fehler reagiert. Sie sollte dann das Kommando ja wiederholen. Vielleicht 
wurde das nicht implementiert?

Olaf

von John P. (brushlesspower)


Lesenswert?

Olaf schrieb:
> Wenn CRC eingeschaltet wird dann wird der auch verwendet. Sonst wuerde
> die Karte keine Kommandos und keine Daten mehr akzeptieren.
> Allerdings stellt sich natuerlich die Frage wie deine Software auf einen
> Fehler reagiert. Sie sollte dann das Kommando ja wiederholen. Vielleicht
> wurde das nicht implementiert?

Hallo Olaf,

so langsam denke ich eher an einen Firmware/MCU Fehler.

Ich habe gestern noch ein paar Log Datein erhalten, wieder mit 
aussetzern.

Aber:
1. Der Regler hate bein fahren spürbare aussetzer
2. Die Logdatei hat nicht nur Fehlende Daten, sondern Daten die aus 
einer alten Version stammen (formatierung/reihenfolge anders)


hier nochmal der Code:
1
size_t returnvalue;
2
      returnvalue = file.write(write_buf,copycounter);
3
      file.close();
4
      if(returnvalue =! copycounter){
5
        Serial.print("returnvalue: ");
6
        Serial.println(returnvalue);
7
        Serial.print("copycounter: ");
8
        Serial.println(copycounter);
9
        readcounter -= copycounter;
10
        if(readcounter >= 5000){
11
          readcounter -= 5000;
12
        }
13
        ErrorCode = ErrorCode | ERRORSDCARD;
14
        ErrorLog = true;
15
        ErrorString += "Reason: SD Card Write Error\nErrorCode: ";
16
        ErrorString += String(ErrorCode);
17
        ErrorString += "\nPowercycle: ";
18
        ErrorString += String(power_cycle);
19
        ErrorString += "\nLogCounter: ";
20
        ErrorString += String(log_counter);
21
        ErrorString += "\nSystime: ";
22
        ErrorString += String(systime);
23
        ErrorString += "\nMessage: File could not be written correctly\n\r";
24
      }

Zur erklärung:
Aus dem RAM Ringbuffer (5000 Bytes) wird an der position Readcounter 512 
bytes in den writebuffer[] kopiert und auf die SD Karte geschrieben und 
readcounter hochgezählt

sollte returnvalue falsch sein wird der readcounter zurückgedreht -> 
daraus folgt erneutes schreiben
und im Fehlerspeicher ein fehler hinterlegt.

Dieser fehler ist aber nie geschrieben worden. Daher gehe ich davon aus, 
dass der returnvalue immer korrekt ist.

von John P. (brushlesspower)


Lesenswert?

Hier mal ein Auszug der Logdatei

$35.5;163;110700;29;12.2;30;28;1960;0;1899
$35.5;164;113600;29;12.2;30;28;1972;0;1899
$35.5;165;113600;29;12.2;30;28;1981;0;1875
$35.4;166;113600;29;12.2;30;28;1993;0;1875
$35.4;167;115800;29;12.2;30;28;2007;0;1875
$35.4;168;115800;29;12.2;30;28;2016;0;1836
$35.4;168;115800;29;12.2;30;28;2024;0;1836
$35.3;169;114500;29;12.2;30;28;2031;0;1836
$35.3;169;1

Aussetzer und die folgenden Daten in einem anderen Format mit völlig 
anderen Werten

                         0.35;65535;0;0
$11.27;11.89;1.60;20.73;20.35;65535;0;0
$12.32;11.90;1.60;20.35;20.61;65535;0;0
$12.28;11.88;1.60;20.73;20.35;65535;0;0
$12.43;11.90;1.60;21.12;20.48;65535;0;0
$12.32;11.90;1.60;20.35;20.48;65535;0;0
$12.26;11.88;1.60;20.48;20.35;65535;0;0
$12.28;11.90;1.60;20.61;20.61;65535;0;0
$12.32;11.90;1.60;20.48;20.35;65535;0;0
$12.29;11.88;1.60;20.35;20.35;65535;0;0
$12.32;11.90;1.60;20.61;20.22;65535;0;0
$12.31;11.90;1.60;20.

Hier gehts dann wieder normal weiter

                                  0;0;1907
$34.9;180;110900;29;12.2;30;29;2070;0;1907
$34.9;181;110900;29;12.2;30;29;2070;0;1907
$34.8;181;110900;29;12.2;30;29;2071;0;1907
$34.8;179;112500;29;12.2;30;29;2072;0;1907
$34.8;180;112500;29;12.2;30;29;2072;0;1890
$34.8;181;112500;29;12.2;30;29;2072;0;1890
$34.8;181;112900;29;12.2;30;29;2072;0;1890
$34.7;180;112900;29;12.2;30;29;2072;0;1874
$34.7;181;112900;29;12.2;30;29;2072;0;1874
$34.7;180;111900;29;12.2;30;29;2072;0;1874
$34.7;180;111900;29;12.2;30;29;2072;0;1866
$34.7;181;111900;29;12.2;30;29;2072;0;1866
$34.7;182;111300;29;12.2;30;29;2072;0;1866

von Hans B. (Gast)


Lesenswert?

Habe einmal über Probleme an Steuerungen von Golf-carts gelesen:
Die Leitungen vom Akku zum Leistungsteil sind induktiv. Daher steigt der 
Strom dort möglicherweise langsamer an als der geschaltete Motorstrom.
Das müssen die Elektrolytkondensatoren am Leistungsteil ausgleichen.
Sind diese ausreichend dimensioniert? Können die so hohe Ströme liefern?
Sollte der gemeinsame Massepunkt nicht auch an diesen Kondensatoren 
liegen?

von F. M. (foxmulder)


Lesenswert?

Ohne Ausrüstung ala Elast/Netzteil und Stromzangen fürs Scope ist so 
etwas nur eher schwer zu beheben. Da muss man es von Anfang an so bauen, 
dass keine solchen Fehler auftreten.

Ich würde die zwei Platinen weiter auseinander bringen, also die 
Steuerung wo anders hin und evtl. in ein Metallgehäuse.
Dann evtl. mal die Holzhammermethode versuchen und überall 
Ferritperlen/Ablockkondensatoren vorsehen, hast du das gemacht?

Bricht evtl. die Versorgung ein?
Hast du eine galvanische Trennung zwischen Steuerung und Leistungsteil?
Oder evtl. Filternetzwerke auf den "Steuerleitungen" (ich kenne den 
Schaltplan nicht, also bin mir nicht sicher wie du das machst.)
Hast du den Schaltplan als PDF?
Ich habe kein Eagle hier.

mfg

von Bastler_HV (Gast)


Lesenswert?

John P. schrieb:
> Aussetzer und die folgenden Daten in einem anderen *Format* mit völlig
> anderen Werten

Das andere Format wundert mich sehr.

Wird da ein Block übersprungen und Du liest alte Daten von der SD-Karte?

Vielleicht die SD-Karte vor der Verwendung komplett überschreiben? 
(Achtung schnelles Fromatieren überschreibt nicht die Nutzerdaten!)

von John P. (brushlesspower)


Angehängte Dateien:

Lesenswert?

Hans B. schrieb:
> Das müssen die Elektrolytkondensatoren am Leistungsteil ausgleichen.
> Sind diese ausreichend dimensioniert? Können die so hohe Ströme liefern?
> Sollte der gemeinsame Massepunkt nicht auch an diesen Kondensatoren
> liegen?

Es sind 6x330µF verbaut, Strom müsste ich mal ins DB gucken. Hatte bei 
LCSC extra welche rausgesucht mit einem hohen Ripplestrom.

Der gem. Massepunkt liegt an den Kondensatoren

F. M. schrieb:
> Ich würde die zwei Platinen weiter auseinander bringen, also die
> Steuerung wo anders hin und evtl. in ein Metallgehäuse.
> Dann evtl. mal die Holzhammermethode versuchen und überall
> Ferritperlen/Ablockkondensatoren vorsehen, hast du das gemacht?

Leider muss es alles sehr kompakt sein. Daher kann man die Steuerung 
nich weiter weg positionieren und auch nicht in ein Metallgehäuse.

Man könnte eine PCB dazwischen packen die nur eine GND Plane als 
Schirmung hat.
Abblock C's sind vorhanden.

F. M. schrieb:
> Bricht evtl. die Versorgung ein?
> Hast du eine galvanische Trennung zwischen Steuerung und Leistungsteil?
> Oder evtl. Filternetzwerke auf den "Steuerleitungen" (ich kenne den
> Schaltplan nicht, also bin mir nicht sicher wie du das machst.)
> Hast du den Schaltplan als PDF?
> Ich habe kein Eagle hier.

Die Versorgung sieht auf dem labortisch gut aus. Aber wie gesagt, ich 
kann hier auch nicht bei Vollast testen.

gal. Trennung ist nicht vorhanden.

Schaltplan siehe Anhang. Ich entschuldige mich schonmal dafür...es war 
nie für die öffentlichkeit gedacht.

Bastler_HV schrieb:
> Wird da ein Block übersprungen und Du liest alte Daten von der SD-Karte?
>
> Vielleicht die SD-Karte vor der Verwendung komplett überschreiben?
> (Achtung schnelles Fromatieren überschreibt nicht die Nutzerdaten!)

eine andere Erklärung habe ich auch nicht.
Ich werde die Karte mal Formatieren (vollständig).


Ansonsten lasse ich mal einen Zähler für jede Messreihe und jeden 
Schreibversuch mitloggen. Vielleicht erkennt man ja etwas.

Ansonsten will ich die SD Karte mal zurücklesen und gucken was dabei 
raus kommt.

: Bearbeitet durch User
von foobar (Gast)


Lesenswert?

Irgendwie ergibt der Schaltplan wenig Sinn:
 - 2 parallele 5V Buck-Converter?  (IC12, IC16)
 - 3 parallele 3.3V Linearregler?  (IC1, IC6, IC15)
 - 1 30mA Switched-Capacitor-Booster für 3 Gate-Driver???
 - keine Entkopplung von Logik- und Last-Kreis?
 - Wo sind die MOSFETs?

von foobar (Gast)


Lesenswert?

> Aussetzer und die folgenden Daten in einem anderen Format mit völlig
> anderen Werten

Einen Block schreiben auf Filesystemebene ergibt üblicherweise mehrere 
Schreibzugriffe auf Blockebene (z.B. FAT-Eintrag plus Daten).  Je 
nachdem, welche Schreibzugriffe ausfallen, können du unterschiedlichsten 
Fehler auftreten (z.B. FAT-write klappt, Daten-write nicht -> alte Daten 
in Datei).

von John P. (brushlesspower)


Lesenswert?

foobar schrieb:
> Irgendwie ergibt der Schaltplan wenig Sinn:
>  - 2 parallele 5V Buck-Converter?  (IC12, IC16)
>  - 3 parallele 3.3V Linearregler?  (IC1, IC6, IC15)
>  - 1 30mA Switched-Capacitor-Booster für 3 Gate-Driver???
>  - keine Entkopplung von Logik- und Last-Kreis?
>  - Wo sind die MOSFETs?

5V/3A extern für den Empfänger und Servos
5V intern für die 3V3 LDO's und die Ladungspumpe

3 LDO's für die 2 Microcontroller und die SD Karte

Die Mosfets sind auf der anderen Leiterplatte und somit anderes EAGLE 
projekt.
Aber da gibts ja nicht viel interessantes, oder doch?

von Hans B. (Gast)


Lesenswert?

Vielleicht ist mit angemessenem Aufwand folgender Versuch möglich:
Mikrokontroller mit getrenntem Akku versorgen. Wenn es dann funktioniert 
kommen die Störungen über die Spannungsversorgung.

von F. M. (foxmulder)


Lesenswert?

Ich bin mir inzwischen recht sicher, dass es einer von diesen Fehlern 
ist:
1)Ein ganz komischer Programmüberlauf etc. der sich erst bei >100A 
bemerkbar macht.
-->unwahrscheinlich, aber nicht ausgeschlossen

2)Spannungsversorgng schlecht
Ich sehe nirgends Spulen oder Ferrite, auch nicht in den Datenleitungen, 
auch keine Schutzdioden etc. also prinzipiell kann da alles mögliche die 
Versorgung zumüllen.

Wenn es geht, würde ich auf eine saubere Trennung zwichen Steuerung und 
Leistungsteil achten, am besten mit Optokopplern/isoliertem DCDC.

Evtl. eine 4 Lagen Platine für die Steuerung und die Signalleitungen 
nach Innen, oder ein SMD Schirmhaus.
Solange da 3cm unterhalb 100A fließen wird das so nie funktionieren.

mfg

: Bearbeitet durch User
von John P. (brushlesspower)


Lesenswert?

Übers Wochenende habe ich noch ein paar Hinweise zur Firmware bekommen.

Diese setze ich heute mal um und werde dann nochmal testen.


Dennoch werde ich ein Redesign der Leiterplatte angehen.

4 Lagen mit einer GND Plane zwischen SPI und der Powerplatine.
Dazu werde ich mehr Augemmerk auf die Spannungsersorgung legen.

Ansonsten warte ich mal den heutigen test ab.

von Falk B. (falk)


Lesenswert?

John P. schrieb:
> 4 Lagen mit einer GND Plane zwischen SPI und der Powerplatine.
> Dazu werde ich mehr Augemmerk auf die Spannungsersorgung legen.

Naja, die GND-Lagen legt man hier klassisch in die Mitte. Eine Masse auf 
den Außenlagen hat hier so oder so kaum Wirkung, weil dort soviele 
Bauteile drauf sind, da wird eh nur alles zerstückelt. Man könnte 
bestenfalls versuchen, GND auf Lager 3 zu legen (von oben gesehen) und 
auf Layer 2 (Innenlage) den jetzigen Bottomlayer zu legen. Damit hat man 
sowohl eine kapazitive als auch induktive Schirmung gegen die 
Leisungselektronik.

von Stefan F. (Gast)


Lesenswert?

Ich bin nicht vom fach, aber können Layer aus Kupfer tatsächlich 
magnetische Felder abschirmen? Ich dachte, dafür braucht man spezielle 
Varianten von Eisen.

von Falk B. (falk)


Lesenswert?

Stefan ⛄ F. schrieb:
> Ich bin nicht vom fach, aber können Layer aus Kupfer tatsächlich
> magnetische Felder abschirmen?

Das kann auch Aluminium. Praktisch alles, was gut leitfähig ist. Nennt 
sich Wirbelstrom und funktioniert umso besser, je höher die Frequenz 
ist. Niederfrequente Magnetfelder wie z.B. 50Hz oder gar Gleichfelder 
sind hier unbedeutend, denn die koppeln nicht nennenswert induktiv.

> Ich dachte, dafür braucht man spezielle
> Varianten von Eisen.

Nur bei Gleichfeldern und niederfrequenten Wechselfeldern. In der guten, 
alten Zeit der Röhrenmonitore gab es da diverse Abschirmungen, damit 
nach Starkstromleitungen (Bahn, Straßenbahn) das Bild nicht verzerren 
bzw. zittern lassen. Das gab es auch als aktive Version mit einer 
Kompensationsspule und aktiver Regelung.

von John P. (brushlesspower)


Lesenswert?

Falk B. schrieb:
> Naja, die GND-Lagen legt man hier klassisch in die Mitte. Eine Masse auf
> den Außenlagen hat hier so oder so kaum Wirkung, weil dort soviele
> Bauteile drauf sind, da wird eh nur alles zerstückelt.

in meinem Fall sind auf Bottom nur 2 Sot23 Temperatur sensoren. Diese 
berühren die Mosfets des Leistungsteils und müssen daher auf Bottom.

der Rest wäre GND Fläche

Falk B. schrieb:
> Man könnte
> bestenfalls versuchen, GND auf Lager 3 zu legen (von oben gesehen) und
> auf Layer 2 (Innenlage) den jetzigen Bottomlayer zu legen. Damit hat man
> sowohl eine kapazitive als auch induktive Schirmung gegen die
> Leisungselektronik.

Lässt sich machen.

Aber wozu Layer 4 (Bottom) nutzen?
Ebenfalls GND?
oder alles Frei lassen?

von Falk B. (falk)


Lesenswert?

John P. schrieb:
> in meinem Fall sind auf Bottom nur 2 Sot23 Temperatur sensoren. Diese
> berühren die Mosfets des Leistungsteils und müssen daher auf Bottom.
>
> der Rest wäre GND Fläche

Hmm, stimmt, hatte ich irgendwie anders in Erinnerung. Dann kann man 
Bottom komplett zu GND machen.

> Aber wozu Layer 4 (Bottom) nutzen?
> Ebenfalls GND?
> oder alles Frei lassen?

Beides ist möglich, vermutlich wird man in der Praxis keinen großen 
Unterschied in der Schirmwirkung bzw. EMV feststellen. Aber da es für 
gespartes Kupfer kein Geld zurück gibt, würde ich hier 2 GND-Lagen 
machen und gut. Dein Aufbau ist so oder so relativ unsymmetrisch, da 
werden einige Experten hier meckern. Manchmal geht es aber nicht anders. 
Außerdem ist die maximale Symmetrie des Lagenaufbaus nicht gottgegeben 
sondern eher eine Orientierung.

von John P. (brushlesspower)


Lesenswert?

Erstmal muss ich das Thema auf Eis legen.

Bei der Testfahrt gestern ist der Motor und Regler kaputt gegangen.
Leider lässt sich die SD Karte nicht mehr auslesen.

d.h. jetzt erstmal gucken was vom regler noch zu retten ist 
(Hardware/Daten).


Ich hatte einen 2. Logger dabei als referenz. Diese hat ca. 420A bis 
440A aufgezeichnet. Dann hat der Regler aufgegeben.
Ebenso eine Spitze von 500A, allerdings kann das auch ein Messfehler 
gewesen sein.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.