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_treturnvalue;
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?
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.
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.
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?
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.
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
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.
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
> 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
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.
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.
> 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
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.
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.
> 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.
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.
> 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
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.
> 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
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:
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.
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
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?
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
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!)
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.
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?
> 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).
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?
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.
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
Ü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.
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.
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.
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.
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?
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.
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.