Axis Compensator has been added

This commit is contained in:
Thomas Dehaeze 2019-10-16 14:25:25 +02:00
parent 3745bbebee
commit b5353745e0
3 changed files with 71 additions and 47 deletions

View File

@ -238,6 +238,9 @@ initializeRz();
%% Initialize Hexapod Symétrie
initializeMicroHexapod();
%% Initialize Center of gravity compensation
initializeAxisc();
#+end_src
** Center of Mass of each solid body
@ -381,15 +384,16 @@ initializeMicroHexapod();
end
#+end_src
** Bis
For Granite Fx to Tx/Ty/Tz/Rx/Ry/Rz
#+begin_src matlab
dirs = {'x', 'y', 'z', 'rx', 'ry', 'rz'};
stages = {'gtop', 'ty', 'ry', 'rz', 'hexa'}
n_stg = 2;
n_exc = 2;
n_stg = 5;
n_exc = 3;
f = logspace(1, 3, 1000);
f = logspace(0, 3, 1000);
figure;
for n_dir = 1:6

View File

@ -1070,6 +1070,16 @@ This Matlab function is accessible [[file:../src/initializeGranite.m][here]].
#+begin_src matlab
function [granite] = initializeGranite()
%% Default values for opts
opts = struct('rigid', false);
%% Populate opts with input parameters
if exist('opts_param','var')
for opt = fieldnames(opts_param)'
opts.(opt{1}) = opts_param.(opt{1});
end
end
%%
granite = struct();
@ -1083,22 +1093,27 @@ This Matlab function is accessible [[file:../src/initializeGranite.m][here]].
granite.mass_top = 4000; % [kg] TODO
%% Dynamical Properties
granite.k.x = 4e9; % [N/m]
if opts.rigid
granite.k.x = 1e12; % [N/m]
granite.k.y = 1e12; % [N/m]
granite.k.z = 1e12; % [N/m]
granite.k.rx = 1e10; % [N*m/deg]
granite.k.ry = 1e10; % [N*m/deg]
granite.k.rz = 1e10; % [N*m/deg]
else
granite.k.x = 4e9; % [N/m]
granite.k.y = 3e8; % [N/m]
granite.k.z = 8e8; % [N/m]
granite.k.rx = 1e4; % [N*m/deg]
granite.k.ry = 1e4; % [N*m/deg]
granite.k.rz = 1e6; % [N*m/deg]
end
granite.c.x = 0.1*sqrt(granite.mass_top*granite.k.x); % [N/(m/s)]
granite.k.y = 3e8; % [N/m]
granite.c.y = 0.1*sqrt(granite.mass_top*granite.k.y); % [N/(m/s)]
granite.k.z = 8e8; % [N/m]
granite.c.z = 0.5*sqrt(granite.mass_top*granite.k.z); % [N/(m/s)]
granite.k.rx = 1e4; % [N*m/deg]
granite.c.rx = 0.1*sqrt(granite.mass_top*granite.k.rx); % [N*m/(deg/s)]
granite.k.ry = 1e4; % [N*m/deg]
granite.c.ry = 0.1*sqrt(granite.mass_top*granite.k.ry); % [N*m/(deg/s)]
granite.k.rz = 1e6; % [N*m/deg]
granite.c.rz = 0.1*sqrt(granite.mass_top*granite.k.rz); % [N*m/(deg/s)]
%% Positioning parameters
@ -1126,9 +1141,9 @@ This Matlab function is accessible [[file:../src/initializeTy.m][here]].
%% Populate opts with input parameters
if exist('opts_param','var')
for opt = fieldnames(opts_param)'
opts.(opt{1}) = opts_param.(opt{1});
end
for opt = fieldnames(opts_param)'
opts.(opt{1}) = opts_param.(opt{1});
end
end
%%
@ -1176,11 +1191,12 @@ This Matlab function is accessible [[file:../src/initializeTy.m][here]].
%% Y-Translation - Dynamicals Properties
if opts.rigid
ty.k.ax = 1e10; % Axial Stiffness for each of the 4 guidance (y) [N/m]
ty.k.ax = 1e12; % Axial Stiffness for each of the 4 guidance (y) [N/m]
ty.k.rad = 1e12; % Radial Stiffness for each of the 4 guidance (x-z) [N/m]
else
ty.k.ax = 1e7; % Axial Stiffness for each of the 4 guidance (y) [N/m]
ty.k.ax = 5e7; % Axial Stiffness for each of the 4 guidance (y) [N/m]
ty.k.rad = 5e7; % Radial Stiffness for each of the 4 guidance (x-z) [N/m]
end
ty.k.rad = 1e8; % Radial Stiffness for each of the 4 guidance (x-z) [N/m]
ty.c.ax = 0.1*sqrt(ty.k.ax*ty.m);
ty.c.rad = 0.1*sqrt(ty.k.rad*ty.m);
@ -1207,9 +1223,9 @@ This Matlab function is accessible [[file:../src/initializeRy.m][here]].
%% Populate opts with input parameters
if exist('opts_param','var')
for opt = fieldnames(opts_param)'
opts.(opt{1}) = opts_param.(opt{1});
end
for opt = fieldnames(opts_param)'
opts.(opt{1}) = opts_param.(opt{1});
end
end
%%
@ -1237,15 +1253,17 @@ This Matlab function is accessible [[file:../src/initializeRy.m][here]].
%% Tilt Stage - Dynamical Properties
if opts.rigid
ry.k.tilt = 1e10; % Rotation stiffness around y [N*m/deg]
ry.k.tilt = 1e10; % Rotation stiffness around y [N*m/deg]
ry.k.h = 1e12; % Stiffness in the direction of the guidance [N/m]
ry.k.rad = 1e12; % Stiffness in the top direction [N/m]
ry.k.rrad = 1e12; % Stiffness in the side direction [N/m]
else
ry.k.tilt = 1e3; % Rotation stiffness around y [N*m/deg]
ry.k.tilt = 1e4; % Rotation stiffness around y [N*m/deg]
ry.k.h = 1e8; % Stiffness in the direction of the guidance [N/m]
ry.k.rad = 1e8; % Stiffness in the top direction [N/m]
ry.k.rrad = 1e8; % Stiffness in the side direction [N/m]
end
ry.k.h = 357e6/4; % Stiffness in the direction of the guidance [N/m]
ry.k.rad = 555e6/4; % Stiffness in the top direction [N/m]
ry.k.rrad = 238e6/4; % Stiffness in the side direction [N/m]
ry.c.h = 0.1*sqrt(ry.k.h*ry.m);
ry.c.rad = 0.1*sqrt(ry.k.rad*ry.m);
ry.c.rrad = 0.1*sqrt(ry.k.rrad*ry.m);
@ -1276,9 +1294,9 @@ This Matlab function is accessible [[file:../src/initializeRz.m][here]].
%% Populate opts with input parameters
if exist('opts_param','var')
for opt = fieldnames(opts_param)'
opts.(opt{1}) = opts_param.(opt{1});
end
for opt = fieldnames(opts_param)'
opts.(opt{1}) = opts_param.(opt{1});
end
end
%%
@ -1302,15 +1320,17 @@ This Matlab function is accessible [[file:../src/initializeRz.m][here]].
rz.m = 250; % [kg]
%% Spindle - Dynamical Properties
% Estimated stiffnesses
rz.k.ax = 2e9; % Axial Stiffness [N/m]
rz.k.rad = 7e8; % Radial Stiffness [N/m]
rz.k.tilt = 1e8*(2*pi/360); % Rotational Stiffness [N*m/deg]
if opts.rigid
rz.k.rot = 1e10; % Rotational Stiffness [N*m/deg]
rz.k.rot = 1e10; % Rotational Stiffness (Rz) [N*m/deg]
rz.k.tilt = 1e10; % Rotational Stiffness (Rx, Ry) [N*m/deg]
rz.k.ax = 1e12; % Axial Stiffness (Z) [N/m]
rz.k.rad = 1e12; % Radial Stiffness (X, Y) [N/m]
else
rz.k.rot = 1e6; % TODO what value should I put? [N*m/deg]
rz.k.rot = 1e6; % TODO - Rotational Stiffness (Rz) [N*m/deg]
rz.k.tilt = 1e6; % Rotational Stiffness (Rx, Ry) [N*m/deg]
rz.k.ax = 2e9; % Axial Stiffness (Z) [N/m]
rz.k.rad = 7e8; % Radial Stiffness (X, Y) [N/m]
end
% Damping
@ -1337,13 +1357,13 @@ This Matlab function is accessible [[file:../src/initializeMicroHexapod.m][here]
#+begin_src matlab
function [micro_hexapod] = initializeMicroHexapod(opts_param)
%% Default values for opts
opts = struct();
opts = struct('rigid', false);
%% Populate opts with input parameters
if exist('opts_param','var')
for opt = fieldnames(opts_param)'
opts.(opt{1}) = opts_param.(opt{1});
end
for opt = fieldnames(opts_param)'
opts.(opt{1}) = opts_param.(opt{1});
end
end
%% Stewart Object
@ -1380,7 +1400,7 @@ This Matlab function is accessible [[file:../src/initializeMicroHexapod.m][here]
Leg.stroke = 10e-3; % Maximum Stroke of each leg [m]
Leg.k.ax = 5e7; % Stiffness of each leg [N/m]
Leg.ksi.ax = 3; % Maximum amplification at resonance []
Leg.ksi.ax = 0.1; % Modal damping ksi = 1/2*c/sqrt(km) []
Leg.rad.bottom = 25; % Radius of the cylinder of the bottom part [mm]
Leg.rad.top = 17; % Radius of the cylinder of the top part [mm]
Leg.density = 8000; % Density of the material [kg/m^3]
@ -1431,10 +1451,10 @@ This Matlab function is accessible [[file:../src/initializeMicroHexapod.m][here]
%%
function [element] = updateDamping(element)
field = fieldnames(element.k);
for i = 1:length(field)
element.c.(field{i}) = 1/element.ksi.(field{i})*sqrt(element.k.(field{i})/element.m);
end
field = fieldnames(element.k);
for i = 1:length(field)
element.c.(field{i}) = 2*element.ksi.(field{i})*sqrt(element.k.(field{i})*element.m);
end
end
%%