Sources/Lexikon/Reibkennlinie: Unterschied zwischen den Versionen
Keine Bearbeitungszusammenfassung |
Keine Bearbeitungszusammenfassung |
||
Zeile 1: | Zeile 1: | ||
[[Datei:Reibkennlinie-01.png|mini|Koordinanten und Schnittkräfte|alternativtext=|200x200px]]Reiben oder haften Körper aneinander, so wird ihre geschwindigkeitsabhängige Kontaktkraft ''K(v)'' in der Tangentialebene oft durch den Reib- und Haftbeiwert ''μ'' bzw. ''μ<sub>0</sub>'' beschreiben: | [[Datei:Reibkennlinie-01.png|mini|Koordinanten und Schnittkräfte|alternativtext=|200x200px]]Reiben oder haften Körper aneinander, so wird ihre geschwindigkeitsabhängige Kontaktkraft ''K(v)'' in der Tangentialebene oft durch den Reib- und Haftbeiwert ''μ'' bzw. ''μ<sub>0</sub>'' beschreiben: | ||
<math>\begin{array}{ccrl}|K|&<&\mu_0 \cdot N&\text{ für } v=0\\K&=&\mu\cdot N &\text{ für } v>0\\K&=&-\mu\cdot N &\text{ für } v<0\end{array}</math> | ::<math>\begin{array}{ccrl}|K|&<&\mu_0 \cdot N&\text{ für } v=0\\K&=&\mu\cdot N &\text{ für } v>0\\K&=&-\mu\cdot N &\text{ für } v<0\end{array}</math> | ||
mit | mit | ||
<math>v = \dot{u}</math> | ::<math>v = \dot{u}</math> | ||
== Erster Ansatz mit Geradenstücken == | == Erster Ansatz mit Geradenstücken == | ||
Zeile 12: | Zeile 12: | ||
Die stückweise definierte Funktion ist: | Die stückweise definierte Funktion ist: | ||
<math>K = N \cdot \left\{ \begin{array}{ll} -\mu &\text{ für } v<=-2\,\epsilon \\ +\mu &\text{ für } v>=+2\,\epsilon \\ -((2\,\mu_0-\mu)\,\epsilon+(\mu_0-\mu)\,v)/\epsilon &\text{ für } v<= -\epsilon \\ -((\mu-2\,\mu_0)\,\epsilon+(\mu_0-\mu)\,v)/\epsilon &\text{ für } v>= +\epsilon \\ \mu_0\,(v/\epsilon); &\text{ sonst} \end{array}\right.</math><!--------------------------------------------------------------------------------> | ::<math>K = N \cdot \left\{ \begin{array}{ll} -\mu &\text{ für } v<=-2\,\epsilon \\ +\mu &\text{ für } v>=+2\,\epsilon \\ -((2\,\mu_0-\mu)\,\epsilon+(\mu_0-\mu)\,v)/\epsilon &\text{ für } v<= -\epsilon \\ -((\mu-2\,\mu_0)\,\epsilon+(\mu_0-\mu)\,v)/\epsilon &\text{ für } v>= +\epsilon \\ \mu_0\,(v/\epsilon); &\text{ sonst} \end{array}\right.</math> | ||
<!--------------------------------------------------------------------------------> | |||
{{MyCodeBlock|title=Maxima Code | {{MyCodeBlock|title=Maxima Code | ||
|text=Zum Einbauen in Ihr Programm: der Quellcode zur Kennlinie. | |text=Zum Einbauen in Ihr Programm: der Quellcode zur Kennlinie. | ||
Zeile 29: | Zeile 30: | ||
plot2d(mu(0.5,1,0.01,v),[v,-0.1,0.1], [ylabel,"v/V->"], [xlabel,"μ/1->"], [legend, "friction coefficient"]); | plot2d(mu(0.5,1,0.01,v),[v,-0.1,0.1], [ylabel,"v/V->"], [xlabel,"μ/1->"], [legend, "friction coefficient"]); | ||
</syntaxhighlight> | </syntaxhighlight> | ||
}}[[Datei:Reibkennlinie-02.mp4|mini|Erläuterungen zur Reibkennlinie]] | }} | ||
[[Datei:Reibkennlinie-02.mp4|mini|Erläuterungen zur Reibkennlinie]] | |||
Und so funktionierts:Steigert man die Kraft ''F'' auf den Körper, so "kriecht" der Körper - seine Geschwindigkeit ''v'' bleibt sehr klein. Wählt man also die Schaltstellen v<sub>0</sub> = +/- ε passend klein, dann sieht es so aus, als würde der Körper "haften". Überschreitet ''F'' die maximale Haftkraft, also F > ''μ''<sub>0</sub>''∙N'', dann fällt ''μ(v)'' auf den Reib-Beiwert ab, der Körper wird beschleunigt. | Und so funktionierts:Steigert man die Kraft ''F'' auf den Körper, so "kriecht" der Körper - seine Geschwindigkeit ''v'' bleibt sehr klein. Wählt man also die Schaltstellen v<sub>0</sub> = +/- ε passend klein, dann sieht es so aus, als würde der Körper "haften". Überschreitet ''F'' die maximale Haftkraft, also F > ''μ''<sub>0</sub>''∙N'', dann fällt ''μ(v)'' auf den Reib-Beiwert ab, der Körper wird beschleunigt. | ||
Das Problem: diese Kennlinie ist nicht stetig differenzierbar - Löser, die das zur Schrittweiten-Steuerung voraussetzen "fressen" sich an den Schaltstellen fest. | Das Problem: diese Kennlinie ist nicht stetig differenzierbar - Löser, die das zur Schrittweiten-Steuerung voraussetzen "fressen" sich an den Schaltstellen fest. | ||
Zeile 41: | Zeile 42: | ||
Hier arbeiten wir mit der dimensionslosen Geschwindigkeit | Hier arbeiten wir mit der dimensionslosen Geschwindigkeit | ||
<math>\displaystyle \nu = \frac{v}{v_0}</math> | ::<math>\displaystyle \nu = \frac{v}{v_0}</math> | ||
und setzen für den mittleren Teil ''-v<sub>0</sub> < v < v<sub>0</sub>'' das Polynom | und setzen für den mittleren Teil ''-v<sub>0</sub> < v < v<sub>0</sub>'' das Polynom | ||
<math>\mu = a_1\cdot \nu^1 + a_3\cdot \nu^3 + a_5\cdot \nu^5</math>. | ::<math>\mu = a_1\cdot \nu^1 + a_3\cdot \nu^3 + a_5\cdot \nu^5</math>. | ||
an. | an. | ||
Zeile 51: | Zeile 52: | ||
Dann ist - hier für ''μ''<sub>0</sub>=1/2 und ''μ=''1/4: | Dann ist - hier für ''μ''<sub>0</sub>=1/2 und ''μ=''1/4: | ||
<math>K = N \cdot \left\{ \begin{array}{ll} -\mu &\text{ für } \nu<=-1\\ +\mu &\text{ für } \nu>=+1\\1.2 \nu^5-2.5 \nu^3+1.5 \nu &\text{ sonst} \end{array}\right.</math> | ::<math>K = N \cdot \left\{ \begin{array}{ll} -\mu &\text{ für } \nu<=-1\\ +\mu &\text{ für } \nu>=+1\\1.2 \nu^5-2.5 \nu^3+1.5 \nu &\text{ sonst} \end{array}\right.</math> | ||
<!--------------------------------------------------------------------------------> | |||
{{MyCodeBlock|title=Maxima Code | |||
|text=Zum Einbauen in Ihr Programm: der Quellcode zur Kennlinie. | |||
|code= | |||
<syntaxhighlight lang="lisp" line start=1> | |||
/* parameter */ | |||
params: [mu[0] = 1/2, | |||
mu[1] = 1/4]$ | |||
/**** define nonlinear friction characteristic ***/ | |||
/* choose generic polynom */ | |||
p : lsum(a[i]*nu^i,i,[1,3,5]); | |||
mu(nu,charc) := if abs(nu)<1 then subst(charc, lsum(a[i]*nu^i,i,[1,3,5])) else subst(charc, mu[1])*signum(nu); | |||
/* ... and adapt to these conditions */ | |||
bcs : [subst([nu= 1 ], p ) = mu[1], | |||
subst([nu= 1 ], diff(p,nu)) = 0 , | |||
subst([nu=gamma], diff(p,nu)) = 0 , | |||
subst([nu=gamma], p ) = mu[0]]; | |||
coe : [a[1],a[3],a[5],gamma]; | |||
sol: solve(subst(params,bcs),coe)$ | |||
charc : append(params,sol[1]); | |||
plot2d(mu(nu,charc),[nu,-2,2], [xlabel,"ν →"], [xlabel,"μ →"])$ | |||
</syntaxhighlight> | |||
}} | |||
Version vom 21. April 2021, 07:31 Uhr
Reiben oder haften Körper aneinander, so wird ihre geschwindigkeitsabhängige Kontaktkraft K(v) in der Tangentialebene oft durch den Reib- und Haftbeiwert μ bzw. μ0 beschreiben:
mit
Erster Ansatz mit Geradenstücken
Statt zwischen Haften und Reiben zu unterscheiden, kann man mit folgender Kennlinie arbeiten, die Schaltstellen für v0 = +/- ε hat.
Die stückweise definierte Funktion ist:
Maxima Code
Zum Einbauen in Ihr Programm: der Quellcode zur Kennlinie.
/* friction characteristic */
/* piecewise linear */
subst(solve([c[0]+c[1]*(+epsilon)=+b,c[0]+c[1]*2*(+epsilon)=+a],[c[0],c[1]])[1],c[0]+c[1]*v)
mu(a,b,epsilon,v) := if v<=-2*epsilon then -a
elseif v>=+2*epsilon then +a
elseif v<= -epsilon then -((2*b-a)*epsilon+(b-a)*v)/epsilon
elseif v>= +epsilon then -((a-2*b)*epsilon+(b-a)*v)/epsilon
else b*(v/epsilon);
plot2d(mu(0.5,1,0.01,v),[v,-0.1,0.1], [ylabel,"v/V->"], [xlabel,"μ/1->"], [legend, "friction coefficient"]);
Und so funktionierts:Steigert man die Kraft F auf den Körper, so "kriecht" der Körper - seine Geschwindigkeit v bleibt sehr klein. Wählt man also die Schaltstellen v0 = +/- ε passend klein, dann sieht es so aus, als würde der Körper "haften". Überschreitet F die maximale Haftkraft, also F > μ0∙N, dann fällt μ(v) auf den Reib-Beiwert ab, der Körper wird beschleunigt.
Das Problem: diese Kennlinie ist nicht stetig differenzierbar - Löser, die das zur Schrittweiten-Steuerung voraussetzen "fressen" sich an den Schaltstellen fest.
Verbesserter Ansatz: stückweise mit einem Polynom 5ten Grades
Um eine stetig differenzierbare Reibkennlinie zu erhalten, setzten wir stückweise ein Polynom an. Es soll Punkt-symmetrisch sowie an den Übergangsstellen stetig und stetig differenzierbar sein!
Hier arbeiten wir mit der dimensionslosen Geschwindigkeit
und setzen für den mittleren Teil -v0 < v < v0 das Polynom
- .
an.
Dann ist - hier für μ0=1/2 und μ=1/4:
Maxima Code
Zum Einbauen in Ihr Programm: der Quellcode zur Kennlinie.
/* parameter */
params: [mu[0] = 1/2,
mu[1] = 1/4]$
/**** define nonlinear friction characteristic ***/
/* choose generic polynom */
p : lsum(a[i]*nu^i,i,[1,3,5]);
mu(nu,charc) := if abs(nu)<1 then subst(charc, lsum(a[i]*nu^i,i,[1,3,5])) else subst(charc, mu[1])*signum(nu);
/* ... and adapt to these conditions */
bcs : [subst([nu= 1 ], p ) = mu[1],
subst([nu= 1 ], diff(p,nu)) = 0 ,
subst([nu=gamma], diff(p,nu)) = 0 ,
subst([nu=gamma], p ) = mu[0]];
coe : [a[1],a[3],a[5],gamma];
sol: solve(subst(params,bcs),coe)$
charc : append(params,sol[1]);
plot2d(mu(nu,charc),[nu,-2,2], [xlabel,"ν →"], [xlabel,"μ →"])$
Die Gleichung für die Kennlinie können wir nicht analytisch explizit angeben - Sie können die Kennlinie also nicht ohne Maxima in ein anderes Programm übertragen.
Abhilfe schafft dieser Ansatz:
hghgh
Links