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
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
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.
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.
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?
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.
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.
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.
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?
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.
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.
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).
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.
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 ...
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??
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.
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.
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.
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.
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.
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.
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.
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.
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 ;-)
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.).
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.
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 |
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
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.
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!
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??
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.
Giovanni schrieb: > Der Grund für den Unterschied +/- ?? Habe keine Idee. Vielleicht ein Problem des Treibers der die Polarität wechselt ?
?? 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.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.