Update Content - 2023-10-13
This commit is contained in:
parent
dd52c29167
commit
780896000f
@ -1,5 +1,6 @@
|
|||||||
+++
|
+++
|
||||||
title = "Acquisition Systems"
|
title = "Acquisition Systems"
|
||||||
|
author = ["Dehaeze Thomas"]
|
||||||
draft = false
|
draft = false
|
||||||
category = "equipment"
|
category = "equipment"
|
||||||
+++
|
+++
|
||||||
@ -17,9 +18,9 @@ Tags
|
|||||||
| [Dewesoft](https://dewesoft.com/) | Slovenia |
|
| [Dewesoft](https://dewesoft.com/) | Slovenia |
|
||||||
| [Oros](https://www.oros.com/) | France |
|
| [Oros](https://www.oros.com/) | France |
|
||||||
| [National Instruments](https://www.ni.com/fr-fr/shop/pc-based-measurement-and-control-system.html) | USA |
|
| [National Instruments](https://www.ni.com/fr-fr/shop/pc-based-measurement-and-control-system.html) | USA |
|
||||||
|
| [Gantner](https://www.gantner-instruments.com/products/daq-systems/) | Austria |
|
||||||
|
|
||||||
|
|
||||||
## Bibliography {#bibliography}
|
## Bibliography {#bibliography}
|
||||||
|
|
||||||
<style>.csl-entry{text-indent: -1.5em; margin-left: 1.5em;}</style><div class="csl-bib-body">
|
<./biblio/references.bib>
|
||||||
</div>
|
|
||||||
|
@ -97,9 +97,26 @@ Also see (<a href="#citeproc_bib_item_2">Kester 2005</a>).
|
|||||||
## Oversampling {#oversampling}
|
## Oversampling {#oversampling}
|
||||||
|
|
||||||
|
|
||||||
|
## Sigma Delta ADC {#sigma-delta-adc}
|
||||||
|
|
||||||
|
From (<a href="#citeproc_bib_item_3">Schmidt, Schitter, and Rankers 2020</a>):
|
||||||
|
|
||||||
|
> The low cost and excellent linearity properties of the Sigma-Delta ADC have replaced other ADC types in many measurement and registration systems, especially where storage of data is more important than real-time measurement.
|
||||||
|
> This has typically been the case in audio recording and reproduction.
|
||||||
|
> The reason why this principle is less applied with real-time measurements is the time delay between the bitstream representing the actual value and the availability of the corresponding value after the decimation filter.
|
||||||
|
> The resulting **latency** amounts with a low cost sigma-delta ADC approximately **twenty times the sampling period of the decimated digital output**.
|
||||||
|
|
||||||
|
Therefore, even though there are sigma-delta ADC with high precision and sampling rate, they add large latency (i.e. time delay) that are very problematic for feedback systems.
|
||||||
|
|
||||||
|
> The SAR-ADC (Successive approximation ADCs) is still the mostly applied type for data-acquisition and feedback systems because of its single sample latency.
|
||||||
|
|
||||||
|
<https://www.crystalinstruments.com/antialiasing-filter-and-phase-match>
|
||||||
|
|
||||||
|
|
||||||
## Bibliography {#bibliography}
|
## Bibliography {#bibliography}
|
||||||
|
|
||||||
<style>.csl-entry{text-indent: -1.5em; margin-left: 1.5em;}</style><div class="csl-bib-body">
|
<style>.csl-entry{text-indent: -1.5em; margin-left: 1.5em;}</style><div class="csl-bib-body">
|
||||||
<div class="csl-entry"><a id="citeproc_bib_item_1"></a>Baker, Bonnie. 2011. “How Delta-Sigma Adcs Work, Part.” <i>Analog Applications</i> 7.</div>
|
<div class="csl-entry"><a id="citeproc_bib_item_1"></a>Baker, Bonnie. 2011. “How Delta-Sigma Adcs Work, Part.” <i>Analog Applications</i> 7.</div>
|
||||||
<div class="csl-entry"><a id="citeproc_bib_item_2"></a>Kester, Walt. 2005. “Taking the Mystery out of the Infamous Formula, $snr = 6.02 N + 1.76 Db$, and Why You Should Care.”</div>
|
<div class="csl-entry"><a id="citeproc_bib_item_2"></a>Kester, Walt. 2005. “Taking the Mystery out of the Infamous Formula, $snr = 6.02 N + 1.76 Db$, and Why You Should Care.”</div>
|
||||||
|
<div class="csl-entry"><a id="citeproc_bib_item_3"></a>Schmidt, R Munnig, Georg Schitter, and Adrian Rankers. 2020. <i>The Design of High Performance Mechatronics - Third Revised Edition</i>. Ios Press.</div>
|
||||||
</div>
|
</div>
|
||||||
|
@ -27,7 +27,7 @@ Tags
|
|||||||
| [Fogale](http://www.fogale.fr/brochures.html) | USA |
|
| [Fogale](http://www.fogale.fr/brochures.html) | USA |
|
||||||
| [Queensgate](https://www.nanopositioning.com/product-category/nanopositioning/nanopositioning-sensors) | UK |
|
| [Queensgate](https://www.nanopositioning.com/product-category/nanopositioning/nanopositioning-sensors) | UK |
|
||||||
| [Capacitec](https://www.capacitec.com/Displacement-Sensing-Systems) | USA |
|
| [Capacitec](https://www.capacitec.com/Displacement-Sensing-Systems) | USA |
|
||||||
| [MTIinstruments](https://www.mtiinstruments.com/products/non-contact-measurement/capacitance-sensors/) | USA |
|
| [MTIinstruments](https://vitrek.com/mti-instruments/non-contact-measurement/) | USA |
|
||||||
| [Althen](https://www.althensensors.com/sensors/linear-position-sensors/capacitive-position-sensors/) | Netherlands |
|
| [Althen](https://www.althensensors.com/sensors/linear-position-sensors/capacitive-position-sensors/) | Netherlands |
|
||||||
|
|
||||||
|
|
||||||
|
@ -153,6 +153,61 @@ den = 1 + (2*Ts^2*wn^2 - 8) * z^-1 + (Ts^2*wn^2 - 4*Ts*wn*xi + 4) * z^-2
|
|||||||
And the transfer function is equal to `gain * num/den`.
|
And the transfer function is equal to `gain * num/den`.
|
||||||
|
|
||||||
|
|
||||||
|
### Second Order Low Pass Filter {#second-order-low-pass-filter}
|
||||||
|
|
||||||
|
Let's consider a second order low pass filter:
|
||||||
|
|
||||||
|
\begin{equation}
|
||||||
|
G(s) = \frac{g}{ms^2 + cs + k}
|
||||||
|
\end{equation}
|
||||||
|
|
||||||
|
First the symbolic variables are declared (`Ts` is the sampling time, `s` the Laplace variable and `z` the "z-transform" variable).
|
||||||
|
|
||||||
|
```matlab
|
||||||
|
%% Declaration of the symbolic variables
|
||||||
|
syms Ts g m c k s z
|
||||||
|
```
|
||||||
|
|
||||||
|
Then the bi-linear transformation is performed to go from continuous to discrete:
|
||||||
|
|
||||||
|
```matlab
|
||||||
|
%% Bilinear Transform
|
||||||
|
s = 2/Ts*(z - 1)/(z + 1);
|
||||||
|
```
|
||||||
|
|
||||||
|
The symbolic formula of the notch filter is defined:
|
||||||
|
|
||||||
|
```matlab
|
||||||
|
%% Second Order Low Pass Filter - Symbolic representation
|
||||||
|
Ga = g/(m*s^2 + c*s + k)
|
||||||
|
```
|
||||||
|
|
||||||
|
Finally, the numerator and denominator coefficients can be extracted:
|
||||||
|
|
||||||
|
```matlab
|
||||||
|
%% Get numerator and denominator
|
||||||
|
[N,D] = numden(Ga);
|
||||||
|
|
||||||
|
%% Extract coefficients (from z^0 to z^n)
|
||||||
|
num = coeffs(N, z);
|
||||||
|
den = coeffs(D, z);
|
||||||
|
```
|
||||||
|
|
||||||
|
```text
|
||||||
|
gain = 1/(4*m + 2*Ts*c + Ts^2*k)
|
||||||
|
```
|
||||||
|
|
||||||
|
```text
|
||||||
|
num = (Ts^2*g) + (2*Ts^2*g) * z^-1 + (Ts^2*g) * z^-2
|
||||||
|
```
|
||||||
|
|
||||||
|
```text
|
||||||
|
den = 1 + (2*Ts^2*k - 8*m) * z^-1 + (4*m - 2*Ts*c + Ts^2*k) * z^-2
|
||||||
|
```
|
||||||
|
|
||||||
|
And the transfer function is equal to `gain * num/den`.
|
||||||
|
|
||||||
|
|
||||||
### Second Order High Pass Filter {#second-order-high-pass-filter}
|
### Second Order High Pass Filter {#second-order-high-pass-filter}
|
||||||
|
|
||||||
Let's consider a second order low pass filter:
|
Let's consider a second order low pass filter:
|
||||||
|
@ -28,6 +28,17 @@ There are two main types of encoders: optical encoders, and magnetic encoders.
|
|||||||
| [Lika](https://www.lika.it/eng/) | Italy |
|
| [Lika](https://www.lika.it/eng/) | Italy |
|
||||||
|
|
||||||
|
|
||||||
|
## Incremental vs Absolute {#incremental-vs-absolute}
|
||||||
|
|
||||||
|
Incremental:
|
||||||
|
|
||||||
|
- Less delay
|
||||||
|
|
||||||
|
Absolute:
|
||||||
|
|
||||||
|
- No problem of "missed" steps
|
||||||
|
|
||||||
|
|
||||||
## Bibliography {#bibliography}
|
## Bibliography {#bibliography}
|
||||||
|
|
||||||
<style>.csl-entry{text-indent: -1.5em; margin-left: 1.5em;}</style><div class="csl-bib-body">
|
<style>.csl-entry{text-indent: -1.5em; margin-left: 1.5em;}</style><div class="csl-bib-body">
|
||||||
|
194
content/zettels/extremum_seeking_control.md
Normal file
194
content/zettels/extremum_seeking_control.md
Normal file
@ -0,0 +1,194 @@
|
|||||||
|
+++
|
||||||
|
title = "Extremum Seeking Control"
|
||||||
|
author = ["Dehaeze Thomas"]
|
||||||
|
draft = false
|
||||||
|
+++
|
||||||
|
|
||||||
|
Tags
|
||||||
|
: [Nonlinear Control]({{< relref "nonlinear_control.md" >}})
|
||||||
|
|
||||||
|
The idea behind "Extremum Seeking Control" is to use a controlled signal \\(u\\) to explore the relation \\(y(u)\\), estimate its gradient and find its minimum or maximum.
|
||||||
|
This relation should be convex or concave for the architecture to work properly.
|
||||||
|
|
||||||
|
See (<a href="#citeproc_bib_item_1">Tan et al. 2010</a>) for a good overview.
|
||||||
|
|
||||||
|
|
||||||
|
## Control Architecture {#control-architecture}
|
||||||
|
|
||||||
|
There are many extremum seeking control architectures.
|
||||||
|
One of the simplest one is shown in Figure [1](#figure--fig:extremum-seeking-control-architecture).
|
||||||
|
|
||||||
|
```latex
|
||||||
|
\begin{tikzpicture}[
|
||||||
|
triangle/.style = {regular polygon, regular polygon sides=3},
|
||||||
|
right/.style = {shape border rotate=-90},
|
||||||
|
left/.style = {shape border rotate=90},
|
||||||
|
top/.style = {shape border rotate=0}
|
||||||
|
bottom/.style = {shape border rotate=180}
|
||||||
|
]
|
||||||
|
% Extremum Seeking
|
||||||
|
\node[draw, minimum width=10cm,minimum height=4.2cm, dashed, label=Extremum Seeking Control] (extremum) at (0, 0) {};
|
||||||
|
\begin{scope}[shift={(-2.3, 0.7)}]
|
||||||
|
\node[draw, label=Adapt] (Adapt) at (0, 0) {$\displaystyle\frac{1}{A_p}\frac{K_I}{s}$};
|
||||||
|
\node[draw, label=LPF] (LPF) at (2, 0) {$\displaystyle\frac{1}{s/\omega_{L} + 1}$};
|
||||||
|
\node[addb={\times}{}{}{}{}] (multiply) at (4, 0) {};
|
||||||
|
\node[draw, label=HPF] (HPF) at (6, 0) {$\displaystyle\frac{s/\omega_{H}}{s/\omega_{H} + 1}$};
|
||||||
|
\node[addb={+}{}{}{}{}] (add) at (-2, 0) {};
|
||||||
|
\node[draw, triangle, left, inner sep=0pt] (gain_a) at (1, -2) {$A_p$};
|
||||||
|
|
||||||
|
\node[] (sinus) at (4, -2) {$\sin(\omega_p t)$};
|
||||||
|
|
||||||
|
\draw[<-] (add) -- node[above]{$\overline{u}$} (Adapt);
|
||||||
|
\draw[<-] (Adapt) -- node[above left]{} (LPF);
|
||||||
|
\draw[<-] (LPF) -- node[above left]{} (multiply);
|
||||||
|
\draw[<-] (multiply) -- node[above left]{} (HPF);
|
||||||
|
\draw[<-] (multiply) -- node[above right]{} (sinus);
|
||||||
|
\draw[<-] (gain_a) -- node[above left]{} (sinus);
|
||||||
|
\draw[<-] (add) -- node[above right]{$du$} (-2, -2) -- (gain_a);
|
||||||
|
\end{scope}
|
||||||
|
|
||||||
|
% Système
|
||||||
|
\node[draw, fill=black!20!white, minimum width=10cm,minimum height=3cm, label=System] (system) at (0, 4.5) {};
|
||||||
|
\begin{scope}[shift={(-2.5, 0.6)}]
|
||||||
|
% AC function of C_phi
|
||||||
|
\draw[domain=-1.5:1.5, shift={(2.5, 3)}] plot (2*\x, 0.8*\x*\x);
|
||||||
|
% Axes of plot
|
||||||
|
\draw[->] (-1, 2.8) -- (6, 2.8) node[above right]{$u$};
|
||||||
|
\draw[->] (-0.9, 2.7) -- (-0.9, 5) node[below left]{$y$};
|
||||||
|
\end{scope}
|
||||||
|
|
||||||
|
% Connections
|
||||||
|
\draw[<-] (system.west) node[above left](command){$u$} -- ++(-0.7, 0) |- (add);
|
||||||
|
\draw[->] (system.east) node[above right](measure){$y$} -- ++(0.7, 0) |- (HPF);
|
||||||
|
\end{tikzpicture}
|
||||||
|
```
|
||||||
|
|
||||||
|
<a id="figure--fig:extremum-seeking-control-architecture"></a>
|
||||||
|
|
||||||
|
{{< figure src="/ox-hugo/extremum_seeking_control_architecture.png" caption="<span class=\"figure-number\">Figure 1: </span>Extremum seeking control algorithm" >}}
|
||||||
|
|
||||||
|
Its working principle is schematically shown in Figures [2](#figure--fig:extremum-seeking-control-non-minimum) and [3](#figure--fig:extremum-seeking-control-minimum).
|
||||||
|
|
||||||
|
```latex
|
||||||
|
\begin{tikzpicture}
|
||||||
|
% AC function of phi0
|
||||||
|
\draw[domain=-2:2] plot (\x, \x*\x);
|
||||||
|
% Axes of plot
|
||||||
|
\draw[->, >=latex] (-2.5 ,-0.5) -- (2.5, -0.5) node[below]{$u$};
|
||||||
|
\draw[->, >=latex] (-2.4 ,-0.6) -- (-2.4, 4.5) node[left]{$y$};
|
||||||
|
|
||||||
|
% Perturbation Signal
|
||||||
|
\draw[domain=-pi/2:pi/2, shift={(1, -1.5)}, rotate=90, samples=200] plot (\x,{0.5*sin(4*deg(\x))});
|
||||||
|
% Legend of perturbation Signal
|
||||||
|
\node[align=center] (pert_signal) at (-2, -1.8) {$\overline{u}$\\[-0.4em]+\\[-0.4em]$A_p\sin(\omega_p t)$};
|
||||||
|
\draw[<-, >=latex, dashed] ($(pert_signal.east)+(1.0, 0)$) -- ++(-1.5, 0);
|
||||||
|
|
||||||
|
% Dashed lines to show limits of the signals
|
||||||
|
\draw[dashed] (1.0, -3.2) -- ($(1.0, 1.0*1.0)$) -- ($(4.0, 1.0*1.0)$);
|
||||||
|
\draw[dashed] (0.5, -3.2) -- ($(0.5, 0.5*0.5)$) -- ($(8.0, 0.5*0.5)$);
|
||||||
|
\draw[dashed] (1.5, -3.2) -- ($(1.5, 1.5*1.5)$) -- ($(8.0, 1.5*1.5)$);
|
||||||
|
|
||||||
|
\begin{scope}[shift={(-0.5, 0)}]
|
||||||
|
% Image of the perturbation signal on AC
|
||||||
|
\draw[domain=-pi/2:pi/2, shift={(6, 0)}, samples=200] plot (\x,{(1+0.5*sin(4*deg(\x)))^2});
|
||||||
|
\draw[->, >=latex] (4, 1) -- (8, 1) node[below]{$t$};
|
||||||
|
\draw[->, >=latex] (4.1, 0.9) -- (4.1, 1.5*1.5+0.4) node[left]{$y$};
|
||||||
|
|
||||||
|
% Sinus omega_p
|
||||||
|
\draw[domain=-pi/2:pi/2, shift={(6, 4)}, samples=200] plot (\x,{0.5*sin(4*deg(\x))});
|
||||||
|
\draw[->, >=latex] (4, 4) -- (8, 4) node[below]{$t$};
|
||||||
|
\draw[->, >=latex] (4.1, 3.75) -- (4.1, 4.5) node[left]{$\sin(\omega_p t)$};
|
||||||
|
|
||||||
|
% Product of the sinus and the AC Command
|
||||||
|
\draw[domain=-pi/2:pi/2, shift={(6, -2.5)}, samples=200] plot (\x,{0.5*sin(4*deg(\x))*(1+0.5*sin(4*deg(\x)))^2});
|
||||||
|
\draw[->, >=latex] (4,-2.5) -- (8, -2.5) node[below]{$t$};
|
||||||
|
\filldraw[fill=gray!20] (4,-2.5) -- plot [domain=-pi/2:pi/2, shift={(6, -2.5)}, samples=200] (\x,{0.5*sin(4*deg(\x))*(1+0.5*sin(4*deg(\x)))^2}) -- cycle;
|
||||||
|
\draw[->, >=latex] (4.1,-2.6) -- (4.1, -1.0) node[left]{$ $};
|
||||||
|
|
||||||
|
% Multiply and equal signs
|
||||||
|
\node[addb={\times}{}{}{}{}] at (6, 3) {};
|
||||||
|
\node[addb={=}{}{}{}{}] at (6, -0.6) {};
|
||||||
|
\end{scope}
|
||||||
|
\end{tikzpicture}
|
||||||
|
```
|
||||||
|
|
||||||
|
<a id="figure--fig:extremum-seeking-control-non-minimum"></a>
|
||||||
|
|
||||||
|
{{< figure src="/ox-hugo/extremum_seeking_control_non_minimum.png" caption="<span class=\"figure-number\">Figure 2: </span>\\(\bar{u}\\) is not at the minimum of the \\(y(u)\\) relation. In that case the integral of the product between the sinusoidal excitation and the measured \\(y\\) is the image of the local gradient of the \\(y(u)\\) relationship." >}}
|
||||||
|
|
||||||
|
```latex
|
||||||
|
\begin{tikzpicture}
|
||||||
|
% AC function of phi0
|
||||||
|
\draw[domain=-2:2] plot (\x, \x*\x);
|
||||||
|
% Axes of plot
|
||||||
|
\draw[->, >=latex] (-2.5 ,-0.5) -- (2.5, -0.5) node[below]{$u$};
|
||||||
|
\draw[->, >=latex] (-2.4 ,-0.6) -- (-2.4, 4.5) node[left]{$y$};
|
||||||
|
|
||||||
|
% Perturbation Signal
|
||||||
|
\draw[domain=-pi/2:pi/2, shift={(0, -1.5)}, rotate=90, samples=200] plot (\x,{0.5*sin(4*deg(\x))});
|
||||||
|
% Legend of perturbation Signal
|
||||||
|
\node[] (pert_signal) at (-2, -1.0) {};
|
||||||
|
|
||||||
|
% Dashed lines to show limits of the signals
|
||||||
|
\draw[dashed] (0.0, -3.2) -- ($(0, 0)$) -- ($(4.0, 0)$);
|
||||||
|
\draw[dashed] (-0.5, -3.2) -- ($(-0.5, 0.5*0.5)$) -- ($(8.0, 0.5*0.5)$);
|
||||||
|
\draw[dashed] (0.5, -3.2) -- ($(0.5, 0.5*0.5)$);
|
||||||
|
|
||||||
|
\begin{scope}[shift={(-0.5, 0)}]
|
||||||
|
% Image of the perturbation signal on AC
|
||||||
|
\draw[domain=-pi/2:pi/2, shift={(6, 0)}, samples=200] plot (\x,{(0.5*sin(4*deg(\x)))^2});
|
||||||
|
\draw[->, >=latex] (4, 0) -- (8, 0) node[below]{$t$};
|
||||||
|
\draw[->, >=latex] (4.1, -0.1) -- (4.1, 1.0) node[left]{$y$};
|
||||||
|
|
||||||
|
% Sinus omega_p
|
||||||
|
\draw[domain=-pi/2:pi/2, shift={(6, 2.5)}, samples=200] plot (\x,{0.5*sin(4*deg(\x))});
|
||||||
|
\draw[->, >=latex] (4, 2.5) -- (8, 2.5) node[below]{$t$};
|
||||||
|
\draw[->, >=latex] (4.1, 2.25) -- (4.1, 3.0) node[above]{$\sin(\omega_p t)$};
|
||||||
|
|
||||||
|
% Product of the sinus and the AC Command
|
||||||
|
\draw[domain=-pi/2:pi/2, shift={(6, -2.5)}, samples=200] plot (\x,{0.7*(sin(4*deg(\x)))^3});
|
||||||
|
\draw[->, >=latex] (4,-2.5) -- (8, -2.5) node[below]{$t$};
|
||||||
|
\filldraw[fill=gray!20] (4,-2.5) -- plot [domain=-pi/2:pi/2, shift={(6, -2.5)}, samples=200] (\x,{0.7*(sin(4*deg(\x))^3}) -- cycle;
|
||||||
|
\draw[->, >=latex] (4.1,-2.6) -- (4.1, -1.0) node[left]{$ $};
|
||||||
|
|
||||||
|
% Multiply and equal signs
|
||||||
|
\node[addb={\times}{}{}{}{}] at (6, 1.2) {};
|
||||||
|
\node[addb={=}{}{}{}{}] at (6, -1.0) {};
|
||||||
|
\end{scope}
|
||||||
|
\end{tikzpicture}
|
||||||
|
```
|
||||||
|
|
||||||
|
<a id="figure--fig:extremum-seeking-control-minimum"></a>
|
||||||
|
|
||||||
|
{{< figure src="/ox-hugo/extremum_seeking_control_minimum.png" caption="<span class=\"figure-number\">Figure 3: </span>\\(\bar{u}\\) is at the minimum of the \\(y(u)\\) relation. In that case the integral of the product between the sinusoidal excitation and the measured \\(y\\) is null." >}}
|
||||||
|
|
||||||
|
|
||||||
|
## Tuning of the Extremum Seeking Control {#tuning-of-the-extremum-seeking-control}
|
||||||
|
|
||||||
|
The \\(y(u)\\) relationship should be static compared to \\(\omega\_p\\) the frequency of the sinusoidal excitation.
|
||||||
|
|
||||||
|
When this architecture is to be applied the following two signals have to be properly chosen:
|
||||||
|
|
||||||
|
- what is the controlled signal \\(u\\)
|
||||||
|
- what is the measured signal to be minimized \\(y\\)
|
||||||
|
|
||||||
|
Then, the following parameters should be tuned:
|
||||||
|
|
||||||
|
- \\(\omega\_p\\): the frequency of the perturbation, that should be small compared to the system dynamics
|
||||||
|
- \\(A\_p\\): amplitude of the sinusoidal perturbation, that should be small compared to the allowed deviation from the minimum
|
||||||
|
- \\(\omega\_H\\) and \\(\omega\_L\\): cut-off frequency of the high pass and low pass filters. As \\(\omega\_p\\) should be in the pass band of both filters, \\(\omega\_H\\) and \\(\omega\_L\\) should be chosen such that:
|
||||||
|
\\[ \omega\_H \ll \omega\_p \quad \text{and} \quad \omega\_L \gg \omega\_p \\]
|
||||||
|
- \\(K\_I\\): gain for the integrator that should be tuned such that the control loop is stable and converges to the minimum as fast as wanted.
|
||||||
|
|
||||||
|
There are three time scales present in this control algorithm:
|
||||||
|
|
||||||
|
- Fast time scale that corresponds to the system variations (\\(y(u)\\) relationship)
|
||||||
|
- Medium time scale that corresponds to the perturbations on \\(u\\) (frequency \\(\omega\_p\\))
|
||||||
|
- Slow time scale that corresponds to the variations of \\(\bar{u}\\)
|
||||||
|
|
||||||
|
|
||||||
|
## Bibliography {#bibliography}
|
||||||
|
|
||||||
|
<style>.csl-entry{text-indent: -1.5em; margin-left: 1.5em;}</style><div class="csl-bib-body">
|
||||||
|
<div class="csl-entry"><a id="citeproc_bib_item_1"></a>Tan, Y, WH Moase, C Manzie, D Nešić, and IMY Mareels. 2010. “Extremum Seeking from 1922 to 2010.” In <i>Control Conference (CCC), 2010 29th Chinese</i>, 14–26. IEEE.</div>
|
||||||
|
</div>
|
19
content/zettels/permanent_magnets.md
Normal file
19
content/zettels/permanent_magnets.md
Normal file
@ -0,0 +1,19 @@
|
|||||||
|
+++
|
||||||
|
title = "Permanent Magnets"
|
||||||
|
author = ["Dehaeze Thomas"]
|
||||||
|
draft = false
|
||||||
|
+++
|
||||||
|
|
||||||
|
Tags
|
||||||
|
:
|
||||||
|
|
||||||
|
|
||||||
|
## Neodymium Magnets {#neodymium-magnets}
|
||||||
|
|
||||||
|
<https://www.kjmagnetics.com/>
|
||||||
|
|
||||||
|
|
||||||
|
## Bibliography {#bibliography}
|
||||||
|
|
||||||
|
<style>.csl-entry{text-indent: -1.5em; margin-left: 1.5em;}</style><div class="csl-bib-body">
|
||||||
|
</div>
|
@ -12,9 +12,11 @@ Tags
|
|||||||
## Manufacturers {#manufacturers}
|
## Manufacturers {#manufacturers}
|
||||||
|
|
||||||
| Manufacturers | Country |
|
| Manufacturers | Country |
|
||||||
|--------------------------------------------------------|---------|
|
|-----------------------------------------------------------|---------|
|
||||||
| [Huber](https://www.xhuber.com/en/) | Germany |
|
| [Huber](https://www.xhuber.com/en/) | Germany |
|
||||||
| [LAB Motion System](http://www.leuvenairbearings.com/) | Belgium |
|
| [LAB Motion System](http://www.leuvenairbearings.com/) | Belgium |
|
||||||
|
| [New Way Air Bearing](https://www.newwayairbearings.com/) | USA |
|
||||||
|
| [PIC](https://www.airbearings.com/) | USA |
|
||||||
|
|
||||||
|
|
||||||
## Bibliography {#bibliography}
|
## Bibliography {#bibliography}
|
||||||
|
@ -103,10 +103,10 @@ A rotation of 1 turn per second will induce vibrations at 200Hz with an amplitud
|
|||||||
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
Note that this error is not a pure sine, it also has some harmonics with corresponding periods of 1/100 revolution and 1/50 revolution.
|
Note that this error is not a pure sine, it also has some harmonics.
|
||||||
|
|
||||||
One way to reduce these errors is to use a ball-screw mechanism with a smaller pitch.
|
One way to reduce these errors is to use a ball-screw mechanism with a smaller pitch (or a reduction gearbox).
|
||||||
The price to pay is smaller velocity.
|
The price to pay is smaller velocity (and even high vibration frequencies for the same velocity).
|
||||||
|
|
||||||
|
|
||||||
### Load Dependent Error {#load-dependent-error}
|
### Load Dependent Error {#load-dependent-error}
|
||||||
|
83
content/zettels/time_delay.md
Normal file
83
content/zettels/time_delay.md
Normal file
@ -0,0 +1,83 @@
|
|||||||
|
+++
|
||||||
|
title = "Time Delay"
|
||||||
|
author = ["Dehaeze Thomas"]
|
||||||
|
draft = false
|
||||||
|
+++
|
||||||
|
|
||||||
|
Tags
|
||||||
|
:
|
||||||
|
|
||||||
|
|
||||||
|
## Phase induced by a time delay {#phase-induced-by-a-time-delay}
|
||||||
|
|
||||||
|
Having some time delay can be modelled by a transfer function having constant amplitude but a phase lag increasing with frequency.
|
||||||
|
Such phase lag is linearly proportional to the time delay and to the frequency:
|
||||||
|
|
||||||
|
\begin{equation}
|
||||||
|
\phi(\omega) = -\omega \cdot T\_s
|
||||||
|
\end{equation}
|
||||||
|
|
||||||
|
with:
|
||||||
|
|
||||||
|
- \\(\phi(\omega)\\) the phase lag in rad
|
||||||
|
- \\(\omega\\) the frequency in rad/s
|
||||||
|
- \\(T\_s\\) the time delay in s
|
||||||
|
|
||||||
|
|
||||||
|
## Estimation of phase delay induced in sampled systems {#estimation-of-phase-delay-induced-in-sampled-systems}
|
||||||
|
|
||||||
|
Consider a feedback controller implemented numerically on a system with a sampling frequency \\(F\_s\\).
|
||||||
|
|
||||||
|
The time delay associated with the limited sampling frequency \\(F\_s\\) is:
|
||||||
|
|
||||||
|
\begin{equation}
|
||||||
|
\phi(\omega) = -\frac{\omega}{F\_s}
|
||||||
|
\end{equation}
|
||||||
|
|
||||||
|
with:
|
||||||
|
|
||||||
|
- \\(\phi(\omega)\\) the phase lag in rad
|
||||||
|
- \\(\omega\\) the frequency in rad/s
|
||||||
|
- \\(F\_s\\) the sampling frequency in Hz
|
||||||
|
|
||||||
|
Some values are summarized in Table [1](#table--tab:time-delay-phase-lag).
|
||||||
|
|
||||||
|
<a id="table--tab:time-delay-phase-lag"></a>
|
||||||
|
<div class="table-caption">
|
||||||
|
<span class="table-number"><a href="#table--tab:time-delay-phase-lag">Table 1</a>:</span>
|
||||||
|
Phase lag as a function of the frequency (relative to the sampling frequency )
|
||||||
|
</div>
|
||||||
|
|
||||||
|
| Frequency | Phase Delay [deg] |
|
||||||
|
|----------------|-------------------|
|
||||||
|
| \\(F\_s/100\\) | -3.6 |
|
||||||
|
| \\(F\_s/10\\) | -36.0 |
|
||||||
|
| \\(F\_s/2\\) | -180.0 |
|
||||||
|
|
||||||
|
This is the main reason to have a sampling frequency much higher than the wanted feedback bandwidth is to limit the phase delay at the crossover frequency induced by the time delay.
|
||||||
|
Having a sampling frequency a 100 times larger than the crossover frequency is a good objective.
|
||||||
|
|
||||||
|
<div class="exampl">
|
||||||
|
|
||||||
|
Take the example of a controller implemented with a sampling time of 0.1ms (10kHz sampling frequency).
|
||||||
|
|
||||||
|
```matlab
|
||||||
|
t_delay = 1e-4; % Delay [s]
|
||||||
|
G_delay = exp(-t_delay*s);
|
||||||
|
```
|
||||||
|
|
||||||
|
The induced phase delay as a function of frequency is shown in Figure [1](#figure--fig:time-delay-induced-phase-lag).
|
||||||
|
|
||||||
|
At the Nyquist frequency (5 kHz), the phase lag is 180 degrees.
|
||||||
|
|
||||||
|
<a id="figure--fig:time-delay-induced-phase-lag"></a>
|
||||||
|
|
||||||
|
{{< figure src="/ox-hugo/time_delay_induced_phase_lag.png" caption="<span class=\"figure-number\">Figure 1: </span>Phase lag induced by a time delay" >}}
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
## Bibliography {#bibliography}
|
||||||
|
|
||||||
|
<style>.csl-entry{text-indent: -1.5em; margin-left: 1.5em;}</style><div class="csl-bib-body">
|
||||||
|
</div>
|
@ -7,6 +7,8 @@ draft = false
|
|||||||
Tags
|
Tags
|
||||||
: [Motors]({{< relref "motors.md" >}})
|
: [Motors]({{< relref "motors.md" >}})
|
||||||
|
|
||||||
|
Nice tutorial: <https://www.youtube.com/watch?v=3XcvjC2anM8&list=PLmklAQtFT_ZKcaI21UHgi0cm2Y3Yxu90p&index=3>
|
||||||
|
|
||||||
|
|
||||||
## Manufacturers {#manufacturers}
|
## Manufacturers {#manufacturers}
|
||||||
|
|
||||||
|
BIN
static/ox-hugo/extremum_seeking_control_architecture.png
Normal file
BIN
static/ox-hugo/extremum_seeking_control_architecture.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 31 KiB |
BIN
static/ox-hugo/extremum_seeking_control_minimum.png
Normal file
BIN
static/ox-hugo/extremum_seeking_control_minimum.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 24 KiB |
BIN
static/ox-hugo/extremum_seeking_control_non_minimum.png
Normal file
BIN
static/ox-hugo/extremum_seeking_control_non_minimum.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 29 KiB |
BIN
static/ox-hugo/time_delay_induced_phase_lag.png
Normal file
BIN
static/ox-hugo/time_delay_induced_phase_lag.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 48 KiB |
Loading…
Reference in New Issue
Block a user