Forum: Mikrocontroller und Digitale Elektronik I2C-Kommunikation stoppt nach ca. 1-5 Sekunden


von Florian (Gast)


Angehängte Dateien:

Lesenswert?

Hallo zusammen,

wie im Betreff geschrieben, habe ich ein Problem mit meiner 
I2C-Kommunikation.

Mikrocontroller: STM32F407VGT6 (100Pins)
I2C2-BUS: (PINS: B10, B11)
Hardware am Port: Sensor(LSM303), Motortreiber(BL-CTRL)

Ich habe zwei Platinen mit denen ich den exakt selben Code ausführe. Auf 
der einen funktioniert die Kommunikation problemlos, auf der anderen 
nicht.
Die Platinen besitzen allerdings ein unterschiedliches Hardware-Design, 
wobei am I2C2-Port (auf beiden Platinen) jeweils Pull-Up Widerstände von 
4,7kOHM hängen und jeweils die gleiche Hardware angeschlossen ist. Die 
I2C-Leitungen wurden auf Kurzschlüsse geprüft (zu GND, VCC und 
gegenseitig).

In der test.cpp ist der Code den ich verwende dargestellt. Irgendwann 
ist der I2C-Port BUSY und bleibt es auch.

Ich habe keine Ahnung woran das liegen kann, zumal es für wenige 
Sekunden funktioniert.

Etwas was mir aufgefallen ist, ist das auf der Platine, mit der die 
Kommunikation nicht geht, 20 reale Sekunden, 25 Sekunden auf der Platine 
sind. Hierfür habe ich sowohl einen externen Ozillator-Quarz und den 
internen 16MHz quarz genutzt. Kann es damit zusammen hängen?

Ich bin am Verzweifeln, da ich sehr dringend eine Lösung brauche, ich 
hoffe mir kann hier weitergeholfen werden.


Im folgenden ist der Output den ich über Bluetooth sende zu sehen, falls 
es jemandem hilft.

...
3, 1 TEST1 BUSY!!!!!!!!!!<\n>
 TEST2 <\n>
-67<\n>
BUSY!!!!!!!!!!<\n>
3, 1 TEST1 BUSY!!!!!!!!!!<\n>
 TEST2 <\n>
-67<\n>
BUSY!!!!!!!!!!<\n>
3, 1 TEST1 BUSY!!!!!!!!!!<\n>
 TEST2 <\n>
-67<\n>
BUSY!!!!!!!!!!<\n>
3, 1 TEST1 BUSY!!!!!!!!!!<\n>
 TEST2 <\n>
-67<\n>
BUSY!!!!!!!!!!<\n>
3, 1 TEST1 BUSY!!!!!!!!!!<\n>
 TEST2 <\n>
-67<\n>
BUSY!!!!!!!!!!<\n>
3, 1 TEST1 BUSY!!!!!!!!!!<\n>
 TEST2 <\n>
-67<\n>
BUSY!!!!!!!!!!<\n>
1, 1 TEST1 BUSY!!!!!!!!!!<\n>
BUSY!!!!!!!!!!<\n>
BUSY!!!!!!!!!!<\n>
BUSY!!!!!!!!!!<\n>
BUSY!!!!!!!!!!<\n>
BUSY!!!!!!!!!!<\n>
BUSY!!!!!!!!!!<\n>
BUSY!!!!!!!!!!<\n>
BUSY!!!!!!!!!!<\n>
BUSY!!!!!!!!!!<\n>
BUSY!!!!!!!!!!<\n>
BUSY!!!!!!!!!!<\n>
BUSY!!!!!!!!!!<\n>
...

von Florian (Gast)


Lesenswert?

Interessanterweise funktioniert die Kommunikation sobald ich an SCL, SDA 
und GND ein Oszilloskop hänge.
Kann mir jemand möglicherweise diesen Zusammenhang erklären?

von dummy (Gast)


Lesenswert?

>Interessanterweise funktioniert die Kommunikation sobald ich an SCL, SDA
>und GND ein Oszilloskop hänge.
>Kann mir jemand möglicherweise diesen Zusammenhang erklären?

Was ist wenn du nur GND dranhängst?

von Florian (Gast)


Lesenswert?

dummy schrieb:
> Was ist wenn du nur GND dranhängst?

Das bringt nichts, dann bricht die Kommunikation auch sofort wieder ab.

von Florian (Gast)


Lesenswert?

Wenn ich an SCL und GND dran hänge dann läufts ne Weile länger. Aber 
irgendwann ist dann auch wieder Schluß nach 30Sekunden oder so.

MIT SCL, SDA und GND bleibt die Kommunikation noch länger. Nach 1-2 
Minuten ist sie dann aber auch wieder weg, wie ich gerade bemerkt habe. 
Dann liegen beide Leitungen auf HIGH.

von Martin (Gast)


Lesenswert?

Ein ähnliches Problem hatte ich auch kürzlich.
Oszi dran --> I²C geht, Oszi weg --> geht nicht mehr.

Nachdem es nur ein Versuchsaufbau war, habe ich kurzerhand den Pull-Ups 
jeweils einen 100pF-Kondensator huckepack verpasst, dann gings immer. 
Vermutlich wäre es auch mit einer kleineren Kapazität gegangen, ich 
hatte aber gerade nix anderes da...

von Autor (Gast)


Lesenswert?

Martin schrieb:
> Ein ähnliches Problem hatte ich auch kürzlich.
> Oszi dran --> I²C geht, Oszi weg --> geht nicht mehr.
>
> Nachdem es nur ein Versuchsaufbau war, habe ich kurzerhand den Pull-Ups
> jeweils einen 100pF-Kondensator huckepack verpasst, dann gings immer.
> Vermutlich wäre es auch mit einer kleineren Kapazität gegangen, ich
> hatte aber gerade nix anderes da...

Wie funktioniert das?

von Florian (Gast)


Lesenswert?

Hi,

vielen Dank schon einmal für den Tipp.
ich habe 470pF oder 0,01uF und noch jede menge höhere (0,1uF, 4,7uF...). 
Was soll ich besser nehmen?
Das sind alles Keramik-Kondensatoren 0603(inch). Passt das?

von Florian (Gast)


Lesenswert?

Hab den 470pF Kondensator genommen und es scheint tatsächlich zu 
funktionieren!!!!

Gäbe es nun nicht ein neues Problem, wäre ich so überglücklich!!!

Jetzt komme ich nicht mehr vernünftig auf den STM über SWD drauf, nach 
unzähligen "Internal command error" habe ich es gerade geschafft den 
Code auf den chip zu bekommen...

Also trotzdem vielen vielen Dank für den Tipp!!!

von Florian K. (f-kae)


Lesenswert?

Nun muss ich mich doch noch einmal zurück melden.

Das Auslesen des Sensors "LSM303" funktioniert nun gut. Wenn ich nun 
aber die 6 BL-CTRL(Motortreiber) an den I2C2-Bus anschließe bricht das 
Program nach ca. einer Sekunde ab.

Über Bluetooth bekomme ich dann folgendes:
1
BUSY!!!!!!!!!!<\n>
2
BUSY!!!!!!!!!!<\n>
3
BUSY!!!!!!!

Ich weiß echt nicht mehr weiter!

von holger (Gast)


Lesenswert?

>Das Auslesen des Sensors "LSM303" funktioniert nun gut. Wenn ich nun
>aber die 6 BL-CTRL(Motortreiber) an den I2C2-Bus anschließe bricht das
>Program nach ca. einer Sekunde ab.

>Hab den 470pF Kondensator genommen und es scheint tatsächlich zu
>funktionieren!!!!

Wenn man so Deppenkram machen muss damit I2C überhaupt funktioniert
ist da irgendwo ein ganz dicker Hund begraben und stinkt vor sich hin.

von Florian K. (f-kae)


Lesenswert?

holger schrieb:
> Wenn man so Deppenkram machen muss damit I2C überhaupt funktioniert
> ist da irgendwo ein ganz dicker Hund begraben und stinkt vor sich hin.

Hi,

wenn du mir irgendeine Richtung vorgeben könntest in der ich forschen 
kann, wäre ich dir dankbar. Mir wäre es auch lieb das Problem an den 
Wurzeln zu lösen, bin aber für jede funktionsfähige Variante auch sehr 
dankbar.

Ich habe ein Oszilloskop zur Verfügung...

Wenn ein Kondensator zumindest teilweise hilft, deutet das ja vielleicht 
auf ein Problem hin?!

von holger (Gast)


Lesenswert?

>Ich habe ein Oszilloskop zur Verfügung...

Dann zeig doch mal Bilder. Tastkopf auf 10:1 versteht sich.

>Wenn ein Kondensator zumindest teilweise hilft, deutet das ja vielleicht
>auf ein Problem hin?!

Auf jeden Fall!

von Florian K. (f-kae)


Angehängte Dateien:

Lesenswert?

holger schrieb:
>>Ich habe ein Oszilloskop zur Verfügung...
>
> Dann zeig doch mal Bilder. Tastkopf auf 10:1 versteht sich.

OK, das sind jetzt vier Oszilloskop-Bilder, mit den Kondensatoren über 
den Pull-Ups.
Bild_1: Stecker zu den Motortreibern ist nicht aufgesteckt, dieses 
Signal kommt mit einer Frequenz von ca 625Hz immer wieder wobei jedesmal 
ein andere Motortreiber versucht wird anzusprechen, insgesamt sind es 
sechs.
Bild_2: Das ganze etwas herausgezoomt.

Bild_3: Sofort nach dem Start des Programms mit angeschlossenen 
Motortreibern.

Bild_4: Nach maximal 3 Perioden, nachdem ich den Stecker aufgesteckt 
habe.

von Weingut P. (weinbauer)


Lesenswert?

Du weißt aber schon, dass die Sägezähne weit weg sind von dem wie I2C 
normalerweise aussieht und dass du beim Pullen der Leitungen heftige 
Ströme über Deine Bausteine ziehst?

von Florian K. (f-kae)


Angehängte Dateien:

Lesenswert?

So und nun das Ganze ohne die Kondensatoren auf den Pull-Ups:

Bild_5: Ohne Motortreiber angeschlossen

Bild_6: herausgezoomt

Bild_7: Mit Motortreibern angeschlossen

Bild_8: herausgezoomt

Mit angeschlossenem Oszilloskop passiert genau das was ich erwartet habe
und es gibt keine Probleme, aber sobald ich das Oszi abklemme bleibt das
Programm in der I2C-BUSY Schleife hängen.

von Florian K. (f-kae)


Lesenswert?

Fhutdhb Ufzjjuz schrieb:
> Du weißt aber schon, dass die Sägezähne weit weg sind von dem wie I2C
> normalerweise aussieht und dass du beim Pullen der Leitungen heftige
> Ströme über Deine Bausteine ziehst?

Meinst du die Variante mit den Kondensatoren, oder auch die ohne?

von Matthias S. (Firma: matzetronics) (mschoeldgen)


Lesenswert?

Bild 5 sieht ja ganz anständig aus, aber die anderen zeigen, das da was 
im argen ist und die kpazitive Belastung viel zu hoch ist, daher die 
sägezahnartigen Anstiege.
470pF sind auch sehr viel, deine Oszi Spitze wird höchstens so 50pF 
haben und in der Richtung solltest du mal dimensionieren - wenn 
überhaupt. Denn eigentlich läuft I2C über vernünftige Länge (max. so 
50cm) auch ohne kapazitive Belastung, lediglich mit richtigen Pullups 
versehen. 4k7 benutzt du immer noch? Es lohnt sich, da nochmal etwas 
stärkeres auszuprobieren, evtl. sogar 1k bis 3k3. Im schlimmsten Fall 
terminierst du an den beiden Enden des I2C mit jeweils dem doppelten 
Wert, also z.B. 6k8 oder so.

von Florian K. (f-kae)


Lesenswert?

Matthias Sch. schrieb:
> Bild 5 sieht ja ganz anständig aus, aber die anderen zeigen, das da was
> im argen ist und die kpazitive Belastung viel zu hoch ist, daher die
> sägezahnartigen Anstiege.
> 470pF sind auch sehr viel, deine Oszi Spitze wird höchstens so 50pF
> haben und in der Richtung solltest du mal dimensionieren - wenn
> überhaupt. Denn eigentlich läuft I2C über vernünftige Länge (max. so
> 50cm) auch ohne kapazitive Belastung, lediglich mit richtigen Pullups
> versehen. 4k7 benutzt du immer noch? Es lohnt sich, da nochmal etwas
> stärkeres auszuprobieren, evtl. sogar 1k bis 3k3. Im schlimmsten Fall
> terminierst du an den beiden Enden des I2C mit jeweils dem doppelten
> Wert, also z.B. 6k8 oder so.

Hi, schon einmal vielen Dank für deine Antwort!
Die Leitung ist auf der Platine ca. 3-4cm lang und dann das Kabel zu den 
Motortreibern ca. 8-10cm. Wobei ich wie gesagt mit einer anderen Platine 
und dem gleichen Kabel/Motortreibern keine Probleme habe.
Hast du eine Erklärung wo die kapazitive Belastung herkommen könnte? 
Kann ich versuchen mit isolierter Alufolie, oder sonst irgend etwas das 
Kabel zu den Motortreibern abzuschirmen?

Wie genau terminiere ich denn eine I2C Leitung?

In welcher Reihenfolge sollte ich am sinnvollsten mein Glück versuchen?

Pull-Up 3,3k
Pull-Up 1k
zusätzlicher Kondensator(ich habe leider nur 0,01uF als nächste Größe 
nach 470p) EDIT: Mir fällt gerade ein das ich doch noch jede Menge 
Keramikkondensatoren habe, die sind halt nur nicht in SMD-Bauform, also 
am besten 22pF oder 47pF?)

von Matthias S. (Firma: matzetronics) (mschoeldgen)


Lesenswert?

Florian K. schrieb:
> Hast du eine Erklärung wo die kapazitive Belastung herkommen könnte?

Die in deinen Bildern kommt vermutlich von den 470pF Kondensatoren. Das 
ist viel zu viel und verschleift dir die Flanken. Wenn du Einstreuungen 
in den Bus vermutest, nimm deutlich kleinere C im Bereich von 22pF bis 
max. 100pF.

Florian K. schrieb:
> Wie genau terminiere ich denn eine I2C Leitung?

Terminierung ist strenggenommen der falsche Ausdruck (mea culpa) , ich 
meine damit die Pullup Widerstände, eine richtige Terminierung gibts bei 
I2C ja nicht. In schwierigen Fällen wäre es also eine Möglichkeit, die 
Pullups im Wert zu verdoppeln, dafür aber sowohl am Anfang als auch am 
Ende des Busses  welche zu verbauen. (also z.B. statt 3k3 einmal zwei 
Stück 6k8)

Mein Eindruck ist aber, das dein kurzer Bus von Nachbarleitungen gestört 
wird, und daruf solltest du dich mal konzentrieren. Die kurze Länge des 
Busses kann es ja nicht sein. Evtl. sproddelt der Motortreiber in den 
Bus oder verseucht die Versorgungsspannung zu sehr.

von Ingo (Gast)


Lesenswert?

Ist das was im Hobby-Bereich oder soll es was kommerzielles werden?
Hast du die Platine selbst geroutet? Hast du Erfahrung im Routen?
Hast du I2C schon mal über längere Zeit ohne Motortreiber betrieben?
Treten die Fehler dann auch auf?

von Florian K. (f-kae)


Angehängte Dateien:

Lesenswert?

Matthias Sch. schrieb:
> Die in deinen Bildern kommt vermutlich von den 470pF Kondensatoren. Das
> ist viel zu viel und verschleift dir die Flanken. Wenn du Einstreuungen
> in den Bus vermutest, nimm deutlich kleinere C im Bereich von 22pF bis
> max. 100pF.

In den Bildern 5-8 sind keine Kondensatoren(470pF) über den Pull-Ups!

> Terminierung ist strenggenommen der falsche Ausdruck (mea culpa) , ich
> meine damit die Pullup Widerstände, eine richtige Terminierung gibts bei
> I2C ja nicht. In schwierigen Fällen wäre es also eine Möglichkeit, die
> Pullups im Wert zu verdoppeln, dafür aber sowohl am Anfang als auch am
> Ende des Busses  welche zu verbauen. (also z.B. statt 3k3 einmal zwei
> Stück 6k8)

Ich kann auf der Platine leider keine Änderungen in der Form vornehmen, 
also käme für mich nur der Austausch von 4,7k mit 3,3k oder 1k in Frage.

> Mein Eindruck ist aber, das dein kurzer Bus von Nachbarleitungen gestört
> wird, und daruf solltest du dich mal konzentrieren. Die kurze Länge des
> Busses kann es ja nicht sein. Evtl. sproddelt der Motortreiber in den
> Bus oder verseucht die Versorgungsspannung zu sehr.
Es muss wohl an der Platine selbst liegen, weil mit einer anderen 
Version funktioniert es mit den selben Motortreibern...


Ingo schrieb:
> Ist das was im Hobby-Bereich oder soll es was kommerzielles werden?
Naja es ist meine Diplomarbeit, insofern fällt es eher in den 
Hobbybereich, da kein Vertrieb von dem Ganzen statt finden wird.

> Hast du die Platine selbst geroutet? Hast du Erfahrung im Routen?
Ja ich habe die Platine selbst geroutet und nein ich habe keine 
Erfahrung, es ist das erste mal für mich gewesen! :/ Ich bin wohl kein 
Naturtalent, obwohl die erste Variante funktioniert hat.

> Hast du I2C schon mal über längere Zeit ohne Motortreiber betrieben?
> Treten die Fehler dann auch auf?

Naja diesen I2C-Bus eigentlich nicht, maximal 3-Minuten ca. Mit einer 
anderen Platine und den selben Motortreibern habe ich allerdings schon 
deutlich längere Zeiträume überwunden 15 Minuten, viel länger ist auch 
nicht notwendig, wobei das Problem dort sporadisch auch schon einmal 
vorkam, aber eher selten!

EDIT:

Ich wage es, mal einen Teil meines Layouts zu posten. Vielleicht lässt 
sich anhand diesen Auschnitts schon ein mögliches Problem 
identifizieren.

LIPO-Stecker: Es gibt eine weitere Platine für die Stromversorgung mit 
Spannungsüberwachung(daher sind die I2C-Leitungen an dem Stecker)

I2C-Stecker: Anschluß für die Motortreiber.

Sind die beiden Spannungsführenden Leitungen 3,3V und 5V auf der 
Oberseite der Platine direkt unter den Pins problematisch? Ich könnte 
sie am anfang des Lipo-Stecker durchritzen und dann mit Fädeldraht auf 
der Unterseite verlegen.

von spontan (Gast)


Lesenswert?

Die Bilder der Oszillogramme sind, wie oben schon erwähnt, recht 
grausam.
So große Cs haben auf dem Bus nix verloren.

Die Probleme sind auf den Bildern auch gar nicht zu erkennen. Die 
Ausfälle hast Du ja nicht dokumentiert. Also liegen die Probleme ganz wo 
anders.

Wie schauen die Leitungsführungen der Stromversorgungen aus? Des 
Leistungsteils? Die Masseführung? Hast Du Störungen vom Netz her? Mach 
doch mal Fotos des Aufbaus.

von Ingo (Gast)


Lesenswert?

und vielleicht ein PDF von der Schaltung...

von Florian K. (f-kae)


Angehängte Dateien:

Lesenswert?

Meintest du so eine PDF?

Also Störungen von der Spannungsquelle schließe ich aus, da meine erste 
Version (ein anderes Hardwarelayout) funktioniert hat.

von Ingo (Gast)


Lesenswert?

Ich dachte eigentlich mehr daran,
welches Bauteil wie verschaltet ist.
"Schematic"
Ist das ein Quadrocopter (bzw. wie heißen die Dinger dann mit 6 
Motoren)?

von Florian K. (f-kae)


Angehängte Dateien:

Lesenswert?

Hexacopter nennt sich das mit sechs Motoren :)

von spontan (Gast)


Lesenswert?

>Also Störungen von der Spannungsquelle schließe ich aus, da meine erste
>Version (ein anderes Hardwarelayout) funktioniert hat.

Ist ja interessant...was man alles ausschließen kann.

Nimm halt die erste Version und vergleich sie mit der fehlerhaften 
Version.
Ist das so schwer?

Das ist kein Schaltplan.
Das ist im höflichen Fall ein Suchbild, aber realistisch eine Zumutung.

Der Aufbau sieht auch nicht so wirklich vertrauenserweckend aus. Was 
sind das für Angst-Elkos? Bringen die was? Auf der ausgeschlossenen 
Spannungsversorgung?


Du hast ne Menge Antennen aufgebaut, alles Eingänge für Störungen.

von Florian K. (f-kae)


Lesenswert?

spontan schrieb:
>>Also Störungen von der Spannungsquelle schließe ich aus, da meine erste
>>Version (ein anderes Hardwarelayout) funktioniert hat.
>
> Ist ja interessant...was man alles ausschließen kann.
>
> Nimm halt die erste Version und vergleich sie mit der fehlerhaften
> Version.
> Ist das so schwer?
>
> Das ist kein Schaltplan.
> Das ist im höflichen Fall ein Suchbild, aber realistisch eine Zumutung.
>
> Der Aufbau sieht auch nicht so wirklich vertrauenserweckend aus. Was
> sind das für Angst-Elkos? Bringen die was? Auf der ausgeschlossenen
> Spannungsversorgung?
>
>
> Du hast ne Menge Antennen aufgebaut, alles Eingänge für Störungen.

Mir ist bewusst, das ich keine schöne Ausarbeitung des Ganzen realisiert 
habe (vermutlich nicht mal unsauber sondern vermutlich noch 
schlimmer..). Ich habe alles zum ersten mal gemacht und habe allgemein 
vorher keinerlei Praxis erfahrung gehabt.

Hilfreich wäre für mich allerdings, wie ich mein aktuelles Problem 
bezogen auf den I2C2-Bus lösen kann.

von spontan (Gast)


Lesenswert?

Fragen beantworten. Antennen kürzen oder schirmen, oder vermeiden.

von Florian K. (f-kae)


Lesenswert?

spontan schrieb:
> Fragen beantworten. Antennen kürzen oder schirmen, oder vermeiden.

Mit den Antennen meinst du die ganzen "derzeit ungenutzen" Pin-Leisten? 
Diese am Besten wieder auslöten, oder gibt es eine andere Möglichkeit 
diese, auf einfachem Wege, abzuschirmen?

von Neuer (Gast)


Lesenswert?

Florian K. schrieb:
>> Hast du I2C schon mal über längere Zeit ohne Motortreiber betrieben?
>> Treten die Fehler dann auch auf?
>
> Naja diesen I2C-Bus eigentlich nicht, maximal 3-Minuten ca. Mit einer
> anderen Platine und den selben Motortreibern habe ich allerdings schon
> deutlich längere Zeiträume überwunden 15 Minuten, viel länger ist auch
> nicht notwendig, wobei das Problem dort sporadisch auch schon einmal
> vorkam, aber eher selten!

Korrigiere mich wenn ich falsch liege, aber ich finde es schwierig die 
erste Variante "funktionierend" zu bezeichnen, nur weil der Fehler 
sporadisch und selten auftaucht. Der Fehler wurde in der zweiten 
Variante, aufgrund veränderter Bedingungen nicht verursacht, sondern nur 
verstärkt.

Vielleicht stimmen deine Timings nicht und aufgrund hoher Buskapazitäten 
in der zweiten Variante tritt dieser Fehler gehäuft auf.

Am Anfang hast du ja sowas geschrieben wie

Florian schrieb:
> 20 reale Sekunden, 25 Sekunden auf der Platine
> sind
...da kann doch schon was nicht stimmen.

von spontan (Gast)


Lesenswert?

Nein. Antennen sind die Drähte über die der Strom der Motoren fließt. 
Die liegen lustig in der Gegend rum und blasen Dir Störungen durch Luft.

Und wie NEUER schrieb: Funktioniert hats wohl noch nie so richtig.

Finger weg von den Cs am I2C, weg mit den Störungen von den 
Motortreibern.

Und was machen die erwähnten Elkos? Helfen die was?

von Falk B. (falk)


Lesenswert?

Möglicherweise ein Masseproblem, wenn die Motoren ordentlich Strom 
ziehen. Dagegen hilft strenge sternförmige Masseführung.

von Florian K. (f-kae)


Lesenswert?

Neuer schrieb:
> Korrigiere mich wenn ich falsch liege, aber ich finde es schwierig die
> erste Variante "funktionierend" zu bezeichnen, nur weil der Fehler
> sporadisch und selten auftaucht. Der Fehler wurde in der zweiten
> Variante, aufgrund veränderter Bedingungen nicht verursacht, sondern nur
> verstärkt.
Ja ehrlich gesagt bin ich auch erst während ich das geschrieben habe auf 
die Gemeinsamkeit des Problems gekommen. Vorher war es so, das ich ein 
paar Minuten über dem Boden schweben konnte und plötzlich die 
Kommunikation zu den Motoren weg war... Das konnte ich mir bis dahin 
nicht erklären.


> Vielleicht stimmen deine Timings nicht und aufgrund hoher Buskapazitäten
> in der zweiten Variante tritt dieser Fehler gehäuft auf.
Wie kann ich das Problem der Timings denn lösen, ist das nur 
Software-technisch?

spontan schrieb:
> Nein. Antennen sind die Drähte über die der Strom der Motoren fließt.
> Die liegen lustig in der Gegend rum und blasen Dir Störungen durch Luft.
>
> Und wie NEUER schrieb: Funktioniert hats wohl noch nie so richtig.
Also das Problem tritt bereits mit einem Strombegrenzenden Netzteil auf, 
ohne das sich die Motoren überhaupt drehen. Die Stromaufnahme liegt bei 
ca 0,4A in diesem Zustand. Das Netzteil begrenzt Ströme über 1,5A.


> Finger weg von den Cs am I2C, weg mit den Störungen von den
> Motortreibern.
>
> Und was machen die erwähnten Elkos? Helfen die was?
Ehrlichgesagt bin ich mir nicht sicher ob die großen Elkos benötigt 
werden, ich habe das so von einem anderen Projekt übernommen, da die 
Spannung am Eingang möglichst glatt sein soll.
Ich bin durchaus offen für Anregungen, soll ich die Elkos mal 
herunternehmen und schauen ob sich etwas bessert, oder ist eine Wirkung 
von den Elkos auf mein konkretes I2C2Bus-Problem eher unwahrscheinlich.

Falk Brunner schrieb:
> Möglicherweise ein Masseproblem, wenn die Motoren ordentlich Strom
> ziehen. Dagegen hilft strenge sternförmige Masseführung.
Die Hardware kann ich leider nicht mehr verändern...

von Jörg E. (jackfritt)


Lesenswert?

Du begrenzt die stromaufnahme damit sich die Motoren nicht drehen? Oder 
hast du die Motoren abgeklemmt?
Niemals die stromaufnahme von einem Netzteil begrenzen. Damit 
produzierst du auch Probleme. Lieber erstmal alle stromfressenden 
Komponenten abstecken und probieren
Ob die Signale dann einwandfrei sind.

von Frank M. (frank_m35)


Lesenswert?

Du hättest eine GND Plane verwenden sollen, also zumindest Bottom mit 
GND fluten.

Du kannst, damit es übersichtlicher für uns ist, einmal den Show Befehl 
in Eagle verwenden und im Board dann die I2C2 Leitungen hervorheben und 
das Bild posten, GND hervorheben und ein Bild posten und VCC hervorheben 
und ein Bild posten. Dann sieht man schneller wie verzwackt du geroutet 
hast :-D

Der Motortreiber, der über I2C2 angeschlossen ist befindet sich auf 
einer externen Platine, oder? Du könntest versuchen deine Sensore 
Platine abzuschirmen (isolierte Alufolie drum rum wickeln) und das I2C2 
Kabel anders zu gestalten, GND, SCK, GND, SDA, GND.

von Florian K. (f-kae)


Angehängte Dateien:

Lesenswert?

Jörg Esser schrieb:
> Du begrenzt die stromaufnahme damit sich die Motoren nicht drehen? Oder
> hast du die Motoren abgeklemmt?
> Niemals die stromaufnahme von einem Netzteil begrenzen. Damit
> produzierst du auch Probleme. Lieber erstmal alle stromfressenden
> Komponenten abstecken und probieren
> Ob die Signale dann einwandfrei sind.
Ich begrenze zwar den Strom und die Motoren sind nicht abgeklemmt, aber 
ich versuche sie ja auch garnicht anzudrehen! Wie oben geschrieben, 
begrenzt das Netzteil auf ca 1,5-2A und im Normalzustand ohne drehende 
Motoren besitzt das gesamte Gerüst eine Stromaufnahme von ca 0,4A. Wie 
in Bild_7 zu erkennen, schicke ich eine Null an die Motoren, was 
bedeutet, sie sollen sich nicht drehen!
Um dieses Problem auszuschließen, habe ich das Ganze gerade noch einmal 
mit dem geladenen Lipo ausprobiert. Sobald ich den I2C-Stecker in die 
Buchse stecke, funktionierts nicht mehr.

EDIT: Übrigens fängt meine LED an zu flackern, wenn ich die Motoren 
ansprechen will, allerdings passiert das auch schon ohne angeschlossene 
Motortreiber! Normalerweise leuchtet sie durchgängig!

Frank M. schrieb:
> Du hättest eine GND Plane verwenden sollen, also zumindest Bottom mit
> GND fluten.
Ja ich gebe dir Recht :/


> Du kannst, damit es übersichtlicher für uns ist, einmal den Show Befehl
> in Eagle verwenden und im Board dann die I2C2 Leitungen hervorheben und
> das Bild posten, GND hervorheben und ein Bild posten und VCC hervorheben
> und ein Bild posten. Dann sieht man schneller wie verzwackt du geroutet
> hast :-D
Bilder siehe Anhang

> Der Motortreiber, der über I2C2 angeschlossen ist befindet sich auf
> einer externen Platine, oder? Du könntest versuchen deine Sensore
> Platine abzuschirmen (isolierte Alufolie drum rum wickeln) und das I2C2
> Kabel anders zu gestalten, GND, SCK, GND, SDA, GND.
Genau alle 6 Motortreiber befinden sich auf externen Platinen. Ja daran 
habe ich auch schon gedacht, seltsam ist halt nur das es mit meiner 
ersten Version der Platine ohne jegliche Abschirmung "funktioniert" hat. 
Ich werde es aber auch nochmal probieren.

EDIT2:
Interessanterweise blinkt die LED nur mit dem Lipo! Mit dem 
Strombegrenzenden Netzteil leuchtet sie durchgängig! Der Lipo ist 
brandneu und ist erst einmal voll geladen worden. Die Spannung ist 
seitdem auch noch nicht unter 13,8V geraten.

von Florian K. (f-kae)


Lesenswert?

Mal ne blöde Frage, kann ich mit meinem Oszi irgendwie mein VCC messen, 
ohne das ich die Messung mit meinem Oszilloskop selber wieder verfälsche 
(durch den Masse-Anschluß des Oszis auf der Platine)? Und wie misst man 
GND?

von Frank M. (frank_m35)


Lesenswert?

Die LED flackern, da du die Widerstandswerte falsch gewählt hast. 
Momentan hast du 22k Pull-Down und 47k vom uC zur Basis. Das macht 
keinen Sinn. Der Pull-Up/Down Widerstand muss deutlich größer als der 
Widerstand von uC zu Basis sein, sonst wird das uC Signal vom uC ja vom 
Pull-up/down Widerstand überlagert und kommt nicht durch.
Dein Transistor schaltet vermutlich gerade so durch, wenn nun ein 
Störsignal auf die auch noch recht hochohmige Leitung kommt, dann fängt 
der Transistor an zu spinnen.
Nimm 1k von uC zu Transistor und 47k als Pull-Down

Warum das nur mit dem LiPo passiert, vermutlich weil der Buck-Converter 
nicht ganz sauber gefiltert ist, im Gegensatz zu dem Labornetzgerät, und 
du ein starkes Ripple auf der Versorgungsspannung hast.

Der Elko, der hier so lieblich Angst-Elko genannt wurde, ist auch eher 
ein Puffer und glättet weniger.
Du könntest vielleicht noch in die Versorgungsleitung zu den ICs jeweils 
eine Ferrit-Perle setzen und schauen, dass die ICs auch mit 
außreichenden Keramik-Kondensatoren umgeben sind.

Falls möglich kannst du ja mal das Ripple auf der Versogrungsspannung 
messen (Oszi im AC modus, an GND und VCC anschließen, verfälschen 
dürftest du da nichts groß) Und eben versuchen die Versogrungsspannung 
weiter zu stabilisieren.

Sehe ich das richtig, dass du pro Motor eine Motorsteuerung hast, also 
hast du am Ende 6 Geräte am I2C Bus hängen? Falls ja, dann musst du auch 
unbedingt die 4.7k reduzieren:
http://dsscircuits.com/articles/effects-of-varying-i2c-pull-up-resistors.html
ebenso kannst du versuchen nur mit 100kHz zu arbeiten, sofern du mit 
400kHz bisher arbeitest.

Aber auf alle Fälle alle I2C Kabel mit GND abschirmen.

PS:
Bitte höre auf zu behaupten die alte Schaltung hätte ja funktioniert. 
Hat sie nicht! Sie war nur stabiler, aber hat ebenso wie die neue nicht 
zuverlässig funktioniert.

von Florian K. (f-kae)


Angehängte Dateien:

Lesenswert?

@Frank M.: Vielen, vielen Dank für die umfangreiche Antwort und ja du 
hast Recht die alte Platine hat nicht 100%ig funktioniert (zumindest 
konnte ich diese allerdings (wenn auch eingeschränkt) nutzen).

Eine Sache irritiert mich gerade noch zusätzlich! Ich habe mal den 
Ausgang des Oszillator-Quarz mit dem Oszilloskop gemessen(siehe Anhang)
Ich errechne da eine Frequenz von ca 31Hz. Eigentlich ist es aber ein 
8MHz Quarz. Verstehe ich etwas falsch oder ist das "Ding" kaputt?

EDIT: Zur Errinerung, ich habe sowohl mit dem externen(Quarz-Oszi) als 
auch mit dem internen Quarz, keine vernüftigen Timings.
Unter beiden Einstellungen bekomme ich für 10 reale Sekunden ca 13 im 
Controller

von Frank M. (frank_m35)


Lesenswert?

Wenn er kaputt wäre, wie kann der uC dann überhaupt laufen? Und wie kann 
der I2C Bus dann ein Signal mit 400kHz erzeugen? Also irgendwas passt da 
bei deiner Messung nicht.


Und wenn du auch mit dem internen etwas falsches raus bekommst, dann 
machst du auch was grundlegendes falsch.

Du kannst auf einen Ausgang ja mal ein PWM Signal legen mit einer 
bestimmten Frequenz und dieses Signal dann am Oszi messen.


Noch was zur Platine:
Du meintest zwar du kannst nichts mehr ändern, aber ich würde es dir 
wärmstens empfehlen. Zum einen ist es mir schleierhaft warum du alle 
Sensoren in doppelter Ausführung hast von unterschiedlichen Herstellern. 
Den LSM330DLC mit Gyro und Acc, dann einen Acc mit Magnetsensor extra, 
einen Gyro extra, einen Magnetsensor extra.
Ebenso hast du sie gut verstreut über die ganze Platine gesetzt und 
nicht in die Mitte des Hexacopters oder in einem System angeordnet. D.h. 
jeder Sensor braucht eine extra kalibrierung und extra Berechnungen um 
den Offset vom Mittelpunkt zu korrigieren. Der Vorteil des LSM330DLC ist 
ja unter anderem, dass Gyro und Acc in einem Package dicht beieinander 
sitzen und idealerweise würde sie in der Mitte des Hexacopters sitzen.
Beim HMC5883L bspw. hast du auch die Hinweise im Datenblatt nicht 
beachtet und Leitungen, ja sogar Bauteile, unter dem Sensor geführt, was 
sich negativ auf dessen Funktion auswirken kann.
Bauteile sind sowohl oben als auch unten, obwohl auf der Oberseite für 
alle Bauteile genug Platz gewesen wäre.

von Florian K. (f-kae)


Angehängte Dateien:

Lesenswert?

Frank M. schrieb:
> Du kannst auf einen Ausgang ja mal ein PWM Signal legen mit einer
> bestimmten Frequenz und dieses Signal dann am Oszi messen.

Also, ich habe mit dem Timer1 (84MHz) eine LED auf einen PWM-Ausgang 
gelegt. Als Prescaler habe ich 560 eingestellt und als Overflow-Wert 
3000.

Wenn ich jetzt rechne 84MHz/560 = 150kHz
150kHz/3000 = 50Hz entspricht 20ms

Als CompareValue habe ich 1500 ausgewählt. Das heißt die LED sollte für 
die Hälfte der Zeit an und für die Hälfte der Zeit aus sein.

Müsste die Periode demnach nicht auch 20ms sein.

Ich bin etwas verwirrt...

von Neuer (Gast)


Lesenswert?

Ich hab mit diesem Controllertyp noch nie gearbeitet, aber an irgend 
einer Stelle musst du dem Controller doch mitteilen, mit welcher 
Frequenz deine Taktquelle schwingt.

Bezüglich deiner 31Hz kann es sich auch um einen Messfehler handeln. Wie 
sieht denn das Signal aus wenn du die Zeitablenkung verkleinerst (da du 
bei einem 8Mhz eine Periodendauer von 125ns erwartest, stellst du die 
Zeitablenkung in dieser Größenordnung ein)?

von Florian K. (f-kae)


Lesenswert?

Neuer schrieb:
> Ich hab mit diesem Controllertyp noch nie gearbeitet, aber an irgend
> einer Stelle musst du dem Controller doch mitteilen, mit welcher
> Frequenz deine Taktquelle schwingt.

Ich arbeite mit einer Library und stelle den Takt so ein:
1
initClock()
2
{
3
  xpcc::stm32::Clock::enablePll(xpcc::stm32::Clock::PLL_HSI, 8, 168);
4
  return xpcc::stm32::Clock::switchToPll();
5
}
Inzwischen habe ich den externen Quarz-Oszi nochmal ausgelötet, um an 
dieser Stelle, Probleme auszuschließen. Der Code oben ist also für den 
internen Quarz mit 16MHz ausgelegt.

von Frank M. (frank_m35)


Lesenswert?

Ich habe auch noch nie mit ARM gearbeitet, das mit der PWM sieht doch 
aber gut aus.
Du denkst du hast eine Periode von 20ms eingestellt, in echt bekommst du 
aber eine Periode von 10ms und die sehr sauber und schön. D.h. der uC 
läuft schon mal nicht mit 31kHz :-D

Ich würde mal spontan sagen, der Timer arbeitet nicht mit 84MHz sondern 
mit den 168 MHz die der uC maximal abkann.

von Dietrich L. (dietrichl)


Lesenswert?

Florian K. schrieb:
> Bilder siehe Anhang

GND.gif:
Auch wenn es hart klingt: mit diesem mickrigen und zerfledderten 
GND-Netz kannst Du nicht mit einem stabilen Arbeiten rechnen!

VCC ist nicht so kritisch, denn das kann man ja mit genügend 
Stützkondensatoren zum GND hin abstützen. Aber dann muss mindestens der 
GND (das "Fundament", auf das sich alle Signale beziehen!) stabil genug 
sein.

Testweise könnte man eine dicke Masseschiene einmal außen herum legen 
und an mehreren Punkten mit GND verbinden. Oder sogar besser ein Stück 
Leiterplatte in der Mitte mit Drahtstücken an die verschiedenen GNDs 
anlöten - quasi ein "schwebender" GND-Layer.

Bei einer neuen Leiterplatte kommt man bei der Packungsdichte kaum um 
einen Multilayer herum. Sparversion: Leiterplatte etwas vergrößern und 
außen herum einen einige Millimeter breiten GND-Rand.
(Ja, ich weiß, jetzt werden welche sagen "Ein Ring ist Mist, der fängt 
sich wie eine Trafowicklung noch mehr Dreck ein". Im Prinzip ja, aber 
ich vermute, das ist besser wie jetzt, zumindest wenn der Ring breit 
genug ist.)

Gruß Dietrich

von Florian K. (f-kae)


Lesenswert?

Frank M. schrieb:
> Ich habe auch noch nie mit ARM gearbeitet, das mit der PWM sieht doch
> aber gut aus.
> Du denkst du hast eine Periode von 20ms eingestellt, in echt bekommst du
> aber eine Periode von 10ms und die sehr sauber und schön. D.h. der uC
> läuft schon mal nicht mit 31kHz :-D
>
> Ich würde mal spontan sagen, der Timer arbeitet nicht mit 84MHz sondern
> mit den 168 MHz die der uC maximal abkann.

Irgendwie muss ich da einen Faktor falsch eingerechnet haben oder was 
auch immer... Mir ist mein Problem mit den Timings heute allerdings noch 
aufgefallen und zwar habe ich die Zeit über eine delay Funktion 
bestimmt, diese wiederum wird aber von Interrupts unterbrochen. Wieso 
das stolze 3 Sekunden innerhalb von 10 Sekunden sind kann ich zwar nicht 
nachvollziehen aber gut, mit einem absoluten Timer habe ich 20Sekunden 
exakt abmessen können!

Ich habe inzwischen 2,2k Ohm Pull-Ups an den Bus gemacht und werde dann 
noch mal eine zusätzliche Schirmung am I2C-Kabel anbringen. Mal schaun 
was sich dann ergibt. Hoffentlich gibts dann morgen irgendwelche 
Ergebnisse...

Dietrich L. schrieb:
> GND.gif:
> Auch wenn es hart klingt: mit diesem mickrigen und zerfledderten
> GND-Netz kannst Du nicht mit einem stabilen Arbeiten rechnen!
Zumindest bleibt mir diese Erfahrung nun wohl für immer im Kopf und den 
Fehler begehe ich kein zweites mal... :)

von Matthias S. (Firma: matzetronics) (mschoeldgen)


Lesenswert?

Wäre auch mein Vorschlag gewesen. Mach eine kräftige Masseverbindung von 
allen Motoren direkt zur Batterie und führe sie möglichst weit weg von 
allen signaltragenden Leitungen.

Florian K. schrieb:
> Und wie misst man
> GND?

Indem du die Masseklemme deines Oszis direkt am Minuspol der Stromquelle 
anschliesst, also am Akku Minus oder Netzteil Minus und dann mit dem 
Tastkopf deine Motor-GND, MC-GND usw. unter Last auf Störungen misst. Im 
Idealfall sollte da gar nichts sein, da die Masse einen sehr niedrigen 
Widerstand bildet, bei dir allerdings wirst du an den GND lustige 
Sproddler und Spitzen sehen, sobald die Motoren drehen.

Man muss auch mal dazu sagen, das I2C für EM-verseuchte Umgebungen nicht 
gedacht ist. Eine einzige Spitze auf z.B. der CLK Leitung zerstört die 
Übertragung - aus gutem Grund wird I2C eigentlich nur in Geräten der 
U-Elektronik benutzt und nicht in z.B. Kraftfahrzeugen. Eine 
Fehlerkorrektur ist auch nicht implementiert, so das ein Master 
eigentlich nur warten kann, ob der Slave was tut oder er zumindest mit 
ACK antwortet.

von Florian K. (f-kae)


Angehängte Dateien:

Lesenswert?

Matthias Sch. schrieb:
> Indem du die Masseklemme deines Oszis direkt am Minuspol der Stromquelle
> anschliesst, also am Akku Minus oder Netzteil Minus und dann mit dem
> Tastkopf deine Motor-GND, MC-GND usw. unter Last auf Störungen misst. Im
> Idealfall sollte da gar nichts sein, da die Masse einen sehr niedrigen
> Widerstand bildet, bei dir allerdings wirst du an den GND lustige
> Sproddler und Spitzen sehen, sobald die Motoren drehen.
Du hattest vollkommen recht (siehe Bilder)! :(

Wo kommen diese Spitzen denn eigentlich genau her? Liegt das 
möglicherweise an meiner Powerplatine, die aus den 14,8V, 3,3 und 5V 
generiert? Die Motoren drehen sich übrigens nicht, während der 
Aufnahmen.

Wie sieht denn nun eine konkrete Lösung dafür aus, damit meine ich mit 
was für Materialien kann ich mehr oder weniger provisorisch eine 
Möglichkeit finden, diese Störungen zu unterdrücken?

von Jörg E. (jackfritt)


Lesenswert?

Wie schon gesagt wurde. GND mit Draht etc verstärken.
Aber das ist halt alles rumprobiererei.

von Frank M. (frank_m35)


Lesenswert?

jup, viel rumprobieren.

Messe mal einfach nur deine Powerplatine unter bestimmten Bedingungen 
durch. Poste ggf. den Schaltplan / Aufbau hier, vielleicht hat der ein 
oder andere einen hilfreichen Tipp parat.

Versuche den Trick mit der Massefläche was auch gleichzeitig zur 
Abschirmung dient, ...

von Florian K. (f-kae)


Angehängte Dateien:

Lesenswert?

Hallo zusammen,

nach einigen Tagen muss ich mich dem Problem immer noch geschlagen 
geben.

Ich mache mal eine Zusammenfassung:

Es gibt drei Platinen:
v1: große Platine mit Stromversorgung und Sensoren
v2Sensor: kleine Platinen nur Sensoren
v2Power: kleine Platine nur für die SPannungsversorgung

Das Ziel: beide v2 Platinen zusammen sollen funktionieren
Das Problem: die v2Power erzeugt starke SPannungsspitzen im GND (siehe 
vorheriger Post mit Osziaufnahmen.

Funktionsfähige Variante 1: v1 Powerteil über Kabel an v2Sensor: KEINE 
SPANNUNGSSPITZEN

(EDIT:NICHT-)Funktionsfähige Variante 2: v2Power 3,3V-Teil über Jumper 
deaktiviert, ist für mich allerdings keine Lösung da ich ja die 3,3V 
brauche (keine spannungsspitzen im GND)
EDIT: Funktioniert doch nicht, ich hatte vergessen den 5V Verbraucher 
anzuschließen!!!!!

Funktionsfähige Variante 3: v2Power alleine mit 3,3V und 5V aktiviert 
allerdings ohne Verbraucher (keine Spannungsspitzen im GND)

Vermutung:
Kann es vielleicht an der Spule(Induktivität) liegen, welche direkt 
neben der GND-Leitung liegt, welche dort Spannungen "einspeist"? (Siehe 
Bild) Fällt jemandem eine "gute" Lösung dazu ein, wie ich Testen kann, 
ob es daran liegt, ohne den GND-Pin abzuknippsen??

von Michael R. (Firma: Brainit GmbH) (fisa)


Lesenswert?

Kannst du mal Schaltplan und layout deiner Power-Platine posten?

im übrigen: Spannungsspitzen an GND gegen was?

von Matthias S. (Firma: matzetronics) (mschoeldgen)


Lesenswert?

Florian K. schrieb:
> Kann es vielleicht an der Spule(Induktivität) liegen, welche direkt
> neben der GND-Leitung liegt, welche dort Spannungen "einspeist"?

Kann natürlich auch sein, wahrscheinlicher ist aber, das die 
Masseführung nicht so niederohmig ist, wie sie eigentlich sein sollte. 
Leistungsstufen sollten mit den Steuerstufen sternförmig am Netzteil 
oder an den Hauptversorgungsanschlüssen zusammengeführt werden und eben 
nicht quer über z.B. eine Controllerplatine laufen. Wenn die Spule 
stören würde, würden die Spitzen mit der PWM Frequenz des Wandlers 
synchron sein.
Die andere Seite der Platine wäre zur Beurteilung übrigens gut geeignet 
:-)

Was ich auf der Seite sehe, ist allerdings wirklich dünnes Bahnmaterial, 
ich hoffe du hast die Versorgungsleitungen stärker ausgeführt.
Noch ein Hinweis: Siehe beim nächsten Layout als Nachbarn der I2C 
Leitungen immer erstmal einen GND vor, am besten sogar noch einen GND 
zwischen SCL und SDA.

Michael Reinelt schrieb:
> im übrigen: Spannungsspitzen an GND gegen was?

Florian K. schrieb:
>> Indem du die Masseklemme deines Oszis direkt am Minuspol der Stromquelle
>> anschliesst, also am Akku Minus oder Netzteil Minus und dann mit dem
>> Tastkopf deine Motor-GND, MC-GND usw. unter Last auf Störungen misst. Im
>> Idealfall sollte da gar nichts sein, da die Masse einen sehr niedrigen
>> Widerstand bildet, bei dir allerdings wirst du an den GND lustige
>> Sproddler und Spitzen sehen, sobald die Motoren drehen.
> Du hattest vollkommen recht (siehe Bilder)! :(

von Frank M. (frank_m35)


Lesenswert?

Die Leiterbahnen sind sehr dünn, sehen unnötig lang aus und scheinen 
unötig oft die Seite zu wechseln. Gab es kein Referenzdesign zu deinem 
Spannungswandler? Am Ende der Datenblätter steht auch meist etwas zu PCB 
Design Guidelines oder so, an die man sich schon halten sollte ;-)

Für solche Spannungswandler verwende ich auch immer nur geschirmte 
Spulen, deine ist ungeschirmt. Vermutlich gibt es mit ähnlichem 
Pinabstand eine geschirmte, wobei ich bezweifle, dass ohne neue 
Leiterplatte dort wenig zu optimieren ist.

Deine Kondensatoren sehen auch sehr klein aus, kannst du dazu näher 
Angaben machen (Am Ein und Ausgang die Kapazität, Spannung, 
Dielektrikum)

von Michael R. (Firma: Brainit GmbH) (fisa)


Lesenswert?

> Michael Reinelt schrieb:
>> im übrigen: Spannungsspitzen an GND gegen was?
>
> Florian K. schrieb:
>>> Indem du die Masseklemme deines Oszis direkt am Minuspol der Stromquelle
>>> anschliesst, also am Akku Minus oder Netzteil Minus und dann mit dem
>>> Tastkopf deine Motor-GND, MC-GND usw. unter Last auf Störungen misst. Im
>>> Idealfall sollte da gar nichts sein, da die Masse einen sehr niedrigen
>>> Widerstand bildet, bei dir allerdings wirst du an den GND lustige
>>> Sproddler und Spitzen sehen, sobald die Motoren drehen.

Ja, schon. Das linke Bild ist bezeichnet mit "AKKU_GND". Also hat er 
ausgehend von AKKU_GND gemessen. Nur: wohin?

Und selbst wenn er uns das sagt: Ein Schaltplan dieser Power-Platine 
wäre dann natürlich hilfreich...

von Florian K. (f-kae)


Angehängte Dateien:

Lesenswert?

Michael Reinelt schrieb:
> Kannst du mal Schaltplan und layout deiner Power-Platine posten?
>
> im übrigen: Spannungsspitzen an GND gegen was?

Ich habe mit dem Masseabgriff des Oszis am GND direkt am Lipo-Akku und 
mit dem Tastkopf an der Sensorplatine an einem GND. Wenn ich mit einem 
Durchgangsprüfer diese Leitung an den beiden Punkten berühre wird mir 
ein "Kurzschluß" angezeigt.

Mich wundert halt das es mit meiner alten Platine einwandfrei ohne 
jegliche Störung funktioniert!!! Ich habe beide Platinen selber gemacht 
(wie man offensichtlich erkennt) und beide Spannungsteile sind nahezu 
identisch bis auf die Enable-Jumper! Liegt hier vielleicht das Problem, 
fällt mir gerade auf.

Wie soll ich die Powerplatine posten? Als .brd und .sch also Eagle 
Dateien?

von Florian K. (f-kae)


Lesenswert?

EINGANG:
Eingangspsannung ist maximal 16V
C11: 0,47uF, 100V, Keramikkondensator
C100: 4,7uF, 16V (oh der scheint etwas klein zu sein), Tantalkondensator
C10,C12: 120uF, 63V, Elko

AUSGANG:
Ausgangsspannungen sind 3,3 oder 5V.
220uF: 10V, Tantalkondensator

Kann ich den C100 
(http://de.mouser.com/ProductDetail/Vishay-Sprague/595D475X0016A2T/?qs=sGAEpiMZZMuEN2agSAc2pgmA1GOqD4TvkDLKP%2fbpCWg%3d)

durch diesen 
(http://de.mouser.com/ProductDetail/Nichicon/F931V475KBA/?qs=sGAEpiMZZMuEN2agSAc2pv8OYuH0ThR7Gx2%2fziZ7gVA%3d)
ersetzen? Müsste passen, oder?

von Matthias S. (Firma: matzetronics) (mschoeldgen)


Lesenswert?

Florian K. schrieb:
> v1Platine.pdf

Ja nee, das ist ja ein Verhau... Wenn das tatsächlich eine 
Motorsteuerung werden soll, fehlen da die kräftigen GND Leitungen 
genauso wie ein brauchbares niederohmiges Vcc Netz. Auch gegen 
Übersprechen ist da nicht viel Vorsorge getroffen worden. Ich befürchte, 
da musst du nochmal zurück zum Router und eingreifen.
Wenn das ein STM32 ist, vermisse ich da auch die Abblock-C an jedem (!) 
Supplypärchen. Dann sproddelt schon der Port mit Störungen.
In meinen Motorsteuerungen mit STM32 hängt an jeden Paar ein 100n/10µF 
Kombo und damit sind die Signale perfekt sauber, selbst wenn der 4kW 
Motor Anlaufstrom zieht.

von Florian K. (f-kae)


Lesenswert?

Matthias Sch. schrieb:
> Florian K. schrieb:
>> v1Platine.pdf
>
> Ja nee, das ist ja ein Verhau... Wenn das tatsächlich eine
> Motorsteuerung werden soll, fehlen da die kräftigen GND Leitungen
> genauso wie ein brauchbares niederohmiges Vcc Netz. Auch gegen
> Übersprechen ist da nicht viel Vorsorge getroffen worden. Ich befürchte,
> da musst du nochmal zurück zum Router und eingreifen.
> Wenn das ein STM32 ist, vermisse ich da auch die Abblock-C an jedem (!)
> Supplypärchen. Dann sproddelt schon der Port mit Störungen.
> In meinen Motorsteuerungen mit STM32 hängt an jeden Paar ein 100n/10µF
> Kombo und damit sind die Signale perfekt sauber, selbst wenn der 4kW
> Motor Anlaufstrom zieht.

Die Motoren werden von der Platine nur über ein I2C-BUS angesprochen, 
die Versorgung läuft direkt vom Lipo zu den Motortreibern.

Ich bin wirklich sehr dankbar für die ganzen Hinweise!!! Aber momentan 
interessiert mich hauptsächlich wie ich die Störung aus dem GND bekomme, 
bzw wo sie herkommt.
Wie bereits erwähnt habe ich über v1 Power und Belastung mit v2Sensor 
keine Störungen im GND aber eben mit der v2Power und Belastung mit 
v2Sensor. Alleine an der dicke der Leitungen und Abblockkendensatoren 
kann es daher nicht liegen, das ist bei beiden Varianten im Prinzip 
gleich.

von Weingut P. (weinbauer)


Lesenswert?

OK, das nennt sich Ground bounce auf den Oszibildern, wobei sich beim 
Oszi auch immer die Frage stellt, ob es nicht die Oszimasse, sprich 
Erdung, ist die hüpft.

Der erste Weg wäre mal zu isolieren welcher Kamerad Dir da bei 
abgestellten Motoren so heftige Ströme generiert, dass die Masse 
springt, da brauchts schon einige mA.
Evtl. könnte man dem störenden Kameraden n ordentliches LC-Glied 
verpassen zur Entwöhnung.
Dann kannst Du mal schauen, ob sich Deine Sensoren softwaremäßig 
resetten lassen, ggf. nen zyklischen Reset schicken.
Die Massen der großen Verbraucher evtl. mit nem ordentlichen Draht über 
die Leiterplatte "brücken", damit die Ströme nichtmehr durch das dünne 
Netzwerk müssen. ... das wäre so mein Ansatz.

von Florian K. (f-kae)


Lesenswert?

Fhutdhb Ufzjjuz schrieb:
> OK, das nennt sich Ground bounce auf den Oszibildern, wobei sich beim
> Oszi auch immer die Frage stellt, ob es nicht die Oszimasse, sprich
> Erdung, ist die hüpft.
>
> Der erste Weg wäre mal zu isolieren welcher Kamerad Dir da bei
> abgestellten Motoren so heftige Ströme generiert, dass die Masse
> springt, da brauchts schon einige mA.
> Evtl. könnte man dem störenden Kameraden n ordentliches LC-Glied
> verpassen zur Entwöhnung.
> Dann kannst Du mal schauen, ob sich Deine Sensoren softwaremäßig
> resetten lassen, ggf. nen zyklischen Reset schicken.
> Die Massen der großen Verbraucher evtl. mit nem ordentlichen Draht über
> die Leiterplatte "brücken", damit die Ströme nichtmehr durch das dünne
> Netzwerk müssen. ... das wäre so mein Ansatz.

Von "Ground Bounce" habe ich noch nie etwas gehört, bei Wikipedia steht 
nicht sonderlich viel.

Wie bekomme ich denn eine Isoliereung hin? Also wie kann ich dem 
"Kamerad" auf die schliche kommen.

Komisch ist, das sowohl der 5V Teil als auch der 3,3V Teil diesen 
GroundBounce hervorruft. Und beide Teile sind grundsätzlich unabhängig.

Kann soetwas durch einen schlecht ausgewählten Pull-Up Widerstand 
passieren? Ich habe versucht über einen Jumper und einen Widerstand die 
Möglichkeit zu integrieren die Spannungsregler abzuschalten, allerdings 
ist mir schon aufgefallen, das nun im "AN" Zustand immer der Widerstand 
4,7kOhm zwischen 15V(Eingang) und Eingang liegt. Ein Pull-Down wäre wohl 
die richtige Option gewesen. Kann das einer bestätigen?

von Frank M. (frank_m35)


Lesenswert?

Das Problem wird eben dein falsches Layout sein, denn eigentlich hätte 
es so aussehen sollen:
http://datasheets.maximintegrated.com/en/ds/MAX1744EVKIT-MAX1745EVKIT.pdf
Dicke Leitungen, Bauteile dicht aneinander, Masseflächen und nicht die 
Bauteile auf beiden Seiten verstreut platzieren verbunden durch dünne 
lange Leitungen.

Warum bei der alten es zu funktionieren scheint, bei der neuen aber 
nicht, keine Ahnung, jedoch würde ich mich da auch nicht zu sehr dran 
klammern. Es ist offensichtlich, dass das Layout einfach falsch ist. Bei 
der neuen Variante hast du die Bauteile dichter übereinander platziert, 
wie z.B. den Pull-Up Widerstand direkt unter den Spannungswandler, 
insgesamt sieht das Layout gänzlich anders angeordnet aus, also als 
identisch würde ich das jedenfalls nicht ansehen.

Da du keine neue Platine machen willst, bleibt dir eben nur noch das 
Filtern übrig. Bspw. könntest du einfach Ferrit-Perlen (Ferrite Bead) am 
Eingang des Sensor-Boards noch platzieren, vielleicht hilft's, 
vielleicht auch nicht.

von Dietrich L. (dietrichl)


Lesenswert?

Florian K. schrieb:
> Komisch ist, das sowohl der 5V Teil als auch der 3,3V Teil diesen
> GroundBounce hervorruft. Und beide Teile sind grundsätzlich unabhängig.

Bleibt immer noch die Frage, ob das, was Du auf dem Oszi siehst, auch 
der Wahrheit entspricht.
Das Messen ist hier nicht so einfach. Du musst mindestens mit kurzem 
Masseanschluss, der direkt am Tastkopf angeschlossen ist, an den 
Bezugs-GND-Punkt gehen.
Und Du musst Dir immer klar sein, dass steile Flanken sehr hohe 
Frequenzanteile haben. Wenige Zentimeter Leitung haben eine 
Induktivität, die bei diesen Frequenzen nicht vernachlässigt werden 
kann. Außerdem halten sich hohe Frequenzen nicht mehr unbedingt an 
Leitungen und arbeiten gerne auch drahtlos ...

Gruß Dietrich

von Florian K. (f-kae)


Lesenswert?

Frank M. schrieb:
> Das Problem wird eben dein falsches Layout sein, denn eigentlich hätte
> es so aussehen sollen:
> http://datasheets.maximintegrated.com/en/ds/MAX1744EVKIT-MAX1745EVKIT.pdf
> Dicke Leitungen, Bauteile dicht aneinander, Masseflächen und nicht die
> Bauteile auf beiden Seiten verstreut platzieren verbunden durch dünne
> lange Leitungen.
>
> Warum bei der alten es zu funktionieren scheint, bei der neuen aber
> nicht, keine Ahnung, jedoch würde ich mich da auch nicht zu sehr dran
> klammern. Es ist offensichtlich, dass das Layout einfach falsch ist. Bei
> der neuen Variante hast du die Bauteile dichter übereinander platziert,
> wie z.B. den Pull-Up Widerstand direkt unter den Spannungswandler,
> insgesamt sieht das Layout gänzlich anders angeordnet aus, also als
> identisch würde ich das jedenfalls nicht ansehen.

Verdammt ich habe soetwas vermutet, bei der Platinev1 habe ich dieses 
Layout möglich exakt so wie im Datenblatt nachgebaut, bis auf die 
Masseflächen!

Welches Bauteil oder welcher Layout-Fehler wird denn das Problem 
höchstwahrschenlich verursachen? Ich nehme an, das ich auf GND die 
Schaltfrequenz des MAX1744 sehe, kann ich daraus eventuell das Problem 
auf D100 und D108 bzw. C5 und C7 begrenzen. Da am Ausgang das die beiden 
Verbindungen zu GND sind. Müssen die Dioden eventuell näher an die 
Induktivität, bzw eben auch auf die Oberseite?

Ich möchte wirklich um jeden Preis versuchen die Platine irgendwie noch 
funktionsfähig zu bekommen.

An dieser Stelle aber schon einmal vielen Dank für all die Kommentare 
und die Geduld! Ich denke ich habe mal wieder viel gelernt, zumindest 
etwas positives in meiner misslichen Lage :)

EDIT:
Ich könnte versuchen die Spule auf die Unterseite zu bekommen, zu D100 
und dem MOSFET M100. Sieht jemand einen Hoffnungsschimmer darin?

von Florian K. (f-kae)


Lesenswert?

Für welche Leitung ist es am wichtigsten das sie möglichst kurz ist.

-L2 -> R5
-L2 -> D100
-L2 -> M100
-L2 -> U2- PIN 6 (CS)

von Frank M. (frank_m35)


Angehängte Dateien:

Lesenswert?

Zitat Datenblatt:
'High-frequency switching regulators are sensitive to PC
board layout. Poor layout introduces switching noise into
the current and voltage feedback signals and may
degrade performance.'

Der ganze Hochfrequente Leistungsteil sollte so dicht und direkt 
angebunden sein wie nur möglich, d.h. bei dir:
M100, L2, D100, und wenn's geht auch R5, C7
Du kannst versuchen die Spule zum Mosfet zu bringen und damit die 
Leiterbahn die Quer über die Platine geht und durch die einen hohen 
Strom fließt zu kappen.

Aber ob es da nicht einfacher wäre eine neue Platine zu machen?

PS: Falls du tatsächlich nur das Sensorboard damit versorgst, so ist die 
Spannungsversorgung überdimensioniert und du wärst mit einem kleinen, 
integrierterem IC vollkommen ausgekommen der keinen externen Mosfet etc. 
braucht. So einen könntest du vermutlich sogar auch selbst auf einem 
Prototyping-Board aufbauen und auf deine Platine kleben und somit die 
Vorhandenen ICs 'ersetzen':
http://www.linear.com/product/LTC3621

Im Anhang ein Bild eines Step-Up Wandlers auf solch einem 
SMD-Prototyping Board in der Dead Bug Methode verlötet.

von Michael R. (Firma: Brainit GmbH) (fisa)


Lesenswert?

Frank M. schrieb:
> PS: Falls du tatsächlich nur das Sensorboard damit versorgst, so ist die
> Spannungsversorgung überdimensioniert und du wärst mit einem kleinen,
> integrierterem IC vollkommen ausgekommen

Das war auch meine Meinung. Wir wissen zwar alle nicht wieviel Leistung 
die Sensor-Boards brauchen, aber im Vergleich zu den 4 (oder 6?) Motoren 
des Kopters sicher vernachlässigbar. Ich würde sogar soweit gehen und 
sagen: Ein stinknormaler Längsregler hatte auch dicke gereicht...

von Florian K. (f-kae)


Lesenswert?

Ja in der Tat hätte wohl ein IC für die gesamte Spannungsversorgung 
gereicht, nächstes mal würde ich mich auch dafür entscheiden...

Hat jemand Erfahrungen mit provisorischen Lösungen auf Platinen, eignet 
sich Heißkleber oder doppelseitiges Klebeband um Bauteile zu fixieren? 
Oder gibt es vielleicht noch andere Vorschläge?

von Michael R. (Firma: Brainit GmbH) (fisa)


Lesenswert?

Florian K. schrieb:
> Ja in der Tat hätte wohl ein IC für die gesamte Spannungsversorgung
> gereicht, nächstes mal würde ich mich auch dafür entscheiden...
>
> Hat jemand Erfahrungen mit provisorischen Lösungen auf Platinen, eignet
> sich Heißkleber oder doppelseitiges Klebeband um Bauteile zu fixieren?
> Oder gibt es vielleicht noch andere Vorschläge?

Erm... es handlet sich um einen Kopter, nicht? Der Kopter als ganzes hat 
einen Wert von wieviel Euro? Und wieviel Wert hat er, wenn er in die 
"Humsphäre" eintritt?

merke: Beim Fliegen spart man nicht.

von Abdul K. (ehydra) Benutzerseite


Lesenswert?

Am Kap Arkona sucht gerade jemand verzweifelt seinen Kopter mit Cam. Hat 
an diverse Bäume Suchmeldung mit Belohnung aufgehangen...

Lege die Wandler einfach still und speise Versorgung provisorisch extern 
ein.

von Josef D. (jogedua)


Lesenswert?

Abdul K. schrieb:
> aufgehangen...
Das ist in diesem Forum jetzt gefühlt das 1001. Mal.
Jetzt muss ich doch mal einschreiten:
http://www.wer-weiss-was.de/theme143/article2715824.html

von Abdul K. (ehydra) Benutzerseite


Lesenswert?

Hm, die Belohnung war mir zu niedrig und die Familie nengelte mal 
wieder. Daher hatte ich mir das Plakat nicht näher angesehen. Wäre dir 
'angenagelt' lieber?

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.