Teilen der gleichen Batterie mit zwei Gleichstrommotoren und zwei Servos

Ich habe eine 12-V-Batterie, die zwei Gleichstrommotoren über einen Arduino und eine Motorsteuerung mit Strom versorgt. Die 12-V-Batterie versorgt den Arduino auch über den VIN-Pin.

Jetzt versuche ich, zwei Servomotoren vom selben Arduino anzuschließen. Die Servostromversorgungen sind miteinander verbunden und gehen zum 5V-Pin des Arduino. Die Gründe sind auch zusammen und gehen zum Arduino-Erdungsstift. Beide Servos haben einen 100-uf-Kondensator zwischen Plus und Masse.

Es gibt drei Gründe, die vom Mikrocontroller kommen, einer davon die Stromversorgung und zwei andere zu den Motorsteuerungen.

Wenn ich alle Erdungen zu den Arduino-Erdungsstiften habe, schalten sich die Gleichstrommotoren für etwa 5 Sekunden ein und schalten sich dann immer wieder aus. Es sieht so aus, als ob der Arduino ein- und ausgeschaltet werden könnte. Aber ich dachte, es hat vielleicht etwas mit den Kondensatoren zu tun, die die Gleichstrommotoren stören, da sie alle Masse teilen? Ich weiß es einfach nicht.

Wenn ich also den Boden, der von den Servos kommt, vom Arduino entferne, laufen die DC-Motoren einwandfrei.

Ist es möglich, die gleiche Batteriequelle für die Servos und beide Gleichstrommotoren zu teilen? Weiß jemand was hier los ist?

Antworten (2)

Es ist nicht wahrscheinlich, dass die Kondensatoren, die Sie auf die Servos setzen, viel damit zu tun haben, sie werden höchstwahrscheinlich nur beim Start stören, wenn es jedes Mal gut einschaltet, bevor Sie anfangen, irgendetwas zu tun, machen Sie sich keine Sorgen darüber.

Obwohl Sie sie vielleicht in 3x 10uF oder 2x 22uF umwandeln möchten, da kleinere Kondensatoren, die parallel geschaltet sind, genauso gut bei Spitzenströmen sind, ziehen Sie eine kleinere Anlaufspitze. Sie versuchen nicht, irgendetwas zu glätten, also ist eine sehr große Kapazität übertrieben, sie sind nur da, um dem Servo beim Starten zu helfen, wenn es stromhungrig ist.

Sie könnten einen Widerstand mit niedrigem Wert wie folgt hinzufügen:

schematisch

Simulieren Sie diese Schaltung – Mit CircuitLab erstellter Schaltplan

Je nach Dauerstromaufnahme der Servos können Sie den Widerstand etwas modifizieren, im Normalbetrieb sollten nicht mehr als 0,5V darüber fallen und bei der Berechnung der Widerstandsleistung eine stärkere Belastung berücksichtigen. Wenn Sie es beispielsweise für 100 mA modellieren, könnten Sie es auf 5 Ohm machen, dann fallen normalerweise 0,5 V darüber. Wenn es dann jedoch stehen bleibt oder mehr Arbeit zu erledigen hat, kann es 250 mA oder mehr ziehen. Bei 250 mA würde die Spannung am Widerstand 1,25 V betragen. Die Leistung wäre also 1,25 V * 0,25 A = 0,3125 W, also sollten Sie einen 0,5-W-Widerstand wählen, um auf Nummer sicher zu gehen.

Tatsächlich wird das Abfallen der Spannung, wenn es hungriger sein möchte, als es sollte, dazu beitragen, auch dort ein gewisses Risiko zu verringern, indem verhindert wird, dass es so viel zieht, dass der Spannungsregler auf dem Arduino schmilzt. (Welcher Punkt das passiert, hängt vom Arduino ab und welchen Regler sie darauf verwendet haben und wie sie ihn montiert haben). Da das Servo bei niedrigerer Spannung im Stillstand etwas weniger Strom zieht, gleicht sich dies bei einem Ausfall durch einen geringeren Stromverbrauch aus.

Der gleiche Effekt verhindert, dass starke Stromimpulse den Arduino stören. Wenn der Servo hochfährt, zieht er einen hohen Strom, aber der Widerstand erschwert es, diesen direkt aus dem Arduino zu ziehen, sodass er zuerst etwas Strom zieht die Kondensatoren, bis sie auf eine Spannung fallen, die niedrig genug ist, damit der Widerstand die Stromquelle übernehmen kann.

Ein Induktor wäre auch eine Lösung, aber um diese richtig zu modellieren, sind mehr Kenntnisse über die Spitzen und ihre Dauer erforderlich, wobei die Mathematik rund um einen Widerstand recht einfach ist, also würde ich mit dem Widerstand beginnen. Wenn es hilft, aber nicht genug ist, können Sie eine Induktivität von nur 2,2 uH, aber bis zu 100 uH hinzufügen, die für Ihren Stallstrom ausgelegt ist, um zu sehen, ob dies hilft, nur in Reihe mit demselben Widerstand oder einem etwas kleineren Wert. (3,3 Ohm statt 5 Ohm wären schon mehr als genug Reduktion).


Was wahrscheinlich das Problem ist, ist, dass Sie die ganze Energie durch den Arduino stecken. Dadurch koppeln sich die Geräusche sowohl der Servos als auch der Gleichstrommotoren durch die Platine und induzieren dort alle Arten von Mist in das System.

Am besten schließt man die Servos komplett an den Arduino an, da dort die 5V erzeugt werden, wird der Rückweg am besten auch durch den Arduino gelegt, um keine großen Schleifen zu machen, die eigene Probleme bereiten könnten. Verbinden Sie jedoch die Masse der Gleichstrommotoren direkt mit der Batterie.

Gregory bezeichnet es als "Sternerde", dies ist ein Fachbegriff für das Verbinden aller Stromrückwege an einer Stelle, normalerweise so nah wie möglich an der Stromversorgung. In diesem Fall ist es am besten, die Servos aus Ihrem Sterngrunddesign herauszuhalten, da Sie möchten, dass der Arduino die 5 V liefert.

Um zu erklären, warum Sie möchten, dass die Motoren direkt an die Batterie angeschlossen werden, hier ein paar Klatsch und Bilder:

schematisch

Simulieren Sie diese Schaltung

Während ich zeichne, ist das System im Arduino nicht perfekt, also wird der Boden einen gewissen Widerstand haben. Kein Brett ist in dieser Hinsicht perfekt, das kann es nicht sein, so sind die Regeln der Natur. (Obwohl ein paar Arduinos, die ich gehalten habe, hätten es besser machen können, aber das ist ein Thema für einen whoooole anderen Thread.)

Wenn Sie also Strom durch das Massesystem leiten, entsteht ein Spannungsabfall entlang der Leiterbahnen auf der Platine, dargestellt durch die vier Widerstände. Diese Spannungsdifferenz wird auch von der internen Schaltung erkannt. In Wirklichkeit könnte das Problem noch schlimmer sein, da es nicht nur einen Widerstand gibt, sondern auch eine Induktivität, die den Spannungsabfall von Rauschen mit mittlerer bis hoher Frequenz viel schlimmer macht als nur der Widerstand.

Wenn Sie also jetzt eine zusätzliche 1A für die Gleichstrommotoren durch diese Spur legen, wird die Spannung der Masse auf der ganzen Platine in unterschiedlichem Maße angehoben. Das bedeutet, dass interne Dinge in Bezug auf ihren Massekontakt unterschiedliche Versorgungsspannungen sehen. Wie ich es gezeichnet habe, wird der Spannungsanstieg bei 1A DC nicht zu groß sein, aber es ist möglich, dass diese symbolischen Widerstände größer sind.

Was jedoch wirklich passiert, ist, dass die Gleichstrommotoren Spitzen und Rauschen erzeugen, weil ihre Bürsten die ganze Zeit Spulen verbinden und trennen, diese Brummspannung ist auf einer Seite direkt mit der Batterie verbunden, die vermutlich genug Strom hat, um diese Seite bei a zu halten einigermaßen stabile 12V. Also, wo gehen diese Wellen hin? Ah! Hey! Es gibt eine Massebahn, die viel mehr Widerstand (und Induktivität, wie bereits erwähnt) hat als die Drähte zwischen der Batterie und dem Motor: Tada, da gehen sie hin. Der Großteil der 50 Hz ~ 500 Hz (oder höher, abhängig von der Anzahl der Spulen und der Drehzahl) Welligkeit Ihrer DC-Motoren geht in das Erdungssystem des Arduino: Schlecht!

Jetzt könnten Sie Filter und alle möglichen raffinierten Schemata hinzufügen, aber die beste Regel ist: Alles, was vom Arduino mit Strom versorgt wird, geht auch auf die Masse des Arduino zurück, und wenn dies Probleme verursacht, fügen Sie einige Widerstände, Kapazitäten und/oder Induktivitäten zum Filtern hinzu das Schlimmste raus. Alles, was mit einer Spannung arbeitet, die nicht auf dem Arduino erzeugt wird, insbesondere höhere Spannungen, hat keinen Massepfad innerhalb des Arduino.

Und überlasten Sie nicht die 5V des Arduino. Wenn Ihre Servos mehr als 100 mA bis 200 mA benötigen, bin ich bereit zu wetten, dass der Regler Ihres Arduino das nicht mag. Kaufen Sie am besten einfach einen LM7805 und einen kleinen Kühlkörper und versorgen Sie diese auch separat mit Strom. Aber dort möchten Sie immer noch, dass die Servomasse zurück zum Arduino gekoppelt wird, oder Ihr PWM-Signal, das sie steuert, muss (buchstäblich) durch Reifen gehen, um einen Rückweg zu erhalten. Das ist ein bisschen nervig rauszukommen, wenn man nicht gleich zu Beginn sehr tief in die Elektronik einsteigen will, aber die kleineren Betriebsströme und die Tatsache, dass sie intern gefiltert sind, sollten helfen, also sollte es kein großes Problem sein.

Notiz:

Ich weiß, dass ich einige Ecken vereinfacht und gekürzt habe, aber es sollte so einfach wie möglich bleiben, wenn man die Frage und die neugierigen Kommentare an anderer Stelle sieht.

Wenn Sie jedoch einen Fehler oder Fehler sehen, beschweren Sie sich bitte.

Danke schön! Du hast sicherlich die Türen zu neuen Dingen geöffnet, die ich lernen muss. Ich werde das gleich ausprobieren und Sie wissen lassen, ob es funktioniert, aber erste Frage, warum der 1-Ohm-Widerstand für die Servos und würde es weh tun, die 100-uf-Kondensatoren, die ich jetzt verwende, einfach zu lassen? Ich würde lieber nicht entlöten und es erneut versuchen, die scheinen in Ordnung zu sein. Das Starter-Arduino-Kit hat mir das beigebracht.
@MichaelRader Ein einzelner 100uF sollte in den meisten Fällen in Ordnung sein. Der Widerstand wird im Beitrag erklärt: Wenn Sie ihn einfügen, wird die Menge an High-Drain-Dip begrenzt, die Sie auf dem Haupt-VCC des Arduino erhalten, und er wird automatisch auch vor großen Problemen schützen, wenn einer stehen bleibt. Es könnte immer noch ein kleines Problem sein, aber kein großes :-D.
Ich habe die Masse anstelle des Arduino auf die Masse der Batterie zurückgebracht, aber immer noch das gleiche Problem. Gleichstrommotoren gehen an und aus. Das grüne Licht, nicht der Arduino, geht an und geht immer wieder aus, egal wo ich das Gelände betreibe.
@MichaelRader Der nächste Schritt besteht darin, die externe Stromversorgung der Servos zu testen. Es könnte sein, dass Sie zu viel vom internen Spannungsregler des Arduino verlangen. Ich habe keine genauen Angaben zu den von Ihnen verwendeten Servos. Wenn es sich also nicht um Masserückkopplung handelt, könnten die 5 V zu stark entladen sein. Versuchen Sie es mit einem externen Adapter, Netzteil oder mit einem separaten 7805-Chip. Behalten Sie jedoch die Hitze des Chips im Auge, wenn Sie ihn nicht mit etwas Wärmeleitpaste an etwas befestigen.
@MichaelRader Fühlen Sie sich frei, mich zu informieren, wenn es nicht funktioniert. Vielleicht per Direktnachricht, wenn es für die Gesamtheit des Problems interessant ist, können wir beide unsere Beiträge entsprechend bearbeiten, hält die Kommentarkette etwas gekürzt.
@Asmldof Ich bin mir nicht ganz sicher warum, aber es funktioniert jetzt. Wenn ich herausgefunden habe, dass einer meiner Arduino-Pins jedoch fehlerhaft war. Vielleicht hat es angefangen zu funktionieren, nachdem ich einen neuen Pin verwendet habe? Wirklich nicht sicher. Trotzdem danke.

Es ist möglich, aber es erfordert ein sorgfältiges Boden- und Leistungsdesign. Eine ausreichende Kapazität für jeden Treiber.

Beginnen Sie mit Sternanschluss von Strom und Masse mit Zentrum auf der Batterie. Keine GBD- oder 9ower-Verbindungen an irgendeinem anderen Punkt. Stellen Sie sicher, dass die Drähte dick genug sind.

Ihr größtes Problem wird der Umgang mit Stromimpulsen sein. Sie müssen also ein Rach-Gerät mit einem ausreichend großen Kondensator überbrücken, idealerweise mit einem Eingangsfilter.

Außerdem müssen Sie sicherstellen, dass Ihre Batterie genug Strom für alle Lasten zusammen liefern kann. Angenommen, die Kondensatoren nehmen Impulse auf, also summieren Sie einfach alle DC-Ströme.

Viel Glück, halte uns auf dem Laufenden.

Es tut mir leid, dass das überhaupt nicht geholfen hat. Ich verstehe nicht einmal, was Sie sagen. "Mit Sternverbindung starten" ? "Kein gbd oder 9ower" ?
Ja GND und Strom, aber jeweils an einem einzigen Punkt an der Batterie angeschlossen. Und stellen Sie wieder sicher, dass Sie genügend Kappen für Stromimpulse haben und dass die Batterie den gesamten Gleichstrom liefern kann