PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : [ERLEDIGT] Motor entstören



Zeitsklave
07.06.2015, 13:54
Um das jetzt mal vom anderen Thema abzuheben (Die Ansteuerung an sich funktioniert ja einwandfrei) erstelle ich mal ein neues Thema im richtigen Forum ;)

Ich steuere mit einem Arduino Nano einen L293D an, der wiederum einen kleinen Elektromotor antreibt. Der Motor ist ein recht kleiner und einfacher, der saugt gerademal so 20mA. Der Motor wird über einen PWM-Ausgang Drehzahlgeregelt.
Mit der Beschaltung habe ich mich streng an diesen Schaltplan (http://rn-wissen.de/wiki/index.php/Getriebemotoren_Ansteuerung#Ansteuerung_mit_Treibe r_IC_L293_D) gehalten, zusätzlich noch einen Elko mit 47uF an die Spannungsversorgung des L293D gehängt und einen Folienkondensator mit 47nF an den Motorausgang.
Ansonsten dürfte es ja bei diesem mickrigen Motor keine Probleme mit der Stromversorgung geben. Zur Stromversorgung setze ich einen LipoRider (http://www.seeedstudio.com/wiki/Lipo_Rider_V1.1) ein, da das ganze wahlweise per USB oder solargestützem Akku laufen soll. Der LipoRider soll bis 350mA bringen können.

Das ganze funktioniert auch soweit recht gut, mit dem einen Problem, dass der Motor scheinbar so stört, dass ständig der Arduino abstürzt. Das äußert sich unterschiedlich, mal macht er einen Reset, mal bleibt er einfach hängen.
Interessanterweise offensichtlich immer wenn der Motor rechts dreht, das kann aber auch Zufall sein.

Ich habe schon einiges versucht um den Motor zu entstören, momentan hab ich 100nF zwischen den Anschlüssen und das Gehäuse auf GND. Ich hatte aber auch schon die andere Variante so wie im Wiki (http://rn-wissen.de/wiki/index.php/Getriebemotoren_Ansteuerung#Und_nie_vergessen_Moto ren_zu_entst.C3.B6ren) beschrieben und dasselbe auch schon mit kleineren und größeren Werten variiert.
Die Spule musste ich etwas improvisieren, mit einem recht großen Ferritring (aus dem Kabel eines Netzteils geklaut), da ich nix besseres da hatte...

Ich hatte auch schon probeweise einen anderen Motor angeklemmt, aus einem kleinen Modellauto, der dann immerhin schon 160-260mA gezogen hat, nur mit dem gleichen Ergebnis (nur dass es hier sogar noch schlimmer war).

In dem Moment, in dem kein Motor am Treiber hängt, funktioniert alles problemlos.

Softwaretechnisch hab ich auch schon alles probiert. im Normalfall lasse ich das PWM-Signal drauf, schalte den einen Ausgang auf LOW, warte ein paar Millisekunden um dem Motor Zeit zum Anhalten zu geben (die Zeitspanne ist im übrigen vollkommen bedeutungslos, die Sache stürzt mit 0ms genauso ab wie mit 1000ms), und schalte dann den anderen Ausgang auf HIGH.
Nun habe ich schon mit unterschiedlich langen Wartezeiten an allen möglichen Stellen experimentiert, ohne Erfolg.
Auch habe ich schon versucht, den PWM-Ausgang vorher auf LOW zu schalten, um die Motorbremse abzuschalten. Leider gleiches Ergebnis.
Nur wenn ich den Motor auf Vollgas laufen lasse, sprich den PWM-Ausgang einfach auf HIGH schalte, scheint alles zu funktionieren.
Ich habs dann so versucht, den Motor mit 255 am PWM-Ausgang zu starten und dann nach 100ms oder so runterzuregeln auf meinen Sollwert. Das hat soweit funktioniert, mit einem Sollwert von 200. Als ich den Sollwert höher gestellt hab wieder das gleiche Ergebnis (bzw hab ich die Funktion jetzt so, dass in einer gewissen Zeit sanft von 255 auf Sollwert runtergeregelt wird).
d.h. Das Problem tritt mit PWM-Werten im Bereich zwischen ca. 220 und 250 auf.

Ich bin momentan mit meinem Latein ziemlich am Ende, und auch ein bisschen genervt, und hoffe, dass mir von euch jemand einen guten Tipp geben kann :)

Peter(TOO)
07.06.2015, 16:02
Um das jetzt mal vom anderen Thema abzuheben (Die Ansteuerung an sich funktioniert ja einwandfrei) erstelle ich mal ein neues Thema im richtigen Forum ;)

Ich steuere mit einem Arduino Nano einen L293D an, der wiederum einen kleinen Elektromotor antreibt. Der Motor ist ein recht kleiner und einfacher, der saugt gerademal so 20mA. Der Motor wird über einen PWM-Ausgang Drehzahlgeregelt.
Mit der Beschaltung habe ich mich streng an diesen Schaltplan (http://rn-wissen.de/wiki/index.php/Getriebemotoren_Ansteuerung#Ansteuerung_mit_Treibe r_IC_L293_D) gehalten, zusätzlich noch einen Elko mit 47uF an die Spannungsversorgung des L293D gehängt und einen Folienkondensator mit 47nF an den Motorausgang.
Welche Schaltung aus dem Link?
Die Obere ist Quatsch und eigentlich unbrauchbar.
Die Untere weist in die richtige Richtung bei der Entstörung!
Da sind zu den 100µF noch 100nF (Keramik) parallel geschaltet.

Was ist nun der Unterschied zwischen 100.0µF und 100.1µF wobei die 100µ sowieso eine Toleranz von +/-20%, oder noch schlechter, haben?

So ein Kondensator ist ein recht kompliziertes Bauteil, das kann man am Ersatzschaltbild sehen:
http://upload.wikimedia.org/wikipedia/commons/5/51/Elko-Ersatzschaltbild-Wiki-07-02-08.svg
ESR und ESL bilden zusammen mit C schon einen Tiefpass! Hochfrequente Impulse werden also gar nicht gefiltert.
Die Werte für ESR und ESL werden durch den mechanischen Aufbau des Kondensators bestimmt!
Bei einem Nass-Elko kommt ESL hauptsächlich von den aufgewickelten Folien, einen geringen Anteil liefern auch noch die Anschlussdrähte. Dem Strom ist es egal ob Drähte oder Folien gewickelt sind, wenn's im Kreis geht ist es eine Spule!
Der Keramikkondensator, insbesonders die Mehrschichttypen, haben keine gewickelten Platten.

ESR kommt beim Nass-Elko vom Elektrolyten, den Folien und den Anschlussdrähten.
Beim Keramikkondensator gibt es keinen Elektrolyten, beim Mehrschicht-Typ sind viele kleine Platten parallel geschaltet. Beim Nass-Elko sind die Anschlüsse meistens am einen Ende der Folie, da ist es dann ein ganzes Stück bis zum anderen Ende.

Nun hat aber jede Bauart auch ihre Nachteile. Keramikkondensatoren bekommt man nur bis zu etwa 10µF, dafür aber auch nur mit einigen pF. Elkos fangen meist so bei 0.1µF an und gehen bis zu einigen F (GoldCap).

Also bleibt einem nichts anderes übrig als die beiden Eigenschaften zu kombinieren.
Der Elko liefert die langsamen grossen Ströme und der Keramik ist für die kleinen schnellen Stromspitzen zuständig.

Und deine CPU bekommt man schon mit kleinen kurzen Störspitzen aus dem Takt!


Das ganze funktioniert auch soweit recht gut, mit dem einen Problem, dass der Motor scheinbar so stört, dass ständig der Arduino abstürzt. Das äußert sich unterschiedlich, mal macht er einen Reset, mal bleibt er einfach hängen.
Interessanterweise offensichtlich immer wenn der Motor rechts dreht, das kann aber auch Zufall sein.
Ganz Zufällig wird es nicht sein. Praktisch gibt es kleine Unterschiede im Verhalten zwischen den Drehrichtungen. So ein Motor ist nie ganz symmetrisch aufgebaut, da gibt es immer Fertigungstoleranzen. Oder die Bürsten schleifen sich auf eine Drehrichtung ein und bei der Umkehr der Drehrichtung holpern sie dann etwas, was ein ganz anderes Störsignal ergibt.


Ich habe schon einiges versucht um den Motor zu entstören, momentan hab ich 100nF zwischen den Anschlüssen und das Gehäuse auf GND. Ich hatte aber auch schon die andere Variante so wie im Wiki (http://rn-wissen.de/wiki/index.php/Getriebemotoren_Ansteuerung#Und_nie_vergessen_Moto ren_zu_entst.C3.B6ren) beschrieben und dasselbe auch schon mit kleineren und größeren Werten variiert.
Die Spule musste ich etwas improvisieren, mit einem recht großen Ferritring (aus dem Kabel eines Netzteils geklaut), da ich nix besseres da hatte....
Dein Problem steckt immer noch im Aufbau ;-)
Stell hier mal ein Foto von deinem Aufbau rein!
Jeder Draht ist auch ein Widerstand. Fliesst da ein Strom, hat man einen Spannungsabfall.

Schliesst du z.B. links an deinem Steckbrett den Akku an und ganz rechts dann den Arduino, der Motor kommt dann irgendwo in der Mitte an die Schiene. Zieht nun der Motor Strom, gibt es einen Spannungsabfall zwischen Akku und Motoranschluss auf der Schiene, welcher auch am Arduino anliegt. Hängst du jetzt den Arduino um, sodass er direkt neben dem Akkuanschluss liegt, bekommt er von dem Spannungsabfall auf der Schiene fast nichts mehr mit!
Im Schema ergibt sich dabei keine Änderung!

Obiges betrifft sowohl den Masse-Anschluss als auch die Versorgungsspannung. Bei Störungen auf der Masse bekommt dann z.B. dein L293D komische Pegel vorgesetzt. Nehmen wir mal an, du hast 1V Spannungsabfall auf der Masse, Statt 0V bekommt dann der L293D -1V oder +1V am Pin geliefert. Bei -1V spricht dann aber die Schutzschaltung im Eingang des L293D an (Typisch um die 0.7V) und die Schutzdiode lässt einen grossen Strom gegen Masse fliessen ....


Ich hatte auch schon probeweise einen anderen Motor angeklemmt, aus einem kleinen Modellauto, der dann immerhin schon 160-260mA gezogen hat, nur mit dem gleichen Ergebnis (nur dass es hier sogar noch schlimmer war).
In dem Moment, in dem kein Motor am Treiber hängt, funktioniert alles problemlos.

Das entspricht alles meinen Erwartungen: Fehler im Aufbau!


Softwaretechnisch hab ich auch schon alles probiert. im Normalfall lasse ich das PWM-Signal drauf, schalte den einen Ausgang auf LOW, warte ein paar Millisekunden um dem Motor Zeit zum Anhalten zu geben (die Zeitspanne ist im übrigen vollkommen bedeutungslos, die Sache stürzt mit 0ms genauso ab wie mit 1000ms), und schalte dann den anderen Ausgang auf HIGH.

Der Fehler steckt im Aufbau, also der Hardware, da ist die Software der falsche Ansatz!

MfG Peter(TOO)

Zeitsklave
07.06.2015, 16:53
Hallo Peter,
vielen Dank für die ausführliche Antwort, auch wenn ich nicht alles davon verstehe ;)
Über den Aufbau eines Kondensators macht man sich beim schnellen Zusammenlöten wenig Gedanken, ich weiß halt was es für Typen gibt, und im Groben wofür man diese einsetzt. Und dass man beim Elko auf die Polarität aufpassen sollte ^^

Im Link meinte ich die Schaltung, die direkt unter der Überschrift "Ansteuerung mit Treiber IC L293 D" steht.

Wenn ich jetzt ein Foto von meinem Aufbau herzeige, wirst du lachend den Kopf schütteln, aber ich wills trotzdem mal wagen...
Zu meiner Verteidigung muss ich sagen dass das Gehäuse und der Motor so gegeben waren, und ich jetzt die Steuerung nach und nach aufgebaut und reingefummelt hab. Deswegen die langen Leitungen.
Aber wenn ichs mir recht überlege, sollte man hier was ändern :rolleyes:

Wenn man genau hinschaut kann man noch ein Eck vom Folienkondensator für den Motorausgang sehen, direkt vor dem Motortreiber. Der besagte Elko in der Stromversorgung ist dahinter. Zusätzlich hab ich ja noch den am Motor selbst.

PICture
07.06.2015, 19:30
Hallo!

Den o.g. Aufbau lässt sich am besten optimieren, wenn man das Ganze bisherige zerlegt und nach jeder möglichst kurzester Verbindung zum Arduino erst nach Prüfen beim Laufen von bisher gemachten Verbindungen ganz neu aubauen würde. Durch Testen und Korriegieren allen Verbindungen hat man praktisch am Ende kein Fehler drin. Das Scheint zwar wahnsinnig zu sein, ist aber praktisch am schnellsten, weil ohne unnötiger nix bringender Diskussion. ;)

Peter(TOO)
07.06.2015, 21:32
Hallo,

Im Link meinte ich die Schaltung, die direkt unter der Überschrift "Ansteuerung mit Treiber IC L293 D" steht.
Das ist die praktisch unbrauchbare, ohne die Blockkondensatoren!
Praktisch alle anderen Schaltungen haben 100µF und 100nF in der Versorgungsspannung!


Wenn ich jetzt ein Foto von meinem Aufbau herzeige, wirst du lachend den Kopf schütteln, aber ich wills trotzdem mal wagen...
Zu meiner Verteidigung muss ich sagen dass das Gehäuse und der Motor so gegeben waren, und ich jetzt die Steuerung nach und nach aufgebaut und reingefummelt hab. Deswegen die langen Leitungen.
Aber wenn ichs mir recht überlege, sollte man hier was ändern :rolleyes:
Ich habe schon schlimmeres gesehen.
So vor 40 Jahren habe ich, noch etwas wilder, eine Diashow-Steuerung gebaut. War ein 8-Spur Kassettengerät, die Steuerung eines Konkurrenten und die Leistungsstufe um die Halogenlampen anzusteuern, alles in einem Gehäuse. War nur ein Funktionsmuster und durfte nix kosten, weil der Konkurrent behauptete, dass das nicht machbar sei. Da waren Teile mit Klebeband befestigt. War nur für eine einzelne Demonstration gedacht.
So nach einem Jahr kam das Gerät zur Reparatur zurück, weil ein Kurzschluss den Treiber zerbröselt hatte. Erst da haben wir erfahren, dass das Gerät verkauft wurde und im täglichen Einsatz stand!!


Wenn man genau hinschaut kann man noch ein Eck vom Folienkondensator für den Motorausgang sehen, direkt vor dem Motortreiber. Der besagte Elko in der Stromversorgung ist dahinter. Zusätzlich hab ich ja noch den am Motor selbst.
Grundsätzlich hätte ich weniger Angst vor unterschiedlichen Drahtfarben gehabt, Also rot für die Speisung, schwarz oder braun für die Masse usw.....
So kann ich in dem Hauhaufen auch nichts erkennen, vor allem nicht wo die Masseverbindung durch geht.
Anzumerken ist noch, dass jeder Draht auch noch als Antenne wirkt. Das Verhalten kann sich schon ändern, wenn du die Drähte nach Signalen und Leistung bündelst und räumlich trennst.

MfG Peter(TOO)

Zeitsklave
13.06.2015, 10:58
anke für die Antworten :)



Ich habe schon schlimmeres gesehen.
So vor 40 Jahren habe ich, noch etwas wilder, eine Diashow-Steuerung gebaut. War ein 8-Spur Kassettengerät, die Steuerung eines Konkurrenten und die Leistungsstufe um die Halogenlampen anzusteuern, alles in einem Gehäuse. War nur ein Funktionsmuster und durfte nix kosten, weil der Konkurrent behauptete, dass das nicht machbar sei. Da waren Teile mit Klebeband befestigt. War nur für eine einzelne Demonstration gedacht.
So nach einem Jahr kam das Gerät zur Reparatur zurück, weil ein Kurzschluss den Treiber zerbröselt hatte. Erst da haben wir erfahren, dass das Gerät verkauft wurde und im täglichen Einsatz stand!!


Der ist gut ^^ Provisorien halten ja bekanntlich am längsten...

Auf Kabelfarben achte ich eigentlich normal schon, aber momentan hab ich halt nur das weiße da ;)
Ich bin mir nur nicht sicher wie ich in der Umgebung Kabel räumlich trennen und bündeln könnte.
Aber vermutlich bleibt mir einfach nichts anderes übrig, als alles neu aufzubauen.

Ich verstehe nur einfach nicht so recht wo das Problem liegen könnte. Ich hab eine andere Schaltung, eine Lichtquelle für meinen Sternenhimmel, hier werden 2 Stück 3Watt RGB-LEDs mit 6 IRLZ34N angesteuert. Da hab ich ein ganz ähnliches Problem, das taucht aber nur auf wenn ich alle 6 PWM-Kanäle gleichzeitig dimme. Weil ich das praktisch nie mache hatte ich das schon ganz vergessen.
Bei meinem Wecker, der eine einzelne weiße 3W-LED dimmt, hab ich allerdings überhaupt kein Problem.

Naja, ich werd das halt einfach mal in Angriff nehmen. Macht es im Zuge dessen Sinn, größere Kondensatoren zu verwenden?

Peter(TOO)
13.06.2015, 23:06
Hallo,

Ich verstehe nur einfach nicht so recht wo das Problem liegen könnte. Ich hab eine andere Schaltung, eine Lichtquelle für meinen Sternenhimmel, hier werden 2 Stück 3Watt RGB-LEDs mit 6 IRLZ34N angesteuert. Da hab ich ein ganz ähnliches Problem, das taucht aber nur auf wenn ich alle 6 PWM-Kanäle gleichzeitig dimme. Weil ich das praktisch nie mache hatte ich das schon ganz vergessen.
Bei meinem Wecker, der eine einzelne weiße 3W-LED dimmt, hab ich allerdings überhaupt kein Problem.

Tja, die Störproblematik hast du noch nicht im Griff ;-)

Also, stelle dir jeden Draht als Widerstand vor und den Strom als pulsierenden Strom.
Dann überlegst du dir, was der Spannungsabfall über diesem Widerstand in der Schaltung bewirkt.
Dort wo grosse Ströme fliessen, hat man dann auch einen grossen Spannungsabfall.

Mit entsprechender Erfahrung und Wissen bekommt man das eigentlich leicht in den Griff ;-)
In meinen beruflichen Anfängen vor 40 Jahren hatte ich da auch so meine Probleme mit Störungen. Nach so 1-2 Jahren hatte ich das aber im Griff und dann nur noch selten Probleme, bzw. recht schnell den Fehler gefunden.
Typisch liegts an der Masse-Verbindung, der Speisung und den fehlenden Blockkondensatoren.
Sehr Hilfreich ist ein Oszilloskop, damit kann man sich dann mal ansehen was da so auf den Leitungen los ist.

Bei deinem 6-Kanal PWM wirst du auch sehen, dass die Störpegel mit jedem zugeschalteten Kanal grösser werden. Irgendwann kommst du in den Bereich wo dann die Logik-Gatter auch schalten.
Der saubere Weg ist, das ganze so aufzubauen, dass es auf Hardware-Ebene klaglos funktioniert.
Der Unsaubere wäre es, sie Software so anzupassen, dass die 6-PWM garantiert nie gleichzeitig schalten ;-)
Wenn eine PWM schaltet, hast du einen Störpegel von xV. Schalten alle 6 gleichzeitig sind es dann 6*xV.


Naja, ich werd das halt einfach mal in Angriff nehmen. Macht es im Zuge dessen Sinn, größere Kondensatoren zu verwenden?
JAIN!
Neben den Elkos solltest du auch so 100nF KerKos einsetzen.
Allerdings kann alles auch schlimmer werden, wenn die Kondensatoren falsch platziert werden.
Diese sollten möglichst kurz über die Spannungsanschlüsse der einzelnen ICs angeschlossen werden.

MfG Peter(TOO)

Zeitsklave
27.06.2015, 09:18
Nein, die hab ich wirklich nicht im Griff, mein einziges Projekt das einwandfrei und störungsfrei funktioniert ist mein Wecker.
Aber ich werd mir Mühe geben, das künftig besser hinzukriegen. Wie du sagst, Erfahrung.

Ich hätte einen uralten Oszillographen, aber der ist eine Wissenschaft für sich, ich hab den nie so richtig in Gang gekriegt, geschweige denn verstanden...

Mein Plan ist jetzt, erstmal die Verkabelung sauber neu zu machen. Möglichst kurze Strippen, farbig, nach Funktion getrennt. Evtl könnte ich ja direkt abgeschirmte Kabel verwenden?
Wenn das dann nicht reicht, werd ich wohl die Platinen auch neu machen müssen. Was ist dann besser, den Motortreiber möglichst nah am Arduino zu platzieren (ggf direkt drunter) um die Verbindungen so kurz wie möglich zu halten, oder sollte ich den Treiber lieber möglichst weit weg vom Arduino zu setzen, um mögliche Einstreuungen durch den Treiber selbst ausschließen zu können?

Vielen Dank für die wertvollen Tipps!! :)

Peter(TOO)
27.06.2015, 10:36
Ich hätte einen uralten Oszillographen, aber der ist eine Wissenschaft für sich, ich hab den nie so richtig in Gang gekriegt, geschweige denn verstanden...

Ich habe zwar nur überflogen, scheint aber recht gut zu sein:
http://rn-wissen.de/wiki/index.php/Datei:Tastkopf_1.JPG
Vor ellem den Abschnitt "Inbetriebnahme" solltest du Schritt für Schritt durchgehen, sonst sieht man nix ;-)


Wenn das dann nicht reicht, werd ich wohl die Platinen auch neu machen müssen. Was ist dann besser, den Motortreiber möglichst nah am Arduino zu platzieren (ggf direkt drunter) um die Verbindungen so kurz wie möglich zu halten, oder sollte ich den Treiber lieber möglichst weit weg vom Arduino zu setzen, um mögliche Einstreuungen durch den Treiber selbst ausschließen zu können?

Das ist eigentlich egal!
Wenn man es falsch macht, funktionieren beide Varianten so wie deine jetzt :-P
Grundsätzlich ist keine Variante wirklich besser. Du wirst das Ganze vermutlich als Piggy Pack aufbauen, was schon zu genügend Abstand führt.

Ich denke es liegt wirklich nur an der Verdrahtung!
Kritisch ist alles wo die Ströme fliessen

MfG Peter(TOO)
P.S. Wie ist dein Fachenglisch?
Ich hätte Unterlagen zur Problematik, aber eben in englisch.

.

Zeitsklave
27.06.2015, 13:39
Also ich behaupte mal dass es jetzt nicht mehr an der Verdrahtung liegt:

https://www.roboternetz.de/community/attachment.php?attachmentid=30366&stc=1&d=1435408445

War eine ganz schöne Fummelei, aber außer dass es jetzt gut aussieht hats nichts bewirkt, der Arduino verhält sich immernoch ganz genauso wie vorher.
Der Laderegler rechts und alles was damit zu tun hat dürfte unschuldig sein, wenn ich den Akku rausnehme und den Regler komplett vom Arduino trenne und diesen dann an USB vom PC anstecke, wieder keine Änderung.

Am liebsten würd ich dann das ganze Ding in die Ecke schmeißen und liegen lassen, aber es sollte schon irgendwann laufen, es ist für einen Bekannten, der wartet schon drauf :p
Kann doch nicht sein dass ich so eine primitive Schaltung nicht ordentlich zum Laufen kriege!



Englisch ist kein Problem, immer her damit ;)



Edit:
Wenn ich auf der linken Seite die vierpolige Steckleiste (geht zu der Platine mit dne Schaltern) ausstecke und nur eine Brücke einstecke, sowie die dreipolige dahinter auch ausstecke (geht zu den LEDs), gibts auch keine Besserung. Also kann es an alledem auch nicht liegen.
Dann kann ja eigentlich nur noch was mit meiner Schaltung nicht passen.
Oder kann es vielleicht noch sein dass der Motor einfach schon so alt und verschlissen ist, dass er sich nicht mehr in den Griff kriegen lässt?

Peter(TOO)
28.06.2015, 19:57
Hallo,


Wenn ich auf der linken Seite die vierpolige Steckleiste (geht zu der Platine mit dne Schaltern) ausstecke und nur eine Brücke einstecke, sowie die dreipolige dahinter auch ausstecke (geht zu den LEDs), gibts auch keine Besserung. Also kann es an alledem auch nicht liegen.
Dann kann ja eigentlich nur noch was mit meiner Schaltung nicht passen.
Oder kann es vielleicht noch sein dass der Motor einfach schon so alt und verschlissen ist, dass er sich nicht mehr in den Griff kriegen lässt?

Nein, das hat nicht direkt mit dem Motor etwas zu tun!

Es liegt am Aufbau, also der Leitungsführung und möglicherweise an zu wenig oder falsch platzierten Elkos und Blockkondensatoren!

ich muss da mal ein paar Links für dich zusammentragen.
Es macht halt einen Unterschied, in welcher Reihenfolge z.B. die Massenverbindung angeschlossen wird.

http://www.st.com/st-web-ui/static/active/en/resource/technical/document/datasheet/CD00000062.pdf
Schau dir mal in Figure 4 die Masseführung an!

Hier allgemein über die Erdung:
http://www.analog.com/library/analogdialogue/archives/43-09/edch%2012%20pc%20issues.pdf
http://www.analog.com/library/analogdialogue/archives/39-06/chapter%209%20hardware%20design%20techniques%20f.p df

Da die obigen Unterlagen von Analog Devices stammen, geht es vor allem um die Problematik von gemischten Systemen Analog/Digital. Deine Problematik ist aber die Selbe, auch wenn es um digital mit normal und Leistung geht.

MfG Peter(TOO)

Zeitsklave
29.06.2015, 18:32
OK, ich beginne zu verstehen, auch wenn mir die Hintergründe weiterhin schleierhaft sind ;)
Ich wusste nicht dass man auf sowas achten muss (für mich ist halt Masse gleich Masse), und hab in meiner Schaltung die Masse-Anschlüsse so verlötet wies am besten gepasst hat (= kurze Wege).
Demzufolge hab ich die Masse aus dem Arduino geholt, die geht direkt zum L293D und dann weiter zu den Schaltern, die sie dann wiederum jeweils auf die INPUTS des Arduino legen. An der Verbindung zwischen Arduino und L293D hängt dann auch noch der Vorwiderstand für die LEDs.
Der Arduino wir über seinen USB mit Strom versorgt, und versorgt dann wiederum den Rest über seinen 5V-Pin mit Stom, von der Belastung dürfte das unkritisch sein, weil der Motor nur 40-60mA zieht.

Um das jetzt korrekt zu machen müsste ich praktisch die Massen von Arduino, Schaltern und LEDs zusammenfassen, und erst dann den L293D dazuklemmen, hab ich das richtig verstanden?
Ich hätte nie gedacht dass das solche Probleme machen kann...

Direkt am Ausgang des L293D hab ich einen 47nF Folienkondensator hängen, und am Motor noch einen mit 100nF.
Zusätzlich hab ich noch an der Stromversorgung des L293D einen Elko mit 0,47uF, was mir jetzt irgendwie irritierend wenig scheint.

Ich würd ja gern ein Foto von der Unterseite meines Aufbaus zeigen wegen der Beschaltung, aber der hat das Lösen aus dem Heißkleber nicht überstanden, und einige Verbindungen gelassen ^^

Peter(TOO)
30.06.2015, 00:34
OK, ich beginne zu verstehen, auch wenn mir die Hintergründe weiterhin schleierhaft sind ;)
Ich wusste nicht dass man auf sowas achten muss (für mich ist halt Masse gleich Masse), und hab in meiner Schaltung die Masse-Anschlüsse so verlötet wies am besten gepasst hat (= kurze Wege).
Du musst einfach jede Verbindung als einen Widerstand in Serie mit eine Induktivität betrachten!
Immer wenn sich der Strom ändert, ändert sich eben auch der Spannungsabfall an der Leitung.
Bei der Masse ändert sich dann aber auch die Betriebsspannung der ICs. Besonders Flip-Flops neigen dann dazu umzufallen, und so ein µC hat jede Menge Flip-Flops!

Mit zunehmender Frequenz wird das immer schlimmer ;-)
Der Herr Fourier hat gezeigt, dass man jeden spannungsverlauf aus einer Anzahl von Sinusschwingungen zusammensetzen kann.
https://de.wikipedia.org/wiki/Fourier-Analysis
Dabei haben Rechteckspannungen am meisten Oberwellen.

Übrigens, das alles gilt natürlich auch für die Betriebsspannung!
Auch da muss man auf die Leitungsführung achten.


Demzufolge hab ich die Masse aus dem Arduino geholt, die geht direkt zum L293D und dann weiter zu den Schaltern, die sie dann wiederum jeweils auf die INPUTS des Arduino legen. An der Verbindung zwischen Arduino und L293D hängt dann auch noch der Vorwiderstand für die LEDs.
Der Arduino wir über seinen USB mit Strom versorgt, und versorgt dann wiederum den Rest über seinen 5V-Pin mit Stom, von der Belastung dürfte das unkritisch sein, weil der Motor nur 40-60mA zieht.

Da hast du noch einen weiteren Denkfehler!
Im Einschaltmoment ist praktisch nur der ohmsche Wiederstand der Wicklung als Strombegrenzung vorhanden!
Erst wenn der Motor dreht, wird eine Gegenspannung in der Wicklung induziert, wodurch dann der Strom begrenzt wird!
Da wird dann der Elko am L293 wirksam. der sollte eben diesen Spitzenstrom liefern, ohne, dass die ganze Versorgungsspannung gleich einbricht.
Deshalb sind die 0.47µF schon etwas mickerig!


Um das jetzt korrekt zu machen müsste ich praktisch die Massen von Arduino, Schaltern und LEDs zusammenfassen, und erst dann den L293D dazuklemmen, hab ich das richtig verstanden?
Fast ;-)
Die Masse des L293 muss alleine möglichst nahe da angeschlossen werden, wo die Masse vom Netzteil her kommt. An diesem Draht wird ausser dem L293 nichts angeschlossen.


Ich hätte nie gedacht dass das solche Probleme machen kann...
Wer mal Audioverstärker gebaut hat, kennt das Problem vom hören ;-)
Da macht man eine Sternmasse. Also einen zentralen Punkt, von welchem die Massen zu jedem Modul abgehen. Dann brummt es am wenigsten.
Dieser Punkt sollte dann möglichst direkt am Ladeelko des Netzteils angeschlossen sein.
Wenn man anstatt am Ladelko am Gleichrichter erdet, hat man jede Menge Brumm!


Direkt am Ausgang des L293D hab ich einen 47nF Folienkondensator hängen, und am Motor noch einen mit 100nF.
Zusätzlich hab ich noch an der Stromversorgung des L293D einen Elko mit 0,47uF, was mir jetzt irgendwie irritierend wenig scheint.
Jo, der Elko dürfte schon mindestens 100µF haben.
Wenn da Platz ist würde ich so 500-1'000µF spendieren.


Ich würd ja gern ein Foto von der Unterseite meines Aufbaus zeigen wegen der Beschaltung, aber der hat das Lösen aus dem Heißkleber nicht überstanden, und einige Verbindungen gelassen ^^
Quick And Dirty ;-)

MfG Peter(TOO)

Zeitsklave
30.06.2015, 17:28
Vielen lieben Dank schonmal!

1000uF hab ich da, und sollten auch platztechnisch kein Problem darstellen :) Die beiden Folienkondensatoren sind dann OK?

Und bevor ich jetzt ans Werk gehe, einen neuen (hoffentlich störungsfreien) Aufbau zu basteln, noch eine Frage:



Die Masse des L293 muss alleine möglichst nahe da angeschlossen werden, wo die Masse vom Netzteil her kommt. An diesem Draht wird ausser dem L293 nichts angeschlossen.


Heißt das, ich sollte nach Möglichkeit die Masse NICHT am GND-Pin des Arduinos abnehmen, sondern lieber z.B. am Gehäuse des USB-Steckers?

Zeitsklave
30.06.2015, 20:29
Also es funktioniert jetzt...
Allerdings hab ich die leiste Vermutung, dass der Fehler woanders lag. Ich hatte vom L293D den Pin 8 mit 5V verbunden, den Pin 16 allerdings nicht. Dadurch dass die im Schaltplan mit VCC1 und VCC2 gekennzeichnet waren, war für mich wohl klar, dass der eine für einen Motor ist, und der andere für den anderen, was ich mir genau gedacht hab weiß ich nicht mehr.
Jedenfalls schnurrt es so jetzt, und sieht noch dazu ordentlich aus. :)

Vielen vielen Dank für die ganzen guten Tipps und Infos!!
Egal wo der Fehler jetzt tatsächlich war, jetzt bin ich bei meinem nächsten Projekt auf jeden Fall sensibilisiert und werd sowas gleich von Anfang an ordentlicher aufbauen!

Peter(TOO)
01.07.2015, 04:25
Hallo,

Also es funktioniert jetzt...
Das war der ganze Sinn der Übung ;-)


Allerdings hab ich die leiste Vermutung, dass der Fehler woanders lag. Ich hatte vom L293D den Pin 8 mit 5V verbunden, den Pin 16 allerdings nicht. Dadurch dass die im Schaltplan mit VCC1 und VCC2 gekennzeichnet waren, war für mich wohl klar, dass der eine für einen Motor ist, und der andere für den anderen, was ich mir genau gedacht hab weiß ich nicht mehr.
Jedenfalls schnurrt es so jetzt, und sieht noch dazu ordentlich aus. :)
Da müsste man jetzt im Datenblatt nachlesen, was zu diesem Punkt da steht. Ob man den Pin unbeschaltet lassen darf, wenn er nicht verwendet wird?

Grundsätzlich ist es eigentlich nie nur eine einzelne Ursache.
Das Ganze funktioniert wie das Fass und der letzte Tropfen.
So lange die Störsignale unterhalb einer bestimmten Schwelle bleiben funktioniert alles.
Jede Unsauberkeit bewirkt nun aber, dass die Störsignale etwas grösser werden. Übersteigen dann die Störsignale die Schwelle, wird's halt lustig ....
Störsignale lassen sich leider nicht grundsätzlich verhindern, die hat man immer.
Der Trick ist es nun, den Abstand zur Grenzschwelle im Normalfall möglichst gross zu machen, dann hat man Reserve, wenn mal eine etwas grössere Störung auftritt.

Da die Summe der Einzelstörungen das Problem erzeugt, findet man auch jede Menge Einzeltipps, welche mal geholfen haben unter die Schwelle zu kommen.


Vielen vielen Dank für die ganzen guten Tipps und Infos!!
Egal wo der Fehler jetzt tatsächlich war, jetzt bin ich bei meinem nächsten Projekt auf jeden Fall sensibilisiert und werd sowas gleich von Anfang an ordentlicher aufbauen!
Das war eigentlich meine Idee dahinter.
Es macht einfach mehr Spass, wenn nicht auch noch Fehler in diesem Bereich suchen muss ;-)
Zudem hilft einem das Wissen, solche Fehler schneller zu finden.

Ich selbst hatte in den letzten Jahrzehnten nie Probleme mit Störungen durch die Verkabelung. Es ist aber vorgekommen, dass Kunden bei der Produktion meine Vorgaben abgeändert hatten und dann entsprechende Probleme aufgetreten sind.

MfG Peter(TOO)

Zeitsklave
05.07.2015, 09:17
Also beim Überfliegen des Datenblattes hab ich jetzt nichts gefunden bzgl Weglassen einer Spannung, aber

Supply voltage, VCC1
Output supply voltage, VCC2
In den Beispielen wird immer VCC1 mit 5V versorgt, und VCC2 mit 24V, also offensichtlich ist VCC1 die Versorgung der Logik und VCC2 für den Motor selbst. Wird auch deutlich beim Blick auf die Schaltpläne aus den Beispielen :D
Also ist eigentlich unvorhersehbares Verhalten absolut vorhersehbar wenn man eine Spannung weglässt ;) Was mich da wohl geritten hat?


Hallo,
Das war eigentlich meine Idee dahinter.
Es macht einfach mehr Spass, wenn nicht auch noch Fehler in diesem Bereich suchen muss ;-)
Zudem hilft einem das Wissen, solche Fehler schneller zu finden.


Auf jeden Fall!
So eine Fehlersuche kann recht frustrierend sein.

Jetzt da das endlich abgeschlossen ist, wirds langsam Zeit mein nächstes Projekt zu starten, desmal gehts um Schrittmotore...
Und evtl. krame ich dann demnächst mal wieder meinen alten Oszillographen raus, eigentlich schon fast ein Museumsstück, aber vielleicht ist er noch zu was zu gebrauchen ^^