Forum: Analoge Elektronik und Schaltungstechnik PWM-Steller und DC-Motorparameter


von Randy B. (rbrecker)


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?

: Verschoben durch Moderator
von Michael B. (laberkopp)


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

von Randy B. (rbrecker)


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.

von Michael B. (laberkopp)


Lesenswert?

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.

von Randy B. (rbrecker)


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?

von Purzel H. (hacky)


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.

von Randy B. (rbrecker)


Angehängte Dateien:

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.

von Michael B. (laberkopp)


Lesenswert?

Randy B. schrieb:
> Ob die Werte plausibel sind, habe ich noch nicht nachgerechnet

Du hast eine stark instabile Versorgungsspannung, die musst du in deinem 
Fall mitmessen und mitrechnen, macht die Berechnung erheblich 
schwieriger. Wenn in den 2ms der Motor schon eine Bewegung beginnt, 
kommt Gegen-EMK in die Berechnung mit rein.

von Mi N. (msx)


Lesenswert?

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

Dann miss nur die EMK und laß die Regelung einfach weg. Wo ist das 
Problem?

von Giovanni (Gast)


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.

von Randy B. (rbrecker)


Lesenswert?

Mi N. schrieb:
> Randy B. schrieb:
>> Ich nirgendwo geschrieben, dass ich regeln will. Deswegen steht auch im
>> ersten Satz "Steller". Ich will die Drehzahl messen.
>
> Dann miss nur die EMK und laß die Regelung einfach weg. Wo ist das
> Problem?

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

von Randy B. (rbrecker)


Angehängte Dateien:

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).

von Giovanni (Gast)


Angehängte Dateien:

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.

von Randy B. (rbrecker)


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 ...

von Giovanni (Gast)


Angehängte Dateien:

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??

von Randy B. (rbrecker)


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.

von Giovanni (Gast)


Angehängte Dateien:

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.

von Randy B. (rbrecker)


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.

von Giovanni (Gast)


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.

von Randy B. (rbrecker)


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.

von Michael B. (laberkopp)


Lesenswert?

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

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

von Giovanni (Gast)


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 vom Autor gelöscht.
von Randy B. (rbrecker)


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.

> 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)

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.

von Mi N. (msx)


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 ;-)

von Randy B. (rbrecker)


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.).

von Randy B. (rbrecker)


Angehängte Dateien:

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.

von Giovanni (Gast)


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

von Randy B. (rbrecker)


Angehängte Dateien:

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.

: Bearbeitet durch User
von Giovanni (Gast)


Angehängte Dateien:

Lesenswert?

hier meine erste Durchsicht der Messwerte.
* grün: Richtung 1
* rot: Gegenrichtung

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

Fortsetzung folgt.

von Randy B. (rbrecker)


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!

von Giovanni (Gast)


Angehängte Dateien:

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??

von Randy B. (rbrecker)



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.

von Michael B. (laberkopp)


Lesenswert?

Giovanni schrieb:
> Der Grund für den Unterschied +/- ?? Habe keine Idee.

Vielleicht ein Problem des Treibers der die Polarität wechselt ?

von Giovanni (Gast)


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.

von Randy B. (rbrecker)


Lesenswert?

Giovanni schrieb:
> 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.

Gute Idee.
Ich werde mal schauen, ob ich da was zusammenstellen kann. Andere 
Alternative, wäre die große Variante in Betrieb zu nehmen.

: Bearbeitet durch User
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.