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.
:
Bearbeitet durch User
So, jetzt habe ich mal das Trägheitsmoment "abgeschätzt". Das Ergebnis ist ca. 8.95e-6 Kgm2
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.
:
Bearbeitet durch User
Es ist gar nicht so einfach, das Eincoderrad zu photographieren. Man sieht aber schon die Ungleichheiten der Ticks ein wenig.
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.
> Das müßte im derzeitigen Modell erweitert werden.
Nicht: "erweitert",
sondern völlig abgeändert.
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).
>PPS: Ich habe noch nie LTspice verwendet.
Was verwendest Du für Deine Berechnungen?
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.
Hier mal ein Beispiel, was man mit LtSpice simulieren kann: Die Heizungsregelung eines Hauses: https://hackaday.com/2024/07/01/modeling-home-heating-systems-with-circuit-simulation-software/
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.
:
Bearbeitet durch User
>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 :-)
:
Bearbeitet durch User
>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
:-)
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)
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
1 | # |
2 | # MIT License |
3 | # Copyright (c) 2024: sqrt_minus_eins (Giovanni) |
4 | # |
5 | |
6 | function VoltageSource(t::Float64)::Float64 |
7 | 3.6>t>0.08 ? 3.4 : 0.0 |
8 | end |
9 | |
10 | @show Friction = Polynomial([0.25, 0.0, 0.10]*1e-3) |
11 | |
12 | DCmotor = Model( |
13 | Ra = 1.6, |
14 | Rf = 1.75, |
15 | La = 3.4e-3, |
16 | Lf = 3.0e-3, |
17 | Inertia = 9e-6, |
18 | Kt = 17e-4, |
19 | Ke = 0.0150, |
20 | ratedSpeed = Par(value=:(1760.0/30.0*π)), |
21 | speed = Var(start=0.0), |
22 | current = Var(start=0.0), |
23 | |
24 | equations = :[ |
25 | vTerminal = VoltageSource(time) |
26 | vR = (Ra+Rf)*current |
27 | vL = (La+Lf)*der(current) |
28 | vR + vL + emf = vTerminal |
29 | tFriction = Friction(speed/ratedSpeed) |
30 | tMotor-tFriction = Inertia*der(speed) |
31 | flux = current # der Absolutwert ist hier egal |
32 | tMotor = Kt*current*flux |
33 | emf = Ke*speed*flux ], |
34 | ) |
**Simulation**
1 | Friction = Polynomial([0.25, 0.0, 0.1] * 0.001) = Polynomial(0.00025 + 0.0001*x^2) |
2 | |
3 | ... Simulate model DCmotor |
4 | # │ state init unit |
5 | ───┼───────────────────── |
6 | 1 │ current 0.0 |
7 | 2 │ speed 0.0 |
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 ..
:
Bearbeitet durch User
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:
1 | julia> christoph@computer:~/Entwicklung/Modell$ julia modelJulia.jl |
2 | |
3 | Friction = Polynomial([0.25, 0.0, 0.1] * 0.001) = Polynomial(0.00025 + 0.0001*x^2) |
4 | ERROR: LoadError: UndefVarError: Par not defined |
5 | Stacktrace: |
6 | [1] top-level scope at /home/christoph/Entwicklung/Modell/modelJulia.jl:15 |
7 | [2] include(::Module, ::String) at ./Base.jl:377 |
8 | [3] exec_options(::Base.JLOptions) at ./client.jl:288 |
9 | [4] _start() at ./client.jl:484 |
10 | in expression starting at /home/christoph/Entwicklung/Modell/modelJulia.jl:15 |
Hast Du einen Hinweis?
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 Wirkungsgrad Peter D. schrieb: > laufen nicht in jeder Stellung an Peter 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: > der Motor ist für didaktische Zwecke super Mein Einstieg in die Elektrotechnik war in den 60ern der „Elektromann“, dort gab es auch verschiedene Motorenbausätze (2-Pol, 3-Pol jeweils mit Permanent- wie auch Elektromagnet), der 3-Pol lief sehr ordentlich. https://www.sarganserland-walensee.ch/KOSMOS_Experimentierbaukaesten/Elektromann/Elektromann_1965.jpg So sah der Motor in den 50ern aus, besser kann man ein Lehrmodell nicht bauen. https://www.elektronik-labor.de/Lernpakete/Elektromann6.jpg
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.
>Hier mal die Variante 1 - nur Gleichungen.
Danke :-)
Ich habe naiverweise mal auf den grünen Knopf "Instanziere Modell"
gedrückt.
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.
Hier für alle Python-Fans als Jupyter Notebook https://github.com/Feinmechaniker/Mechatronik/blob/Mechatronik/00 AB/99 Tools/02 Python/LAB_19.ipynb
:
Bearbeitet durch User
> Für mich ist die Drehzahl als RPM verständlicher.
Das sollte ja nun keine unüberwindbare Hürde sein!
ω = 2 Pi f ;-)
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.
> @Uwe : Wie reden von einem Gleichstrommotor f=0.000Hz
Ausser bei Stillstand hat der auch eine Drehfrequenz (bzw. -Zahl) >0
;-)
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) ;-)
Nachtrag: es gibt ja noch die elektrische Zeitkonstante (Bild). Die ist natürlich nicht L/R - eh klar.
Man kann auch beide Zeitkonstanten ausrechnen,allerdings nur, wie Giovannis Simulation zeigt, in einem ausgewählten Arbeitspunkt.
Joe G.
>Hier für alle Python-Fans als Jupyter Notebook
Super, so schön reduziert :-)
1 | def motor_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:
1 | state = STATE_COMMUTEFIELD; |
2 | VALUE_field = 255; //( max. value) |
3 | VALUE_rotor = 180; |
4 | VALUE_angle = 2300; //(0..4095) |
:
Bearbeitet durch User
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.
Auf Basis von dem Modell von Joe G.
1 | eqs = [ |
2 | U ~ U0 + ΔU |
3 | L*D(I) ~ U-I*R-k_E*I*omega |
4 | J*D(omega) ~ k_M*I^2-T_R |
5 | ] |
6 | |
7 | Statespace ABCD |
8 | input: ΔU |
9 | output: omega |
Die Einfachheit des Modells bietet sich an um neue Werkzeuge (ModelingToolkit) zu testen. Hier die "symbolische" Systemdarstellung mit Input/Output von oben.
:
Bearbeitet durch User
>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.
:
Bearbeitet durch User
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 ;-)
:
Bearbeitet durch User
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.
:
Bearbeitet durch User
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.
:
Bearbeitet durch User
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.
:
Bearbeitet durch User
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).
1 | commtation strategy: rotor commutation |
2 | |
3 | measurement setup: |
4 | 210 PWM field (max.255) |
5 | 255 PWM rotor (max.255) |
6 | 1500 LSB commutation angle (span 4095) |
7 | 1s tstart |
8 | 4s taccel |
9 | 6s tdecel |
10 | |
11 | coil resistance measrements: |
12 | coil wires diameter 0.35mm |
13 | rotor coil resistance path: |
14 | 2.1 Ohm |
15 | field coil resistance path: |
16 | 1.65 Ohm |
17 | ( four wire resistance measurement ) |
18 | |
19 | Inductance measurement device: Bm4070 Digital LCD LCR Meter |
20 | |
21 | fiel inductance |
22 | 1024 LSB 90° : 2.96mH |
23 | 691 LSB 61° : 2.99mH |
24 | |
25 | rotor inductance |
26 | 1200 LSB 105°: 2.91mH |
27 | 410 LSB 36° : 3.33mH |
28 | |
29 | calculate rotor inductance tolerance |
30 | >> percent=(3.33-2.91)/2.91*100 |
31 | percent = 14.433 |
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.
:
Bearbeitet durch User
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.
Im Moment versuche ich gerade, die Schaltung der letzten Messung in LtSpice zu simulieren.
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.
:
Bearbeitet durch User
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°
:
Bearbeitet durch User
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 , ...
:
Bearbeitet durch User
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 |
27 | |
28 | // Feldspule |
29 | lFieldCoil=36; // Laenge der Feldspule |
30 | wFieldCoil=20.5; // Breite |
31 | dFieldCoil=11; // Hoehe |
//Rotor/Stator Luftspalte
lLuftpalt=(dStator-2*Blechdicke-dRotor)/2
>> (54-2-47.8)/2
ans = 2.1000
edit: Luftspaltkorrektur Blechdicke
:
Bearbeitet durch User
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.
:
Bearbeitet durch User
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.
Der Fuß könnten magnetisch noch eine Rolle spielen.
1 | laengeFuss=96; |
2 | zPosAchse=27; |
3 | // Schraubenloecher |
4 | lochAbstand=85; |
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 ;-)
:
Bearbeitet durch User
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.
:
Bearbeitet durch User
>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:
1 | numberOfWindings=250; |
2 | # iron sheet |
3 | dSheet=1; %Blechdicke |
4 | wSheet=14.8; % Blechbreite |
5 | d_m=dSheet/1000; |
6 | w_m=wSheet/1000; |
7 | A=d_m*w_m*numberOfWindings; |
8 | VField0 wäre dann die "innere Spannung" |
9 | B=cumsum(vRotor-offset)/A*dt; |
wobei mir der Wert etwas hoch erscheint: >N35: Die Remanenz von N35-Neodym-Magneten liegt typischerweise bei etwa 11.7–12.1 kG (KiloGauss) oder 1.17–1.21 Tesla. https://tymagnets.com/de/Umfassender-Einblick-in-N35-Magnete-2023/
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/
:
Bearbeitet durch User
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.
:
Bearbeitet durch User
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.
:
Bearbeitet durch User
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
Besten Dank für's Model :-) Ich muss mal ein wenig damit herumspielen, um mehr zu verstehen.
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 |
2 | iF = 1.0 |
3 | mi_modifycircprop("Field",1, iF) |
4 | mi_modifycircprop("Anker",1, iA) |
>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)
:
Bearbeitet durch User
hier der aktuelle Stand der Ermittlungen. Simulation Leerlauf - leider nicht so wie erwartet.
1 | Indizes : A...Anker; F...Feld |
2 | Drehzahl: ωmech = 180rad/s = 1720rpm = konstant |
3 | Feldspannung: uF = 1.75V |
4 | Feldwiderstand: Rf = 1.75Ohm |
5 | Induktivitäten: in LL.hdf5 Alle Selbst-Kopplunginduktivitäten, auch mit Ableitungen nach Winkel |
6 | FEM: 2D, OHNE Sättigung; |
7 | Simulation: Drehmoment aus Induktivitäten und Strom |
Die Spannung am Anker ist deutlich zu klein. Habe im Moment keine Idee warum.
Interessante Diagramme. Ich nehme an, die X-Achse ist die Zeitachse und man sieht die Signale des Reihenschlussmotors bei 1720U/min.
1 | >> periode_s=1/(1720/60) |
2 | periode_s = 0.034884 |
Was ich nicht verstehe: Wieso ist das Drehmoment asymmetrisch? Liegt das möglicherweise an einer nicht-idealen Position der Kommutierung?
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 L298 https://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.
Hier nochmal ein Video zum Magnetfeld (ohne Rotorkommutierung). Der Stromsensor war ursprünglich unten links plaziert und ich wollte wissen, wie das Magnetfeld streut und den Sensor beeinflusst. https://www.mikrocontroller.net/attachment/640044/2024-07-09_L298Motorsteuerung.png
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
:
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.