Das Lesen des Sensors ist chaotisch, wenn Arduino von einem nicht angeschlossenen Laptop mit Strom versorgt wird

Ich habe einen Sharp-Näherungssensor an meinen Arduino (Analogeingang) angeschlossen. Dieser Arduino wird über USB von einem Laptop angeschlossen und mit Strom versorgt.

  • Wenn der Laptop angeschlossen ist, funktioniert alles einwandfrei (ich bekomme konsistente Messwerte).

  • Wenn der Laptop mit Batterien läuft, sind die Werte, die ich lese, "chaotisch". Ich meine, dass sie sehr unterschiedlich sind.

Ich habe auch ein Arduino-Motorschild, das von einer externen Batterie gespeist wird, aber das ist nur für die Motoren (Sensoren werden vom Arduino gespeist). Der GND der Batterie und des Arduino sind jedoch verbunden, vielleicht verursacht das das Problem?

Oder wird zu viel Strom vom USB benötigt?

Nun, haben Sie eine Idee, das zu verstehen und zu beheben?

Weitere Informationen:

  • Das Lesen der Sensoren wird mit einem Tiefpassfilter "geglättet" (siehe meine vorherige Frage dazu ).
  • (Wenn Sie weitere Informationen benötigen, werden diese hier angezeigt.)
Zu viel Lärm? Hast du Entkopplungskondensatoren am Sensor? Siehe diese Frage
Kannst du ein Blockdiagramm oder einen Schaltplan posten? Ist der Stromkreis an irgendetwas geerdet? Geht es weg, wenn Sie es an etwas erden? Haben Sie ein Oszilloskop, um das Signal im ein- und ausgesteckten Zustand zu verfolgen? Ich vermute, es ist ein Problem, das durch schwebende Schaltungen und hohe Gleichtaktspannungen irgendwo verursacht wird.
Das Trennen (oder zumindest nicht Antreiben) der Motoren, um zu sehen, ob das Problem weiterhin besteht, wenn der Laptop ohne Batterien läuft, wäre ein naheliegendes Experiment. Wenn ja, könnte es sein, dass die USB-Bus-Stromversorgung des Laptops im Akkubetrieb verrauscht ist.
@Dean Wie ich in der Frage sagte, habe ich einen Tiefpassfilter verwendet (siehe electronic.stackexchange.com/questions/17754/… )
@Chris Ich mache diese Tests, ohne die Motoren anzutreiben, es gibt keinen Unterschied bei laufenden Motoren.

Antworten (3)

Basierend auf dem Bericht, dass es funktioniert, wenn der Stromkreis von seiner eigenen Batterie gespeist wird, klingt es wirklich so, als ob die USB-VBUS-Versorgung des Laptops laut ist, wenn es ohne Batterien betrieben wird.

Möglicherweise stammt der VBUS von einem schlecht implementierten Schaltregler oder DC/DC-Wandler oder einem mit einigen ausgefallenen Komponenten, der beim Betrieb ohne Batterien stärker belastet wird als wenn die wahrscheinlich höhere Ladespannung ausgeschaltet ist.

Es sollte möglich sein, diese Versorgung sowohl mit einer Reiheninduktivität als auch mit einer Kappe zu filtern - dies ist effektiver als ein Kondensator allein. Sie können sogar mehrere Stufen solcher Filter durchführen.

Es kann jedoch einfacher sein, nur eine Batterie zu verwenden, wenn dies für Sie funktioniert.

Danke, das werde ich dann machen. Aber um 3 Batterien zu vermeiden, rechnen Sie damit, dass ich am Ende das gleiche Problem (dh Rauschen in der Stromquelle) haben kann, wenn ich meinen Arduino mit der Batterie betreibe, die ich für die Motoren verwende (Spannung natürlich angepasst)? Ich meine, das Drehen von Motoren hat keinen Einfluss auf den Arduino?
Motoren können definitiv ein Problem sein, aber eines, das durch eine gute Versorgungsfilterung zwischen den Motortreibern und dem Rest der Schaltung gelöst werden kann. Oder Sie können die Motoren nicht laufen lassen und gleichzeitig die Sensoren lesen (vorausgesetzt, das Geräusch ist nicht so schlimm, dass es den internen Zustand des Arduino stört). Motorschmutz wieder in den USB zu bekommen (wenn keine Batterie verwendet wird), klingt auch nicht nach einer großartigen Idee, aber es scheint, als wäre diese USB-Versorgung von Anfang an hässlich.

Klingt nach Masseschleife.

Der DC-Ausgangsanschluss (-) des Laptops ist mit dem Erdungsstift des Steckers im Adapter verbunden. Das Problem wird normalerweise behoben, indem alle anderen Masseverbindungen entfernt werden. Überprüfen Sie, ob Ihr Arduino mit einem anderen geerdeten Gerät verbunden ist, z. B. einem Oszilloskop.

Das hört sich nicht nach Masseschleife an. Eine Masseschleife würde Probleme verursachen, wenn der Laptop angeschlossen ist, und die Probleme würden verschwinden, wenn er mit Batterien betrieben wird. Dies ist laut der Frage das Gegenteil.
@endolith Es könnte mehrere hochohmige Erdungen geben, beispielsweise durch eine Schutzdiode in einem CMOS-IC. Die Erdung mit niedriger Impedanz des Laptops kann, in Ermangelung eines besseren Wortes, diese anderen Erdungen "überschreiben", wodurch der Effekt verschwindet, wenn diese Erdung verbunden wird.
Wie ist das ein Erdschleifenproblem?
Der Arduino ist mit nichts anderem verbunden. Aber ich habe versucht, den Arduino gleichzeitig an USB (Laptop) und an eine Batterie (9 V, nicht die gleichen wie die Motoren) anzuschließen. Jetzt funktionieren meine Sensoren richtig! Ist das hilfreich?

Versuchen Sie, einen GROSSEN Kondensator auf der Stromversorgungsschiene hinzuzufügen - mindestens 1.000 uF. 10.000 uF, falls verfügbar. Wenn das keinen Unterschied macht, ist es wahrscheinlich ein Problem mit abgestrahltem Rauschen. Wenn das Hinzufügen des Kondensators hilft, handelt es sich wahrscheinlich um ein Problem mit leitungsgebundenem Rauschen.

Motoren können sehr unangenehm sein - auch bei eigener Versorgung. Wenn Motoren nur in eine Richtung angetrieben werden, sind Sperrdioden über dem Motor unbedingt erforderlich. Wenn die Motoren bidirektional angetrieben werden, ist eine Art Dämpfung unbedingt erforderlich. (Werden Motoren mono- oder bidirektional angetrieben?)

Über USB sollten gemäß den Einschaltstrombegrenzungen der Spezifikation nicht mehr als 10 µF angeschlossen sein
Ja. Aber. Für vorübergehende Fehlerbehebungszwecke, wie hier, ist es sehr, sehr, sehr unwahrscheinlich, dass die zusätzliche Kapazität ein Problem verursacht. Wie bei jeder solchen Aktivität kann das Spielen mit Systemen außerhalb der Spezifikation Probleme verursachen. Aber das ist hier unwahrscheinlich. Der Benutzer muss entscheiden, was ein „akzeptables Risiko“ ist. Viele Leute missbrauchen USB, indem sie überschüssige Energie daraus ziehen – das macht es nicht „gut“, aber es ist normalerweise machbar uF etwa 0,12 Watt.Sekunden.Fügen Sie eine kleine Serienkappe für die gewünschte Lade-ID hinzu und schließen Sie sie beim Laden kurz.Stromeinbruch kann das Hauptrisiko sein.
Ich habe versucht, den Arduino gleichzeitig an USB (Laptop) und an eine Batterie (9 V, nicht die gleichen wie die Motoren) anzuschließen. Jetzt funktionieren meine Sensoren richtig! Ist das hilfreich?