PWM-Steller und DC-Motorparameter

#7671748
Lesenswert?

Derzeit habe ich ein Projekt eines DC-Bürstenmotor-Stellers, der auch ohne externen Sensor in der Lage ist, die Drehzahl des Motors zu messen.

Das Messprinzip ist recht einfach: es wird der Stromrippel ausgewertet, denn dieser entsteht (hauptsächlich) über die Parallelschlüsse zweier Wicklungen im Moment der Kommutation durch die Bürsten. PWM-synchron wird der Strom gemessen, gefiltert, etwas Vorverarbeitung und dann sieht man in der FFT eine dominierende Amplitude. Diese korrespondiert mit der elektrischen Umdrehungsgeschwindigkeit, die man in die mechanische anhand der Anzahl der Kollektorteilungen umrechnen kann. Soweit, so gut und funktioniert im allgemeinen.

Allerdings: es gibt bei fast allen Motoren (die ich getestet habe) am oberen Drehzahlende einen Bereich, in dem das vorher dominierende Maximum in der Frequenz-Amplitude jetzt nur noch ein lokales unter vielen ist. Es ist noch vorhanden, jedoch ist es eben schwierig zu identifizieren.

Das wäre einfacher, wenn ich den ohmschen Innenwiderstand im vereinfachten Motormodell

Ue = R * I + Km * omega

kennen würde. Da ich wie gesagt in einem großen Bereich die Drehzahl zuverlässig auch ohne Kenntnis von R messen kann, könnte ich nun das Kennfeld omega(I, Ue) aufnehmen. Und dieses könnte dann im laufenden Betrieb zur Identifikation des passenden Maximums dienen. Zur Aufnahme des Kennfeldes müsste ich eine Lastmessung mit wechselnden Lasten machen. Möglich, aber etwas umständlich. Es wäre schön, wenn ich durch Leerlauf-Messungen die Parameter bestimmen könnte (als Vergleich: V/ESC macht das für BLDC ja ähnlich).

Eine Idee wäre, statt mit den mittleren Größen wie oben zu arbeiten, die Lösung der DGL herzu nehmen:

Ue = R * i(t) + L * di/dt + km * omega (für konstantes omega)

daraus

i(t) = Um/R * (1 - e^-(R/L)*t) mit Um = Ue - km * omages

Man bringt den Motor auf irgendeine, mittlere Drehzahl und fügt in die PWM in großen Abständen einzelne unterschiedlich lange PWM Impulse ein, die die Drehzahl des Motors (auch momentan) nicht signifikant ändern. Damit könnte man evtl. R/L schätzen, wenn man mehrere Strommessungen in diesem PWM-Impuls macht, könnte man evtl. R und L schätzen, was allerdings schwierig wird, weil bei einer hohen PWM-Frequenz der L-Einfluss (d.h. anfangs etwa linearer Anstieg des Stromes und man kaum den Sättigunsgbereich sieht). Natürlich kann ich auch für diese Messungen die PWM-Frequenz heruntersetzen.

Bevor ich nun ans Experimentieren gehe: ist das komplett zum Scheitern verurteilt? Oder halbwegs plausibel? Oder gibt es viel bessere Wege?

#7671767
Lesenswert?

Randy B. schrieb:

Das wäre einfacher, wenn ich den ohmschen Innenwiderstand im vereinfachten Motormodell kennen würde.

Du kannst bei stehendem Motor einen PWM Impuls geben. Der Strom steigt wegen der Induktivität des Motors langsam an, aber wenn die Abflachung ausreichend ist um sie mathematisch zu extrapolieren, bleibt Betriebsspannung/Strom als ohmscher Wicklungswiderstand übrig.

Normalerweise regelt man DC Motoren aber über die Gegen-EMK.

Beitrag "Drehzahlregler für DC-Motor, ATmega48-328" https://web.archive.org/web/20211213134637/https://files.elv.com/service/manuals/Drehzahlreglung/36620-Drehzahlregelung.pdf

#7671934
Lesenswert?

Michael B. schrieb:

Du kannst bei stehendem Motor einen PWM Impuls geben. Der Strom steigt wegen der Induktivität des Motors langsam an, aber wenn die Abflachung ausreichend ist um sie mathematisch zu extrapolieren, bleibt Betriebsspannung/Strom als ohmscher Wicklungswiderstand übrig.

Leider dominiert die Induktivität den ohmschen Widerstand, sodass der Impuls so lang werden muss, dass der Motor ohne externe Blockade anläuft. Deswegen überlege ich, eine PWM-Impulsfolge abwechselnd für links- und rechts zu benutzen. Allerdings ist man dann mit dem Blockstrom konfrontiert, der oft sie Belastbarkeit der Endstufe übersteigt.

Aus diesem Grunde wohl ich das bei laufendem Motor machen, dann ist die effektive Spannung an R geringer wegen der BEMF.

Michael B. schrieb:

Normalerweise regelt man DC Motoren aber über die Gegen-EMK.

Ich nirgendwo geschrieben, dass ich regeln will. Deswegen steht auch im ersten Satz "Steller". Ich will die Drehzahl messen.

#7672014
Lesenswert?

Michael B. schrieb:

Randy B. schrieb:

sodass der Impuls so lang werden muss, dass der Motor ohne externe Blockade anläuft.

Du sollst ja auch nicht bis zur induktiven Sättigung laufen lassen, sondern nur so lang, bis du aus der Biegung ausreichend genau extrapolieren kannst.

Und man macht das, wenn er sowieso anlaufen soll.

Mmh, werde ich nochmal schauen, ob das dann möglich ist. Allerdings habe ich da sehr starke Zweifel ... Aber: Versuch macht kluch. Hast Du irgendwelche Referenzen zum Thema?

#7673853
Lesenswert?

Nur nicht so zaghaft. Sofern's die Hardware hergibt - ausprobieren. Bedeutet mehrere ADC Samples waehrend eines PWM Pulses. Wenn der Controller 500k Sample machen koennte. Dazwischen sollte noch etwas Zeit fuer Auswertung und Reaktion drauf sein. Der ADC sollte per Hardware PWM Synchron sein.

#7673882
Lesenswert?

Hier mal ein Screenshot der Messungen.

Dei Signale an den Testpunkte TP0-2 sind hier irrelevant. IProp ist das Signal des Stromsensors am ADC. PWM ist Motoranschluss A (Anschluss B nicht dargestellt) U ist die Versorgungsspannung, Urc ist die etwas gefilterte Versorgungsspannung am ADC

Es ist eine Wechsel-pwm mit 200Hz, damit sich der Motor nicht dreht.

Ob die Werte plausibel sind, habe ich noch nicht nachgerechnet, aber so scheint es dann doch zu gehen.

Angehängte Dateien:
Gast #7674517
Lesenswert?

Randy B. schrieb:

Es ist eine Wechsel-pwm mit 200Hz, damit sich der Motor nicht dreht.

Ob die Werte plausibel sind, habe ich noch nicht nachgerechnet, aber so scheint es dann doch zu gehen.

Gibt es die Messung auch als Datenreihe (CSV, TXT, ...)? Normierung der Strommessung wäre auch noch interessant. Ev. auch ein einfaches Schaltbild in dem die Messpunkte eingezeichnet sind.

Gibt es vom Motor auch Daten? Ich nehme an es ist ein PM.

  • Drehzahl & Spannung
  • Leistung
  • Dimension

Würde gerne einen Versuch machen.

thx.

#7674530
Lesenswert?

Giovanni schrieb:

Randy B. schrieb:

Es ist eine Wechsel-pwm mit 200Hz, damit sich der Motor nicht dreht.

Ob die Werte plausibel sind, habe ich noch nicht nachgerechnet, aber so scheint es dann doch zu gehen.

Gibt es die Messung auch als Datenreihe (CSV, TXT, ...)?

Die Messung im obigen Bild wird noch "extern" gemacht, also einfach durch den LA. Kann ich gerne zur Verfügung stellen (s. Anhang).

  1. Spalte: Zeitstempel
  2. Spalte: IProp (Spannung)
  3. Spalte: PWM
  4. Spalte: U
  5. Spalte: Urc

Normierung der Strommessung wäre auch noch interessant.

i = (IProp / 1kOhm) * 6150

Ev. auch ein einfaches Schaltbild in dem die Messpunkte eingezeichnet sind.

Die H-Brücke ist ein DRV8245 und dort Spannung an IProp (an 1kOhm).

Gibt es vom Motor auch Daten? Ich nehme an es ist ein PM.

Ja.

  • Drehzahl & Spannung
  • Leistung
  • Dimension

Irrelevant, soll für viele Motoren gehen.

Würde gerne einen Versuch machen.

Was willst Du machen? R bestimmen? Das scheint zu funktionieren. Ich habe es jetzt als Grenzwertmethode gemacht, d.h. den duty-cycle soweit erhöht, dass ich in die Sättigung kam (s.a. Bild). Geplant ist aber, die Parameter für die a(1-e^(-bt)) zu schätzen. Das habe ich aber noch nicht umgesetzt, weil ich dazu erst etwas an meiner Firmware ändern muss (gated-timer für ADC-Messung im PWM-Puls).

Angehängte Dateien:
Gast #7674657
Lesenswert?

Randy B. schrieb:

Was willst Du machen? R bestimmen? Das scheint zu funktionieren. Ich habe es jetzt als Grenzwertmethode gemacht, d.h. den duty-cycle soweit erhöht, dass ich in die Sättigung kam (s.a. Bild).

Nicht die Lösung, aber zur Info.

  • Model mit L,R und variabler Spannung aus der Messung
  • reines Exponentialfunktion passt eher nicht, da sich die Spannung ändert.
  • Stromsignal kommt um 3 samples (= 96µs) zu spät. Hab ich verschoben.

Welche Genauigkeit ist verlangt/angestrebt? Im realen Betrieb wird sich der Widerstand mit der Temperatur ändern.

Angehängte Dateien:
#7674804
Lesenswert?

Giovanni schrieb:

Randy B. schrieb:

Was willst Du machen? R bestimmen? Das scheint zu funktionieren. Ich habe es jetzt als Grenzwertmethode gemacht, d.h. den duty-cycle soweit erhöht, dass ich in die Sättigung kam (s.a. Bild).

Nicht die Lösung, aber zur Info.

  • Model mit L,R und variabler Spannung aus der Messung
  • reines Exponentialfunktion passt eher nicht, da sich die Spannung ändert.
  • Stromsignal kommt um 3 samples (= 96µs) zu spät. Hab ich verschoben.

Schaut gut aus, und der Widerstandswert passt auch. Welches Verfahren hast Du zur Schätzung benutzt? Integrationsmethode? Hast Du die einbrechende Versorgungsspannung mit einbezogen?

Wie viele Samples (im Bereich des Impulses) hast Du für die Approximation benutzt? Alle?

Welche Genauigkeit ist verlangt/angestrebt? Im realen Betrieb wird sich der Widerstand mit der Temperatur ändern.

So genau, wie möglich. Neben der Drehzahlmessung hatte ich sogar an eine rel. Temperaturschätzung angedacht ...

Gast #7674843
Lesenswert?

Wie gesagt. Ich wollte schon länger Parameteridentifikation probieren, hatte aber keine realen Daten.

  • Habe alle samples in dem dargestellten Zeitbereich verwendet (=92)
  • Modell mit R,L und Spannungsquelle mit input aus CSV
  • optimizer result:
1
 * Status: success
2
 * Candidate solution
3
    Final objective value:     3.582460e-01
4
 * Found with
5
    Algorithm:     Nelder-Mead
6
 * Convergence measures
7
    (Σ(y-ȳ)²)/n  1.0e-08
8
 * Work counters
9
    Seconds run:   0  (vs limit Inf)
10
    Iterations:    103
11
    f(x) calls:    259
  • julia 1.10.0 mit Modia, und Optim
  • nächster Schritt:
    • Umstieg auf ModelingToolkit und DiffEqParamEstim - sollte schneller sein
    • eventuell Auswertung mehrerer Sprünge

Anmerkung: Ich war von die Qualität des Ergebnisses überrascht.

FRAGE: Ist die Verzögerung des Stromsignals (~100µs) OK??

Angehängte Dateien:
#7674847
Lesenswert?

Giovanni schrieb:

Wie gesagt. Ich wollte schon länger Parameteridentifikation probieren, hatte aber keine realen Daten.

  • Habe alle samples in dem dargestellten Zeitbereich verwendet (=92)
  • Modell mit R,L und Spannungsquelle mit input aus CSV
  • optimizer result:
1
>  * Status: success
2
>  * Candidate solution
3
>     Final objective value:     3.582460e-01
4
>  * Found with
5
>     Algorithm:     Nelder-Mead
6
>  * Convergence measures
7
>     (Σ(y-ȳ)²)/n  1.0e-08
8
>  * Work counters
9
>     Seconds run:   0  (vs limit Inf)
10
>     Iterations:    103
11
>     f(x) calls:    259
12
>
  • julia 1.10.0 mit Modia, und Optim
  • nächster Schritt:
    • Umstieg auf ModelingToolkit und DiffEqParamEstim - sollte schneller sein
    • eventuell Auswertung mehrerer Sprünge

Vielleicht kannst Du auch mal mit der Anzahl der Samples spielen?

FRAGE: Ist die Verzögerung des Stromsignals (~100µs) OK??

Die Verzügerung liegt im DRV8245, da kann ich nichts dran machen. Ich habe aber noch eine andere Version mit diskreter H-Brücke und INA240 im Motorzweig. Da ist das natürlich nicht.

Für mich wäre natürlich jetzt auch eine Lösung in C/C++ interessant. Wie gesagt, ich hätte es jetzt mit der Integrationsmethode versucht.

Gast #7675735
Lesenswert?

Nachtrag:

Ich habe noch versucht alle Sprünge der Messung (=56) auszuwerten. Ergebnisse im Bild.

  • x-Achse: norm(StromIST-StromSIMULIERT) - wird vom optimizer verwendet.
  • y-Achse: R und L
  • Zahl der samples: 89, davon 5 vor dem Spannungssprung
  • Verschiebung Stromsignal: 3 samples = 96µs

Hätte erwartet, dass bei einem geringeren Fehler es zu einer Häufung kommt. Dem ist leider nicht so. D.h. die Messungen sind nicht reproduzierbar - also nicht mit hoher Genauigkeit.

Leider: bin Energietechniker mit C/C++ Grundkenntnissen, finde aber das Projekt interessant.

Angehängte Dateien:
#7676855
Lesenswert?

Giovanni schrieb:

Nachtrag:

Ich habe noch versucht alle Sprünge der Messung (=56) auszuwerten. Ergebnisse im Bild.

Danke für Deine Mühe! Was bedeutet bei der 2D-Verteilung "minimum" (auf der x-Achse)?

  • x-Achse: norm(StromIST-StromSIMULIERT) - wird vom optimizer verwendet.
  • y-Achse: R und L
  • Zahl der samples: 89, davon 5 vor dem Spannungssprung
  • Verschiebung Stromsignal: 3 samples = 96µs

Hätte erwartet, dass bei einem geringeren Fehler es zu einer Häufung kommt. Dem ist leider nicht so. D.h. die Messungen sind nicht reproduzierbar - also nicht mit hoher Genauigkeit.

Naja, ich denke schon, dass ich mit dem Mittelwert des Widerstandes als Schätzung arbeiten kann. Die daraus und dem Strom abgeleitete Schätzung für die Drehzahl dient auch nur zur Bestimmung des Suchintervalls für das Maximum in der FFT.

Gast #7677079
Lesenswert?

Randy B. schrieb:

Was bedeutet bei der 2D-Verteilung "minimum" (auf der x-Achse)?

Die Optimierung beschränkt sich auf 89 Punkte. Die Simulation ist auf die gleiche Schrittweite wie die Messung eingestellt (wobei der Solver auch Zwischenwerte rechnet). Damit hab ich dann 89 Stromwerte der Simulation.

Error: Simulation - Messung

minimum = Wurzel(Summe(Error^2)) und gibt damit Auskunft über die Qualität der Näherung. => Kleinerer Wert ist bessere Näherung.

Frage: Der Motor hat sich beim Versuch nicht bewegt. War also mechanisch blockiert.

#7677084
Lesenswert?

Giovanni schrieb:

Randy B. schrieb:

Was bedeutet bei der 2D-Verteilung "minimum" (auf der x-Achse)?

minimum = Wurzel(Summe(Error^2)) und gibt damit Auskunft über die Qualität der Näherung. => Kleinerer Wert ist bessere Näherung.

Ok. Ich fand die Wortwahl verwirrend ...

Frage: Der Motor hat sich beim Versuch nicht bewegt. War also mechanisch blockiert.

Nein, er war nicht extern blockiert. Allerdings war es eine Wechsel-PWM. Bei diesem Motor war optisch keine Bewegung sichtbar, aber natürlich war eine Schwingung am Gehäuse "fühlbar", daher wird es eine kleine Bewegung geben. Ich plane die Messung so durchzuführen, dass der Motor sich auch mal um ein paar Grad dreht, damit ggf. andere Wicklungen oder Kommutatorpositionen genommen werden. Es könnte ja auch sogar passieren, dass eine Position erwischt wird, bei dem die Bürsten Wicklungen parallel schalten.

Gast #7677683
Lesenswert?

Michael B. schrieb:

Doch, siehste doch wie er bei einigen Impulsen ab 2.2ms losläuft. Die Auswertung wird genauer wenn man sie nur bis 2ms verfolg

Eher umgekehrt. Wenn der Motor dreht, dann gib es Gegen-EMK und der Strom wird kleiner. Ich versuche mal ein elektro-mechanisches Modell mit Schwungmasse.

Weitere Fragezeichen:

  1. Wir bewegen uns im ms-Zeitbereich. Da gibt es dann schon Skineffekt und Wirbelströme im Eisen (und ev. auch im PM).
  2. Kohlebürsten haben einen konstanten Spannungsabfall (~ 1V). Ist die Frage ob dies bei Kleinstmotoren auch gilt?
  3. Im Test hatten wir ~10V und ~10A - wie weit sind wir hier von den Nenndaten entfernt? Wäre interessant für Einschätzung von Punkt 1)
Beitrag #7677697 wurde von einem Moderator gelöscht.
#7677698
Lesenswert?

Giovanni schrieb:

Eher umgekehrt. Wenn der Motor dreht, dann gib es Gegen-EMK und der Strom wird kleiner. Ich versuche mal ein elektro-mechanisches Modell mit Schwungmasse.

Mmh, ohne den mag. Fluss und die Rotormasse wird das natürlich schwierig.

Weitere Fragezeichen:

  1. Wir bewegen uns im ms-Zeitbereich. Da gibt es dann schon Skineffekt und Wirbelströme im Eisen (und ev. auch im PM).
  2. Kohlebürsten haben einen konstanten Spannungsabfall (~ 1V). Ist die Frage ob dies bei Kleinstmotoren auch gilt?

Meistens haben wir bei Kleinmotoren Metallbürsten. In diesem speziellen Falls sind es allerdings tatsächlich Kohlebürsten.

  1. Im Test hatten wir ~10V und ~10A - wie weit sind wir hier von den Nenndaten entfernt? Wäre interessant für Einschätzung von Punkt 1)

Die Daten findest Du hier:

https://www.amazon.com/TS-60S-R1-5000RPM-Permanent-Brushed-Bearings/dp/B07T3K6TZT

(TS-60 24V)

Mein nä. Schritt wird sein, die Schätzung von L und R auf dem µC mit der Integrationsmethode zu realisieren.

#7678051
Lesenswert?

Randy B. schrieb:

Geht hier nicht, da die H-Brücke immer im active-freewheeling arbeitet.

Ist da wirklich nichts dran zu flicken? Der Treiber hätte passende Modi dafür. Ich lese hier interessiert mit und folgere für mich, daß hier viel Aufwand für eine Lösung getrieben wird, die es (gar)nicht gibt.

Randy B. schrieb:

Das Messprinzip ist recht einfach:

Ich bleibe gespannt ;-)

#7678185
Lesenswert?

Mi N. schrieb:

Ist da wirklich nichts dran zu flicken? Der Treiber hätte passende Modi dafür.

Mmh, ich habe die non-SPI Variante, da gehen beide Ausgänge auf HiZ. Daher müsste ich dort dann an beiden Motorphasen messen. Kann man später mal noch einbauen, im Moment ist es bei meinem Prototyp nicht vorgesehen.

Mi N. schrieb:

Ich lese hier interessiert mit und folgere für mich, daß hier viel Aufwand für eine Lösung getrieben wird, die es (gar)nicht gibt.

Wie kommst Du darauf?

Randy B. schrieb:

Das Messprinzip ist recht einfach:

Ich bleibe gespannt ;-)

Den ganzen Kram mit Innenwiderstand oder Ubmf brauche ich nur, um im oberen Bereich der Drehzahl, die FFT-Messung zu unterstützen (s.o.).

#7680760
Lesenswert?

In der Datei t60_24V sind die Messwerte für einen T60-Motor bei 24V. Erste Spalte ADC(im) und zweite Spalte ADV(Um) während eines PWM-Impulses. Zeilen mit m in der ersten Spalte sind Trenner zwischen zwei PWM-Impulsen. Die PWM Impulse sind immer aufeinanderfolgend links- und rechts-Laufrichtung. Der Motor brummt, kommt aber dabei nicht wirklich in Bewegung.

Die Datei t60_24v_results.txt sind die Ergebnisse der Approximation als

ADC(i) = a * (1 - exp(b * n))

Die PWM-Impulslängen werden immer weiter vergrößert, bis zu einer Grenze, bevor der ADC übersteuert wird.

Was man sehen kann, ist, dass die Schätzung von Rm recht konsistent ist, sofern man nur links- bzw- rechts-Messungen für sich betrachtet.

Da stellt sich jetzt die Frage, warum sind die Messungen links / rechts so unterschiedlich?

Natürlich kann ich auch mit getrennten Innenwiderständen rechts / links weiter arbeiten, doch hätte ich gerne eine einigermaßen plausible Erklärung dafür.

Angehängte Dateien:
Gast #7680993
Lesenswert?

Musste erst die Datensammlung für mich etwas ordnen.

Fragen:

  • Hat der Wert "m,161" eine Bedeutung?
  • wir haben gesehen, dass die Strommessung um ~100µs verzögert ist. Wurde das schon im Datensatz berücksichtigt?
  • Gibt es eine Zeitinformation zu den Messwerten? samplingTime?
  • Der Motor bekommt alternierend Positive und Negative Spannungsblöcke und bewegt sich dabei nicht?
  • Die Zeit zwischen den Blöcken ist >>> L/R

zB Zeile 161: das ist nur eine Ausschnitt des Stromanstieges. Den Start sehe nicht.

1
m,161
2
227,3146  
3
461,3146
4
682,3145
5
884,3145
6
1085,3144
#7681006
Lesenswert?

Giovanni schrieb:

Musste erst die Datensammlung für mich etwas ordnen.

Fragen:

  • Hat der Wert "m,161" eine Bedeutung?

Nicht für Innenwiderstandsberechnung, sondern nur um den die Erhöhung des pwm-duties irgendwann abzubrechen. Auf jeden Fall bleibt der pwm-duty immer < 50%

  • wir haben gesehen, dass die Strommessung um ~100µs verzögert ist.

Hatte ich vergessen und nun korrigiert. Das Ergebnis ist in der neuen Datei im Anhang. Sorry.

Wurde das schon im Datensatz berücksichtigt?

  • Gibt es eine Zeitinformation zu den Messwerten? samplingTime?

Samplingfrequenz ist 20511Hz. Das kann aber noch beliebig geändert werden.

Die Matrizenwerte für die Approximation werden mit jedem Sample updated. Der Rechenaufwand ist sehr überschaubar.

  • Der Motor bekommt alternierend Positive und Negative Spannungsblöcke und bewegt sich dabei nicht?

Das kann ich nicht wirklich messen! Man fühlt ein Brummen, aber keine merkliche Bewegung an der Welle. Aber wie viel Grad das ausmacht, kann ich nicht feststellen. Eine Idee wäre einen feinen Strich auf die Welle aufzubringen, und dann optisch den sich ggf. ergebenden Kreisauschnitt zu bestimmen.

  • Die Zeit zwischen den Blöcken ist >>> L/R

Habe ich noch nicht kontrolliert, allerdings ist der PWM-duty immer < 50% und mit active-freeqheeling sollte der Strom dann am Ende eines Zyklus tatsächlich abgeklungen sein.

Danke für Deine Anregungen.

Angehängte Dateien:
#7681448
Lesenswert?

Giovanni schrieb:

hier meine erste Durchsicht der Messwerte.

  • grün: Richtung 1
  • rot: Gegenrichtung

Ja, genau: richtungsorientiert sortiert liegen sie ganz gut beieinander.

da das Thema nur 2 Personen interessiert, wäre auch Direktkontakt möglich.

Ich weiß nicht, ob es hier stille Mitleser gibt ... vielleicht springt ja noch jemand auf ;-)

Fortsetzung folgt.

Super!

Ich werde als nächstes auch mal weitere Motoren testen, hierbei kann es ggf. notwendig sein, die PWM-Frequenz für die Schätzung weiter herunter zu setzen, damit die Kurvenform nicht zu einer Geraden entartet. Ich denke, dass ich den Prozess jeweils mit 50, 100 und 200Hz PWM-Frequenz durchlaufe und jeweils wie jetzt auch den PWM-duty erhöhe, bis der ADC voll ausgesteuert ist.

Danke!

Gast #7682311
Lesenswert?

habe mich auf die Messungen mit den 29 samples beschränkt, und da nur solche, wo der Strom am Beginn = 0.0 ist. (2:60)

Ich verwende das ControlSystemIdentification package von julia mit einem PT1 Modell. Die Näherung geht davon auf, dass der Ausgangswert um einen Schritt verzögert ist. Ich hatte keine Normierung, daher habe ich die ADC Werte verwendet.

1
Für 29 samples, 2. Messung ergibt: 
2
*************
3
   0.07289280203137086
4
-------------------------
5
1.0z - 0.9631654059920672
6
Sample Time: 4.8754326946516506e-5 (seconds)
7
Discrete-time transfer function model
8
*************
9
   1523.3354692237676
10
------------------------
11
1.0s + 769.7803072873033
12
Continuous-time transfer function model
13
*************

Die Näherungen mit PT1 zeigen eine gute Übereinstimmung. Bilder=> trans29.png.zip

Wirklich: Es gibt einen Unterschied +/- (rot/grün) Bild: transferFunctions29.png, Die Endwerte +/- unterscheidet sich um etwa 10%

1
┌────┬─────────┬────────┬────────────┐
2
│ i  │ num[1]  │ den[1] │ G(s) T=inf │
3
├────┼─────────┼────────┼────────────┤
4
│  2 │ 1523.34 │ 769.78 │     1.9764 │
5
│  3 │ 1636.88 │ 722.56 │     2.2622 │
6
│  4 │ 1501.01 │ 761.27 │     1.9691 │
7
│  5 │ 1701.92 │ 784.37 │     2.1670 │
8
│  6 │ 1474.49 │ 726.35 │     2.0272 │
9
│  7 │ 1729.64 │ 804.59 │     2.1471 │
10
│  8 │ 1467.09 │ 721.70 │     2.0300 │
11
│  9 │ 1736.34 │ 806.93 │     2.1491 │
12
│ 10 │ 1464.59 │ 707.50 │     2.0672 │
13
│ 11 │ 1714.32 │ 788.10 │     2.1725 │
14
│ 12 │ 1458.01 │ 698.21 │     2.0852 │
15
│ 13 │ 1701.28 │ 792.02 │     2.1453 │
16
...

Der Grund für den Unterschied +/- ?? Habe keine Idee. Kann mir nicht vorstellen, dass es am Motor liegt. Daher bleibt nur der Versuchsaufbau - den ich nicht kenne.

Bitte um Normierung:

  • ADC ==> volts??
  • ADC ==> amps??
Angehängte Dateien:
#7682334
Lesenswert?

Giovanni schrieb:

Bitte um Normierung:

  • ADC ==> volts??
  • ADC ==> amps??

Hier die Umrechnungen:

U = (33.33 / 4095) * Adc(U) * 1V

I = Adc(I) / 201.77 * 1A

Anbei zwei Bilder des Stellers in diesem Versuch (der mit dem DRV8245 drauf), die kleine Variante.

Dann noch drei Bilder von der großen Variante, die im Gegensatz zum DRV8245 den Motorstrom in-phase misst. Der Unterschied ist dann, dass man auch den Strom wieder abklingen sieht. Diese Variante läuft auch, allerdings habe ich jetzt erstmal mit der kleinen gearbeitet.

Gast #7682419
Lesenswert?

?? Es ändert sich bei +/- R und auch L.

1
┌────┬─────────┬────────┬───────┬─────────┐
2
│ i  │ num[1]  │ den[1] │ L[mH] │ R[ohms] │
3
├────┼─────────┼────────┼───────┼─────────┤
4
│  2 │  927.59 │ 769.78 │ 1.078 │  0.8299 │
5
│  3 │  996.73 │ 722.56 │ 1.003 │  0.7249 │
6
│  4 │  914.00 │ 761.27 │ 1.094 │  0.8329 │
7
│  5 │ 1036.34 │ 784.37 │ 0.965 │  0.7569 │
8
│  6 │  897.85 │ 726.35 │ 1.114 │  0.8090 │
9
│  7 │ 1053.22 │ 804.59 │ 0.949 │  0.7639 │
10
│  8 │  893.34 │ 721.70 │ 1.119 │  0.8079 │
11
│  9 │ 1057.30 │ 806.93 │ 0.946 │  0.7632 │
12
│ 10 │  891.82 │ 707.50 │ 1.121 │  0.7933 │
13
│ 11 │ 1043.89 │ 788.10 │ 0.958 │  0.7550 │
14
...

Gibt es die Möglichkeit den Versuch anstatt mit dem Motor mit einer Spule und einem Widerstand in ähnlicher Größenordnung zu machen? Um zu klären woher der Unterschied kommt.

** Der Motor sieht bei dem Versuch ~20A - bei 4.3 A Nennstrom. Könnte Rückwirkungen auf die Permanentmagnete haben, aber erklärt keine einseitiges Verhalten.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren