Motorstrommessung mit Stromsensor WÄHREND PWM-IMPULS

Hallo,
möchte mit dem Stromsensor ACS712 bei einen PWM-gesteuerten Motor den Strom messen. Wie kann ich das bewerkstelligen dass nur während dem Impuls gemessen wird?

Vielen Dank

Willst du die Impulse zählen oder die höhe vom einem Impuls messen?

Robitobi:
Wie kann ich das bewerkstelligen dass nur während dem Impuls gemessen wird?

Warum?
Bei einer Induktivität fließt während der PWM Pause der Strom weiter.

Wenn der Stromsensor innerhalb des Freilaufkreises liegt, fließt hier kontinuierlich Strom, der allerdings Sägezahnförmig ist. Wenn die PWM schnell genug ist und dadurch der Wechselstromanteil klein ist, kannst du das Signal über einen einfach RC-Tiefpass glätten und erhältst so ein sauberes Signal zum Abtasten und musst dich ums Abtasttheorem nicht kümmern.

Hallo
die Messergebnisse schwanken jedoch derart dass die Daten nicht verwendet werden können.
Bei einem Verbraucher ohne PWM ist das Messergebnis tadellos.

Ich kann in den Sensor nicht eingreifen - eine Zuleitung zum Motor wird bei diesem Baustein durchgeschleust - die Messung erfolgt über einen Hallsensor. Damit gibt es dann keinen Spannungsabfall.
Ja ok, wenn es ein Sägezahn ist, dann müsste ich am Impulsanfang messen.
Gleiche Frage: Wie realisieren? :smiley:

.... ach ja der Stromsensor gibt eine Spannung aus die ich am Analog In messe ....laut Datenblatt des Stromsensors kann ich daraus dann den Strom ermitteln. Ich benötige ausschließlich die Stromstärke!

Ich verstehe noch lange nicht, was du da messen willst.

z.B. Stromstärke, den Begriff kenne ich nicht

Schaue dir doch das zu messende Signal auf einem Oszi an.

Dann werde dir klar, welchen Zeitpunkt du messen willst.

Dann leg das pwm Signal auf einen digitalEingang und mess eben, wenn der high ist.

Habe es nicht getestet, müsste aber nach Bauernlogik funktionieren, da ja pwm doch recht langsam ist

Robitobi:
Hallo
die Messergebnisse schwanken jedoch derart dass die Daten nicht verwendet werden können.
Bei einem Verbraucher ohne PWM ist das Messergebnis tadellos.

Wie stark "schwanken" denn die Daten?
Wie genau sieht dein Stromverlauf aus?
Mir welcher Frequenz läuft die PWM?

Messung ohne PWM: Gleichstrom. Klar, dass hier nichts mehr "Schwankt".

Robitobi:
Ich kann in den Sensor nicht eingreifen - eine Zuleitung zum Motor wird bei diesem Baustein durchgeschleust

Perfekt, dann sollte da der Freilaufstrom mit drin sein.

Robitobi:
Gleiche Frage: Wie realisieren? :smiley:

Üblicherweise so:
PWM-Frequenz so wählen, dass der Jitter des Stromes klein wird (<20% Nennstrom)
das analoge Stromsignal des Sensor über einen Tiefpass glätten.
Mit AD zu beliebigen Zeitpunkten abtasten.

Robitobi:
die Messergebnisse schwanken jedoch derart dass die Daten nicht verwendet werden können.

Wer misst. misst Mist :smiley:
Das Messen des Motorstrom bei PWM-Ansteuerung ist diffizil. Ich habe das mal für die Motoren meiner Modellbahn gemacht. Hast Du den Stromverlauf mal per Oszi verfolgt? Das Ergebnis hängt sehr stark vom Motor und der PWM-Frequenz ab. Während des PWM Pulses steigt der Strom mehr oder weniger stark an, um in den Pulspausen wieder abzu fallen - soweit eine Binsenweisheit. Wie stark das Ansteigen/Abfallen aber ist - d.h. die Ampitude des Sägezahns - hängt extrem von den Randbedingungen ab.
Also was willst Du messen? Minimalstrom am Anfang des Pulses, Maximalstrom am Ende oder den Mittelwert? Die Unterschiede können gewaltig sein ( was Du bei deinem unsynchronisierten Messen ja schon festgestellt hast ).
Wo kommt denn der PWM-Implus her? Du könntest ihn als externen Interrupt nehmen, und damit die Messung ( an der positiven oder negativen Flanke ) starten. Die Arduino-Funktion 'analogRead' ist allerdings blockierend bis zum Messende, was im Interrupt nicht so ideal ist. Mit direktem Zugriff auf die HW könnte man im Interrupt nur starten, und im loop auf das Ende der Messung abfragen.

Hallo vielen Dank für die Antworten,
Oszi hab ich (noch) nicht.

Ich habe ein Fahrzeug welches mit zwei Scheibenwischermotoren angetrieben wird (Monster-Motorshield). Jetzt wollte ich prüfen wenn ein Rad an einem Hindernis hängen bleibt was an einem steigenden Strom gemessen werden sollte.
Bin mir aber jetzt selber nicht mehr sicher ob der Strom steigt wenn der Motor blockiert - schließlich bleibt der Tastgrad ja gleich und somit die Leistung die zu Verfügung steht auch. Wahrscheinlich muss ich doch mit einem Radsensor die Sache abfangen?

Robitobi:
Bin mir aber jetzt selber nicht mehr sicher ob der Strom steigt wenn der Motor blockiert - schließlich bleibt der Tastgrad ja gleich und somit die Leistung die zu Verfügung steht auch.

Die zur Verfügung stehende Leistung hat nur begrenzt mit dem Tastverhältnis der PWM zu tun. Wieviel Strom der Motor zieht, bestimmt er immer noch selbst ( soweit die Stromversorgung ihn lässt :wink: ). Klar kann er bei kurzen Impulsen nicht soviel Leistung ziehen wie bei langen. Der Strom hängt aber trotzdem immer noch von der Belastung des Motors ab. Es wird aber schon sein, dass der Strom im unteren PWM-Bereich bei blockiertem Motor kleiner ist, als im oberen PWM Bereich bei laufendem.

(Monster-Motorshield).

Was willst du dann noch mit einem: ACS712 ?

Denn das Shield kann ja: Current sensing available to Arduino analog pin
Und ein Integrator ist auch schon eingebaut.

Nur nochmal zur Klärung:

Wenn du deinen exakten Stromverlauf nicht kennst, nützt die eine PWM-Synchrone Messung gar nichts.

Im Bild wird immer nach Einschalten der PWM der Strom gemessen.
Sagt das was über den Strom aus? Nein.

Wenn du aber den Mittelwert bildest, bekommst du die Info, die du brauchst.

Im übrigen steigt der Motorstrom sehr wohl an, wenn der Motor blockiert, weil über die PWM nur die Spannung eingestellt wird.

Wenn du aber den Mittelwert bildest, bekommst du die Info, die du brauchst.

Und genau das kann schon sein Shield!
Alles schon fest eingebaut.
Man muss nur aufhören, es zu ignorieren.

Im übrigen steigt der Motorstrom sehr wohl an, wenn der Motor blockiert, weil über die PWM nur die Spannung eingestellt wird.

Wenn der Motor mechanisch gebremst wird steigt der (mittlere)Strom an, weil die Gegen-EMK sinkt.

Hallo,
jetzt ist mir einiges klar geworden danke. Ich versuchs dann mal mit der Mittelwertermittlung. Werde dann von Zeit zu Zeit dann Messwerte abfragen und dann den Mittelwert berechnen. Ich hoffe der Zeitraum ist nicht zu gross damit ich die anderen Funktionen zu lange unterbrechen muss. Da muss ich dann mit der Periodendauer runter - mal sehen wie sich dann der Motor verhält (auch ggf. akustisch dann ein Problem).

@Combi: Du hast Recht, jedoch gibt mein Monster Shield die Strombelastung NICHT aus obwohl laut techn. Daten eingebaut. Ich habe mich da schon stundenlang mit beschäftigt, sehr viel experimentiert und hier auch im Forum schon diskutiert. Mein Shield ist ein 10 €-Exemplar und kann das scheinbar nicht. Bitte keine Antworten wie "da muss man halt etwas mehr investieren" ;D

Robitobi:
Ich versuchs dann mal mit der Mittelwertermittlung. Werde dann von Zeit zu Zeit dann Messwerte abfragen und dann den Mittelwert berechnen.

Nein!!!

Du musst den Mittelwert über Hardware bilden!
einfach einen RC-Tiefpass einbauen.
Wenn du die Standard-PWM des Arduino (analogwrite) verwendest, dann sollte 10kOhm und 2,2µF passen.

Danke, ich probiere es und melde mich wieder.

Hallo,
ohne Tiefpassfilter habe ich eine Schwankungsbreite zwischen 2,5 und 2,9 V (am Oszi habe ich Y runtergedreht) das wären laut Diagramm 0 Ampere bis ca. 4 Ampere. Für Tiefpassfilter muss ich noch Kondensator besorgen habe nur Eloko's in der Grössenordnung - keine unipolaren Folienkondensatoren.

Robitobi:
Hallo,
ohne Tiefpassfilter habe ich eine Schwankungsbreite zwischen 2,5 und 2,9 V (am Oszi habe ich Y runtergedreht) das wären laut Diagramm 0 Ampere bis ca. 4 Ampere. Für Tiefpassfilter muss ich noch Kondensator besorgen habe nur Eloko's in der Grössenordnung - keine unipolaren Folienkondensatoren.

Elkos sind völlig in Ordnung. Es kommt ja nur positive Spannung vor. Alles andere würde dir auch der Ardunio übel nehmen. :slight_smile:

:o Warum würde das der Arduino übel nehmen?