Gelöste Aufgaben/Kw27: Unterschied zwischen den Versionen
Keine Bearbeitungszusammenfassung |
Keine Bearbeitungszusammenfassung |
||
(5 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt) | |||
Zeile 22: | Zeile 22: | ||
== Lösung mit Maxima == | == Lösung mit Maxima == | ||
<!--------------------------------------------------------------------------------> | |||
{{MyCodeBlock|title=Header | {{MyCodeBlock|title=Header | ||
|text= | |text= | ||
"Stick-Slip" Schwingungen sind klassische selbsterregte Schwingungen. Selbsterrung heißt: das System lenkt den Energiefluss im System so, dass Schwingungen "aus sich heraus" angeregt werden. Charakteristisch für "Stick-Slip" Schwingungen ist, dass zwei Körper zeitweise aneinander haften, auseinander gerissen werden und dann aneinander reiben - bis sie wieder aneinander haften. | |||
|code= | |code= | ||
<syntaxhighlight lang="lisp" line start=1> | <syntaxhighlight lang="lisp" line start=1> | ||
/*********************************************************/ | |||
/* MAXIMA script */ | |||
/* version: wxMaxima 15.08.2 */ | |||
/* author: Andreas Baumgart */ | |||
/* last updated: 2018-09-28 */ | |||
/* ref: Kw27 (TM-C, Labor 6) */ | |||
/* description: finds the solution for */ | |||
/* the nonlinear IVP of */ | |||
/* windshield wiper rubbing */ | |||
/*********************************************************/ | |||
</syntaxhighlight> | </syntaxhighlight> | ||
}} | }} | ||
== | <!--------------------------------------------------------------------------------> | ||
{{MyCodeBlock|title=Declarations | |||
[[Datei:Kw27-01.png|mini|Lageplan]]Im Zentrum dieser Aufgabe steht die Kennlinie (engl.: Characteristic), die den Zusammenhang zwischen Tangentialkräft (Haftkraft, Reibkraft), Normalkraft und Relativgeschwindigkeit zwischen Wischer-Lippe und Windschutzscheibe erfasst. | |text= | ||
[[Datei:Kw27-01.png|250px|mini|Lageplan]]Im Zentrum dieser Aufgabe steht die Kennlinie (engl.: Characteristic), die den Zusammenhang zwischen Tangentialkräft (Haftkraft, Reibkraft), Normalkraft und Relativgeschwindigkeit zwischen Wischer-Lippe und Windschutzscheibe erfasst. | |||
Trockene Reibung im Modell beschreibt man mit zwei System-Parametern: | Trockene Reibung im Modell beschreibt man mit zwei System-Parametern: | ||
Zeile 47: | Zeile 55: | ||
und es gilt | und es gilt | ||
* | * ''μ<sub>0</sub>'' >''μ.'' | ||
Wir arbeiten mit dem Ersatz-System rechts: | Wir arbeiten mit dem Ersatz-System rechts: | ||
|code= | |code= | ||
<syntaxhighlight lang="lisp" line start=1> | <syntaxhighlight lang="lisp" line start=1> | ||
1 | /*********************************************************/ | ||
/* declarations */ | |||
assume(mu[0]>0,mu[1]>0,mu[0]>mu[1]); | |||
</syntaxhighlight> | </syntaxhighlight> | ||
}} | }} | ||
= | <!--------------------------------------------------------------------------------> | ||
{{MyCodeBlock|title=Friction Characteristic | |||
|text= | |||
[[Datei:Kw27-11.png|mini|Reibkennlinie]]Die Kennlinie für die Reibkraft | [[Datei:Kw27-11.png|mini|Reibkennlinie]]Die Kennlinie für die Reibkraft | ||
<math>R = N \cdot \mu(v_r)</math> | |||
::<math>R = N \cdot \mu(v_r)</math> | |||
kopieren wir mit der Funktion für den den Reibungskoeffizienten | kopieren wir mit der Funktion für den den Reibungskoeffizienten | ||
<math>\mu(v_r) \text{ in Abhängigkeit von der Relativgeschwindigkeit } v_r</math> | ::<math>\mu(v_r) \text{ in Abhängigkeit von der Relativgeschwindigkeit } v_r</math> | ||
aus Abschnitt [[Sources/Lexikon/Reibkennlinie|Reibkennlinie]] stückweise mit Polynomen 2ten und 3ten Grades zu | aus Abschnitt [[Sources/Lexikon/Reibkennlinie|Reibkennlinie]] stückweise mit Polynomen 2ten und 3ten Grades zu | ||
<math>\mu(v_r) = \left\{ \begin{array}{ll} +\mu &\text{ für } +1<\nu\\ 16\cdot \mu_0 \left( 1-\frac{\mu_1}{\mu_0} \right) \cdot \nu^3 -36\cdot \mu_0 \left( 1-\frac{\mu_1}{\mu_0} \right) \cdot \nu^2 +24\cdot \mu_0 \left( 1-\frac{\mu_1}{\mu_0} \right) \cdot \nu + 5\cdot \mu_1 -4\cdot \mu_0 &\text{ für } +\frac{1}{2}<\nu<=+1\\ 4\cdot \mu_{0}\cdot (\nu-\nu^{2}) &\text{ für } \;\;\;\;\;0<\nu<=+\frac{1}{2} \\ \text{und punktsymmetrisch} &\text{ sonst} \end{array}\right.</math> | ::<math>\mu(v_r) = \left\{ \begin{array}{ll} +\mu &\text{ für } +1<\nu\\ 16\cdot \mu_0 \left( 1-\frac{\mu_1}{\mu_0} \right) \cdot \nu^3 -36\cdot \mu_0 \left( 1-\frac{\mu_1}{\mu_0} \right) \cdot \nu^2 +24\cdot \mu_0 \left( 1-\frac{\mu_1}{\mu_0} \right) \cdot \nu + 5\cdot \mu_1 -4\cdot \mu_0 &\text{ für } +\frac{1}{2}<\nu<=+1\\ 4\cdot \mu_{0}\cdot (\nu-\nu^{2}) &\text{ für } \;\;\;\;\;0<\nu<=+\frac{1}{2} \\ \text{und punktsymmetrisch} &\text{ sonst} \end{array}\right.</math> | ||
Sie muss punkt-symmetrisch sein (die Reibkraft ändert ihr Vorzeichen mit der Orientierung der Relativgeschwindigkeit) und sie enthält den Sonderfall "Haften" für | Sie muss punkt-symmetrisch sein (die Reibkraft ändert ihr Vorzeichen mit der Orientierung der Relativgeschwindigkeit) und sie enthält den Sonderfall "Haften" für | ||
<math>-\epsilon < v_r < +\epsilon</math> | ::<math>-\epsilon < v_r < +\epsilon</math> | ||
|code= | |code= | ||
<syntaxhighlight lang="lisp" line start=1> | <syntaxhighlight lang="lisp" line start=1> | ||
1+1 | /*****************************************************/ | ||
/* declarations from Lexikon Section "Reibkennlinie" */ | |||
/**** define nonlinear friction characteristic ***/ | |||
fric(nu, mu) := | |||
if nu < -1 then | |||
/* section III, neg.*/ | |||
-mu[2] | |||
elseif nu < -1/2 then | |||
/* section II, neg.*/ | |||
(16*mu[1]-16*mu[2])*nu^3-(36*mu[2]-36*mu[1])*nu^2+(24*mu[1]-24*mu[2])*nu-5*mu[2]+4*mu[1] | |||
elseif nu < 0 then | |||
/* section I, neg.*/ | |||
4*mu[1]*nu+4*mu[1]*nu^2 | |||
elseif nu < +1/2 then | |||
/* section I, pos.*/ | |||
4*mu[1]*nu-4*mu[1]*nu^2 | |||
elseif nu < +1 then | |||
/* section II, pos.*/ | |||
(16*mu[1]-16*mu[2])*nu^3+(36*mu[2]-36*mu[1])*nu^2+(24*mu[1]-24*mu[2])*nu+5*mu[2]-4*mu[1] | |||
else | |||
mu[2] /* section III, pos.*/ | |||
; | |||
plot2d([discrete,makelist([i/100,fric(i/100,[5/12, 2/12])],i,-140,+140)],[xlabel,"v/v0 →"], [ylabel,"μ →"]); | |||
</syntaxhighlight> | </syntaxhighlight> | ||
}} | }} | ||
== | <!--------------------------------------------------------------------------------> | ||
{{MyCodeBlock|title=Equilibrium Conditions | |||
|text= | |||
Zwei Gleichgewichtsbedingungen brauchen wir: | Zwei Gleichgewichtsbedingungen brauchen wir: | ||
Zeile 90: | Zeile 120: | ||
# die Bewegungsgleichung der Masse ''m''. | # die Bewegungsgleichung der Masse ''m''. | ||
[[Datei:Kw27-14.png|mini|Normalkraft ''N''|alternativtext=]]Die Normalkraft ''N'' erhalten wir aus den [[Sources/Lexikon/Standard-Lösungen|Standard-Lösungen]] bzw. deren [[Sources/Lexikon/Ersatzfeder-Steifigkeit|Ersatzfeder-Steifigkeiten]] für den Euler-Bernoulli-Balken zu | [[Datei:Kw27-14.png|mini|150px|Normalkraft ''N''|alternativtext=]]Die Normalkraft ''N'' erhalten wir aus den [[Sources/Lexikon/Standard-Lösungen|Standard-Lösungen]] bzw. deren [[Sources/Lexikon/Ersatzfeder-Steifigkeit|Ersatzfeder-Steifigkeiten]] für den Euler-Bernoulli-Balken zu | ||
::<math>\displaystyle N=2\cdot \frac{12\cdot {EI_{1}}}{{{\ell}^{3}}}\cdot a | |||
</math>. | |||
[[Datei:Kw27-12.png|mini|Koordinaten|alternativtext=|200x200px]]Für die Bewegungsgleichung des Systems wählen wir als Koordinaten die elastische Verformung des Wischer-Arms in ''B'', positiv in Richtung der Drehbewegung. Wir gehen davon aus, dass der Wischer in ''A'' mit der konstanten Geschwindigkeit ''Ω'' gedreht wird, die Punktmasse ''m'' also den Weg | |||
<math>s(t) = \Omega\;t\;\ell + u(t)</math> | ::<math>s(t) = \Omega\;t\;\ell + u(t)</math> | ||
zurücklegt. [[Datei:Kw27-13.png|mini|Kräftegleichgewicht|alternativtext=|links|90x90px]]Aus dem Kräftegleichgewicht an der Masse schreiben wir (mit dem [[Sources/Lexikon/Prinzip von d'Alembert|Prinzip von d'Alembert]]) | zurücklegt. [[Datei:Kw27-13.png|mini|Kräftegleichgewicht|alternativtext=|links|90x90px]]Aus dem Kräftegleichgewicht an der Masse schreiben wir (mit dem [[Sources/Lexikon/Prinzip von d'Alembert|Prinzip von d'Alembert]]) | ||
<math>m \; \ddot{u} + F_2 + R = 0</math> | ::<math>m \; \ddot{u} + F_2 + R = 0</math> | ||
an. | an. | ||
Zeile 107: | Zeile 139: | ||
Die Rückstellkraft ''F<sub>2</sub>'' der beiden Blattfedern ist | Die Rückstellkraft ''F<sub>2</sub>'' der beiden Blattfedern ist | ||
<math>\begin{array}{l} F_2 := k\cdot u\end{array}</math> | ::<math>\begin{array}{l} F_2 := k\cdot u\end{array}</math> | ||
mit | mit | ||
<math>\displaystyle k = 2\cdot\frac{3 \; EI_2}{\ell^3}</math>. | ::<math>\displaystyle k = 2\cdot\frac{3 \; EI_2}{\ell^3}</math>. | ||
Dimensionslos machen wir die Bewegungsgleichung mit | Dimensionslos machen wir die Bewegungsgleichung mit | ||
<ul> | |||
<math>\begin{array}{ll}\omega_0 &= 2\pi/T \\&= \sqrt{k/m}\end{array}</math> mit der Eigenkreisfrequenz <math>\omega_0</math> des frei schwingenden Körpers (''R=0'') und | <li>der Referenzzeit ''T'' aus der Eigenkreisfrequenz des Wischerblattes ohne Reibung zu<br/> | ||
<math>\begin{array}{ll}\omega_0 &= 2\pi/T \\&= \sqrt{k/m}\end{array}</math> mit der Eigenkreisfrequenz <math>\omega_0</math> des frei schwingenden Körpers (''R=0'') und</li> | |||
<li>der Referenz-Länge <math>\ell</math>.</li> | |||
</ul | |||
Dann ist die dimensionslose Auslenkung ''U = u/ℓ'' und die dimensionslose Zeit ''τ = t/T''. Entsprechend gilt auch | Dann ist die dimensionslose Auslenkung ''U = u/ℓ'' und die dimensionslose Zeit ''τ = t/T''. Entsprechend gilt auch | ||
<math>\displaystyle \frac{d}{dt}(.) = \frac{1}{T}\frac{d}{d\tau}(.)</math> | ::<math>\displaystyle \frac{d}{dt}(.) = \frac{1}{T}\frac{d}{d\tau}(.)</math> | ||
Einsetzten liefert die Bewegungsgleichung | Einsetzten liefert die Bewegungsgleichung | ||
<math>\displaystyle \frac{{{d}^{2}U}}{d\,{{\tau}^{2}}}+4\pi^2 \cdot U+16 \pi^2 \alpha \gamma \cdot \mu(v_r)=0</math> | ::<math>\displaystyle \frac{{{d}^{2}U}}{d\,{{\tau}^{2}}}+4\pi^2 \cdot U+16 \pi^2 \alpha \gamma \cdot \mu(v_r)=0</math> | ||
mit | mit | ||
<math>\displaystyle \alpha = \frac{a}{\ell}, \gamma = \frac{EI_1}{EI_2}</math>. | ::<math>\displaystyle \alpha = \frac{a}{\ell}, \gamma = \frac{EI_1}{EI_2}</math>. | ||
|code= | |code= | ||
<syntaxhighlight lang="lisp" line start=1> | <syntaxhighlight lang="lisp" line start=1> | ||
1+1 | /***************************************/ | ||
/* compute press-down force N */ | |||
press: solve([N = 2*F, | |||
EI[1]*a = F*l^3/3+M*l^2/2, | |||
EI[1]*Phi[B] = 1/2*F*l^2+M*l, | |||
Phi[B] = 0], [N, F, M, Phi[B]])[1]; | |||
/* define ODE in dim'less coordinate U */ | |||
params : [k = 2*3*EI[2]/l^3, | |||
EI[1] = gamma*EI[2], | |||
a = alpha*l]; | |||
eom : m*'diff(u,t,2) + k*u + R = 0; | |||
fstOrd : ['diff(U,tau,2)='diff(V,tau,1)]; | |||
ref : [solve((2*%pi/T)^2 = k/m,T)[2]]; | |||
dimless: [t = tau*T, v = V*l/T, | |||
v0 = l*Omega*epsilon, | |||
Omega = 2*%pi/(Theta*T)]; | |||
/* Estimate for Theta: */ | |||
/* Theta = Rubbel-Frequ./ Dreh-Frequ */ | |||
/* = 100Hz/1Hz */ | |||
/*************************************/ | |||
eom : expand(ratsimp( | |||
subst(['diff((l*U),tau,2)=l*'diff(U,tau,2)], | |||
subst(ref,subst(['diff(u,t,2) = 'diff(u,tau,2)/T^2, u = l*U], | |||
4*%pi^2/(k*l)*eom))))); | |||
eom : subst(params,subst([R=subst(press,N)*fric(ratsimp(subst(dimless,(l*Omega+v)/v0)),mu)],eom)); | |||
eom : [subst(fstOrd,eom), 'diff(U,tau,1)=V]; | |||
dydt : solve(eom,['diff(V,tau,1),'diff(U,tau,1)])[1]; | |||
</syntaxhighlight> | </syntaxhighlight> | ||
}} | }} | ||
== | <!--------------------------------------------------------------------------------> | ||
{{MyCodeBlock|title=Solving | |||
|text= | |||
Für die numerische Lösung transformieren wir auf eine Differentialgleichung erster Ordnung | Für die numerische Lösung transformieren wir auf eine Differentialgleichung erster Ordnung | ||
<math>\begin{array}{ll}\displaystyle \frac{d\,U}{d\,\tau}&=V,\\\displaystyle \frac{d\,V}{d\,\tau}&=-4\cdot {{\pi }^{2}}\cdot \left(U+4\alpha\gamma \cdot \mu\left( v_r\right) \right)\end{array}</math> | ::<math>\begin{array}{ll}\displaystyle \frac{d\,U}{d\,\tau}&=V,\\\displaystyle \frac{d\,V}{d\,\tau}&=-4\cdot {{\pi }^{2}}\cdot \left(U+4\alpha\gamma \cdot \mu\left( v_r\right) \right)\end{array}</math> | ||
die wir als Anfangswertproblem | die wir als Anfangswertproblem | ||
<math>\underline{\dot{q}} = \underline{f}(\underline{q})</math> | ::<math>\underline{\dot{q}} = \underline{f}(\underline{q})</math> | ||
mit | mit | ||
<math>\underline{q} = \left(\begin{array}{c}U\\V\end{array}\right)</math> | ::<math>\underline{q} = \left(\begin{array}{c}U\\V\end{array}\right)</math> | ||
lösen. Als Anfangsbedingungen wählen wir zwei aus, nämlich | lösen. Als Anfangsbedingungen wählen wir zwei aus, nämlich | ||
<math>\underline{q}_{0,1} = \left(\begin{array}{l}0\\0\end{array} \right)</math> und <math>\underline{q}_{0,2} = \left(\begin{array}{c}0\\\displaystyle-\frac{\pi}{50}\end{array} \right)</math>. | ::<math>\underline{q}_{0,1} = \left(\begin{array}{l}0\\0\end{array} \right)</math> und <math>\underline{q}_{0,2} = \left(\begin{array}{c}0\\\displaystyle-\frac{\pi}{50}\end{array} \right)</math>. | ||
Als zweite Anfangsbedingung haben wir dabei das ''V'' so gewählt, dass die Relativgeschwindigkeit zwischen Lippe und Scheibe gerade Null ist, also | Als zweite Anfangsbedingung haben wir dabei das ''V'' so gewählt, dass die Relativgeschwindigkeit zwischen Lippe und Scheibe gerade Null ist, also | ||
<math>\Omega\;\ell + \dot{u} = 0</math | ::<math>\Omega\;\ell + \dot{u} = 0</math> | ||
gilt. | |||
|code= | |code= | ||
<syntaxhighlight lang="lisp" line start=1> | <syntaxhighlight lang="lisp" line start=1> | ||
1+1 | /*********************************************************/ | ||
/* numerical solution of IVP */ | |||
/* numerical parameters */ | |||
numpars: [alpha = 1/100, | |||
gamma = 10, | |||
Theta = 100, | |||
epsilon= 1/10000, | |||
mu[1] = 10/12, mu[2]=5/12]; | |||
/* reminder: | |||
EI[1] = gamma*EI[2], | |||
a = alpha*l]; | |||
v0 = l*Omega*epsilon, | |||
Omega = 2*%pi/(Theta*T) */ | |||
numpars: [alpha = 1/100, | |||
gamma = 2, | |||
Theta = 100, | |||
epsilon= 1/1000, | |||
mu[1] = 5/12, mu[2]=2/12]; | |||
/* write out results at these times */ | |||
times : subst([t0 = 0, tmax = 5, dt = 0.001], | |||
[t, t0, tmax, dt]); | |||
/* first-order dgl */ | |||
dgl1stOrder : [rhs(dydt[2]),float(subst(numpars,rhs(dydt[1])))]; | |||
/* state variables */ | |||
stateVabs : [U,V]; | |||
/* initial values for state variables */ | |||
initiVals : [[0,0], | |||
/*initial absolute speed = 0 */ | |||
[0,subst(numpars,subst(solve(subst(dimless,Omega*l+v=0),V),V))]]; | |||
/* solve: solution of IVP (ivs) */ | |||
for i: 1 thru length(initiVals) do | |||
ivs[i] : rk(dgl1stOrder, stateVabs, initiVals[i], times)$ | |||
</syntaxhighlight> | </syntaxhighlight> | ||
}} | }} | ||
== | <!--------------------------------------------------------------------------------> | ||
{{MyCodeBlock|title=Post-Processing | |||
|text= | |||
Für die zwei Anfangsbedingungen finden wir diese Auslenkungen ''U(τ):'' | Für die zwei Anfangsbedingungen finden wir diese Auslenkungen ''U(τ):'' | ||
<table class="wikitable" style="background-color:white;"> | |||
<tr><td>[[Datei:Kw27-31.png|alternativtext=|rahmenlos]]</td><td>[[Datei:Kw27-32.png|alternativtext=|rahmenlos]]</td></tr> | |||
</table> | |||
[[Datei:Kw27-33.png|mini|Phasendiagramm]]Unabhängig von den Anfangsbedingungen läuft das System sofort in die "Stick-Slip" Schwingung hinein. | [[Datei:Kw27-33.png|mini|Phasendiagramm]]Unabhängig von den Anfangsbedingungen läuft das System sofort in die "Stick-Slip" Schwingung hinein. | ||
Hier erkennt man gut, wie die Lippe am der Scheibe haften bleibt | Hier erkennt man gut, wie die Lippe am der Scheibe haften bleibt. | ||
|code= | |code= | ||
<syntaxhighlight lang="lisp" line start=1> | <syntaxhighlight lang="lisp" line start=1> | ||
1 | /*********************************************************/ | ||
/* plot results */ | |||
for i: 1 thru length(initiVals) do | |||
(T[i] : makelist(ivs[i][j][1],j,1,length(ivs[i])), | |||
uD[i] : makelist(ivs[i][j][2],j,1,length(ivs[i])), | |||
vD[i] : makelist(ivs[i][j][3],j,1,length(ivs[i])), | |||
plot2d([discrete, T[i], uD[i]], | |||
[title, sconcat("start @: ",string(initiVals[i]))], | |||
[xlabel,"τ/1->"], [ylabel,"U/1->"])); | |||
/* phase plot */ | |||
curves : makelist([discrete,uD[i],vD[i]],i,1,length(initiVals))$ | |||
plot2d(curves, [legend, false], [x,-0.025,0.005], | |||
[ylabel,"V/1->"], [xlabel,"U/1->"]); | |||
</syntaxhighlight> | </syntaxhighlight> | ||
}} | }} | ||
<br clear="all"/> | |||
< | {{MyTip|title=Problem gelöst? | ||
{{MyTip | |||
|text= | |text= | ||
Das Modell ist so einfach, dass man schnell den Einfluss von Steifigkeiten (was passiert, wenn ich die Eigenfrequenz des Systems erhöhe?) herausspielen kann. Das ist gut. | Das Modell ist so einfach, dass man schnell den Einfluss von Steifigkeiten (was passiert, wenn ich die Eigenfrequenz des Systems erhöhe?) herausspielen kann. Das ist gut. | ||
[[Datei:Kw27-tip.png|links|mini| | [[Datei:Kw27-tip.png|links|mini|60px|Wischer-Blatt im Schnitt]]Es ist aber auch so einfach, dass zentrale Charakteristika nicht erfasst werden. So sieht ein Wischer-Blatt im Schnitt ungefähr so aus. | ||
Es legt sich im Betrieb seitlich auf die Windschutzscheibe, Außerdem sind die Wischer-Arme in der Regel keine geraden "Biegebalken", so dass sie sich bei Vor- und Rückbewegung anders verhalten. Auch vermute ich, dass eine Bewegung senkrecht zur Windschutzscheibe eine Rolle spielt: die Lippe "klopft" vermutlich auf die Scheibe. | Es legt sich im Betrieb seitlich auf die Windschutzscheibe, Außerdem sind die Wischer-Arme in der Regel keine geraden "Biegebalken", so dass sie sich bei Vor- und Rückbewegung anders verhalten. Auch vermute ich, dass eine Bewegung senkrecht zur Windschutzscheibe eine Rolle spielt: die Lippe "klopft" vermutlich auf die Scheibe. |
Aktuelle Version vom 29. März 2021, 10:14 Uhr
Aufgabenstellung
Scheibenwischer können auf einer Windschutzscheibe laute "Rubbel"-Geräusche erzeugen - eine Bewegung, die sich selbsterregt aus dem Zusammenspiel eines schwingungsfähigen Systems und einer Reibkennlinie ergibt.
Für ein einfaches Ersatz-System modellieren wir den Wischer-Arm als zwei parallele, masselose Blatt-Federn (Euler-Bernoulli-Balken mit Biegesteifigkeit jeweils EI1 und EI2 bzgl der Auslenkung senkrecht zur Scheibe und tangential dazu) und idealisieren das Wischerblatt durch eine Punktmasse (Masse m). Zwischen der Lippe des Scheibenwischers und der Windschutzscheibe wirkt eine Tangentialkraft aus trockener Reibung (μ, μ0).
Gesucht ist die selbsterregte Schwingung des Wischerblatts beim "Rubbeln" auf der Windschutzscheibe. Simulieren Sie dazu "Stick-Slip"-Schwingungen des Systems.
Lösung mit Maxima
Header
"Stick-Slip" Schwingungen sind klassische selbsterregte Schwingungen. Selbsterrung heißt: das System lenkt den Energiefluss im System so, dass Schwingungen "aus sich heraus" angeregt werden. Charakteristisch für "Stick-Slip" Schwingungen ist, dass zwei Körper zeitweise aneinander haften, auseinander gerissen werden und dann aneinander reiben - bis sie wieder aneinander haften.
/*********************************************************/
/* MAXIMA script */
/* version: wxMaxima 15.08.2 */
/* author: Andreas Baumgart */
/* last updated: 2018-09-28 */
/* ref: Kw27 (TM-C, Labor 6) */
/* description: finds the solution for */
/* the nonlinear IVP of */
/* windshield wiper rubbing */
/*********************************************************/
Declarations
Im Zentrum dieser Aufgabe steht die Kennlinie (engl.: Characteristic), die den Zusammenhang zwischen Tangentialkräft (Haftkraft, Reibkraft), Normalkraft und Relativgeschwindigkeit zwischen Wischer-Lippe und Windschutzscheibe erfasst.
Trockene Reibung im Modell beschreibt man mit zwei System-Parametern:
- dem Reibungskoeffizient μ und
- dem Haftungskoeffizient μ0.
und es gilt
- μ0 >μ.
Wir arbeiten mit dem Ersatz-System rechts:
/*********************************************************/
/* declarations */
assume(mu[0]>0,mu[1]>0,mu[0]>mu[1]);
Friction Characteristic
Die Kennlinie für die Reibkraft
kopieren wir mit der Funktion für den den Reibungskoeffizienten
aus Abschnitt Reibkennlinie stückweise mit Polynomen 2ten und 3ten Grades zu
Sie muss punkt-symmetrisch sein (die Reibkraft ändert ihr Vorzeichen mit der Orientierung der Relativgeschwindigkeit) und sie enthält den Sonderfall "Haften" für
/*****************************************************/
/* declarations from Lexikon Section "Reibkennlinie" */
/**** define nonlinear friction characteristic ***/
fric(nu, mu) :=
if nu < -1 then
/* section III, neg.*/
-mu[2]
elseif nu < -1/2 then
/* section II, neg.*/
(16*mu[1]-16*mu[2])*nu^3-(36*mu[2]-36*mu[1])*nu^2+(24*mu[1]-24*mu[2])*nu-5*mu[2]+4*mu[1]
elseif nu < 0 then
/* section I, neg.*/
4*mu[1]*nu+4*mu[1]*nu^2
elseif nu < +1/2 then
/* section I, pos.*/
4*mu[1]*nu-4*mu[1]*nu^2
elseif nu < +1 then
/* section II, pos.*/
(16*mu[1]-16*mu[2])*nu^3+(36*mu[2]-36*mu[1])*nu^2+(24*mu[1]-24*mu[2])*nu+5*mu[2]-4*mu[1]
else
mu[2] /* section III, pos.*/
;
plot2d([discrete,makelist([i/100,fric(i/100,[5/12, 2/12])],i,-140,+140)],[xlabel,"v/v0 →"], [ylabel,"μ →"]);
Equilibrium Conditions
Zwei Gleichgewichtsbedingungen brauchen wir:
- für die Normalkraft N und
- die Bewegungsgleichung der Masse m.
Die Normalkraft N erhalten wir aus den Standard-Lösungen bzw. deren Ersatzfeder-Steifigkeiten für den Euler-Bernoulli-Balken zu
- .
Für die Bewegungsgleichung des Systems wählen wir als Koordinaten die elastische Verformung des Wischer-Arms in B, positiv in Richtung der Drehbewegung. Wir gehen davon aus, dass der Wischer in A mit der konstanten Geschwindigkeit Ω gedreht wird, die Punktmasse m also den Weg
zurücklegt.
Aus dem Kräftegleichgewicht an der Masse schreiben wir (mit dem Prinzip von d'Alembert)
an.
Die Kennlinie für die Reibkraft R haben wir dafür oben schon festgelegt.
Die Rückstellkraft F2 der beiden Blattfedern ist
mit
- .
Dimensionslos machen wir die Bewegungsgleichung mit
- der Referenzzeit T aus der Eigenkreisfrequenz des Wischerblattes ohne Reibung zu
mit der Eigenkreisfrequenz des frei schwingenden Körpers (R=0) und - der Referenz-Länge . </ul Dann ist die dimensionslose Auslenkung U = u/ℓ und die dimensionslose Zeit τ = t/T. Entsprechend gilt auch
- .
- und .
- ...
- ...
/***************************************/
/* compute press-down force N */
press: solve([N = 2*F,
EI[1]*a = F*l^3/3+M*l^2/2,
EI[1]*Phi[B] = 1/2*F*l^2+M*l,
Phi[B] = 0], [N, F, M, Phi[B]])[1];
/* define ODE in dim'less coordinate U */
params : [k = 2*3*EI[2]/l^3,
EI[1] = gamma*EI[2],
a = alpha*l];
eom : m*'diff(u,t,2) + k*u + R = 0;
fstOrd : ['diff(U,tau,2)='diff(V,tau,1)];
ref : [solve((2*%pi/T)^2 = k/m,T)[2]];
dimless: [t = tau*T, v = V*l/T,
v0 = l*Omega*epsilon,
Omega = 2*%pi/(Theta*T)];
/* Estimate for Theta: */
/* Theta = Rubbel-Frequ./ Dreh-Frequ */
/* = 100Hz/1Hz */
/*************************************/
eom : expand(ratsimp(
subst(['diff((l*U),tau,2)=l*'diff(U,tau,2)],
subst(ref,subst(['diff(u,t,2) = 'diff(u,tau,2)/T^2, u = l*U],
4*%pi^2/(k*l)*eom)))));
eom : subst(params,subst([R=subst(press,N)*fric(ratsimp(subst(dimless,(l*Omega+v)/v0)),mu)],eom));
eom : [subst(fstOrd,eom), 'diff(U,tau,1)=V];
dydt : solve(eom,['diff(V,tau,1),'diff(U,tau,1)])[1];
Solving
Für die numerische Lösung transformieren wir auf eine Differentialgleichung erster Ordnung
die wir als Anfangswertproblem
mit
lösen. Als Anfangsbedingungen wählen wir zwei aus, nämlich
Als zweite Anfangsbedingung haben wir dabei das V so gewählt, dass die Relativgeschwindigkeit zwischen Lippe und Scheibe gerade Null ist, also
gilt.
/*********************************************************/
/* numerical solution of IVP */
/* numerical parameters */
numpars: [alpha = 1/100,
gamma = 10,
Theta = 100,
epsilon= 1/10000,
mu[1] = 10/12, mu[2]=5/12];
/* reminder:
EI[1] = gamma*EI[2],
a = alpha*l];
v0 = l*Omega*epsilon,
Omega = 2*%pi/(Theta*T) */
numpars: [alpha = 1/100,
gamma = 2,
Theta = 100,
epsilon= 1/1000,
mu[1] = 5/12, mu[2]=2/12];
/* write out results at these times */
times : subst([t0 = 0, tmax = 5, dt = 0.001],
[t, t0, tmax, dt]);
/* first-order dgl */
dgl1stOrder : [rhs(dydt[2]),float(subst(numpars,rhs(dydt[1])))];
/* state variables */
stateVabs : [U,V];
/* initial values for state variables */
initiVals : [[0,0],
/*initial absolute speed = 0 */
[0,subst(numpars,subst(solve(subst(dimless,Omega*l+v=0),V),V))]];
/* solve: solution of IVP (ivs) */
for i: 1 thru length(initiVals) do
ivs[i] : rk(dgl1stOrder, stateVabs, initiVals[i], times)$
Post-Processing
Für die zwei Anfangsbedingungen finden wir diese Auslenkungen U(τ):
Hier erkennt man gut, wie die Lippe am der Scheibe haften bleibt.
/*********************************************************/
/* plot results */
for i: 1 thru length(initiVals) do
(T[i] : makelist(ivs[i][j][1],j,1,length(ivs[i])),
uD[i] : makelist(ivs[i][j][2],j,1,length(ivs[i])),
vD[i] : makelist(ivs[i][j][3],j,1,length(ivs[i])),
plot2d([discrete, T[i], uD[i]],
[title, sconcat("start @: ",string(initiVals[i]))],
[xlabel,"τ/1->"], [ylabel,"U/1->"]));
/* phase plot */
curves : makelist([discrete,uD[i],vD[i]],i,1,length(initiVals))$
plot2d(curves, [legend, false], [x,-0.025,0.005],
[ylabel,"V/1->"], [xlabel,"U/1->"]);
✔ Problem gelöst?: |
Das Modell ist so einfach, dass man schnell den Einfluss von Steifigkeiten (was passiert, wenn ich die Eigenfrequenz des Systems erhöhe?) herausspielen kann. Das ist gut.
Es ist aber auch so einfach, dass zentrale Charakteristika nicht erfasst werden. So sieht ein Wischer-Blatt im Schnitt ungefähr so aus.
Es legt sich im Betrieb seitlich auf die Windschutzscheibe, Außerdem sind die Wischer-Arme in der Regel keine geraden "Biegebalken", so dass sie sich bei Vor- und Rückbewegung anders verhalten. Auch vermute ich, dass eine Bewegung senkrecht zur Windschutzscheibe eine Rolle spielt: die Lippe "klopft" vermutlich auf die Scheibe. Trotzdem würde man so anfangen: ein ganz einfaches Modell für den Einstieg, das man dann weiter entwickelt. |
Links
Literature