Add images
BIN
Library/img/IMG_20190430_112613.jpg
Normal file
After Width: | Height: | Size: 4.4 MiB |
BIN
Library/img/IMG_20190430_112615.jpg
Normal file
After Width: | Height: | Size: 3.5 MiB |
BIN
Library/img/IMG_20190430_112620.jpg
Normal file
After Width: | Height: | Size: 4.2 MiB |
BIN
Library/img/IMG_20190430_155330.jpg
Normal file
After Width: | Height: | Size: 3.8 MiB |
BIN
Library/img/IMG_20190430_155335.jpg
Normal file
After Width: | Height: | Size: 3.3 MiB |
BIN
Library/img/IMG_20190430_155342.jpg
Normal file
After Width: | Height: | Size: 4.2 MiB |
BIN
Library/img/IMG_20190430_163919.jpg
Normal file
After Width: | Height: | Size: 3.9 MiB |
BIN
Library/img/IMG_20190430_170405.jpg
Normal file
After Width: | Height: | Size: 3.0 MiB |
BIN
Library/img/IMG_20190430_170418.jpg
Normal file
After Width: | Height: | Size: 3.4 MiB |
BIN
Library/img/IMG_20190430_170425.jpg
Normal file
After Width: | Height: | Size: 3.3 MiB |
@ -40,17 +40,13 @@ data = SimulinkRealTime.utils.getFileScopeData('data/data_001.dat').data;
|
|||||||
%%
|
%%
|
||||||
n = 012;
|
n = 012;
|
||||||
|
|
||||||
if isfile(['mat/data_', num2str(n, '%03d'), '.mat'])
|
while isfile(['mat/data_', num2str(n, '%03d'), '.mat'])
|
||||||
disp('File exists.');
|
disp('File exists.');
|
||||||
else
|
if input(['Are you sure you want to override the file ', 'mat/data_', ...
|
||||||
save(['mat/data_', num2str(n, '%03d'), '.mat'], 'data');
|
num2str(n, '%03d'), '.mat', ' ? [Y/n]']) == 'Y'
|
||||||
|
break;
|
||||||
|
end
|
||||||
|
n = input('What should be the measurement number?');
|
||||||
end
|
end
|
||||||
|
|
||||||
%%
|
save(['mat/data_', num2str(n, '%03d'), '.mat'], 'data');
|
||||||
% figure;
|
|
||||||
% hold on;
|
|
||||||
% plot(t, x1);
|
|
||||||
% plot(t, x2);
|
|
||||||
% hold off
|
|
||||||
% xlabel('Time [s]');
|
|
||||||
% ylabel('Voltage [V]');
|
|
||||||
|
@ -1,8 +1,7 @@
|
|||||||
Contains usefull scripts and simulink files for the SpeedGoat.
|
#+TITLE: List of measurements
|
||||||
|
|
||||||
Signal of top hexapod goes through Slip-Ring
|
|
||||||
|
|
||||||
* Effect of control of each stage
|
* Effect of control of each stage
|
||||||
|
|
||||||
| Ty on | data_001 |
|
| Ty on | data_001 |
|
||||||
| Ty off | data_002 |
|
| Ty off | data_002 |
|
||||||
|
|
||||||
@ -10,35 +9,44 @@ One geophone is on the marble, the other at the sample location.
|
|||||||
The signal from the top geophone goes through the slip-ring
|
The signal from the top geophone goes through the slip-ring
|
||||||
|
|
||||||
* Measurement when signal from top geophone does not go trought the slip-ring
|
* Measurement when signal from top geophone does not go trought the slip-ring
|
||||||
| Ty | Ry | Slip Ring | Spindle | Hexapod | Meas. |
|
|
||||||
| X | X | X | X | X | 003 |
|
| Ty | Ry | Slip Ring | Spindle | Hexapod | Meas. file |
|
||||||
| | X | X | X | X | 004 |
|
|------+------+-----------+---------+---------+----------------|
|
||||||
| | | X | X | X | 005 |
|
| *ON* | *ON* | *ON* | *ON* | *ON* | =meas_003.mat= |
|
||||||
| | | | X | X | 006 |
|
| OFF | *ON* | *ON* | *ON* | *ON* | =meas_004.mat= |
|
||||||
| | | | | X | 007 |
|
| OFF | OFF | *ON* | *ON* | *ON* | =meas_005.mat= |
|
||||||
| | | | | | 008 |
|
| OFF | OFF | OFF | *ON* | *ON* | =meas_006.mat= |
|
||||||
|
| OFF | OFF | OFF | OFF | *ON* | =meas_007.mat= |
|
||||||
|
| OFF | OFF | OFF | OFF | OFF | =meas_008.mat= |
|
||||||
|
|
||||||
Meas009: everything off with signal goes through the slip-ring
|
Meas009: everything off with signal goes through the slip-ring
|
||||||
|
|
||||||
* Measurement from one stage to the other
|
* Measurement from one stage to the other
|
||||||
** Meas010
|
** From Marble to Ty
|
||||||
Meas010: everything off, one geophone on the marble, one geophone on the Ty (measure on Z direction)
|
=meas_010.mat=
|
||||||
|
Everything off, one geophone on the marble, one geophone on the Ty (measure on Z direction)
|
||||||
=> Can be used to determine the vertical stiffness between the Granite and the Ty stage
|
=> Can be used to determine the vertical stiffness between the Granite and the Ty stage
|
||||||
| 1 | |
|
|
||||||
| 2 | |
|
|
||||||
| 3 | Time |
|
|
||||||
|
|
||||||
** Meas011
|
|
||||||
Meas011: everything off, one geophone on the marble, one geophone on the Ry (measure on Z direction)
|
|
||||||
=> Can be used to determine the vertical stiffness of the Ry Stage (by taking into account the Ty stiffness)
|
|
||||||
Channels:
|
Channels:
|
||||||
| 1 | |
|
| 1 | Ground |
|
||||||
| 2 | |
|
| 2 | Ty |
|
||||||
| 3 | Time |
|
| 3 | Time |
|
||||||
|
|
||||||
** Meas012
|
** From Marble to Ry
|
||||||
Meas012: everything off, one geophone on the Ty, one geophone on the Ry (measure on Z direction)
|
=meas_011.mat=
|
||||||
|
Everything off, one geophone on the marble, one geophone on the Ry (measure on Z direction)
|
||||||
|
=> Can be used to determine the vertical stiffness of the Ry Stage (by taking into account the Ty stiffness)
|
||||||
|
|
||||||
|
Channels:
|
||||||
|
| 1 | Ground |
|
||||||
|
| 2 | Ry |
|
||||||
|
| 3 | Time |
|
||||||
|
|
||||||
|
** From Ty to Ry
|
||||||
|
=meas_012.mat=
|
||||||
|
Everything off, one geophone on the Ty, one geophone on the Ry (measure on Z direction)
|
||||||
=> Can be used to determine the vertical stiffness of the Ry stage
|
=> Can be used to determine the vertical stiffness of the Ry stage
|
||||||
|
|
||||||
Channels:
|
Channels:
|
||||||
| 1 | Ty |
|
| 1 | Ty |
|
||||||
| 2 | Ry |
|
| 2 | Ry |
|
||||||
|
@ -1,14 +0,0 @@
|
|||||||
data1 = load('mat/data_001.mat', 't', 'x1', 'x2');
|
|
||||||
data2 = load('mat/data_002.mat', 't', 'x1', 'x2');
|
|
||||||
|
|
||||||
figure;
|
|
||||||
hold on;
|
|
||||||
plot(data1.t, data1.x1);
|
|
||||||
plot(data2.t, data2.x1);
|
|
||||||
hold off;
|
|
||||||
|
|
||||||
figure;
|
|
||||||
hold on;
|
|
||||||
plot(data1.t, data1.x2);
|
|
||||||
plot(data2.t, data2.x2);
|
|
||||||
hold off;
|
|
122
disturbance-measurement/index.org
Normal file
@ -0,0 +1,122 @@
|
|||||||
|
#+TITLE:Measurement of the sample vibrations when rotating the Spindle
|
||||||
|
:DRAWER:
|
||||||
|
#+STARTUP: overview
|
||||||
|
|
||||||
|
#+HTML_HEAD: <link rel="stylesheet" type="text/css" href="../css/htmlize.css"/>
|
||||||
|
#+HTML_HEAD: <link rel="stylesheet" type="text/css" href="../css/readtheorg.css"/>
|
||||||
|
#+HTML_HEAD: <link rel="stylesheet" type="text/css" href="../css/zenburn.css"/>
|
||||||
|
#+HTML_HEAD: <script type="text/javascript" src="../js/jquery.min.js"></script>
|
||||||
|
#+HTML_HEAD: <script type="text/javascript" src="../js/bootstrap.min.js"></script>
|
||||||
|
#+HTML_HEAD: <script type="text/javascript" src="../js/jquery.stickytableheaders.min.js"></script>
|
||||||
|
#+HTML_HEAD: <script type="text/javascript" src="../js/readtheorg.js"></script>
|
||||||
|
|
||||||
|
#+PROPERTY: header-args:matlab :session *MATLAB*
|
||||||
|
#+PROPERTY: header-args:matlab+ :comments org
|
||||||
|
#+PROPERTY: header-args:matlab+ :results output
|
||||||
|
#+PROPERTY: header-args:matlab+ :exports both
|
||||||
|
#+PROPERTY: header-args:matlab+ :eval no-export
|
||||||
|
#+PROPERTY: header-args:matlab+ :output-dir figs
|
||||||
|
:END:
|
||||||
|
|
||||||
|
* Signal Processing
|
||||||
|
** Matlab Init :noexport:ignore:
|
||||||
|
#+begin_src matlab :exports none :results silent :noweb yes
|
||||||
|
<<matlab-init>>
|
||||||
|
#+end_src
|
||||||
|
|
||||||
|
** Load Data
|
||||||
|
Measurement =data_001.mat= corresponds to a measurement where the spindle is not turning and =data_002.mat= where the spindle is turning at 1rpm.
|
||||||
|
=x1= is the signal coming from the geophone located on the marble and =x2= is the signal from the geophone located on the sample station.
|
||||||
|
|
||||||
|
#+begin_src matlab :results none
|
||||||
|
data1 = load('mat/data_001.mat', 't', 'x1', 'x2');
|
||||||
|
data2 = load('mat/data_002.mat', 't', 'x1', 'x2');
|
||||||
|
#+end_src
|
||||||
|
|
||||||
|
** Pre-processing
|
||||||
|
#+begin_src matlab :results none
|
||||||
|
imax = min([length(data1.t), length(data2.t)]);
|
||||||
|
|
||||||
|
data1.t = data1.t(1:imax);
|
||||||
|
data1.x1 = data1.x1(1:imax);
|
||||||
|
data1.x2 = data1.x2(1:imax);
|
||||||
|
|
||||||
|
data2.t = data2.t(1:imax);
|
||||||
|
data2.x1 = data2.x1(1:imax);
|
||||||
|
data2.x2 = data2.x2(1:imax);
|
||||||
|
#+end_src
|
||||||
|
|
||||||
|
** Time domain Data
|
||||||
|
#+begin_src matlab :results none
|
||||||
|
figure;
|
||||||
|
hold on;
|
||||||
|
plot(data1.t, data1.x1);
|
||||||
|
plot(data2.t, data2.x1);
|
||||||
|
hold off;
|
||||||
|
#+end_src
|
||||||
|
|
||||||
|
#+begin_src matlab :results none
|
||||||
|
figure;
|
||||||
|
hold on;
|
||||||
|
plot(data1.t, data1.x2);
|
||||||
|
plot(data2.t, data2.x2)
|
||||||
|
hold off;
|
||||||
|
#+end_src
|
||||||
|
|
||||||
|
** ASD and Frequency domain data
|
||||||
|
#+begin_src matlab :results none
|
||||||
|
dt = data1.t(2) - data1.t(1);
|
||||||
|
Fs = 1/dt;
|
||||||
|
windows_psd = hanning(ceil(10/dt));
|
||||||
|
#+end_src
|
||||||
|
|
||||||
|
#+begin_src matlab :results none
|
||||||
|
[pxx1m, f] = pwelch(data1.x1, windows_psd, [], [], Fs);
|
||||||
|
[pxx1h, ~] = pwelch(data1.x2, windows_psd, [], [], Fs);
|
||||||
|
|
||||||
|
[pxx2m, ~] = pwelch(data2.x1, windows_psd, [], [], Fs);
|
||||||
|
[pxx2h, ~] = pwelch(data2.x2, windows_psd, [], [], Fs);
|
||||||
|
#+end_src
|
||||||
|
|
||||||
|
#+begin_src matlab :results none
|
||||||
|
figure;
|
||||||
|
hold on;
|
||||||
|
plot(f, sqrt(pxx1m));
|
||||||
|
plot(f, sqrt(pxx2m));
|
||||||
|
hold off;
|
||||||
|
set(gca, 'xscale', 'log');
|
||||||
|
set(gca, 'yscale', 'log');
|
||||||
|
xlabel('Frequency [Hz]'); ylabel('PSD [m/s/sqrt(Hz)]')
|
||||||
|
#+end_src
|
||||||
|
|
||||||
|
#+begin_src matlab :results none
|
||||||
|
figure;
|
||||||
|
hold on;
|
||||||
|
plot(f, sqrt(pxx1h));
|
||||||
|
plot(f, sqrt(pxx2h));
|
||||||
|
hold off;
|
||||||
|
set(gca, 'xscale', 'log');
|
||||||
|
set(gca, 'yscale', 'log');
|
||||||
|
xlabel('Frequency [Hz]'); ylabel('PSD [m/s/sqrt(Hz)]')
|
||||||
|
#+end_src
|
||||||
|
|
||||||
|
|
||||||
|
#+begin_src matlab :results none
|
||||||
|
figure;
|
||||||
|
hold on;
|
||||||
|
plot(f, sqrt(pxx2m));
|
||||||
|
plot(f, sqrt(pxx2h));
|
||||||
|
hold off;
|
||||||
|
set(gca, 'xscale', 'log');
|
||||||
|
set(gca, 'yscale', 'log');
|
||||||
|
xlabel('Frequency [Hz]'); ylabel('PSD [m/s/sqrt(Hz)]')
|
||||||
|
#+end_src
|
||||||
|
|
||||||
|
#+begin_src matlab :results none
|
||||||
|
figure;
|
||||||
|
hold on;
|
||||||
|
plot(f, cumtrapz(f, pxx1m))
|
||||||
|
plot(f, cumtrapz(f, pxx2m))
|
||||||
|
set(gca, 'XScale', 'log');
|
||||||
|
xlabel('Frequency [Hz]'); ylabel('CAS [m]')
|
||||||
|
#+end_src
|
@ -1,8 +1,12 @@
|
|||||||
|
#+TITLE:Measurement of the sample vibrations when rotating the Spindle
|
||||||
|
|
||||||
Measurement:
|
Measurement:
|
||||||
- one geophone on the marble
|
- one geophone on the marble
|
||||||
- one geophone at the sample position
|
- one geophone at the sample position
|
||||||
|
|
||||||
Every stage is powered on.
|
Every stage is powered on.
|
||||||
|
|
||||||
|
| Data file | Description |
|
||||||
|
|--------------+----------------------------|
|
||||||
| data_001.mat | nothing is turning |
|
| data_001.mat | nothing is turning |
|
||||||
| data_002.mat | spindle is turning at 1rpm |
|
| data_002.mat | spindle is turning at 1rpm |
|
@ -1,4 +1,4 @@
|
|||||||
#+TITLE:SpeedGoat
|
#+TITLE:Huddle Test of the L22 Geophones
|
||||||
:DRAWER:
|
:DRAWER:
|
||||||
#+STARTUP: overview
|
#+STARTUP: overview
|
||||||
|
|
||||||
@ -303,7 +303,7 @@ Each sensor has noise $N$ and $M$.
|
|||||||
[[file:figs/huddle-test.png]]
|
[[file:figs/huddle-test.png]]
|
||||||
|
|
||||||
We here assume that each sensor has the same magnitude of instrumental noise ($N = M$).
|
We here assume that each sensor has the same magnitude of instrumental noise ($N = M$).
|
||||||
We also assume that $H_1 = H_2 = 1$.
|
We also assume that $S_1 = S_2 = 1$.
|
||||||
|
|
||||||
We then obtain:
|
We then obtain:
|
||||||
#+NAME: eq:coh_bis
|
#+NAME: eq:coh_bis
|
||||||
|