test-bench-flexible-joint-adv/bending.org
2021-01-15 23:33:43 +01:00

353 lines
13 KiB
Org Mode

#+TITLE: Flexible Joint - Measurement of the Bending Stiffness
:DRAWER:
#+LANGUAGE: en
#+EMAIL: dehaeze.thomas@gmail.com
#+AUTHOR: Dehaeze Thomas
#+HTML_LINK_HOME: ../index.html
#+HTML_LINK_UP: ../index.html
#+HTML_HEAD: <link rel="stylesheet" type="text/css" href="https://research.tdehaeze.xyz/css/style.css"/>
#+HTML_HEAD: <script type="text/javascript" src="https://research.tdehaeze.xyz/js/script.js"></script>
#+BIND: org-latex-image-default-option "scale=1"
#+BIND: org-latex-image-default-width ""
#+LaTeX_CLASS: scrreprt
#+LaTeX_CLASS_OPTIONS: [a4paper, 10pt, DIV=12, parskip=full]
#+LaTeX_HEADER_EXTRA: \input{preamble.tex}
#+PROPERTY: header-args:matlab :session *MATLAB*
#+PROPERTY: header-args:matlab+ :comments org
#+PROPERTY: header-args:matlab+ :exports both
#+PROPERTY: header-args:matlab+ :results none
#+PROPERTY: header-args:matlab+ :eval no-export
#+PROPERTY: header-args:matlab+ :noweb yes
#+PROPERTY: header-args:matlab+ :mkdirp yes
#+PROPERTY: header-args:matlab+ :output-dir figs
#+PROPERTY: header-args:latex :headers '("\\usepackage{tikz}" "\\usepackage{import}" "\\import{$HOME/Cloud/tikz/org/}{config.tex}")
#+PROPERTY: header-args:latex+ :imagemagick t :fit yes
#+PROPERTY: header-args:latex+ :iminoptions -scale 100% -density 150
#+PROPERTY: header-args:latex+ :imoutoptions -quality 100
#+PROPERTY: header-args:latex+ :results file raw replace
#+PROPERTY: header-args:latex+ :buffer no
#+PROPERTY: header-args:latex+ :tangle no
#+PROPERTY: header-args:latex+ :eval no-export
#+PROPERTY: header-args:latex+ :exports results
#+PROPERTY: header-args:latex+ :mkdirp yes
#+PROPERTY: header-args:latex+ :output-dir figs
#+PROPERTY: header-args:latex+ :post pdf2svg(file=*this*, ext="png")
:END:
* Introduction :ignore:
The goal is to design a test bench to measure the bending stiffness of a flexible joint with 1% accuracy.
* Finite Element Model
<<sec:fem>>
#+begin_src matlab :tangle no :exports none :results silent :noweb yes :var current_dir=(file-name-directory buffer-file-name)
<<matlab-dir>>
#+end_src
#+begin_src matlab :exports none :results silent :noweb yes
<<matlab-init>>
#+end_src
From the Finite Element Model, the stiffnesses and strokes of the flexible joint have been computed.
#+begin_src matlab
ka = 94e6; % Axial Stiffness [N/m]
ks = 13e6; % Shear Stiffness [N/m]
kb = 5; % Bending Stiffness [Nm/rad]
kt = 260; % Torsional Stiffness [Nm/rad]
#+end_src
#+begin_src matlab
Fa = 469; % Axial Force before yield [N]
Fs = 242; % Shear Force before yield [N]
Fb = 0.118; % Bending Force before yield [Nm]
Ft = 1.508; % Torsional Force before yield [Nm]
#+end_src
#+begin_src matlab
Xa = Fa/ka; % Axial Stroke before yield [m]
Xs = Fs/ks; % Shear Stroke before yield [m]
Xb = Fb/kb; % Bending Stroke before yield [rad]
Xt = Ft/kt; % Torsional Stroke before yield [rad]
#+end_src
#+begin_src matlab :exports results :results value table replace :tangle no :post addhdr(*this*)
data2orgtable([1e-6*ka, Fa, 1e6*Xa; 1e-6*ks, Fs, 1e6*Xs], {'Axial', 'Shear'}, {'Stiffness [N/um]', 'Max Force [N]', 'Stroke [um]'}, ' %.0f ');
#+end_src
#+RESULTS:
| | Stiffness [N/um] | Max Force [N] | Stroke [um] |
|-------+------------------+---------------+-------------|
| Axial | 94 | 469 | 5 |
| Shear | 13 | 242 | 19 |
#+begin_src matlab :exports results :results value table replace :tangle no :post addhdr(*this*)
data2orgtable([kb, 1e3*Fb, 1e3*Xb; kt, 1e3*Ft, 1e3*Xt], {'Bending', 'Torsional'}, {'Stiffness [Nm/rad]', 'Max Torque [Nmm]', 'Stroke [mrad]'}, ' %.0f ');
#+end_src
#+RESULTS:
| | Stiffness [Nm/rad] | Max Torque [Nmm] | Stroke [mrad] |
|-----------+--------------------+------------------+---------------|
| Bending | 5 | 118 | 24 |
| Torsional | 260 | 1508 | 6 |
* Setup
<<sec:setup>>
Let's say a force is applied on top of the flexible joint with a distance $H_F$ with the joint's center.
The displacement of the flexible joint is also measure at an height $H_D$ from the joint's center.
#+name: fig:flexible_joint_test_bench_bending_setup
#+caption: Figure caption
[[file:figs/flexible_joint_test_bench_bending_setup.png]]
* Effect of Bending
<<sec:bending>>
The torque applied is:
\begin{equation}
M_b = F \cdot H_F
\end{equation}
The flexible joint is experiencing a rotation $R_b$ due to the torque $M_b$:
\begin{equation}
R_b = \frac{M_b}{k_b} = \frac{F \cdot H_F}{k_b}
\end{equation}
This rotation is then measured by the displacement sensor.
The measured displacement is:
\begin{equation}
D_b = H_D \tan(R_b) = H_D \tan\left( \frac{F \cdot H_F}{k_b} \right) \label{eq:bending_meaured_disp}
\end{equation}
* Computation of the bending stiffness
From equation eqref:eq:bending_meaured_disp, we can compute the bending stiffness:
\begin{equation}
k_b = \frac{\tan^{-1}\left( \frac{D_b}{H_D} \right)}{F \cdot H_F}
\end{equation}
And therefore, to precisely measure $k_b$, we need to:
- precisely measure the motion $D_b$
- precisely measure the applied force $F$
- precisely know the height from the flexible joint's center to the measurement point $H_D$
- precisely know the height from the flexible joint's center to the force application point $H_F$
If there are estimation errors for $H_D$ or $H_F$ as shown in Figure [[fig:bending_effect_error_vertical]], this will induce an error for the estimation of the stiffness.
For 1% accuracy estimation of $k_b$, we can write the following approximate requirements:
| | Accuracy |
|--------------------------+----------|
| Force Measurement | 1% |
| Displacement Measurement | 1% |
| $H_D$ | 1% |
| $H_F$ | 1% |
#+name: fig:bending_effect_error_vertical
#+caption: Error in the estimation of the height of the force sensor and displacement sensor
[[file:figs/bending_effect_error_vertical.png]]
* Effect of Shear
<<sec:shear>>
The effect of Shear on the measured displacement is simply:
\begin{equation}
D_s = \frac{F}{k_s}
\end{equation}
We would like to have this displacement much smaller than the displacement induced by the bending effects:
\begin{equation}
D_b \gg D_s
\end{equation}
Which is equivalent as to have:
\begin{equation}
H_D \tan\left( \frac{F \cdot H_F}{k_b} \right) \gg \frac{F}{k_s}
\end{equation}
Here to simplify, we suppose $FH_F/k_b \ll 1$ (which is the case in practice), and we suppose $H_D = H_F = H$.
The obtained condition is then:
\begin{equation}
H \gg \frac{k_b}{k_s}
\end{equation}
#+begin_src matlab :exports results :results value table replace :tangle no :post addhdr(*this*)
data2orgtable(1e3*[1e1*sqrt(kb/ks), 1e2*sqrt(kb/ks), 1e3*sqrt(kb/ks)], {'$H\,[mm]$'}, {'10% error', '1% error', '0.1% error'}, ' %.0f ');
#+end_src
#+name: tab:effect_shear
#+caption: Height $H$ to have less than certain amount of error due to shear effects
#+attr_latex: :environment tabularx :width \linewidth :align lXXX
#+attr_latex: :center t :booktabs t :float t
#+RESULTS:
| | 10% error | 1% error | 0.1% error |
|-----------+-----------+----------+------------|
| $H\,[mm]$ | 6 | 62 | 620 |
In order to limit the effect of shear of less than 1%, the height from the joint's center to the force application point and to the measurement point should be larger than 62mm.
#+begin_src matlab
H = 62e-3; % [m]
#+end_src
* Effect of Torsion
<<sec:torsion>>
If the application force is not aligned with the vertical axis of the flexible joint, this will induce a torsion motion that will induce a measurement error (Figure [[fig:bending_effect_torsion]]).
#+name: fig:bending_effect_torsion
#+caption: Horizontal position error of the force sensor and displacement sensor
[[file:figs/bending_effect_torsion.png]]
Let's note the offset of the force sensor $\epsilon_{F,y}$ and the offset of the measurement point $\epsilon_{D,y}$.
The vertical torque (torsion) will be equal to:
\begin{equation}
M_t = F \cdot \epsilon_{F,y}
\end{equation}
And the induced torsion:
\begin{equation}
R_t = \frac{M_t}{k_t} = \frac{F \cdot \epsilon_{F,y}}{k_t}
\end{equation}
The effect on the measured displacement is:
\begin{equation}
D_t = \epsilon_{D,y} \tan \left( R_t \right) = \epsilon_{D,y} \tan\left( \frac{F \cdot \epsilon_{F,y}}{k_t} \right)
\end{equation}
And we would like to have:
\begin{equation}
D_b \gg D_t
\end{equation}
Which is equivalent as to have:
\begin{equation}
H_D \tan\left( \frac{F \cdot H_F}{k_b} \right) \gg \epsilon_{D,y} \tan\left( \frac{F \cdot \epsilon_{F,y}}{k_t} \right)
\end{equation}
Supposing $H_F = H_D = H$ and $\epsilon_{F,y} = \epsilon_{D,y} = \epsilon_{y}$, the condition becomes:
\begin{equation}
\epsilon_{y} \ll H \sqrt{\frac{k_t}{k_b}}
\end{equation}
#+begin_src matlab :exports results :results value table replace :tangle no :post addhdr(*this*)
H = 62e-3; % [m]
data2orgtable(1e3*[1e-1*H*sqrt(kt/kb), 1e-2*H*sqrt(kt/kb), 1e-3*H*sqrt(kt/kb)], {'$\epsilon_y\,[mm]$'}, {'10% error', '1% error', '0.1% error'}, ' %.1f ');
#+end_src
#+name: tab:effect_torsion
#+caption: Maximum lateral position error $\epsilon_y$ to have less than certain amount of error due to torsion effects
#+attr_latex: :environment tabularx :width \linewidth :align lXXX
#+attr_latex: :center t :booktabs t :float t
#+RESULTS:
| | 10% error | 1% error | 0.1% error |
|--------------------+-----------+----------+------------|
| $\epsilon_y\,[mm]$ | 44.7 | 4.5 | 0.4 |
For 1% error, the lateral positioning errors $\epsilon_y$ for both the force sensor and the displacement sensor should be less than 4.5mm.
* Full stroke measured displacement and applied force as a function of $H$
Applying a force with a large height $H$ means the induced rotation (for constant force) will be larger.
This also means that the measured displacement $D_b$ will also be larger.
Note that we here suppose the force axis is co-linear with the measurement axis ($H_F = H_D = H$).
Let's compute:
- $D_b$ as a function of $H$
\[ D_b \approx H \tan (R_b) \]
- the applied force $F_{\text{max}}$ to induce the maximum rotation as a function of $H$
\[ F_{\text{max}} \approx \frac{X_b \cdot k_b}{H} \]
#+begin_src matlab :exports none
H = linspace(0, 100e-3, 1000);
Db = H*tan(Xb);
Fmax = Xb*kb./H;
#+end_src
#+begin_src matlab :exports none
figure;
yyaxis left
plot(1e3*H, Fmax);
ylabel('Maximum Force [$N$]');
ylim([0, 100]);
yyaxis right
plot(1e3*H, 1e6*Db);
ylabel('Measurement Range [$\mu m$]');
xlabel('Offset $H$ [$mm$]');
#+end_src
#+begin_src matlab :tangle no :exports results :results file replace
exportFig('figs/force_motion_function_H.pdf', 'width', 'wide', 'height', 'normal');
#+end_src
#+name: fig:force_motion_function_H
#+caption: Applied force $F_{\text{max}}$ and measured displacement $D_b$ as a function of $H$
#+RESULTS:
[[file:figs/force_motion_function_H.png]]
With an offset of 62mm, we obtained values shown in Table [[tab:disp_force_range]].
#+begin_src matlab :exports none
H = 62e-3; % [m]
Db = H*tan(Xb); % [m]
Fmax = Xb*kb./H; % [N]
#+end_src
#+begin_src matlab :exports results :results value table replace :tangle no :post addhdr(*this*)
data2orgtable([1e3*Db, Fmax], {}, {'$D_b\,[mm]$', '$F_m\,[N]$'}, ' %.1f ');
#+end_src
#+name: tab:disp_force_range
#+caption: Maximum displacement and maximum applied force for $H = 62\,[mm]$
#+attr_latex: :environment tabularx :width 0.3\linewidth :align lX
#+attr_latex: :center t :booktabs t :float t
#+RESULTS:
| $D_b\,[mm]$ | $F_m\,[N]$ |
|-------------+------------|
| 1.5 | 1.9 |
* Negligible bending of the supporting bar
This should be confirmed with FEM.
* Conclusion
#+name: tab:conclusion_force_disp
#+caption: Conclusions in terms of forces and displacement measurements
#+attr_latex: :environment tabularx :width \linewidth :align lXX
#+attr_latex: :center t :booktabs t :float t
| | Range | Accuracy |
|--------------------------+--------+-------------|
| Force Measurement | 2 N | 1% = 0.02 N |
| Displacement Measurement | 1.5 mm | 1% = 15 um |
#+name: tab:conclusion_positioning
#+caption: Conclusions in terms of required positioning accuracy
#+attr_latex: :environment tabularx :width \linewidth :align lXXX
#+attr_latex: :center t :booktabs t :float t
| | Value | Precision | Comment |
|--------------+-------+------------+---------------------------------|
| $H_D$ | 62mm | | For negligible Shear |
| $H_F$ | 62mm | | Same |
| $\epsilon_y$ | 0 | 4.5mm | For negligible Torsion |
| $\epsilon_z$ | 0 | 1% = 0.6mm | For torque estimation precision |
Load cells:
- https://www.te.com/usa-en/product-CAT-FLS0020.html?q=&n=510872&d=681051%20564247&type=products&samples=N&inStoreWithoutPL=false&instock=N#mdp-tabs-content
- https://www.digikey.com/en/products/detail/honeywell-sensing-and-productivity-solutions/FSS005WNSB/6056404
Displacement sensors:
- http://www.vaco-france.com/outillage-de-metrologie/comparateur-a-cadran-de-precision.htm
- https://fr.rs-online.com/web/p/comparateurs/1940101/