Schrittmotor verursacht Arduino Brownout?

Ich versuche, eine einachsige CNC-Maschine zu bauen, die mit einem 12-V-Automobil-Elektriksystem betrieben wird. Hier ist eine grundlegende Beschreibung des Builds:

  • Arduino Uno
  • Nur zum Testen verwende ich ein geregeltes Schaltnetzteil mit 12 V Gleichstrom und 30 A, das an 110 V Wechselstrom angeschlossen ist.
  • Auch nur zum Testen verwende ich einen 426 oz-in Nema 24 Stepper. Tatsächlicher Stepper wird größer sein. Dieser ist 2,8A parallel verdrahtet.
  • 600-W-Aufwärtswandler zur Erhöhung von 12 V auf 36 V für den Eingang in den Motortreiber.
  • 9-V-Stromversorgungsmodul zwischen 12-V-Versorgung und Arduino.
  • Geckodrive G201x Motortreiber auf 3A eingestellt.

Die Maschine funktioniert gut, wenn ich meinen Arduino mit einer separaten Quelle vom Schrittmotor antreibe. Aber es scheint zu einem Brownout zu kommen, wenn alle an dieselbe Stromversorgung angeschlossen sind. Leider habe ich nur eine einzige Stromquelle.

Ich dachte ursprünglich, ich bekomme eine Art Spannungsspitze. Das Automobilsystem könnte dies erzeugen (und ich habe damals auf diesem System getestet). Deshalb dachte ich, das 9V-Modul dort zu platzieren. Ich denke, ich brauche es trotzdem, aber es scheint dieses Problem nicht behoben zu haben.

Dann wurde mir vorgeschlagen, den Motor opto-isolieren. Soweit ich das beurteilen konnte, musste ich den Opto-Isolator zwischen den Arduino und den Treiber stecken. Ich habe einen zwischen den Step / Dir und die entsprechenden Pins auf dem Arduino gelegt und den Isolator mit einem 5-V-Netzteil versorgt. Das geht auch nicht.

Wenn ich den Motor abtrenne, aber die 600-W-Versorgung und den Motortreiber angeschlossen lasse, sehe ich keine Spannungsabfälle. Mein Bauchgefühl sagt mir, dass der Schrittmotor zu viel Strom zieht und einen Brownout verursacht. So wie ich es verstehe, könnte ich eine Diode und einen Kondensator zwischen dem Arduino und der Stromversorgung platzieren. Aber ist mein Netzteil nicht stark genug, um das nicht zu brauchen? Es sollte ungefähr 100 W Strom verbrauchen, richtig? Soweit ich weiß, verbraucht der Motor beim Starten möglicherweise mehr, aber würde er wirklich so viel mehr verbrauchen?

Bearbeiten:

Ich habe versucht, das 47-uF- und 0,1-uF-Kondensatorschema hier zwischen meiner 9-V-Versorgung und dem Arduino zu verwenden. Scheint nicht zu helfen. Ich habe mein Multimeter an die Eingänge des Arduino angeschlossen und mit dem System herumgespielt, bis es einige verrückte Sachen gemacht hat (es wird normalerweise die Ausgabe an einen LCD-Bildschirm verstümmeln, den ich angeschlossen habe). Ich habe keine Spannungsänderungen bemerkt, obwohl ich vermute, dass es nur eine kurze Spitze sein könnte, die das Messgerät nicht erfasst hat.

Ich denke, es würde helfen, wenn ich ein Schema des Systems zeichnen würde. Vielleicht kann dann jemand auf etwas hinweisen?

Bearbeiten: Hier ist ein Schaltplan. Sorry für die schlechte Qualität. Hoffentlich ist es lesbar. Ich habe versucht, alles in mein Projekt aufzunehmen, aber ich gehe davon aus, dass die Tasten, der Kippschalter, der Drehgeber und das LCD nicht die Ursache sind.Schema

Können Sie mit einem Oszilloskop oder sogar einem schnellen Multimeter bestätigen, dass es sich tatsächlich um einen Spannungsabfall handelt? Wenn dies eine Brownout-Situation ist, sollten Sie in der Lage sein, den 9-V-Ausgangsspannungsabfall zu beobachten. Welche Art von Versorgung ist Ihr 9-V-Modul - ist es ein Linear- oder Schaltregler?
Ich habe Zugang zu einem Oszilloskop, also werde ich das versuchen. Hier ist ein Link zum Netzteil, das ich für den Arduino verwende.
Ein Schaltplan würde auf jeden Fall helfen. Beachten Sie übrigens, dass die Geckodrive-Eingänge bereits optisch isoliert sind (laut Handbuch hier: geckodrive.com/g201x-g210x-rev-6 ). Das Laufwerk sollte nicht mehr als 2,5 mA aus dem Arduino ziehen - haben Sie einen Widerstand zwischen dem Arduino-Pin und dem Gecko-Eingang? Ich bin mir nicht sicher, wie viel Strom der Gecko ohne ihn ziehen würde. Im Allgemeinen verwenden die Optokoppler eine Infrarot-LED, daher sollten Sie den Arduino so verdrahten, als würden Sie eine LED ansteuern, und den Strom am Ausgangspin begrenzen.
Ich hatte das Gefühl, dass es bereits optoisoliert war, arbeitete aber an einem Vorschlag von jemand anderem. Kein Widerstand. Der Opto-Isolator, den ich dort eingebaut habe, scheint nicht zu funktionieren und vielleicht ist das der Grund? Unabhängig davon hält es mein Arduino immer noch nicht vom Einfrieren ab. Schaltplan kommt bald...
Die 12 V fallen zu stark ab, wodurch die 9 V-Leitung zu stark abfällt, was den 5 V-Regler am Arduino ausschaltet und einen Brownout verursacht. Es gibt etwas, das als „Last- und Leitungsregelung“ bezeichnet wird. Dies ist die Fähigkeit eines Netzteils, den Ausgang bei großen Änderungen der Last oder der Eingangs-„Leitung“ gleich zu halten. Ich schätze, Sie haben einen Dominoeffekt. Viel Kapazität und eine Schottky-Diode mit niedrigem Durchlassspannungsabfall, die bereits von jemand anderem vorgeschlagen wurde, werden helfen. Mit viel meine ich viele hundert Mikrofarad, vielleicht sogar Millifarad
Ich bin nicht so versiert in Elektronik, wie ich gerne wäre, also ist das vielleicht eine dumme Frage ... Aber kann ich einen Kondensator verwenden, wie er in Auto-Audiosystemen verwendet wird? Zum Beispiel schaue ich mir das an , von dem ich annehmen würde, dass es den Arduino sehr lange laufen lassen könnte. Oder gibt es einen Grund, warum das nicht funktionieren würde?

Antworten (2)

Es gibt eine große Variabilität bei der Betrachtung von Hochgeschwindigkeitsänderungen in der Leistungsaufnahme. Es ist nicht so einfach, darüber nachzudenken, was bei DC passieren könnte. Einige der Probleme können auf der Länge und Größe der leitenden Drähte sowie auf der Konfiguration der Stromführung beruhen. Dies gilt sowohl für die Verdrahtung als auch für das PCB-Routing eines Stromversorgungssystems.

Es ist möglich , dass ein Leistungsbedarfsimpuls schnell genug ist, dass Sie sich den Leistungsbus als Übertragungsleitung und nicht als konzentriertes Schaltungselement vorstellen müssen. Die Induktivität Ihres Stromversorgungskabels widersteht dem Stromfluss so weit, dass die Spannung am Ende der Übertragungsleitung erheblich abfällt. In dieser Situation können eine Diode und ein Kondensator das Problem lösen, indem sie die Arduino-Spannung hoch halten, bis der Strom den Draht hinunterfließen kann, um den Bedarf zu decken.

Es ist eine gute Idee, die Steuer- und Variationsschaltkreise für den hohen Leistungsbedarf zu isolieren. Dies muss nicht so viel wie ein separates Netzteil sein, könnte aber bedeuten, dass Sie lange Strecken der Stromversorgungsverkabelung nicht teilen, bevor Sie sich miteinander verbinden.

Ich werde dem Kondensator und der Diode eine Chance geben. Danke für den Vorschlag.
+1 zum Verlegen separater Drähte zur Stromversorgung für Motor und Arduino.

Ihre Minderung hängt von der tatsächlichen Ursache ab, die wahrscheinlich eine der folgenden sein wird:

  • Versorgungsabfall auf der 12 als Folge der Entnahme aus dem Motor, was dazu führt, dass Ihre Arduino-Versorgung unter ein akzeptables Niveau fällt
  • Spitzen auf dem 12 aufgrund von Flyback, der es stromaufwärts vom Motortreiber macht, was dazu führt, dass sich der billige 12-> 9-Reglerausgang falsch verhält
  • Spitzen im GND-Netz (wiederum als Folge von Motorrücklauf), die eines der oben genannten Probleme verursachen

Sie sollten die tatsächliche Ursache Ihres Problems mit einem Oszilloskop bestätigen, bevor Sie eine Lösung implementieren.

Lösungen, die Sie ausprobieren können:

  • Mehr Eingangskapazität an Ihrem 12-> 9-Konverter (dies kann helfen, wenn es auf der 12 abfällt)
  • Mehr Eingangskapazität an Ihrem Arduino (dies kann helfen, wenn es auf der 12 abfällt oder wenn der Regler aufgrund von Störungen am 12-V-Eingang instabil wird)
  • Verwenden Sie eine TVS-Diode am Eingang Ihres Reglers, um Störungen auf den 12 V zu unterdrücken
  • Tauschen Sie den Regler gegen einen isolierenden oder linearen Regler aus, der besser auf Störungen am Eingang reagieren sollte, vorausgesetzt, er ist stabil und hat eine ausreichende Eingangs-/Ausgangskapazität.
Laut Handbuch sind die Gecko Driver Eingänge optisch isoliert. Daher sehe ich nicht, wie irgendetwas auf der Motorseite des Treibers das Arduino in dem Szenario beeinflussen könnte, in dem sie nicht dieselbe Stromversorgung teilen, es sei denn, es besteht eine kapazitive / induktive / HF-Kopplung. Möglicherweise möchten Sie auf der Motorseite eine HF-Unterdrückung hinzufügen - geckodrive.com/rf-interference