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> ...
Interessanterweise funktioniert die Kommunikation sobald ich an SCL, SDA und GND ein Oszilloskop hänge. Kann mir jemand möglicherweise diesen Zusammenhang erklären?
>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?
dummy schrieb: > Was ist wenn du nur GND dranhängst? Das bringt nichts, dann bricht die Kommunikation auch sofort wieder ab.
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.
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...
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?
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?
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!!!
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!
>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.
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?!
>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!
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.
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?
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.
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?
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.
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?)
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.
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?
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.
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.
Meintest du so eine PDF? Also Störungen von der Spannungsquelle schließe ich aus, da meine erste Version (ein anderes Hardwarelayout) funktioniert hat.
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)?
>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.
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.
Fragen beantworten. Antennen kürzen oder schirmen, oder vermeiden.
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?
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.
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?
Möglicherweise ein Masseproblem, wenn die Motoren ordentlich Strom ziehen. Dagegen hilft strenge sternförmige Masseführung.
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...
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.
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.
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.
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?
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.
@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
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.
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...
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)?
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.
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.
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
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... :)
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.
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?
Wie schon gesagt wurde. GND mit Draht etc verstärken. Aber das ist halt alles rumprobiererei.
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, ...
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??
Kannst du mal Schaltplan und layout deiner Power-Platine posten? im übrigen: Spannungsspitzen an GND gegen was?
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)! :(
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)
> 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...
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?
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?
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.
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.
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.
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?
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.
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
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?
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)
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.
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...
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?
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.
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.
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
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.