Arduino Motor Shield R3 Strommessung

Ich versuche, die Stromerfassungsfunktion von Arduino Motor Shield R3 zu verwenden , das Schild basiert auf L289 . Die Werte, die ich lese, scheinen sehr verrauscht zu sein. Ich verwende die analogRead () -Funktion von Arduino UNO A0, um Strom zu erfassen. Um dies zu beheben, habe ich versucht, einen Tiefpassfilter zwischen dem Motorschild und Arduino Uno zu verwenden.

schematisch

Simulieren Sie diese Schaltung – Mit CircuitLab erstellter Schaltplan

Dies hat geholfen, das Messrauschen zu beheben, aber ich habe mehrere Fragen dazu:

  1. Wird das Rauschen im Erfassungssignal eher vom Motor selbst verursacht, weil der Motor von PWM angetrieben wird? (Beachten Sie, dass ich die PWM-Frequenz von Arduino Uno bereits auf 32 kHz erhöht habe.)
  2. Wenn ich dem PWM-Eingangssignal einen Tiefpassfilter hinzufügen würde, wäre die Strommessung immer noch verrauscht? Ich habe versucht, PWM einen Tiefpassfilter hinzuzufügen, aber es schien die Stromerfassung nicht zu ändern. Der Tiefpassfilter wirkte sich jedoch auf den Motor aus, er begann wie gewohnt zu laufen und wurde mit der Zeit fast bis zum Stillstand langsamer. Vielleicht habe ich den Tiefpassfilter für PWM falsch angeschlossen.
  3. Gibt es tatsächlich einen Vorteil, einen Tiefpassfilter für ein PWM-Eingangssignal hinzuzufügen, oder ist 32-kHz-PWM schnell genug und ich sollte einfach den Tiefpassfilter zur Strommessung verwenden?
Sie können nicht erwarten, dass wir wissen, was ein „Arduino Motor Shield R3“ ist. Ich kann Ihrer Frage nicht einmal entnehmen, ob R3 eine Art Modellnummer, die Bezeichnung eines Widerstands oder etwas anderes ist. Dies ist eine allgemeine Elektronikseite, auf der Arduinos eine kleine Teilmenge dessen sind, worüber gesprochen wird. Ein Schema würde helfen, genau zu erklären, was erfasst wird und wie es irgendwo einem (vermutlich?) A / D-Eingang eines Mikrocontrollers präsentiert wird.
Sie möchten keine Tiefpassfilterung von PWM-Signalen sein; Die Idee ist, einen Transistor ein- und auszuschalten, ohne ihn in einen Zwischenzustand zu versetzen, in dem er Wärme abgibt.

Antworten (1)

Aus dem Blockschaltbild im Datenblatt ist ersichtlich, dass die Strommessung von den Ausgangsstufen der H-Brücke beeinflusst wird. Das bedeutet, dass, wenn Sie PWM verwenden, um den Motor anzutreiben, die Sense-Spannung mit dem PWM-Signal variiert. Die Spannung über dem Messwiderstand ist proportional zum Strom durch ihn, der wiederum von der Spannung über der Motorinduktion abhängt. Während der positiven Periode des PWM-Signals steigt der Strom „langsam“ an, während der Strom während der negativen Periode des PWM-Signals „langsam“ abnimmt. In der Praxis sieht dies ein bisschen wie eine Dreieckswelle aus, und das ist das Rauschen, das Sie messen.

Die Lösung besteht darin, sicherzustellen, dass Sie die Erfassungsspannungsmessung mit dem PWM-Signal synchronisieren. Sie können beispielsweise einen Interrupt an den Timer anhängen, der für das PWM-Signal verwendet wird, und es erfordert einiges an Graben im Datenblatt des Mikrocontrollers (und einige Versuche und Irrtümer), um herauszufinden, wie dies zu realisieren ist. Eine andere Möglichkeit besteht darin, einen Interrupt-Pin mit dem PWM-Ausgangspin zu verbinden, was zu Beginn einfacher sein kann. Dies ist möglich, obwohl Sie möglicherweise die PWM-Frequenz verringern müssen (um die ADC-Konvertierung in den PWM-Arbeitszyklus einzupassen), die Hardwareregister direkt programmieren (Arduino-Bibliotheken sind langsam) oder eine Baugruppe verwenden müssen.

Geben Sie hier die Bildbeschreibung ein

Erzielt ein Tiefpassfilter für das Erfassungssignal nicht den gleichen Effekt? Würde diese Dreieckswelle auch verschwinden, wenn ich anstelle von PWM eine direkte Spannungsänderung verwenden würde?
Der Tiefpassfilter erzielt den gleichen Effekt, erfordert jedoch zusätzliche Hardware, während die synchrone Abtastung eine Softwarelösung ist. Ich bin mir nicht sicher, was Sie mit "verwendete direkte Spannungsänderung anstelle von PWM" meinen.
Ich bevorzuge in diesem Fall eine Hardwarelösung. Durch direkte Spannungsänderung dachte ich daran, die PWM zu filtern, die in den Motorschirm geht. Hätte dies einen Vorteil im Vergleich zum Filtern der Sense-Funktion?
Wenn Sie die PWM auf eine analoge Spannung filtern, die in die Motorabschirmung eintritt, werden Sie die Abschirmung definitiv töten. Die Endstufen sind nicht für analoge Spannungen ausgelegt, sie sind entweder high oder low. Wenn ich darüber nachdenke und den Schaltplan in meiner Antwort überprüfe, wandelt der Treiberchip die analoge Spannung sowieso in ein logisches Signal um (die UND-Gatter), sodass es überhaupt nicht funktioniert.