Filter löschen
Filter löschen

How to solve for the torsional degrees of freedom

10 Ansichten (letzte 30 Tage)
Siddharth Jain
Siddharth Jain am 26 Feb. 2023
Beantwortet: Sam Chak am 26 Feb. 2023
I am trying to model the torsional degrees of freedom for a single stage helical gear system. My orignal code is here: https://uk.mathworks.com/matlabcentral/answers/1916150-keep-getting-a-blank-graph?s_tid=es_ans_avr_que_view
Please do not flag this question, I am trying to ask something different
For example-
I_a = moment of inertia of smaller driver gear
I_p = moment of inertia of bigger driven gear
R_a = radius of smaller driver gear
Cs = meshing damping
theta_a = torsional angle of smaller driver gear
K_s = meshing stiffness
R_p = radius of bigger driven gear
theta_a = torsional angle of bigger driven gear
F_y = meshing excitation force
How can I solve for theta_a and theta_p using ode45 in a similar way as we solve for x in a simple mass spring damper system
function Ydot = num_for(t, Y)
Ydot = zeros(2,1);
m = 100;
k = 1000;
c = 160;
w = 5;
f = 160;
F = [0; (f/m)*cos(w*t)]; % input force vector
A = [0 1; -k/m -c/m]; % state matrix
Ydot = A*Y + F; % state-space model
end
function call-
Tspan = [0 10];
y0 = [0.01; 0.1];
[t, y] = ode45(@num_for, Tspan, y0);
figure
plot(t, y(:,1), 'linewidth', 1.5)
grid on
xlabel('Time, t [sec]')
ylabel({'displacement'})

Antworten (1)

Sam Chak
Sam Chak am 26 Feb. 2023
You can try modifying the following code to fit your application.
tspan = [0 0.1];
y0 = [0.1 0.2 0 0];
[t, y] = ode45(@heligear, tspan, y0);
for j = 1:4
figure(j)
plot(t, y(:,j), 'linewidth', 1.5), grid on
xlabel('Time, t [sec]'),
ystate = sprintf('y_{%d}', j);
ylabel(ystate)
end
function ydot = heligear(t, y)
ydot = zeros(4, 1);
% parameters
m_a = 0.5;
m_p = 0.5;
R_a = 51.19e-3;
R_p = 139.763e-3;
I_a = 0.5*m_a*(R_a^2);
I_p = 0.5*m_p*(R_p^2);
Freq = 1000*20/60;
Cs = 0.1 + 0.01*sin(2*pi*Freq*t);
Ks = 0.9e3 + 20*sin(2*pi*Freq*t);
% ODEs
% y1 is theta_a, y2 is theta_p
% y3 is thetaDot_a, y4 is thetaDot_p
ydot(1) = y(3);
ydot(2) = y(4);
ydot(3) = (- R_a*(Cs*(R_a*y(3) - R_p*y(4)) + Ks*(R_a*y(1) - R_p*y(2))))/I_a;
ydot(4) = ( R_p*(Cs*(R_a*y(3) - R_p*y(4)) + Ks*(R_a*y(1) - R_p*y(2))))/I_p;
end

Kategorien

Mehr zu Mathematics and Optimization finden Sie in Help Center und File Exchange

Tags

Produkte

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by