From e924615eb2db91c440b5d83b5fe4b1735c654fee Mon Sep 17 00:00:00 2001 From: Thomas Dehaeze Date: Tue, 15 Dec 2020 23:03:33 +0100 Subject: [PATCH] Initial Commit --- .gitignore | 55 +++++++++ figs/flexible_joint_geometry.pdf | Bin 0 -> 6551 bytes figs/flexible_joint_geometry.png | Bin 0 -> 11151 bytes figs/test-bench-schematic.pdf | Bin 0 -> 9972 bytes figs/test-bench-schematic.png | Bin 0 -> 26051 bytes index.html | 199 +++++++++++++++++++++++++++++++ index.org | 158 ++++++++++++++++++++++++ 7 files changed, 412 insertions(+) create mode 100644 .gitignore create mode 100644 figs/flexible_joint_geometry.pdf create mode 100644 figs/flexible_joint_geometry.png create mode 100644 figs/test-bench-schematic.pdf create mode 100644 figs/test-bench-schematic.png create mode 100644 index.html create mode 100644 index.org diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..e3b6514 --- /dev/null +++ b/.gitignore @@ -0,0 +1,55 @@ +auto/ +*.tex +*.bbl +*.synctex.gz +.auctex-auto/ +_minted* + +**/figs/*.svg +**/figs/*.tex + +# Emacs +auto/ + +# Simulink Real Time +*bio.m +*pt.m +*ref.m +*ri.m +*xcp.m +*.mldatx +*.slxc +*.xml +*_slrt_rtw/ + +# data +data/ + +# Windows default autosave extension +*.asv + +# OSX / *nix default autosave extension +*.m~ + +# Compiled MEX binaries (all platforms) +*.mex* + +# Packaged app and toolbox files +*.mlappinstall +*.mltbx + +# Generated helpsearch folders +helpsearch*/ + +# Simulink code generation folders +slprj/ +sccprj/ + +# Matlab code generation folders +codegen/ + +# Simulink autosave extension +*.autosave + +# Octave session info +octave-workspace diff --git a/figs/flexible_joint_geometry.pdf b/figs/flexible_joint_geometry.pdf new file mode 100644 index 0000000000000000000000000000000000000000..5ea68ffcd62d5a48ce603c9710d24947ecafeb6e GIT binary patch literal 6551 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 Xi<~xdgWX0~fEUCIU|^6|l>z)eF%0#^ literal 0 HcmV?d00001 diff --git a/figs/test-bench-schematic.png b/figs/test-bench-schematic.png new file mode 100644 index 0000000000000000000000000000000000000000..e459d1eb9a8a7b8057ea1a1a2afd76aead406632 GIT binary patch literal 26051 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

2(B{?gwGk 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 + + + + + +Flexible Joint - Test Bench + + + + + + + + +

+ UP + | + HOME +
+

Flexible Joint - Test Bench

+ + +
+

1 Test Bench Description

+
+

+The main characteristic of the flexible joint that we want to measure is its bending stiffness \(k_{R_x} \approx k_{R_y}\). +

+ +

+To do so, a test bench is used. +Specifications of the test bench to precisely measure the bending stiffness are described in this section. +

+ +

+The basic idea is to measured the angular deflection of the flexible joint as a function of the applied torque. +

+ + +
+

test-bench-schematic.png +

+

Figure 1: Schematic of the test bench to measure the bending stiffness of the flexible joints

+
+
+ +
+

1.1 Flexible joint Geometry

+
+

+The flexible joint used for the Nano-Hexapod is shown in Figure 2. +Its bending stiffness is foreseen to be \(k_{R_y}\approx 20\,\frac{Nm}{rad}\) and its stroke \(\theta_{y,\text{max}}\approx 20\,mrad\). +

+ + +
+

flexible_joint_geometry.png +

+

Figure 2: Geometry of the flexible joint

+
+ +

+The height between the flexible point (center of the joint) and the point where external forces are applied is \(h = 20\,mm\). +

+ +

+Let’s define the parameters on Matlab. +

+
+
kRx = 20; % Bending Stiffness [Nm/rad]
+Rxmax = 20e-3; % Bending Stroke [rad]
+h = 20e-3; % Height [m]
+
+
+
+
+ +
+

1.2 Required external applied force

+
+

+The bending \(\theta_y\) of the flexible joint due to the force \(F_x\) is: +

+\begin{equation} + \theta_y = \frac{M_y}{k_{R_y}} = \frac{F_x h}{k_{R_y}} +\end{equation} + +

+Therefore, the applied force to test the full range of the flexible joint is: +

+\begin{equation} + F_{x,\text{max}} = \frac{k_{R_y} \theta_{y,\text{max}}}{h} +\end{equation} + +
+
Fxmax = kRx*Rxmax/h; % Force to induce maximum stroke [N]
+
+
+ +

+And we obtain: +

+\begin{equation} F_{max} = 20.0\, [N] \end{equation} + +

+The measurement range of the force sensor should then be higher than \(20\,N\). +

+
+
+ +
+

1.3 Required actuator stroke and sensors range

+
+

+The flexible joint is designed to allow a bending motion of \(\pm 20\,mrad\). +The corresponding actuator stroke to impose such motion is: +

+ +

+\[ d_{x,\text{max}} = h \tan(R_{x,\text{max}}) \] +

+ +
+
dxmax = h*tan(Rxmax);
+
+
+ +\begin{equation} d_{max} = 0.4\, [mm] \end{equation} + +

+In order to test the full range of the flexible joint, the stroke of the actuator should be higher than \(0.4\,mm\). +The measurement range of the displacement sensor should also be higher than \(0.4\,mm\). +

+
+
+ +
+

1.4 First try with the APA95ML

+
+

+The APA95ML as a stroke of \(100\,\mu m\) and the encoder in parallel can easily measure the required stroke. +

+ +

+Suppose the full stroke of the APA can be used to bend the flexible joint (ideal case), the measured force will be: +

+
+
Fxmax = kRx*100e-6/h^2; % Force at maximum stroke [N]
+
+
+ +\begin{equation} F_{max} = 5.0\, [N] \end{equation} + +

+And the tested angular range is: +

+
+
Rmax = tan(100e-6/h);
+
+
+ +\begin{equation} \theta_{max} = 5.0\, [mrad] \end{equation} +
+
+
+ +
+

2 Experimental measurement

+
+
+
+

Author: Dehaeze Thomas

+

Created: 2020-12-15 mar. 22:32

+
+ + diff --git a/index.org b/index.org new file mode 100644 index 0000000..db8dad5 --- /dev/null +++ b/index.org @@ -0,0 +1,158 @@ +#+TITLE: Flexible Joint - Test Bench +:DRAWER: +#+LANGUAGE: en +#+EMAIL: dehaeze.thomas@gmail.com +#+AUTHOR: Dehaeze Thomas + +#+HTML_LINK_HOME: ../index.html +#+HTML_LINK_UP: ../index.html + +#+HTML_HEAD: +#+HTML_HEAD: + +#+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: + +* Test Bench Description +** Introduction :ignore: + +The main characteristic of the flexible joint that we want to measure is its bending stiffness $k_{R_x} \approx k_{R_y}$. + +To do so, a test bench is used. +Specifications of the test bench to precisely measure the bending stiffness are described in this section. + +The basic idea is to measured the angular deflection of the flexible joint as a function of the applied torque. + +#+name: fig:test-bench-schematic +#+caption: Schematic of the test bench to measure the bending stiffness of the flexible joints +[[file:figs/test-bench-schematic.png]] + +** Matlab Init :noexport:ignore: +#+begin_src matlab :tangle no :exports none :results silent :noweb yes :var current_dir=(file-name-directory buffer-file-name) + <> +#+end_src + +#+begin_src matlab :exports none :results silent :noweb yes + <> +#+end_src + +** Flexible joint Geometry +The flexible joint used for the Nano-Hexapod is shown in Figure [[fig:flexible_joint_geometry]]. +Its bending stiffness is foreseen to be $k_{R_y}\approx 20\,\frac{Nm}{rad}$ and its stroke $\theta_{y,\text{max}}\approx 20\,mrad$. + +#+name: fig:flexible_joint_geometry +#+caption: Geometry of the flexible joint +[[file:figs/flexible_joint_geometry.png]] + +The height between the flexible point (center of the joint) and the point where external forces are applied is $h = 20\,mm$. + +Let's define the parameters on Matlab. +#+begin_src matlab + kRx = 20; % Bending Stiffness [Nm/rad] + Rxmax = 20e-3; % Bending Stroke [rad] + h = 20e-3; % Height [m] +#+end_src + +** Required external applied force + +The bending $\theta_y$ of the flexible joint due to the force $F_x$ is: +\begin{equation} + \theta_y = \frac{M_y}{k_{R_y}} = \frac{F_x h}{k_{R_y}} +\end{equation} + +Therefore, the applied force to test the full range of the flexible joint is: +\begin{equation} + F_{x,\text{max}} = \frac{k_{R_y} \theta_{y,\text{max}}}{h} +\end{equation} + +#+begin_src matlab + Fxmax = kRx*Rxmax/h; % Force to induce maximum stroke [N] +#+end_src + +And we obtain: +#+begin_src matlab :results value raw replace :exports results + sprintf('\\begin{equation} F_{max} = %.1f\\, [N] \\end{equation}', Fxmax) +#+end_src + +#+RESULTS: +\begin{equation} F_{max} = 20.0\, [N] \end{equation} + +The measurement range of the force sensor should then be higher than $20\,N$. + +** Required actuator stroke and sensors range + +The flexible joint is designed to allow a bending motion of $\pm 20\,mrad$. +The corresponding actuator stroke to impose such motion is: + +\[ d_{x,\text{max}} = h \tan(R_{x,\text{max}}) \] + +#+begin_src matlab + dxmax = h*tan(Rxmax); +#+end_src + +#+begin_src matlab :results value raw replace :exports results + sprintf('\\begin{equation} d_{max} = %.1f\\, [mm] \\end{equation}', 1e3*dxmax) +#+end_src + +#+RESULTS: +\begin{equation} d_{max} = 0.4\, [mm] \end{equation} + +In order to test the full range of the flexible joint, the stroke of the actuator should be higher than $0.4\,mm$. +The measurement range of the displacement sensor should also be higher than $0.4\,mm$. + +** First try with the APA95ML + +The APA95ML as a stroke of $100\,\mu m$ and the encoder in parallel can easily measure the required stroke. + +Suppose the full stroke of the APA can be used to bend the flexible joint (ideal case), the measured force will be: +#+begin_src matlab + Fxmax = kRx*100e-6/h^2; % Force at maximum stroke [N] +#+end_src + +#+begin_src matlab :results value raw replace :exports results + sprintf('\\begin{equation} F_{max} = %.1f\\, [N] \\end{equation}', Fxmax) +#+end_src + +#+RESULTS: +\begin{equation} F_{max} = 5.0\, [N] \end{equation} + +And the tested angular range is: +#+begin_src matlab + Rmax = tan(100e-6/h); +#+end_src + +#+begin_src matlab :results value raw replace :exports results + sprintf('\\begin{equation} \\theta_{max} = %.1f\\, [mrad] \\end{equation}', 1e3*Rmax) +#+end_src + +#+RESULTS: +\begin{equation} \theta_{max} = 5.0\, [mrad] \end{equation} + +* Experimental measurement