Vor einigen Jahren hatte ich mal einen Lernbausatz für einen
Elektromotor gekauft. Ich überlege, ob man dazu ein elektromechanisches
Modell machen könnte.
Hier hat Joe G. das Modell einer Gleichstromaschine in LtSpice abgelegt,
das eventuell als Grundlage dienen könnte.
Beitrag "Re: LTSpice – Mechatronik"
Für das Modell werden die mechanischen und elektrischen Daten benötigt.
Statorwicklung:
R=1.6Ohm, L=3.14mH
Rotorwicklung:
R=1.75Ohm, L=3.4mH
Im Moment habe ich die beiden Spulen in Reihe geschaltet, so dürfte der
Motor ein "Reihenschlussmotor" sein:
https://de.wikipedia.org/wiki/Einphasen-Reihenschlussmotor
Hier die Geschwindigkeitsmessung im Leerlauf.
Bei 7V zieht der Motor etwas 130mA. Die sind aber stark schwankend, weil
der Kommutator während eine Umlaufs für Unterbrechungen sorgt.
1
encoderTicks=24;
2
measuredFrequency_Hz=510;
3
rounds_per_sec=measuredFrequency_Hz/encoderTicks
4
RPM=rounds_per_sec*60
rounds_per_sec = 21.250
RPM = 1275
Über das Gewicht des Rotors lässt sich wahrscheinlich das
Trägheitsmoment gut abschätzen. Ich überlege, ob es sinnvoll ist, den
Rotor als Quader zu modellieren und das Trägheitsmoment der Mittelachse
zu vernachlässigen.
Hmm .. die gesammelten Werte reichen für das Modell von Joerg nicht aus.
Es fehlen mir die Reibverluste. Die könnte man vielleicht über
Geschwindigkeitsverlauf beim Auslaufen des Motors bestimmen (Einheit?).
Was der Kreuzkoeffizient ist, ist mir aber völlig unklar.
Der Motor ist etwas empfindlich auf den Bürstendruck am Kommutator.
Bei besserer Kontaktierung läuft er schon mit 3.4V und 560mA recht
ordentlich.
Im Anhang das Arduino-Script zur Encoderauswertung, die Messdaten, die
Analyse mit Octave und der Geschwindigkeitsgraph mit Beschleunigung und
Verzögerung. Es gibt ein paar Störungspeaks die man bestimmt mit einem
Tiefpass am Eingang etwas unterdrücken könnte.
gibt es auch Messungen vom Strom? Wäre hilfreich.
Habe versucht Messungen auszuwerten.
1) nach 1 Umdrehung = 24 samples gibt es immer einen Sprung
2) Die großen Sprünge kommen offensichtlich von Einstreuungen da tw. 25
Impuls/Umdrehung.
3) Wir reden von Reihenschluss? Korrekt?
4) Vorschlag: Nebenschluss mit konstantem Erregerstrom
a) Leerlaufversuch (Spannung vs. Drehzahl)
b) Kurzschlussversuch (Strom vs. Drehzahl)
Dann wird die Sache etwas klarer.
Giovanni schrieb:> Habe versucht Messungen auszuwerten.
Super Analyse. Vielen Dank :-)
> gibt es auch Messungen vom Strom? Wäre hilfreich.
Ich habe mal im Stillstand mit zwei verschiedenen Spannungen gemessen.
1
Stillstand Strom und Spannung (vom Labornetzteil abgelesen):
2
2V, 920mA
3
oder
4
3.4V 1.4A
5
6
Mittlerer Widerstand
7
>> (2/.92+3.4/1.4)/2
8
ans = 2.3012
Die Schwankungen kommen von den Bürsten des Motors und hängen ein wenig
vom Druck auf den Kommutator ab. Der berechnete mittlere Widerstand
2.3Ohm irritiert ein wenig, weil ich ja vor einiger Zeit den
Rotorwiderstand und den Stator Widerstand mit dem Multimeter vermessen
habe (1.6Ohm+ 1.75Ohm=3.35Ohm). Aber vielleicht hätte man das bei den
niedrigen Widerständen als Vierleitermessung ausführen müssen.
Bei einer Drehzahl von 1700U/min zeigt das Labornetzteil
1
3.4V, 600mA
> 1) nach 1 Umdrehung = 24 samples gibt es immer einen Sprung
Das ist sehr interessant. Mechanisch hat der Rotor eine leichte Unwucht,
vielleicht ist die der Grund für den Sprung. Besonders bemerkenswert
finde ich die Wiederholung des Signals. Ich vermute, die kommen von den
Ungenauigkeiten des 3D-gedruckten Encoderrades.
https://www.thingiverse.com/thing:1679204
Das Encoderrad hat wie schon weiter oben beschrieben 24 Ticks.
> 2) Die großen Sprünge kommen offensichtlich von Einstreuungen da tw. 25
Die Störungen habe ich bis jetzt ignoriert. Der elektrische Aufbau
müsste da noch etwas optimiert werden.
> Impuls/Umdrehung.> 3) Wir reden von Reihenschluss? Korrekt?
Ja, Rotorwicklung und Statorwicklung sind in Reihe geschaltet.
Ich habe noch mal eine weitere Messung angehängt, aus der ich die 1700
RPM und die 3.4V/600mA gemessen habe. Man sieht die starken Schwankungen
der Drehzahl, die davon herrühren, dass ich die Bürsten manuell noch
etwas auf den Kommutator gedrückt habe.
Man kann die Encodersignale optisch verbessern, wenn man Zeiten kleiner
1000us als Ausreißer herausnimmt. Mit einem gleitenden Mittelwert über
24 Encoderticks wird das Ganze dann einigermaßen glatt.
alles klar.
Das Encoderrad mit 24 ticks bringt keinen Gewinn, da unregelmäßig. Man
könnte jetzt mit etwas Aufwand und einer Tabelle die Fehler korrigieren,
gewinnt aber keine Genauigkeit.
Ich habe nur jeden 24. Wert verwendet. Sollte hier reichen.
Die Spitzen kommen von einem FALSCHEN Interrupt. Siehe Zeile 337.
1
335: 2248
2
336: 2228
3
337: 912 ==> FEHLER - Zeile Löschen
4
338: 1324 ==> korrekt ist 1324+912
5
339: 2216
Ein Versuch einer Identifikation mit eine Eingangssprung von 3.4 ergibt:
1
375.2572592976723
2
-----------------------
3
1.0s + 0.63822946917954
4
5
Continuous-time transfer function model
Wie gesagt. Der dynamische Strom wäre interessant. Die Fehler in der
Drehzahlmessung kann man korrigieren, besser wäre es das EMV Problem im
Aufbau zu beseitigen (Schirmung, Massenbindung, Filter, ...)
>Die Spitzen kommen von einem FALSCHEN Interrupt. Siehe Zeile 337.
Ja, habe ich mir auch so gedacht. Man müsste einen Schmittrigger mit
leichtem Tiefpassverhalten davor bauen. Aber für die Modellierung wird
es reichen, denke ich.
Ich habe mal versucht, das Reibungsmoment abzuschätzen. Die Verzögerung
ist ja quasi konstant und die Geschwindigkeit fällt linear.
1
a_mm=47.8; % Durchmesser Rotor
2
b_mm=20;% Laenge Pol
3
m_g=40; % Gewicht Rotor
4
5
a=a_mm/1000;
6
b=b_mm/1000;
7
m=m_g/1000;
8
9
# Trägheitsmoment
10
J=1/12*m*(a*a+b*b)
11
format short eng
12
disp(J)
13
14
decelaration_RPM_per_sec=(1592-344)/4
15
decelaration_rounds_per_sec2=(1592-344)/60/4
16
dOmega=decelaration_rounds_per_sec2*2*pi
17
18
# F=m*a
19
# T=J*dw
20
21
% friction torque
22
T=J*dOmega
23
frictionTorque_mNm=T*1000
Das Ergebnis in Milli-Newton-Meter ist ca. 0,3.
Wenn ich das recht sehe, wären das ca. 30g auf 1mm Hebel, was mir zu
groß vorkommt. Mache ich etwas falsch?
Wenn das Trägheitsmoment stimmt (8.95e-6), dann ist auch die
Größenordnung vom Moment mit 0.3mNm OK.
Habe eine Näherung rpm(t) mit Ordnung 2 versucht (stop1.png).
Was nicht klar ist, ist der Verlauf vom Moment über der Drehzahl
(stop2.png). Bei hoher Drehzahl sollte das Moment größer sein
(Luftreibung). Ist es aber nicht.
Frage: Wird beim Abschalten der Motor von der Quelle getrennt, oder nur
die Spannung auf Null gesetzt. Dann würde nämlich Strom weiterfließen
und die Energie vom Feld würde als Drehmoment dann sichtbar.
>Was nicht klar ist, ist der Verlauf vom Moment über der Drehzahl>(stop2.png). Bei hoher Drehzahl sollte das Moment größer sein>(Luftreibung). Ist es aber nicht.
Das mit der Luftreibung habe ich mich auch schon gefragt. Die Gerade,
die ich über die Abbremsung gelegt habe, scheint aber relativ gut zu
passen. Der Rotor fühlt sich relativ schwer an, obwohl es ja nur 40g
sind ( wäre aber fast schon 1/2 Tafel Schokolade). Da spielt der
Luftwiderstand bei 1700 U/min wahrscheinlich ein kleinere Rolle.
>Frage: Wird beim Abschalten der Motor von der Quelle getrennt, oder nur>die Spannung auf Null gesetzt. Dann würde nämlich Strom weiterfließen>und die Energie vom Feld würde als Drehmoment dann sichtbar.
Ich habe das Netzteil über den Frontschalter ausgeschaltet. Ob dann noch
Strom fließt, weiß ich nicht. Vielleicht sollte ich das Experiment noch
mal mit Abklemmen machen ..
Darf ich fragen, wie Dein Modell aussieht und welch Parameter es alle
beinhaltet?
Christoph M. schrieb:> Es fehlen mir die Reibverluste. Die könnte man vielleicht über> Geschwindigkeitsverlauf beim Auslaufen des Motors bestimmen (Einheit?).> Was der Kreuzkoeffizient ist, ist mir aber völlig unklar.
Die Reibverluste kannst du über die Messung der Drehzahl, des Stromes
und des ohmschen Widerstandes bestimmen (siehe mechanische Verluste im
Skript).
Die Motorkonstante ist der Zweitorparameter H12. Der Kreuzkoeffizient
ist der Zweitorparameter H21 und weil so ein Motor reziprok ist (Motor =
Generator) ist H21 = -H12.
Um die Motorkonstante bzw. den ohmschen Widerstand aus sehr verrauschten
Messreihen zu bestimmen, ist mein Python Skript [1] wunderbar geeignet.
Die Parameter a und b sind gerade der ohmsche Widerstand und die
Motorkonstante.
[1] Beitrag "Re: Parameterschätzung, überbestimmtes LGS, Kalman-Filter"
!!!
Christoph M. schrieb:>> 3) Wir reden von Reihenschluss? Korrekt?> Ja, Rotorwicklung und Statorwicklung sind in Reihe geschaltet.
Ich denke LAB_17 bezieht sich auf Permanentmagnet-Motor?
Das dynamische Verhalten wird ja hauptsächlich durch das
Massenträgheitsmoment bestimmt. Hier mal eine Simulation mit deinen
Daten (so wie ich sie hier entnehmen konnte). Der Motor wird zunächst
bestromt und trudelt dann aus (kein Bremsstrom). Um auf Deine Messungen
zu kommen, müßte das Trägheitsmoment jedoch ca. 6x größer sein.
Giovanni schrieb:> Ich denke LAB_17 bezieht sich auf Permanentmagnet-Motor?
Das Modell ist tatsächlich für eine fremderregte Gleichstrommaschine
oder Nebenschlussmaschine. Der magnetische Fluss ist dabei konstant. Bei
einer Reihenschlussmaschine ist der mag. Fluss vom Ankerstrom abhängig.
Das müßte im derzeitigen Modell erweitert werden.
Joe G.
>Der Motor wird zunächst bestromt und trudelt dann aus (kein Bremsstrom).
Die E-förmige Austrudelkurve erscheint mir hier etwas seltsam. Wenn die
Anschlüsse des Motors offen sind, sollte die Abbremsung nur durch die
Reibung kommen. Bei meinem Motor dürfte das vor allen Dingen die
Gleitreibung der Bürsten sein. Wie man in den Messreihen sieht
Beitrag "Re: Bastelmotor Gleichstrommotor Modell"
läuft die Geschwindigkeit annähernd linear gegen Null, was konform zur
Gleitreibungstheorie wäre.
Apropos .. vor einiger Zeit habe ich mir mal diesen Bausatz gekauft,
aber nie zusammengebaut:
https://eschke-shop.de/p/elektro-bausatzmotor
Der ist viel kleiner als mein aktueller Versuchsmotor, könnte aber für
solche Experimente auch geeignet sein, wenn man einen Encoder
anflanscht.
Christoph M. schrieb:> Die E-förmige Austrudelkurve erscheint mir hier etwas seltsam. Wenn die> Anschlüsse des Motors offen sind, sollte die Abbremsung nur durch die> Reibung kommen.
Die gespeicherte mechanische Rotationsenergie steckt im Rotor, einem
Massenträgheitsmoment. Das Massenträgheitsmoment ist vergleichbar mit
einer elektrischen Kapazität. Die Rotationsenergie wird nun über Reibung
(Widerstand) abgebaut. Somit wird die Kapazität über einen Widerstand
entladen. Diese Kombination ergibt die e-Funktion.
Irgendwas kommt mir komisch vor bei deiner Messung. Die Anlaufkurve
sieht nach einer geschwindigkeitsproportionalen Reibung aus (E-Funktion)
und die Bremskurve nach einer reinen Gleitreibung (konstantes
Bremsmoment). Wie passt das zusammen? Wenn Gleitreibung vorherrschen
würde, müsste der Anlauf ja auch linear sein.
>Irgendwas kommt mir komisch vor bei deiner Messung. Die Anlaufkurve>sieht nach einer geschwindigkeitsproportionalen Reibung aus (E-Funktion)
Das Anlaufen und das Abbremsen muss beim Elektromotor unterschieden
werden. Das Drehmoment beim Reihenschlussmotor ist im Gegensatz zum
Nebenschlussmotor nichtlinear, sondern geht quadratisch mit dem Strom.
Dazu das Bild aus https://www.youtube.com/watch?v=Fp9avUMRTyM
(Minute 5:10)
Aber selbst beim Nebenschlussmotor wäre der Drehzahlanstieg beim
Anlaufen nur linear, wenn der Motor an einer Konstantstromquelle (also
mit konstantem Drehmoment mit M~I) und nicht an einer
Konstantspannungsquelle betrieben wird. Wird ein Nebenschlussmotor an
einer Konstantspannungsquelle betrieben wird (was vermutlich meistens
der Fall ist) steigt die Drehzahl E-förmig. Der Grund dafür ist die mit
steigender Drehzahl ansteigende Gegen-EMK, die dann für einen sinkenden
Strom und damit sinkendem Drehmoment führt.
>und die Bremskurve nach einer reinen Gleitreibung (konstantes>Bremsmoment). Wie passt das zusammen? Wenn Gleitreibung vorherrschen>würde, müsste der Anlauf ja auch linear sein.
Die Bremskurve sieht genau so aus, wie ich sie bei einem Reibungsmodell
mit reiner Coulomb-Reibung (also ohne durch Öllager erzeugte viskosse
Reibung) erwarten würde. Sie wird ausschließlich durch die mechanischen
Eigenschaften Trägheitsmoment des Rotors und Reibung bestimmt. Die
elektrischen Eigenschaften des Motors spielen bei offenen
Anschlussklemmen keine Rolle.
https://de.mathworks.com/help/simscape/ref/translationalfriction.html
Uwe schrieb:>> Das müßte im derzeitigen Modell erweitert werden.>> Nicht: "erweitert",> sondern völlig abgeändert.
Ich denke der "Transformation"-Ansatz passt hier nicht ganz.
Real gibt es eine Messung Drehzahl vs. Zeit auf der diese Diskussion
hier aufbaut.
* Dann noch Ohmsche Widerstände
* Induktivitäten (Frage wie gemessen - eingebaut? - in welcher
Rotorposition?)
* Trägheitsmoment - als grobe Abschätzung
Mein Versuch der Start-Simulation
1
equations = :[
2
vTerminal = voltageSource(time)
3
vR = (Ra+Rf)*current
4
vL = (La+Lf)*der(current)
5
vR + vL + emf = vTerminal
6
T-Tfriction(speed) = inertia*der(speed)
7
flux = Kphi * current
8
T = Kt*current*flux
9
emf = speed*Ke ],
Da das System unterbestimmt ist, habe ich alle Parameter angenommen um
die Randbedingungen halbwegs einzuhalten.
PS: Beim Bastelmotor ändern sich die Induktivitäten mit der Position.
Nicht so beim einem realen Motor
PPS: Ich habe noch nie LTspice verwendet.
>steigt die Drehzahl E-förmig.
Kleine Anmerkung: Mit E-förmig meine ich die Kurvenform, die beim
Aufladen eines Kondensators entsteht, also in etwa y=x(1-e^-kt).
Christoph M. schrieb:> Das Anlaufen und das Abbremsen muss beim Elektromotor unterschieden> werden. Das Drehmoment beim Reihenschlussmotor ist im Gegensatz zum> Nebenschlussmotor nichtlinear, sondern geht quadratisch mit dem Strom.
Ja, das ist mir schon klar... Ich baue mal das Zweitormodell mit den
H-Parametern auf einen Reihenschlussmotor um.
Christoph M. schrieb:>>PPS: Ich habe noch nie LTspice verwendet.> Was verwendest Du für Deine Berechnungen?
Nach >20 Jahren MODELICA (Dymola, JModelica, OpenModelica) jetzt auf der
JULIA-Schiene.
* Für Modelica braucht man meist auch noch Python für pre- und
postprocessing.
* JULIA Simulation bietet für fast alle mathematischen Aufgaben recht
effiziente Lösungen. Erfordert jedoch ein Umdenken. (Modia,
ModelingToolkit)
==> https://juliacon.org/2024/ Die Vorträge gibt es danach auf youtube
Grundsätzlich bevorzuge ich "acausal modeling", daher nicht so
begeistert von MATLAB,Simulink.
Spice hat sicher Vorteile bei schaltenden Systemen in der Elektronik, da
eine große Bauteilbibliothek existiert.
wie schon gesagt: Ein dynamischer Versuch mit einer Messung von Strom,
Spannung, Drehzahl/Position) wäre nicht schlecht um weiterzukommen.
>wie schon gesagt: Ein dynamischer Versuch mit einer Messung von Strom,>Spannung, Drehzahl/Position) wäre nicht schlecht um weiterzukommen.
Schon klar. Das Problem ist ein wenig die Stabilität des Messaufbaus und
die Messtechnik an sich. Eigentlich müsste ich alles umbauen.
Was aber vielleicht weiterhelfen könnte, sind die zwei Messungen im
Anhang. Die eine zeigt das Encodersignal und die Spannung an einem 1 Ohm
Widerstand gegen Masse in der Stromzuführung und 3.4V Spannung. Was man
daraus ablesen kann: Im Mittel ist die Stromaufnahme 600mA, die
Bürstenkontakte sorgen aber am Wendepunkt für einen Kurzschluss. Beim
Kurzschluss geht der Strom auf 1 Amper, das liegt aber an der
Spannungsversorgung, die den Strom auf 1 Amper beschränkt. Wie man am
Kurzschlusspeak sieht, wird jeweils korrekt nach 12 Encoderschritten
umgepolt.
Das zweite Bild zeigt den grob gemessen Umpolwinkel. Idealerweise sollte
der wohl an eine besseren Stelle liegen und führt zu einer zu hohen
Stromaufnahme.
Die Messung ist nicht ganz mit den vorigen 3.4V Messungen vergleichbar,
weil ja der 1 Ohm Messwiderstand in Serie liegt.
>Grundsätzlich bevorzuge ich "acausal modeling", daher nicht so>begeistert von MATLAB,Simulink.
Klar, das "akausale Modellieren" erspart einem ein wenig die Denkarbeit
über "Loop Verzögerungen" hat aber das Problem, dass die Solver oft
nicht konvergieren. Was Matlab Simulink angeht, gäbe es von Mathworks ja
noch SimScape. Ist aber "sau teuer" und man muss für jeden Käse eine
Zusatzbibliothek kaufen.
LtSpice sollte das "akausale Modellieren" zum Nullkosten Preis
ermöglichen. Hat aber den Nachteil, dass man viel in E-Technik Symbolen
denken muss.
Ich habe jetzt mal das Modell mit deinen Parametern zum
Reihenschlussmotor umgearbeitet. Nur das von dir beobachtete
Reibverhalten ist etwas schwierig. Die konstante Reibung ist doch nicht
so drehzahlkonstant und setzt erst bei einer bestimmten Drehzahl ein.
Wie dem auch sei, ein Reihenschlussmotor läßt sich auch wunderbar als
(nichtlineares) 2-Tor in Matrixform aufbauen :-)
> Die konstante Reibung ist doch nicht> so drehzahlkonstant und setzt erst bei einer bestimmten Drehzahl ein.
Und zwar gleich oberhalb der Drehzahl "0" (Losbrechmoment);
erst bei grösserer Drehzahl wird der (ca. quadratische?) Einfluss
der Luftreibung relevant.
>Die konstante Reibung ist doch nicht so drehzahlkonstant und setzt erst bei einer
bestimmten Drehzahl ein.
Meiner Meinung nach sollte die Gleitreibung einfach mit einer
Signum-Funktion beschrieben werden können.
Ich habe das hier mal in einem LtSpice-Modell versucht. Es ist einfach
ein Rotor der mit einem konstanten Drehmoment beschleunigt wird und dann
losgelassen.
Das Problem mit LtSpice hier: der Solver rechnet sich zu Tode und es
konvergiert nicht. Hat jemand eine Idee?
Christoph M. schrieb:> Hat jemand eine Idee?
1. Beim Pulse für die Flankenzeit (Anstieg und Abfall) keine 0 eintragen
sondern 1E-9 oder kleiner.
2. Die Signumfunktion zickt rum, schneller rechnet
I={friction}*buf(V(Omega)+0.5)
Die Reibung wird eine Kombination aus Gleitreibung und
geschwindigkeitsproportionaler Reibung sein. Nur mit reiner Gleitreibung
siehts auch merkwürdig aus.
also ich bin zufrieden. Ich hoffe ich komme mit meiner Simulation jetzt
ins Halbfinale.
* Die Drehzahlkurve für Start & Auslauf ist soweit OK.
* Der Strom bei max. Drehzahl ist etwa 600mA.
* Das Lastmoment (Kollektor + Luftreibung) habe ich als weitgehend
konstant angenommen => nahezu linearer Drehzahlabfall beim Auslauf.
Meine Unklarheiten zu LAB_19
* Der Leerlaufpunkt beim Reihenschlussmotor (ohne Last) : Drehzahl:
+INF, Strom: 0.0
enjoy the summer
>also ich bin zufrieden. Ich hoffe ich komme mit meiner Simulation jetzt>ins Halbfinale.
Na auf jeden Fall. Die Ergebnisse sehen ja viel versprechend aus und das
Durchhaltevermögen solch ein Projekt durchzuziehen hat ja auch nicht
jeder :-)
Also Glückwunsch erst einmal zu Deinem Ergebnis.
Apropos:
>* Induktivitäten (Frage wie gemessen - eingebaut? - in welcher
Rotorposition?)
Die Induktivitäten habe ich mit einem "Bm4070 Digital LCD LCR Meter"
gemessen, die sind eher günstig und leicht im Internet zu finden.
Ich habe es gerade noch mal für den Rotor gemacht: wenn er senkrecht
steht (also möglichst weit weg vom Ankerblech) dann sind es 2.8mH und
wenn er waagrecht steht 3.4mH.
Da die Kommutierungsfrequenzen aber relativ niedrig sind, würde ich
sagen, man kann die Induktivitäten für diese Simulation weglassen.
Es sein denn, man würde den Zeitverlauf nach der Kommutierung wie in dem
Oszillogramm
Beitrag "Re: Bastelmotor Gleichstrommotor Modell"
simulieren wollen.
Was natürlich spannend sein kann: Bei allen bisherigen Simulationen
fehlt die Position des Kommutierungswinkels, die einen ganz gewaltigen
Einfluss auf die Effizienz und die Stromaufnahme haben dürfte.
Joe schrieb:
>2. Die Signumfunktion zickt rum, schneller rechnet
I={friction}*buf(V(Omega)+0.5)
Vielen Dank für diesen wertvollen Hinweis. Damit läuft die Simulation in
vernünftiger Geschwindigkeit. Die "buf" Funktion kannte ich noch nicht.
Ich habe ursprünglich gedacht, die Probleme der Signum-Funktion kommen
durch ihre Unstetigkeit. Die "buf" Funktion ist ja eigentlich auch
unstetig (Sprungfunktion), deshalb wundert mich, dass es LtSpice damit
schafft. Als Problem sehe ich ein wenig an, dass mit der Funktion keinen
Nullpunkt hat, damit die Reibung zur Ruhe kommt.
Im Internet findet man den Tangenshyperbolicus als sehr gute Näherung
für "sgn" (wenn man den Skalierungsfaktor hochdreht).
https://math.stackexchange.com/questions/1264681/how-to-smoothly-approximate-a-sign-function
Ich habe es mal ausprobiert und funktioniert auch super.
Apropos: im letzten Post hast Du das Bild von "Lab19" aber den Code von
"Lab_17_1" gepostet.
Christoph M. schrieb:> Apropos: im letzten Post hast Du das Bild von "Lab19" aber den Code von> "Lab_17_1" gepostet.
Oh, sorry. Hier die Korrektur.
@Giovanni
Interessant wäre dein Gleichungssystem mit den zugehörigen Parametern
P.S: Ich habe mal den tanh übernommen :-)
>Oh, sorry. Hier die Korrektur.
Danke für die Korrektur.
Die große Kunst bei der Modellierung ist natürlich, die Parameter auf
ein Minimum zu reduzieren und an die Realität anzupassen.
Ich habe das mal manuell versucht und es ergibt sich ein Ergebnis,
welches die Anhänger der freien Energie in einen Freudentaumel versetzen
dürfte: Der Reihenschlussmotor als Perpetum Mobile :-)
Beim Anlaufen sehen die Werte noch ähnlich aus wie die von Giovanni,
aber dann wird's obskur.
Wenn man die Spannung ausschaltet, wird die BEMF so groß, dass sich der
Motor selbst versorgt und durchgeht. Irgendwas ist da vermutlich falsch
:-)
Versuch und Theorie stimmen nun prima überein. Die Motorparameter lassen
sich sehr gut aus dem Leerlaufversuch bestimmen (siehe Rechnung und
Simulation).
So macht das Forum hier Freude, abseits von oft auftretenden
Befindlichkeiten. Christoph M. hat mit seinem „Bastelmotor“ eine
wirklich tolle Vorlage gegeben – vielen vielen Dank für die Idee, die
Umsetzung, Messung und Simulation!
Ich habe mir nun auch gleich einen ähnlichen Bausatz bestellt
(zweipoliger Gleichstrommotors mit Permanenterregung und
elektromagnetischer Erregung). Natürlich muß jetzt auch noch der Versuch
als Nebenschlussmaschine erfolgen :-)
Studenten, welche nun im nächsten Semester Modellbildung und Simulation
an mehreren Motorvarianten im Praktikum durchführen müssen, mögen sich
hier beim Forum beschweren ;-)
Noch zur Frage nach dem verwendeten Modell + Bemerkungen zu einigen
diskutierten Fragen.
**Funktion sign(x):** ist nicht differenzierbar. Näherung durch tanh(x)
möglich (aber wozu? es gibt keine stateevents)
**Kommutierungswinkel:** Hat Einfluss auf Parameter und Wirkungsgrad -
hier egal, der Motor dreht sich
**Datensatz:** korrigiert (nur 24 Impulse/Umdrehung) - Beilage
"cleanTicks.txt"
**Modell** - selbsterklärend, da nur Parameter und Gleichungen
Super, danke euch :-)
Sehr schöne Arbeiten und genügend Stoff, um sich noch ein wenig damit zu
beschäftigen.
Ich habe es auch noch mal etwas weiter versucht und poste mal das
Zwischenergebnis.
Joe schrieb:
>Du hast nur einen kleinen Flüchtigkeitsfehler eingebaut ;-) Dir fehlt in>der BEFM der Faktor mit dem Strom I(B1).
V={BEMF_CONST}*V(Omega)*I(B1)
Wie schade, wieder kein Perpetuum Mobile und die Lösung aller
Energieprobleme ;-)
Zur besseren Darstellung und didaktischen Klarheit des
Reihenschlusmotors habe ich mal das Erregerfeld separiert. Es ist ja
stromabhängig und ist für die großen Unterschiede zu den üblichen, im
Bastelbereich verwendeten Motoren mit Permanentmagneten verantwortlich.
Bei den Grenzwerten stimmt die Simulation, aber ob die Krümmung der
Beschleunigungskurve so stimmt, müsste mit einem Datenfitt nachgeprüft
werden.
Die Diode verhindert den Rücklaufstrom beim Ausschalten, ansonsten ist
die Verzögerungskurve E-förmig und fällt nicht linear, das dürfte der
Grund für die Kurvenform in dieser Simulation gewesen sein:
Beitrag "Re: Bastelmotor Gleichstrommotor Modell"
Bei meiner Simulation scheinen die Parameter kritisch und man kommt
schnell in Bereiche, bei denen die Simulation nicht mehr konvergiert. So
wundert es mich z.B. wenn ich die Diode kurzschließe und der Bremsstrom
durch die Spannungsversorgung zurückfließen kann, dass die Simulation
ein Konvergenzproblem bekommt.
Giovanni schrieb
>**Funktion sign(x):** ist nicht differenzierbar. Näherung durch tanh(x)>möglich (aber wozu? es gibt keine stateevents)
Der Solver von LtSpice scheint damit besser zurecht zu kommen. Woran
immer das intern liegt ..
Christoph M. schrieb:> Bei meiner Simulation scheinen die Parameter kritisch und man kommt> schnell in Bereiche, bei denen die Simulation nicht mehr korrigiert. So> wundert es mich z.B. wenn ich die Diode kurzschließe und der Bremsstrom> durch die Spannungsversorgung zurückfließen kann, dass die Simulation> ein Konvergenzproblem bekommt.
Fehler im Modell! Mit meinen Parametern ist das System nicht "steif"
und damit sollte kein Solver ein Problem haben.
Christoph M. schrieb:> So wundert es mich z.B. wenn ich die Diode kurzschließe und der Bremsstrom> durch die Spannungsversorgung zurückfließen kann, dass die Simulation> ein Konvergenzproblem bekommt.
schreibe mal beim Fluss: V={PHI_CONST}*I(B1)
Ich denke, die Diode kannst du sparen. Beim Abschalten der Pulse
Spannungsquelle fließt kein Rückstrom. In der Visualisierung schaltet
sie zwar auf 0 Volt, es fließt jedoch kein Strom.
Giovanni schrieb:> **Modell** - selbsterklärend, da nur Parameter und Gleichungen
Vielen Dank! Das Modell entspricht genau dem LTSpice-Modell. Somit
sollte das gleiche Ergebnis erscheinen :-)
Joe G.
>schreibe mal beim Fluss: V={PHI_CONST}*I(B1)
Findest Du I(B1) besser als I(R1)? Der Strom ist ja im selben Pfad und
damit gleich. Mir schien es verständlicher, den Strom im Widerstand
statt in der Spannungsquelle zu nehmen. Aber da wäre ich flexibel, wenn
es anders besser ist.
>Ich denke, die Diode kannst du sparen. Beim Abschalten der Pulse>Spannungsquelle fließt kein Rückstrom. In der Visualisierung schaltet>sie zwar auf 0 Volt, es fließt jedoch kein Strom.
Das man die Diode nicht benötigt, dachte ich auch, aber ich habe ohne
sie eine exponentiell abfallende Drehzahlkurve bekommen.
Wenn der Rotor sich noch dreht (und das tut er ja bis er ausgelaufen
ist) erzeugt er ja einen Strom (durch die BEMF verursacht). Deshalb
fließt tatsächlich ein Strom durch die Versorgungsspannungsquelle, auch
wenn diese auf 0 Volt eingestellt ist. Der Strom wird vom sich
drehenden Rotor erzeugt, was der Realität ziemlich entsprechen dürfte.
Giovanni schrieb
>Noch zur Frage nach dem verwendeten Modell
Bis jetzt habe ich keine Erfahrung mit Julia, aber habe mal versucht,
Dein Modell laufen zu lassen.
Als erstes braucht man wohl am Anfang des Files "using Polynomials".
Dann aber wird bei mir folgende Meldung geworfen:
Christoph M. schrieb:> Findest Du I(B1) besser als I(R1)?
Dann konvergiert die Rechnung, jedenfalls bei mir.
> Das man die Diode nicht benötigt, dachte ich auch, aber ich habe ohne> sie eine exponentiell abfallende Drehzahlkurve bekommen.
Jetzt weiß ich, warum ich bei LTSpice seit Jahren kein Update mache ;-)
Stimmt, bei den neuen Versionen ist 0V tatsächlich Masse und es fließt
ein Strom. In meiner Version (November 2018), ist 0 einfach offen. Die
Messung in der Spannungsquelle zeigt auch tatsächlich keinen Strom.
>Das man die Diode nicht benötigt, dachte ich auch, aber ich habe ohne>sie eine exponentiell abfallende Drehzahlkurve bekommen.
Ich glaube, das muss ich wieder zurück nehmen. Ich habe es gerade
nochmal mit der Simulation versucht und konnte den Effekt nicht mehr
sehen. Dann habe ich den Motor in Betrieb genommen und konnte (ohne die
Drehzahl genau zu messen) auch keinen Effekt sehen. Wahrscheinlich
bricht der Strom so schnell zusammen, dass es keine BEMF mehr gibt.
Joe schrieb:
>So macht das Forum hier Freude, abseits von oft auftretenden>Befindlichkeiten. Christoph M. hat mit seinem „Bastelmotor“ eine>wirklich tolle Vorlage gegeben – vielen vielen Dank für die Idee, die>Umsetzung, Messung und Simulation!
Vielen Dank für die positiven Worte :-)
Ich hoffe, es kommt wieder einmal so ein "Thread" zusammen.
Christoph M. schrieb:> Bis jetzt habe ich keine Erfahrung mit Julia, aber habe mal versucht,> Dein Modell laufen zu lassen.
In meinem Beitrag stehen nur die Gleichungen und Parameter.
Das vollständige Script ist nicht geheim, aber um es zum Laufen zu
bringen müsste man die gesamte Projektumgebung bereitstellen, und das
ist für einen Anfänger ziemlich aufwendig.
ABER:
Ich bin mir nicht sicher ob das Projekt jetzt beendet ist. Falls noch
Interesse besteht, kann ich ein äquivalentes MODELICA Modell erstellen,
mit dem man dann mit OpenModelica "spielen" kann.
https://openmodelica.org/ Die WIN Version ist etwas groß.
* Variante 1: Modell nur mit Gleichungen (wie schon gezeigt). Braucht
keine Bibliothek.
* Variante 2: Mit Elementen aus der MODELICA Bibliothek. Für ein
besseres Verständnis, aber mit dem selben Ergebnis.
let me know
Giovanni schrieb:> Ich bin mir nicht sicher ob das Projekt jetzt beendet ist.
Für mich noch nicht :-) Wenn mein Motor geliefert wurde will ich mal
alle drei Varianten des Gleichstrommotors experimentell vermessen und
die zugehörige Simulation erstellen.
Ob Modelica oder Matlab oder, oder, oder... ist eigentlich immer sehr
ähnlich. ich werde es mal kurz in Jupyter Notebook aufschreiben.
Diese einfachen Modelle haben einen unterirdischen Wirkungsgrad und
laufen nicht in jeder Stellung an.
Je nach Aufbau des Kollektors gibt es entweder Funken bei Unterbrechung
oder periodische Kurzschlüsse. Daher findet man in der Praxis nur
Motoren mit mindestens 3 Polen. Und mit ordentlichen Kohlen für einen
unterbrechungsfreien Stromfluß. Diese Drahtbügel sind nicht geeignet.
Peter D. schrieb:> unterirdischen WirkungsgradPeter D. schrieb:> laufen nicht in jeder Stellung anPeter D. schrieb:> Diese Drahtbügel sind nicht geeignet.
Derjenige, der sagt: „Es geht nicht“, soll den nicht stören, der’s
gerade tut:
Joe G. schrieb:> Versuch und Theorie stimmen nun prima überein. Die Motorparameter lassen> sich sehr gut aus dem Leerlaufversuch bestimmen (siehe Rechnung und> Simulation).>> So macht das Forum hier Freude, abseits von oft auftretenden> Befindlichkeiten. Christoph M. hat mit seinem „Bastelmotor“ eine> wirklich tolle Vorlage gegeben – vielen vielen Dank für die Idee, die> Umsetzung, Messung und Simulation!
Danke! Sehr interessanter Thread, auch für mich sind diese
„Expert-Talks“ einer der Gründe, warum man es bei µC.net noch aushält.
Martin H.
>Derjenige, der sagt: „Es geht nicht“, soll den nicht stören, der’s>gerade tut:
Eigentlich hast Du recht, aber der technische Einwand von Peter ist
nicht ganz ungerechtfertigt. In diesem Thread haben wir wirklich Glück
und ich würde sagen, wir haben ziemlich produktiv gearbeitet :-)
Insofern ja, im Mikrocontrollernetz laufen die Diskussionen sehr oft aus
dem Ruder aber in dem Fall finde ich Peters Einwand nicht so störend.
Peter schrieb:
>Diese einfachen Modelle haben einen unterirdischen Wirkungsgrad und>laufen nicht in jeder Stellung an.
Das ist richtig, aber der Motor ist für didaktische Zwecke super, weil
die Schüler und Studenten, wenn sie mit dem Motor spielen sehr viel
lernen (und ich habe auch viel dabei gelernt). Man lernt, dass es auf
den Kommutatorwinkel ankommt und man merkt selbst, dass man den Motor
anschupsen muss und kommt dann vielleicht selbst auf die Idee, dass das
mit einem Motor mit mehr Polen besser funktioniert. Es ist wirklich so,
dass die praktische Erfahrung am Motor hier einen ziemlich
eindrücklichen Lerneffekt gibt. Der Motor, den ich habe ist auch
ausreichend groß, sodass man alles gut mit den Händen bewegen kann. Den
Motor habe ich schon vor über 10 Jahren gekauft und leider habe ich
genau dieses Modell nicht mehr gefunden, sonst hätte ich vielleicht
einen zweiten für Modifikationen gekauft.
>Je nach Aufbau des Kollektors gibt es entweder Funken bei Unterbrechung>oder periodische Kurzschlüsse. Daher findet man in der Praxis nur>Motoren mit mindestens 3 Polen.
(kleine Anmerkung am Rande: zwei Pole reichen, wie man an Schrittmotoren
sieht)
> Und mit ordentlichen Kohlen für einen>unterbrechungsfreien Stromfluß. Diese Drahtbügel sind nicht geeignet.
Das ist tatsächlich der Grund, warum ich mit dem Motor (obwohl Giovanni
gerne mehr Messungen gehabt hätte), nicht mehr Messungen gemacht habe.
Ich habe festgestellt, dass während des Betriebes oft ein kleiner,
blauer Funke an einer Stelle entsteht und wenn ich die Bürstendrähte mit
den Fingern etwas angedrückt habe, die Kontaktierung etwas besser wurde.
Mehr Messungen mit veränderten Parameter hätten vermutlich zu
Widersprüchen im Modell geführt.
Ich hatte mir überlegt, die Bürstendrähte durch echte Kohlen (aus einem
alten Motor) zu ersetzen und mit dem 3D-Drucker einen Verstellring zu
drucken, mit dem man den Kommutatorwinkel verdrehen kann. Das war mir
aber dann doch zu aufwändig.
Die zweite und technisch modernere Lösung wäre eine elektronische
Kommutierung. Dann könnte man die Erregerspule und die Rotorspule
getrennt ansteuern und viel über die Optimierung der Maximaldrehzahl
lernen. Zusätzlich würde ich den optischen Encoder durch einen
magnetischen Encoder mit hoher Winkelauflösung wie den AS5600 ersetzen.
Diese Lösung könnte ich sehr schnell umsetzen .. ist jemand an so was
interessiert?
>https://openmodelica.org/ Die WIN Version ist etwas groß.> let me know
Wir hatten mal OpenModellica auf einem Windows System getestet, aber es
war ziemlich problematisch. Ständig war die Schrift zu groß oder zu
klein und die Größer hat sich bei jedem Aufruf geändert. Außerdem schien
mir OpenModellica ziemlich komplex, weil es ständig irgendwelche
Parameter gibt, die irgendwo eingestellt werden müssen und wir nicht
wussten wo.
Aber nichts desto trotz, ich hab's mal auf meinem Ubuntu installiert und
mit Begeisterung muss ich feststellen, dass die Beispiele Out-Of-the-Box
laufen. Wenn Du das Reihenschlussmotormodell hättest, könnte ich es
laufen lassen und würde mich freuen, etwas zu lernen.
Christoph M. schrieb:> Wenn Du das Reihenschlussmotormodell hättest, könnte ich es> laufen lassen und würde mich freuen, etwas zu lernen.
Hier mal die Variante 1 - nur Gleichungen.
Variante 2 (mit Elementen aus der Bibliothek) läuft, es sind aber noch
ein paar kosmetische Eingriffe notwendig bevor ich es verteile.
Schnellkurs MODELICA:
Ich habe die beiden Modelle in ein Paket gepackt.
1
* package Reihenschluss
2
** model ReihenDCvar1 -> lauffähig
3
** function Friction
Das lauffähige Modell ist "ReihenDCvar1". Dieses kann dann direkt auf
"Friction" zugreifen, da es im selben Paket ist.
Also "ReihenDCvar1" öffnen und Simulieren "->"
Teil 2.
Modell mit Elementen der Bibliothek + neue Elemente. Ist etwas klarer
für das Verständnis.
Hinweis für die Lehre: Es ist ja ein Universalmotor, der auch mit AC
funktioniert. Interessant, wenn man die Frequenz nahe der el-mech
Eigenfrequenz in dem Betriebspunkt erwischt. Gibt dann eine Schwebung.
Kommt vielleicht als Teil 3.
>Modell mit Elementen der Bibliothek + neue Elemente. Ist etwas klarer>für das Verständnis.
Ich habe es ausprobiert und es funktioniert gut. Mit Graphik ist es auf
jeden Fall anschaulicher.
Der Drehzahlsensor scheint aber nur Omega als Output. Für mich ist die
Drehzahl als RPM verständlicher. Als Kind hatte ich einen Legomotor, von
dem ich gelesen hatte dass er 3000 U/min hat. Aus diesem Grund ist das
für mich eine anschauliche Größe.
Christoph M. schrieb:> Als Kind hatte ich einen Legomotor, von> dem ich gelesen hatte dass er 3000 U/min hat. Aus diesem Grund ist das> für mich eine anschauliche Größe.
Man kann im PLOT Fenster die Einheit der Größen ändern.
zB. statt rad/s => rpm
@Uwe : Wie reden von einem Gleichstrommotor f=0.000Hz
ω[rad/s] = 2 * π / 60.0 * rpm[U/min]
@Joe G.
Warum muss man beim Abschalten (U = 3.4V => 0.0V) den Strom auf Null
setzen?
Giovanni schrieb:> Warum muss man beim Abschalten (U = 3.4V => 0.0V) den Strom auf Null> setzen?
Das war noch eine Altlast im Code ;-) Danke für den Hinweis, ist
entfernt.
Hier noch Bilder zur Dynamik.
Spannungssprung +/- 0.1V von 3.4V ausgehend
* Lösung der(speed)=0.0 und der(current)=0.0
* Linearisieren
* Eigenwerte
** el. EW = 0.93ms
** mech. EW = 2.93s
* Bilder mit Zeitkonstante.
jetzt kommt dann noch AC Betrieb. Da gibt es dann richtig Frequenz
(elektrisch und mechanisch) ;-)
Joe G.
>Hier für alle Python-Fans als Jupyter Notebook
Super, so schön reduziert :-)
1
defmotor_dynamics(y,t,R,L,k_E,k_M,J,T_R):
2
I,omega=y
3
U=voltage(t)
4
dIdt=(U-I*R-k_E*I*omega)/L
5
dOmegadt=(k_M*I**2-T_R)/J
6
return[dIdt,dOmegadt]
Was mir am Modell auffällt: Die Gleitreibung T_R wäre eigentlich von der
Drehrichtung abhängig. Bei dem Modell fällt das nicht auf, weil der
Motor nur in eine Richtung läuft.
Eigentlich war mein Ziel bei dieser Modellierung, einen Regelkreis in
LtSpice zu simulieren (also das Motormodell zusammen mit einem Regler)
und danach den Regler zu implementieren und zu schauen, ob die Auslegung
stimmt. Ich befürchte nur, dass der Motor durch den Funkenkommutator
etwas zu instabil für diesen Versuche sein könnte.
Wie ist das bei dem Motor, den Du bestellt hast? Welches Modell ist es
denn und dreht er sich schon?
Christoph M. schrieb:> Was mir am Modell auffällt: Die Gleitreibung T_R wäre eigentlich von der> Drehrichtung abhängig.
Das steckt im Drehimpulssatz (Drallsatz).
Die Änderung des Drehimpulses eines Körpers ist gleich der Summe aller
von außen angreifenden Momente. Im Falle unseres Motors haben die
Drehimpulsänderung und das Reibmoment immer ein entgegengesetztes
Vorzeichen.
> Welches Modell ist es denn und dreht er sich schon?
Er ist leider noch auf dem Postweg. Die beiden Permanentmagnete möchte
ich wahlweise noch die eine Erregerspule ersetzen.
Hier mal der Versuch der "elektronischen Kommutierung".
Die Versorgungsspannung ist 8V. Die Sensitivität der ACS712x05B
(Versorgung 4.75V) Hall Stromsensoren liegt bei ca. 56LSB/Amper. Die
Sensoren sind über RC-Tiefpässe (10k,10nF) an die ADCs des Pipico
angeschlossen. Der Winkel wird mit einem AS5600 Hallencoder gemessen und
abhängig davon die Feldspule umgeschaltet.
Die PWM-Frequenz für den L298 ist auf 1Khz eingestellt.
Die Einstellungen für die Messung sind:
Joe G. schrieb:> Man kann auch beide Zeitkonstanten ausrechnen
Ich bin beeindruckt!
Was ich immer gesagt habe. KI wird NI (Natürliche Intelligenz) niemals
ersetzten.
Der Motor ist angekommen, zusammengebaut und läuft ;-)
Er hat derzeit einen Ankerwiderstand von 5.88 Ohm und eine
Ankerinduktivität von 8.05 mH bei 100 Hz. Der Polmagnet kann sehr
einfach entfernt und durch eine Feldspule ersetzt werden. Jetzt noch
eine Gabellichtschranke für die Drehzahlmessung angebaut, dann kann es
mit den Experimenten losgehen. Im ersten Versuch hat er bei 5 V ca. 1.4A
im Leerlauf gezogen und ist ordentlich auf Drehzahl gekommen.
>Der Motor ist angekommen, zusammengebaut und läuft ;-)>Er hat derzeit einen Ankerwiderstand von 5.88 Ohm und eine>Ankerinduktivität von 8.05 mH bei 100 Hz.
Ich bin sehr begeistert und freue mich, dass Du auch einen Motor hast
und es jetzt einen "Zweitmotor" gibt :-)
Vom Rotordurchmesser scheint er etwas kleiner, aber die Roboterpole von
der Fläche her größer. Die Induktivität ist mehr als doppelt so groß wie
bei meinem Modell.
Ich bin gespannt, wie gut die Schleifkontakte funktionieren und ob
Funken sichtbar sind.
Bei meinem Experiment mit dem L298 habe ich den mechanischen Kommutator
nicht verwendet. Statt dessen habe ich die beiden Metallbleche, die die
Lager bilden als Kontakte zum Rotor verwendet und kommutiere
elektronisch. Leider stellt sich heraus, dass der elektrischen Kontakt
über die beiden Lager nicht so ganz stabil ist, wie man aus den
Strommessungen des Rotors sieht (man sieht auch manchmal leichte Funken
an den Lagern).
Im Experiment habe ich deshalb statt dessen die Feldspule kommutiert und
den Rotor konstant bestromt, weil die Feldspule die stabilere
elektrische Verbindung hat.
Die Einfachheit des Modells bietet sich an um neue Werkzeuge
(ModelingToolkit) zu testen.
Hier die "symbolische" Systemdarstellung mit Input/Output von oben.
>Hier die "symbolische" Systemdarstellung mit Input/Output von oben.
Tja, das schöne an der Theorie ist, dass sie sich elegant reduzieren
lässt.
Ich kämpfe in der Praxis mit den Widrigkeiten der Messtechnik.
Wie man im obigen Diagramm sieht aus meinem L298 Aufbau sieht, scheint
der Hallencoder bezüglich der Positionskurve sehr glatt zu sein (nach
leichtem "Outlier Removal"). Nur beim Umschalten vom Beschleunigen auf's
Bremsen gibt es eine größeren Sprung, der dem Umstand geschuldet zu sein
scheint, dass die Kommunikation
PC<==>PiPico
eine kurze Unterbrechung des Datenstroms beim Senden des Bremskommandos
erzeugt. Eigentlich wäre es am Besten, die gesamte Mess-State-Machine im
Controller zu halten.
Im gefilterten Resultat meine ich Schwingungen zu sehen. Diese können
tatsächlich von einer Schwingung des Rotors oder doch von
Ungleichmäßigkeiten des Hallencoders kommen. Gefühlsmäßig würde ich sie
dem Rotor zuordnen.
Giovanni schrieb:> Hier die "symbolische" Systemdarstellung mit Input/Output von oben.
Da die Zustandsbeschreibung vielleicht nicht für jeden zum Handwerkszeug
gehört ;-) hier etwas ausführlicher. Außerdem läßt sich gleich die
Übertragungsfunktion berechnen, wenn man schon die Zustandsbeschreibung
hat. Auf wundersame Weise stimmen auch die Zeitkonstanten wieder ;-)
Jetzt ist Christoph M mit einem Zustandsregler dran… Die Messungen sehen
doch schon recht gut aus.
Wie schon gesagt. Ich verwende das Projekt nur um einen Testfall für
Julia-Symbolic zu haben.
Hier noch ABCD für Output: Drehmoment, Drehzahl
Zusätzlich das Script für die Erzeugung des PNG als Beilage für
Interessenten.
@Christoph M: Jetzt bist Du dran ;-)
Zur Auflockerung mal eine kleine Filmdoku :-)
Nikola Tesla - Magier der Elektrizität
( Terra-X, 43Min, Video verfügbar bis 03.07.2034 )
https://www.zdf.de/dokumentation/terra-x/nikola-tesla-magier-der-elektrizitaet-doku-100.html
Was ich beim Elektrotechnikstudium an einer Universität immer etwas
schade fand, dass es im wesentlichen ein Studium der "mathematischen
Modellbildung" war. Es wäre schön gewesen, wenn das Studium auch die
Historie und der Entwicklungsgeschichte der Elektrotechnik und der
Persönlichkeit und Lebenswege der maßgeblichen Personen beinhaltet
hätte. Am Ende des Studiums konnte man fast der Ansicht sein, dass sich
die Welt vollständig in mathematischen Formeln erfassen und berechnen
lässt.
Besonders empfehlen kann ich in der Doku die Stelle, an der die
unterschiedliche Herangehensweise von Nikola Tesla und Thomas Alva
Edison erklärt wird und warum Edison seine Art der Entwicklung
bevorzugt.
Peter D. schrieb
>Je nach Aufbau des Kollektors gibt es entweder Funken bei Unterbrechung>oder periodische Kurzschlüsse. Daher findet man in der Praxis nur>Motoren mit mindestens 3 Polen. Und mit ordentlichen Kohlen für einen>unterbrechungsfreien Stromfluß. Diese Drahtbügel sind nicht geeignet.
Lustigerweise wird das Problem des Kommutators in der Doku behandelt und
war zur damaligen Zeit ein Problem, was viele versucht hatten zu lösen.
Tesla hat es dann als erster geschafft. (Das Bild zeigt den zugehörigen
Screenshot aus der Doku). Ich dachte eigentlich, Tesla hätte nur das
Prinzip des dreiphasigen Wechselstroms erfunden. Das Bild sieht aber
eher nach einem zweiphasigen Motor aus.
Joe schrieb
>Da die Zustandsbeschreibung vielleicht nicht für jeden zum Handwerkszeug>gehört ;-) hier etwas ausführlicher.https://www.mikrocontroller.net/attachment/640167/H_s_.pdf
Das PDF gefällt mir optisch sehr gut und es macht einen übersichtlichen
Eindruck.
Das schöne an mathematischen Modellen ist ja, dass man sie auf einem
Computer implementieren und die Berechnung mit einem Kommando laufen
lassen kann. Es ist quasi ein vom Computer ausführbarer Algorithmus.
Ein Computer ist hierbei ein ziemlich unbestechliches Gerät, wenn es um
die Vollständigkeit und syntaktischen Korrektheit einer
Algorithmusvorgabe geht. Fehlt eine Variable, ist etwas ungenau
formuliert, oder ist ein Parameter undefiniert, läuft ein Programm
nicht.
In einigen wissenschaftlichen Veröffentlichen (leider nicht den
meisten), ist es mittlerweile brauch, ans Formelwerk die
Begriffserklärung anzuhängen. Im besten Falle passiert das tabellarisch
(so dass man durch einen schnellen Blick in die Tabelle die Bedeutung
der Parameter direkt ablesen kann) und im zweitbesten Fall im Fließtext
(bei dem man dann mühselig die Bedeutung herausfieseln muss).
Ich fände es toll, wenn es zum PDF einen Anhang mit der vollständige
Begriffserklärung gäbe ( ausreichend für die algorithmische Verarbeitung
) und für die Studenten ein Hinweis, wie einige der Parameter praktisch
messtechnisch zu ermitteln sind.
Was hältst Du davon?
>In einigen wissenschaftlichen Veröffentlichen (leider nicht den>meisten), ist es mittlerweile brauch, ans Formelwerk die>Begriffserklärung anzuhängen.
Um zu illustrieren, was ich damit meine, habe ich hier mal das
Hodgkin-Huxley Modell für das Aktionspotential eines biologischen
Neurons angehängt und die Werte der Eingangsparameter und die Kommentare
entfernt.
( Ich vermute, dass der ein- oder andere sich mit Thema
Neuronensimulation noch nicht befasst hat :-) )
Nichtsdestotrotz sei die Aufgabe:
1. Finde die Werte für die Parameter, um das Modell lauffähig zu
bekommen.
2. Finde für diese Parameter die Grenze für die Länge des
Eingangspulses, bei dem das Aktionspotential gerade so triggert
3. Ändere die Leitfähigkeit des Natriumkanals so, dass das
Aktionspotential wieder getriggert wird.
Christoph, ich verstehe schon was du meinst. Ich hatte die Diskussion
hier im Forum mehr als Austausch von Interessenten gesehen, die genau
wissen, was sie machen und nicht als Skript für Lernende. In diesem
Zusammenhang hatte ich die Zustandsgleichung mit den bekannten Matrizen
A,B,C und D von Giovanni in eine Form gebracht, die diese Matrizen in
ihren Gleichungen erklärt.
Ich bin mir nicht sicher, ob eine ausführlichere Form hier auf Anklang
stößt. Dazu existiert ja ausreichend Literatur für die Regelungstechnik.
Wenn meine Gabellichtschranke da ist, warte noch auf die Lieferung,
werde ich mein Motormodell mal statisch und dynamisch vermessen. In
diesem Zusammenhang kann ich ja die komplette Kette, also Aufnahme der
Messwerte, Herleitung der Gleichungen, Zuordnung zum Modell, Überprüfung
in der Simulation, etwas ausführlicher aufschreiben. Am Beispiel ist es
oft einfacher als nur in abstrakten mathematischen Beziehungen.
>Ich bin mir nicht sicher, ob eine ausführlichere Form hier auf Anklang>stößt. Dazu existiert ja ausreichend Literatur für die Regelungstechnik.
Für mich wäre es super. Es ist halt wie in meinem Beispiel zum Neuron:
Das Hodgkin-Huxley Aktonspotential ist wirklich ausführlich in der
Literatur breit getreten. Ich denke, meine Aufgabenstellung oben würde
sich für jemanden ohne Vorkenntnisse und Deinem oder Giovannis Niveau
mit etwas Einlesen in 4-16 Stunden lösen. Wenn ich den Code mit
Kommentaren und Startparametern gepostet hätte, würde diese Zeit auf
30-60 Minuten schrumpfen.
> Ich hatte die Diskussion> hier im Forum mehr als Austausch von Interessenten gesehen, die genau> wissen, was sie machen und nicht als Skript für Lernende.
Damit hast Du schon recht. Bei mir sind die Kenntnisse zur
Zustandsregelung aber etwas angestaubt (sagen wir, es ist 30 Jahre her
..), deshalb muss ich Aufwand betreiben, um das Problem zu lösen (was
ich hoffentlich tun werde, wenn mein Messaufbau das hergibt, was er
soll).
Aber lass uns mal zurück zu den interessanten Fragestellungen kehren und
diese Diskussion etwas beiseite schieben.
Hier die neuesten Messungen.
Das Encoder Interface ist jetzt auf I2C umgestellt und nicht mehr
analog. Dadurch fallen die Störungen des ADC weg und man erhält ein
wirklich sauberes Signal. Der Motor läuft mit den eingestellten
Parameter rückwärts und man sieht schön das Einschwingen des Rotors beim
Anlauf.
Ich habe jetzt etwas Entlötlitze, die mit schwachen Feder gespannt sind,
als Rotorschleifringe verwendet. Leider entsteht dadurch deutlich mehr
Reibung und die Verzögerungskurve ist relativ steil im Vergleich zum
Aufbau vorher. Die Kommutierung findet elektronisch statt und es wird
wieder der Rotor kommutiert.
Ich habe noch mal die Widerstände mit Vierleitermessung vermessen und
sie sollten jetzt sehr genau sein, wobei der Rotorwiderstand durch die
Schleifringe nicht ganz so stabil wie der Feldspulenwidertand ist.
Die Induktivitäten habe ich auch noch mal neu vermessen und man sieht
schön die Abhängigkeit vom Rotorwinkel mit einer Schwankung von ca. 14%
( Die Abhängikeit der Induktivität vom Roboterwinkel wir bei BLDC
Motoren über hochfrequenzmessungen bisweilen zur Bestimmung der
Absolutposition verwendet).
Joe G. schrieb:> Christoph, ich verstehe schon was du meinst. Ich hatte die Diskussion> hier im Forum mehr als Austausch von Interessenten gesehen, die genau> wissen, was sie machen und nicht als Skript für Lernende. In diesem> Zusammenhang hatte ich die Zustandsgleichung mit den bekannten Matrizen> A,B,C und D von Giovanni in eine Form gebracht, die diese Matrizen in> ihren Gleichungen erklärt.
Stimme 100% zu.
In diesem Beitrag (Bastelmotor) schätzte ich vor Allem die Umgangsformen
und die unterschiedlichen fachlichen Zugänge zu einem an sich simplem
Thema.
Ich sehe es eher sportlich. Der Eine macht was, ein Anderer beschäftigt
sich auch damit und bringt seine Version in die Diskussion, und so gibt
es eine gewisse Dynamik.
Hodgkin-Huxley Modell: Als menschliches Wesen bin ich jede ms mit dem
Thema konfrontiert. Simulation (und das fachliche Verständnis) ist mir
komplett neu.
Habe kurz in den Python-Code reingeschaut. Homemade Euler geht gar
nicht.
Frage: Welche Parameter soll ich für den Versuch wählen: Tintenfisch
oder meine. ;-)
Muss mich jetzt auf das Finale vorbereiten.
Giovanni
>Frage: Welche Parameter soll ich für den Versuch wählen: Tintenfisch>oder meine. ;-)
Oh, das ist jetzt ein "Seitenthema", zwar hochspannend, aber nicht ganz
im Bereich der Mechatronik, eher Biochemie.
Aber wenn Du Dich damit beschäftigen magst: Es gibt ziemlich
interessante Fragestellungen bei dem Thema. Gestern beim rumspielen mit
dem Hodgkin-Huxley Modell habe ich festgestellt, das wenn man den
Natriumkanal durchlässiger macht, das Neuron selbständig zu feuern
beginnt, was wohl auch einigen realen Neuronen entspricht. Sehr viel
weitergehende Fragen sind die nach der maximalen Feuerrate und warum ein
Mensch trotz dieser Langsamkeit Richtungshören kann, obwohl dort eine
Auflösung im Mikrosekundenbereich benötigt wird.
Aber wie gesagt, ein sehr endloses, spannendes, interessantes Feld was
aber nicht ganz in dieses Motorenthema passt.
Bei den Messungen ist mir aufgefallen, dass die Feldspule auf die
Rotorspule überzusprechen scheint.
Eigentlich ist es ja logisch: Die beiden Spulen bilden einen
Transformator, bei dem die Spulen am besten gekoppelt sind, wenn der
Rotor bei 0° oder bei 180° steht. Am schlechtesten sind sie gekoppelt,
wenn der Rotor bei 90° oder 270° steht.
Um das zu messen, habe ich das Oszi als Bodeplotter verwendet. Dabei ist
der Oszi-interne Signalgenerator über einen 100 Ohm Widerstand an die
Feldspule angeschlossen (siehe LtSpice Simulation).
Es wäre interessant, das Messergebnis und die Simulation zu diskutieren.
Christoph M. schrieb:> Bei den Messungen ist mir aufgefallen, dass die Feldspule auf die> Rotorspule überzusprechen scheint.
Nennt sich Ankerrückwirkung und wird bei großen Maschinen durch
Kompensationswicklungen bekämpft. Im ersten Semester Elektrische
Maschinen wird das üblicherweise ignoriert und das dort verwendete
Modell der Gleichstrommaschine berücksichtigt diesen Effekt auch nicht.
Dann wird es nämlich übelst kompliziert und auf Grund der
Magnetisierungskurve des Eisens Nichteinhaltung.
Jörg
Jörg K.
>Dann wird es nämlich übelst kompliziert und auf Grund der>Magnetisierungskurve des Eisens Nichteinhaltung.
Ja, das glaube ich. Man merkt schon bei der Messung der Bodeplots, dass
bei höheren Frequenzen die Übertragungscharakteristik schwierig zu
modellieren wird und ein einfaches Transformatormodell mit
Spulenmodellen nur aus Widerständen und Induktivitäten nicht mehr
ausreichen.
Eine offene Frage ist auch, wie homogen das Magnetfeld ist und wie
homogen die Kraftwirkung. Ich habe den Eindruck, dass es stark vom
Luftspalt abhängt und man sieht im Bild, dass ab 45° der Luftspalt dann
deutlich größer wird.
Die mechanische Konfiguration und damit Luftspalt und Induktivitäten
bzw. Kopplungen zwischen den Induktivitäten ändern sich ja dynamisch mit
der Drehfrequenz.
Für die Parameterbestimmung sind ja Experimente wie Leerlauf oder
Kurzschluss gut geeignet. In diesen Fällen liegt ein statischer Zustand
vor, so dass für die oben genannten Parameter ein Mittelwert ermittelt
wird. Dieser fließt dann in das einfache Modell ein.
Die Frage sollte ja immer lauten: Was möchte ich mit einem Modell
machen? Für eine Regelung, auch Zustandsregelung wird das Modell
ausreichend sein, Für eine Optimierung des Wirkungsgrades oder
Verminderung des Streufeldes sicherlich nicht.
Joe G.
>Die Frage sollte ja immer lauten: Was möchte ich mit einem Modell>machen? Für eine Regelung, auch Zustandsregelung wird das Modell>ausreichend sein, Für eine Optimierung des Wirkungsgrades oder>Verminderung des Streufeldes sicherlich nicht.
An dem Punkt hast Du sicherlich recht. Wahrscheinlich bin ich schon
ziemlich vom ursprünglichen Ziel abgedriftet und verrenne mich ein wenig
in Details.
Heute habe ich mich ein wenig damit beschäftigt, wie ich die Feldspule
vermessen könnte. Dazu habe ich das Oszilloskop mit dem eingebauten
Signalgenerator verwendet und ein paar Frequenzen manuell angefahren.
Ein manueller Fit bei 250Hz bring im Ergebnis eine Spuleninduktivität
von 4.2mH und bei 1KHz 3.2mH.
Edit: Der Rotor stand bei ca. -20°
Christoph M. schrieb:> Eine offene Frage ist auch, wie homogen das Magnetfeld ist und wie> homogen die Kraftwirkung. Ich habe den Eindruck, dass es stark vom> Luftspalt abhängt und man sieht im Bild, dass ab 45° der Luftspalt dann> deutlich größer wird
Leider nicht nur vom Luftspalt: Das Läuferfeld verbiegt das Ständerfeld
an den Polen, so daß nicht mehr überall die gleiche Flußdichte herrscht.
Das bekämpft man üblicherweise mit Wendepolwicklungen, die vom
Ankerstrom durchflossen wird.
Ich finde Eure Arbeit hochinteressant. Sieht man doch, daß der
eigentlich (zumindest bei Großmaschinen) ausgestorbene GS-Motor ein fast
unerschöpfliches Feld der Untersuchung darstellt.
Von mir ein "Daumen hoch" und macht weiter. Ich lese gespannt mit.
Jörg
>Ich finde Eure Arbeit hochinteressant.
Das freut mich sehr, wo ich doch langsam das Gefühl bekomme, wieder mal
ein neues Thema anfangen zu müssen.
Früher war im Mikrocontrollernetz eine Anzeige unter den Files, wie oft
sie heruntergeladen wurden. Daran konnte man sehen, ob Interesse an
einem Thema besteht. Leider gibt es das nicht mehr, sodass man nicht
mehr sehen kann, ob sich überhaupt noch jemand für so ein Thema
interessiert.
> Sieht man doch, daß der> eigentlich (zumindest bei Großmaschinen) ausgestorbene GS-Motor ein fast> unerschöpfliches Feld der Untersuchung darstellt.
Durch das Encoderrad fühlt sich der Motor fast wie eine Großmaschine :-)
Hier ein Versuch, die Winkelabhängigkeit des Übersprechens zwischen
Feld- und Rotorspule zu messen.
Zu diesem Zweck wurde die Feldspule mit 1kHz Rechteck vom L298 bestromt
(PWM über ENA pin, also "Fast Decay"). Die Rotorspule wurde
kurzgeschlossen.
Es wurden zwei Umdrehungen von Hand gemacht. Die Messungen scheinen
nicht so ganz stabil, wie man aus den zwei unterschiedlichen Umdrehungen
sieht. Die Messungen würde ich so interpretieren, dass die Kopplung bei
45° und 225 am stärksten ist. Das ist etwas seltsam, da ich das eher bei
0° und 180° erwarten würde. Vielleicht hat es etwas mit der Konstruktion
des Rotors zu tun, der im Gegensatz zum Stator aus 2 Blechen mit jeweils
1mm Dicke besteht. Außerdem sind die Messungen leicht asymmetrisch, was
aber daran liegen könnte, dass der Rotor leicht "eiert" und damit die
Abstände der Luftspalte variieren. Das "eiern" kommt durch die nicht
ganz zentrischen Bohren in der Holzachse des Rotors.
Christoph M. schrieb:> nichtsdestotrotz sei die Aufgabe:> 1. Finde die Werte für die Parameter, um das Modell lauffähig zu> bekommen.> 2. Finde für diese Parameter die Grenze für die Länge des> Eingangspulses, bei dem das Aktionspotential gerade so triggert> 3. Ändere die Leitfähigkeit des Natriumkanals so, dass das> Aktionspotential wieder getriggert wird.
bin etwas verspätet mit meiner Antwort.
Punkt 1) habe Daten im Netz gefunden. siehe Bild & Code
Punkt 2) hier habe ich die Aufgabe nicht verstanden. Dazu wäre es
notwendig fachlich in das Thema einzusteigen.
Zurück zum Motor:
Die Kopplung ist schon mal interessant. Die unerwarteten Änderungen mit
dem Winkel kommen vom "variablen Luftspalt" - überrascht mich nicht.
Sowohl der stehende als auch der rotierende Teil sind nicht wirklich
perfekt.
Wie von Joe G. schon vorgeschlagen würde ich einen Leerlauf + einen
Kurzschlussversuch machen. ABER nicht mit 1kHz sondern mit 50Hz (die hat
jeder zu Hause).
LL: U_field, I_field, U_rotor
KS: U_field, I_field, I_rotor
Mit unterschiedlichen Positionen.
Dann noch LL mit Winkel = 0° und unterschiedlicher Amplitude
(LL-Kennlinie/Sättigung).
zu Rechteck 1kHz: Hier gibt es dann noch Stromverdrängung, Verluste im
Eisen, kapazitive Kopplungen zwischen den Windungen , ...
Giovanni schrieb:
>bin etwas verspätet mit meiner Antwort.>Punkt 1) habe Daten im Netz gefunden. siehe Bild & Code>Punkt 2) hier habe ich die Aufgabe nicht verstanden. Dazu wäre es>notwendig fachlich in das Thema einzusteigen.
Ich habe das Thema mal hierhin ausgelagert:
Beitrag "Pulsneuronen Simulation"
Das erste Video im Link erklärt das Aktionspotential. Es ist ein wenig
auf Schüler getrimmt, aber der Inhalt ist anspruchsvoll.
Habe mal begonnen ein 2D-FEM Modell vom Bastelmotor zu erstellen.
Würde aber noch ein paar Infos brauchen:
* Abmessungen - Luftspalt
* Windungszahlen: Anker, Feld
Ziel: Abschätzung der Kopplungen, ev. Drehmoment
>Habe mal begonnen ein 2D-FEM Modell vom Bastelmotor zu erstellen.
Gute Idee. Wäre schön, wenn Du es postest, wenn es fertig ist.
Hier mal ein Versuch, den Maßen einen Namen zu geben:
1
// Rotor Abmessungen
2
dRotor=47.8; // Rotor Durchmesser
3
dSheet=1; // Blechdicke
4
wSheet=14.8; // Blechbreite
5
tol=0.1; // Visuallisierung Luftspalt zwischen Rotorblechen
6
7
// Abmessungen der Rotorspulen
8
lPol=20; // Breite der Rotorspulen in y Richtung
9
wPol=10.8; // Breite der umgebogenen Bleche am Rotor in Rotationsrichtung
10
lRotorCoil=17; // Laenge jeder Rotorspule
11
dRotorCoil=10; // Dicke der Rotorwicklung in Rotationsrichtung
12
wRotorCoil=lPol; // Breite der Rotorwicklung in y Richtung
13
14
// Rotorachse
15
dAxis=9.6; // Durchmesser der Holzachse
16
lAxis=80; // Länge der Holzachse
17
yAchsenOffset=16; // Der Rotor ist nicht symmetrisch auf der Rotorachse befestigt
18
19
// stator
20
dStator=54; // Aussendurchmesser Stator
21
lStator=wSheet; // Blechbreite
22
hCircle=38; // Hoehe des abgeschnittenen Kreises
23
24
// oberer MagnetBlock ( Teil, auf dem die Feldspule aufgewickelt ist )
25
hCube=18; // Maß vom Blechring bis zum Spulenblech
26
wCube=38; // Laenge des Blechs, auf das die Spule aufgewickelt ist
Christoph M. schrieb:> Wäre schön, wenn Du es postest, wenn es fertig ist.
Klar. Aber nur, wenn ich auch die Windungszahlen bekomme. Sonst macht
das Ganze wenig Sinn.
Die Spulen des Motors habe ich vor zig Jahren gewickelt. Um die
Windungszahl herauszubekommen, müsste ich sie abwickeln, und neu
wickeln. Das ist etwas zu umständlich, deshalb versuche habe ich mal die
Windungen aus den geometrischen Maßen und dem spezifischen Widerstand
berechnet.
1
dDraht_mm = 0.40000
2
r = 0.20000
3
A_mm2 = 0.12566
4
RFieldCoil_ohm = 1.6250
5
R = 1.6250
6
rhoKupfer_ohm_mm2_per_m = 0.017210
7
rho = 0.017210
8
l_m = 11.865
9
d_mm = 6
10
w_mm = 17.650
11
umfang_m = 0.047300
12
windungen_N = 250.85
250 Windungen scheint mir aus der Erfahrung ein ziemlich realistischer
Wert.
Ich würde die Feldspule und die Rotorspule als ungefähr gleich annehmen.
Joe schrieb
>Der Motor ist angekommen, zusammengebaut und läuft ;-)>Er hat derzeit einen Ankerwiderstand von 5.88 Ohm und eine>Ankerinduktivität von 8.05 mH bei 100 Hz.
Der Ankerwiderstand kommt mir bei der Drahtstärke relativ hoch vor. Ich
vermute, ein großer Teil des Widerstandes kommt von den Schleifern.
Eine direkte Messung direkt am Kommutator könnte andere Widerstandswerte
ergeben.
Gibt es denn schon Messergebnisse vom Beschleunigungs- und Bremsvorgang?
Bei Versuch #1 ein Überraschungseffekt:
Habe mit den erhaltenen Daten ein 2D FEMM Modell gefüttert und
interessante Ergebnisse erhalten.
1
Annahme für Feld:
2
200Wdg, Strom I = 1A
3
==> aus 2D FEM die Feldenergie W berechnet und daraus die
4
Induktivität W = L*I^2/2.0
5
6
Rotorposition 0° W = 1.89mJ ==> L = 3.8mH
7
Rotorposition 90° W = 1.38mJ ==> L = 2.8mH
Diese Werte stimmen gut mit den Messungen von Christoph M. überein. Das
ist eher Zufall und wahrscheinlich eine Kompensation von Fehlern da:
* 2D Modell mit 14.6mm Tiefe
* Hohe Sättigung im Blech (geht man mit dem Strom runter, dann steigen
die Induktivitäten an).
* Geometrie nicht 100% perfekt abgebildet
Wie immer, die Größenordnung dürfte stimmen.
Nächster Versuch: mit Rotorspule => Kräfte/Drehmoment stationär
Christoph M. schrieb:> Ich vermute, ein großer Teil des Widerstandes kommt von den Schleifern.
Ich habe mit zwei Messspitzen direkt am Kommutator gemessen, also ohne
Schleifer. Eine heutige Gleichspannungsmessung ergibt den gleichen Wert.
> Gibt es denn schon Messergebnisse vom Beschleunigungs- und Bremsvorgang?
Leider nicht, meine georderte Lichtschranke scheint wohl bei der Post
verlustig zu sein :-(
Giovanni schrieb
> Rotorposition 0° W = 1.89mJ ==> L = 3.8mH> Rotorposition 90° W = 1.38mJ ==> L = 2.8mH
Glückwunsch, das sind wirklich erstaunlich gute Resultate.
Bin gespannt, was noch so herauskommt.
> Leider nicht, meine georderte Lichtschranke scheint wohl bei der Post> verlustig zu sein :-(
Oh wie schade. Vielleicht lässt sich eine andere Lösung finden.
Heute: Drehmoment Bastelmotor
* stationär - Position 0-360°; delta 1°
* Feld: 1A x 170Wdg, Anker: 1A x 220Wdg
* KEINE Kommutierung
Erkenntnis:
* vergleicht man mit meiner Simulation (Beilage), so sieht man beim
Start ein Moment von ca. 1.7mNm. (Trägheitsmoment, Lastmoment nicht
verifiziert!)
* mit FEM berechnet ca. 1.3mNm
* Massive Schwankungen - bedingt durch Geometrie;
* ev. auch Erklärung für Drehzahlschwankungen beim Start?
* Real würde sich das Profil 0-180° durch die Kommutierung wiederholen.
coming soon: Selbst-/ Kopplungsinduktivität abhängig vom Winkel für
dynamische Simulation. Muss aber noch etwas nachdenken.
Sehr interessant. Vor allen Dingen die Asymmetrie des Momentes über den
Winkel. Wie entsteht die in der Simulation? Eigentlich würde man ja
denken, dass das Ganze bei einem Umlauf symmetrisch sein sollte.
Ich habe mich mal mit der Messung der Feldspule versucht und einen alten
Audio Verstärker (Pioneer VSX-609 RDS,DIN-Sinusleistung: 80 W) an einen
Funktionsgenerator und an dann die Spule über einen 5.1Ohm Widerstand
angeschlossen. Der Verstärker reicht aus, um den Zementwiderstand
abrauchen zu lassen und sich ordentlich die Finger zu verbrennen, wenn
man nicht aufpasst (der Frequenzgenerator fängt beim Einschalten aus mir
unbekannten Gründen mit 1Vss Amplitude an) ..
Ich weiß noch nicht ganz, wie die Ergebnisse zu interpretieren sind. Das
Ziel war, etwas mehr über die Hysterese zu erfahren.
Christoph M. schrieb:> Sehr interessant. Vor allen Dingen die Asymmetrie des Momentes über den> Winkel. Wie entsteht die in der Simulation? Eigentlich würde man ja> denken, dass das Ganze bei einem Umlauf symmetrisch sein sollte.
Die Asymmetrie entsteht hier weil sich das Feld der Erregung und des
Ankers überlagern. Daher bei 60° ein anderer Wert als bei 120°
(Wäre ohne Ankerstrom natürlich symmetrisch)
Wer misst, misst Mist.
Ich habe herausgefunden, dass der Stromsensor ein kleines magnetisches
"Übersprechproblem" hat. Das relativiert alle Strommessungen:
Beitrag "ACS712 Hysterese"
Christoph M. schrieb:> Ich habe herausgefunden, dass der Stromsensor ein kleines magnetisches> "Übersprechproblem" hat. Das relativiert alle Strommessungen:
Durch die kleinen Eisenquerschnitte und hohe Sättigung hat der Motor
natürlich ein beachtliches Streufeld.
>Durch die kleinen Eisenquerschnitte und hohe Sättigung hat der Motor>natürlich ein beachtliches Streufeld.
Das interessante ist ja, dass an der ursprünglichen Position des
Stromsensors schon die Magnetisierung des Eisens (also dann ohne Strom)
schon für die Hysterese von knapp 100mV und damit 0.5A Fehler
ausgereicht hat. Wenn man ein Stück Eisen an den Stator hält, kann man
mit etwas Phantasie eine Kraftwirkung spüren, aber nicht dass da ein
großes Magnetfeld ist. Wenn man einen Kompass in 3cm Entfernung
platziert, kann man die Kompassnadel um 180° drehen und eine dauerhafte
Magnetisierung feststellen, wenn man kurz 2A an die Feldspule angelegt
hat.
Hier habe ich die Messungen mit weit entferntem Stromsensor gemacht.
Der Unterschied ist deutlich: Jetzt stimmen endlich die beiden
Stromwerte, die ich aus der Spannung über dem Shunt und aus der
gemessenen Spannung des Stromsensors berechnet habe, gut überein, so
dass ich jetzt von einer zuverlässigen Messung ausgehe.
Die lustige Schlaufe bei 9Hz verschwindet ;-)
Das folgende Signal könnte noch interessant sein:
Die Feldspule wird mit 10Hz bestromt und die Spannung am Rotor gemessen.
Der Rotorwinkel ist fix auf 0°.
Die Spannung am Rotor ist in nicht sinusförmig. Ich würde die Verformung
auf eine ziemlich langsame Ummagnetisierung der Bleche schieben. Was
mein Ihr?
>Wenn das die Ursache ist, sollte sich aus Strom und Spannung oder Fluss,>Durchflutung und Eisenvolumen ja prima eine Hysteresekurve darstellen>lassen.
Das ist eine sehr interessante Idee.
Ich versuche es mal mit folgenden Zusammenhängen
1
# calculate magnetic flux from induction voltage
2
# Ui=dPhi/dt
3
# Ui=d(B*A)/dt
4
# B=1/A*integral(Ui*dt)
(im Matlab analysis.m ausführlicher ..)
Auf mir noch unbekannten Gründen gibt es immer noch einen gewissen
Unterschied von Stromsensor zu Stromberechnung über den Shuntwiderstand.
Ich habe den Stromsensor in Verdacht ..
Ein Versuch:
Man kann jetzt natürlich den Spannungsabfall am ohmschen Widerstand
(Strom x R=1.65Ω) von der Quellenspannung abziehen und bekommt eine
Übersetzung Feld/Rotor.
VField0 wäre dann die "innere Spannung"
Im Bild angenommen Faktor 0.3.
>Im Bild angenommen Faktor 0.3.
Hast Du das Bild aus den Messdaten generiert? Bemerkenswert, dass die
Kurvenformen so gut übereinander liegen.
Ich hab's mal versucht, in der LtSpice-Simulation abzugreifen (Ich habe
dort leider keine Hysterese im Trafo ..)
Erstaunlich, dass der Übertragungsfaktor so hoch ist, obwohl es ja die
großen Luftspalte gibt.
Mittlerweile habe ich herausgefunden, warum der Stromsensor nicht gut
über den Messungen des Stroms durch den Shunt liegt: Es ist die
AC-Kopplung des Oszilloskops, deren Grenzfrequenz bei 8Hz liegt und
damit eine ordentliche Phasenverschiebung einfügt.
Bei 100Hz ist die Phasenverschiebung quasi 0 und die Signale "matchen"
besser.
Ich habe auch mal versucht, die Flussdichte in Zahlen zu fassen:
Ich habe mal das Anlaufverhalten des Bastelmotors mit seinen
experimentell bestimmten Parametern, klassisch auf meinem Analogrechner
simuliert.
Bei der Umsetzung der Differentialgleichung in die zugehörige
Maschinengleichung tauchten natürlich sofort die beiden Probleme auf,
welche die Ingenieure mit ihren ersten Analogrechnern schon vor 80
Jahren hatten. Mein Rechner hat für die zeitabhängigen Variablen einen
Wertebereich von -1 bis +1. Für die Koeffizienten (Potentiometer) auch
von -1 bis +1. Somit müssen alle Gleichungen amplitudentransformiert und
zeittransformiert werden, um die Variablen und Koeffizienten in diesen
Wertebereich zu bekommen, ohne die Struktur der Gleichungen zu ändern.
Eine spannende Aufgabe und ich habe wieder etwas gelernt dabei :-)
Später hier mal alle notwendigen Rechenschritte für dieses recht
nützliche Handwerkszeug.
Ja, und natürlich verhält sich die Simulation auf dem Analogrechner
exakt wie der Motor – Ziel erreicht.
P.S.: Anbei noch die Realisierung der drei Schritte von der Dgl. zur
Maschinengleichung in Simulink zum Vergleich
Anbei noch etwas Hintergund mit einem kleinen Beispiel zur Normierung.
Damit wird das Modell für den Analogrechner und das Simulinkmodell
vielleicht anschaulicher :-)
Sehr schön :-) .
Ich habe mal vor einer Weile mit dem "Analog Thing" herumgespielt und
überlegt, ob ich mir selbst einen anschaffen soll, aber leider ist das
Ding nicht ganz billig und es ist ja nur eine ziemlich begrenzte Anzahl
von Multiplizieren auf dem Board. Wenn ich mich recht erinnere, bin ich
auf das "Scaling Problem" gestoßen.
The analog thing:
https://the-analog-thing.org/
Ja, das stimmt, das Teil ist nicht gerade preiswert. Ich hatte damals
jedoch ein Rechner als „defekt“ zu einem deutlich reduzierten Preis
erworben. Da letztlich fast nur OPV’s verbaut sind, war die Reparatur
schnell erledigt.
Mit 5 Integratoren und noch zahlreichen weiteren Elementen, läßt sich
eine Menge anstellen. So ist ein z.B. ein PID-Regler sehr schnell
realisiert. Es hat schon einen gewissen Reiz an den Potis zu drehen und
direkt das Ergebnis am Oszi zu beobachten. Nicht so steril wie z.B.
Simulink ;-)
Ich stecke noch immer beim Reihenschlussmotor fest.
Habe inzwischen versucht mit 2D-FEM die Eigen- und
Kopplungsinduktivitäten zu berechnen (Bild).
* keine Sättigung
* tau wurde mit Maxwell-Stress-Tensor ermittelt
* d1,d2 - Drehmoment aus Induktivitäten (bin noch auf der Fehlersuche,
habe aber einen Verdacht)
* Index F: Feld; A: Anker
Dies wird dann die Basis für die eine genauere Simulation.
Ein Aufgabe die noch zu lösen ist: "Kommutierung"
Wir haben 2 Induktivitäten in Serie, F und A. Ich kann dann nicht
einfach den Anker umdrehen, weil die Energieinhalte dann nicht stimmen.
Real wird es so sein:
* Durch die Bürsten wird erst der Anker kurzgeschlossen. Der Strom im
Feld steigt. Der Strom im Anker klingt ab.
* Dann Kommutierung fertig, aber Strom im Feld ist hoch, im Anker klein
und beide in Serie?? Dies ist vielleicht auch der Grund warum der
Bastelmotor "funkt".
* Ich werde wahrscheinlich bei der Kommutierung das System neu
initialisieren (da Strom=Zustandsgröße) und mal schauen was rauskommt.
Gestern habe ich ein paar Freunden den Thread hier gezeigt und es gab
ein paar Fragen zu den FEM-Simulationsbildern hier:
Beitrag "Re: Bastelmotor Gleichstrommotor Modell"
Eine Frage war, ob die eingezeichneten Feldlinien eventuell elektrische
Feldlinien sein könnten, weil alle eingezeichneten Feldlinien senkrecht
aus dem Material heraus kommen. Außerdem war die Meinung vertreten, dass
die magnetischen Feldlinien immer kreisförmig geschlossen sein müssen
und es im Bild aber so aussieht, als wenn sie sich in der Unendlichkeit
verlieren.
> Eine Frage war, ob die eingezeichneten Feldlinien eventuell> elektrische Feldlinien sein könnten, weil alle eingezeichneten> Feldlinien senkrecht aus dem Material heraus kommen.
1. Feldlinien sind ein Modell.
2. Diese "Feldlinien" gehen um so 'senkrechter' von einem Medium
ins andere über, je verschiedener ihre relativen Konstanten
ε(r) -elektrisches Feld- bzw.
µ(r) -magnetisches Feld- sind.
Giovanni schrieb:> * Dann Kommutierung fertig, aber Strom im Feld ist hoch, im Anker klein> und beide in Serie?? Dies ist vielleicht auch der Grund warum der> Bastelmotor "funkt".
Funken sind ein Zeichen von Fehlkommutierung. Die Die Spannung zwischen
zwei venachbarten Lamellen sollte im Kommutierungsmoment möglichst klein
sein. Kannst Du die Bürstenbrücke verstellbar machen?
Jörg K. schrieb:> Funken sind ein Zeichen von Fehlkommutierung. Die Die Spannung zwischen> zwei venachbarten Lamellen sollte im Kommutierungsmoment möglichst klein> sein. Kannst Du die Bürstenbrücke verstellbar machen?
Richtig, gilt für reale GS-Maschinen.
In dieser Anordnung "Bastelmotor" - Bild ganz oben - hat der Rotor 2
Pole, der Kollektor 2 Lamellen und es gibt 2 Bürsten.
Wird wahrscheinlich nie in Großserie gebaut. Hier die Basis für
fachliche Diskussionen.
Christoph M. schrieb:> Gestern habe ich ein paar Freunden den Thread hier gezeigt und es gab> ein paar Fragen zu den FEM-Simulationsbildern hier:
ad 1)
Die Frage nach dem Austrittswinkel wurde von @neuexxer schon
beantwortet.
Frei nach J.C.Maxwell: An der Grenze ist die Normalkomponente von B, und
die Tangentialkomponente von H unverändert. Siehe Punkt 2.1.2 von
Beilage PDF.
ad 2)
Das mit den Grenze bei FEM Simulation ist so eine Sache. Es gibt bessere
Ansätze als das Vektorpotential auf Null zu setzen.
Ich habe in M32.FEM einfach den Bereich vergrößert. Es gibt in der FEMM
auch andere Möglichkeiten um die Randbedingungen zu verbessern (=> siehe
Manual).
Ich habe aber darauf verzichtet, da die Modellierung und die Parameter
schon fehlerbehaftet sind.
* 2D FEM für eine 3D Realität
* unbekannte Windungszahl
* Geometrie mit einigen Fragezeichen.
https://www.femm.info/wiki/HomePage - läuft prima mit WINE
Christoph M. schrieb:> Ich muss mal ein wenig damit herumspielen, um mehr zu verstehen.
Hier noch ein LUA script zur Drehmomenberechnung.
Entweder File-> Open LUA script oder View-> LUA console und Inhalt
der Datei copy/paste + Evaluate
LUA (portugiesisch) = Mond
>Hier noch ein LUA script zur Drehmomenberechnung
Super cool ;-)
Mit FEM lassen sich natürlich schöne Bilder und Videos erzeugen, mit
denen die Leute zu beindrucken sind :-)
Irgendwie müsste man noch die Kommutierung mit rein bringen.
Mir ist aufgefallen, dass der Widerstand der Spule mehr als um den
Faktor 10 zu niedrig ist. Das könnte an den handgewickelten Spulen
liegen, die natürlich nicht maximal dicht gepackt sind. Die Spulen
ließen sich mit einer Maschine sicherlich viel kompakter wickeln. Die
Frage wäre, wie FEMM die Wicklungsdichte berücksichtigen kann.
Christoph M. schrieb:> Mir ist aufgefallen, dass der Widerstand der Spule mehr als um den> Faktor 10 zu niedrig ist.
Der Widerstand der Windungen ist in diesem Fall belanglos. Für die
Feldberechnung wird nur die Stromdichte in den beiden Flächen verwendet.
Diese ist Windungszahl x Strom (Serie) / Fläche.
Gibt man die Cu-Querschnitt korrekt ein, kann man auch die Ohmschen
Verluste berechnen.
Christoph M. schrieb:> Irgendwie müsste man noch die Kommutierung mit rein bringen.
Einfach: wenn man bei 180° und 360° den Ankerstrom im Vorzeichen
wechselt.
1
iA = 1.0 -- hier noch ein if ... then ... else ... end
>Der Widerstand der Windungen ist in diesem Fall belanglos.
Da hast Du wohl recht. Ich wollte es nur erwähnen, weil ich die Anzahl
Windungen ja aus dem Widerstand und dem mittleren Durchmesser der Spule
berechnet habe.
Im Moment beschäftigt mich die Frage, ob das Integral im Lua-Code
1
tq=mo_blockintegral(22)
die korrekte Kraft in tangentialer Rotorrichtung berechnet.
Die Idee zu der Messung hier war ursprünglich, von der Kopplung auf das
Drehmoment zu schließen:
https://www.mikrocontroller.net/attachment/640659/crossTalkFieldCoilRotorCoil.png
Aber die größte Kraft wird wohl in die radiale Richtung gehen und damit
für das Drehmoment unwirksam sein.
Christoph M. schrieb:> Im Moment beschäftigt mich die Frage, ob das Integral im Lua-Code> tq=mo_blockintegral(22)
Warum soll es falsch sein? Siehe FEMM Beschreibung Punkt 2.3.12 - Seite
44
Ich habe es verglichen mit "virtueller Verdrehung". D.h. aus der
Änderung des gesamten Energieinhalten kann man das Drehmoment errechnen.
Und es stimmt.
Bild: tau-maxwell: mit Maxwell-Stress-Tensor; tau-L: mit
Eigen-/Kopplungsinduktivität.
Für mich soweit OK.
Um meine Simulation zu prüfen, wäre ein Leerlaufversuch nicht schlecht.
* Feldspannung: 1.0V
* Messung: Position, Feldstrom, Spannung am Anker (über Kollektor)
Aus Deinem Diagramm hier
https://www.mikrocontroller.net/attachment/642408/torqueCalc.png
könnte man eventuell eine Optimierung ableiten.
Ich im Versuchsaufbau ja mittlerweile einen L298https://www.mikrocontroller.net/attachment/640439/BastelmotorSchematic.png
mit dem man die Feldspule und die Rotorspule getrennt ansteuern kann.
Leider ist der L298 eine Vollbrücke und kann nur PWM und keine analoges
Spannungssignal erzeugen, was die von Dir geforderte Messung mit
konstanter analoger Feldspannung etwas schwierig macht.
Mit der Verwendung des L298 ist der Aufbau keine Reihenschlussmotor
mehr, sondern entspricht eher einem Nebenschlussmotor.
Aus der Simulation des Drehmomentes würde ich ableiten, dass man
sinnvollerweise den Motor nur bei den Maxima der Drehmomente (also
zwischen 100° und 150° und zwischen 200° und 250°) bestromt.
Christoph M. schrieb:> Was ich nicht verstehe: Wieso ist das Drehmoment asymmetrisch? Liegt das> möglicherweise an einer nicht-idealen Position der Kommutierung?
KEINE Kommutierung - Ströme iF und iA sind konstant.
1
iF = 1.0
2
iA = 1.0
3
4
# Energie = L*i^2/2.0
5
Tau = (dAA*iA^2 + dFF*iF^2)*0.5 + dFA*iA*iF
6
7
# Kopplung
8
k = AFA ./sqrt.(abs.(AAA.*AFF))
Die Werte für die Ableitungen der Wert dL/dphi sind im HDF5 und um Bild
"torqueCalc.png" links oben.
Noch zur Erläuterung: Drehmoment für verschiedene Kombination iF und iA
im Bild "torque_var.png".
Die Formel oben erklärt auch wie das Drehmoment entsteht. Real wird
wahrscheinlich bei 90° und bei 270° die Stromrichtung von iA (durch den
Kommutator) geändert. Wichtig ist zu verstehen, dass dann nur der Anteil
mit der Kopplung sich im Vorzeichen ändert
Anm: BastelmotorBVector.mp4 bringt VLC zum Absturz (das vorige MP4 war
OK).
>Anm: BastelmotorBVector.mp4 bringt VLC zum Absturz (das vorige MP4 war
OK).
Bei mir läuft es, auch nachdem ich es wieder aus dem MC-Netz
heruntergeladen habe.
Im Anhang noch mal eine deutlich kleinere Version des Videos mit x=650
Auflösung. Vielleicht lag es ja an der Größe.
Vielleicht kann mal kurz jemand Rückmeldung geben, ob es bei ihm läuft.
Hier ein kleiner Test von Scilab/SciCos, da ich im Moment keinen Zugriff
mehr auf Simulink habe und ohnehin versuche, OpenSource Tools zu
verwenden.
Ich habe das obere Schema von hier nachgebildet:
Beitrag "Re: Bastelmotor Gleichstrommotor Modell"
Mit welchen Werten sind die Koeffizienten berechnet?
Interessant an Scicos:
>>New extensions allow generation of component based modeling of electrical >>and
hydraulic circuits using the Modelica language.
Liegt vielleicht daran, dass Dassault Systems seine Finger im Spiel hat.
https://www.scilab.org/http://www.scicos.org/
Man kann mit SciLab schöne Diagramme erzeugen.
Hier mal die Version des Motors mit Permanentmagnet, bei der die
Spannungsversorgung quasi "abgeklemmt" werden kann.
Simulation "Bastelmotor"-Start - summer edition.
Hier mal ein Bild vom Start - Nebenschluss
1
Parameter:
2
Feldspannung = 1.2V const.
3
Ankerspannung = 1.5V Kommutierung bei 0°; 180°
4
Startwinkel phi = 1.4rad
5
6
Das Modell berücksichtigt:
7
Feldinduktivität (phi)
8
Ankerinduktivität (phi)
9
Kopplung (phi)
Leider. Ich habe jetzt schöne Bilder, aber die Ergebnisse sind FALSCH
(mangels verifizierter Parameter).
Kommentar des Verfassers:
Dieser, und Motoren in ähnlicher Bauform sind für die Lehre nur bedingt
geeignet.
* Durch die Abhängigkeit der Induktivitäten von der Position gibt es
hier Effekte, die es beim klassischen DC-Motor nicht gibt (cogging
torque).
* Das einfache Modell des DC-Motors geht von bewegten Leitern im
Magnetfeld aus. Real findet aber der Kraftangriff am Eisen satt (so wie
bei allen elektrischen Maschinen).
* Mit einfachen Worten einem Studenten/Schüler zu erklären warum sich
dieser Motor dreht, wird nicht einfach sein.
Meine Erkenntnis aus diesem Beitrag:
* Simulation mit automatischen Differenzieren (symbolisch) funktioniert
prima.
* hatte einige Diskussionen mit "Lerneffekt"
Stehe für Fragen zur Verfügung.
Habe folgende Werkzuge benutzt:
Simulation: Modia, ModelingToolkit, OpenModelica
FEM : FEMM, Freefemm++, GRIDAP