Gallery, Projects and General > Project Logs
Radial 3-cylinder steam project
<< < (4/4)
Kjetil:
OK, I did some programming, and plotted the centre of mass over a cycle. Individual component centre of mass is rough guesstimates for now, I didn't bother to make exact numbers as they may well change. All I wanted to see if there was a symmetry. The black squares in the middle marks the centre of mass over the cycle. Looks pretty good if I got it all right, i simply took R=1/M*sum(r*m) where R is the overall centre of mass, M is the total mass, r is component position and m component mass.

This is what the code looks like in Matlab;

--- Code: ---% MATLAB R2010b
figure(1);
hold;
syms v

nr_of_steps = 18; % number of positions to simulate for one revolution

axis_length = 130; % length of displayed piston axes [mm]

L=72; % length from chank shaft to wrist pin along the crank arm [mm]
ca_offset = 30; % crank arm centre of gravity, outwards from crank [mm]
p_offset = 3; % offset of piston CoG axially outwards from wrist pin centre [mm]
valve_pin=[1.95*2.5;-0.34*2.5]; % initial coordinates of the valve pin [mm]

% masses
m_valve=214.5; % [g]
m_valve_pin=3; % [g]
m_wrist_pin=22.6; % [g]
m_wrist_pin_bushings=3; % [g]
m_piston=206.4; % [g]
m_crank_arm=33; % [g]
m_crank=50; % [g]
m_crank_bushings=5; % [g]
m_total=m_valve+m_valve_pin+m_crank+3*(m_wrist_pin+m_piston+m_crank_arm+ ...
    m_wrist_pin_bushings+m_crank_bushings);

% compute piston offset vectors;
p_offs_1 = [0;p_offset];
p_offs_2 = [cos(2/3*pi) -sin(2/3*pi);sin(2/3*pi) cos(2/3*pi)]*p_offs_1;
p_offs_3 = [cos(4/3*pi) -sin(4/3*pi);sin(4/3*pi) cos(4/3*pi)]*p_offs_1;

% plot diagram piston axes, 120 degrees angle to each other
plot([0 0],[0 axis_length],'-k')
plot([0 -axis_length*sin(2/3*pi)],[0 axis_length*cos(2/3*pi)],'-k')
plot([0 -axis_length*sin(4/3*pi)],[0 axis_length*cos(4/3*pi)],'-k')

% loop for each angular position:

for a=-pi:pi/(nr_of_steps/2):pi

    A=[cos(a) -sin(a);sin(a) cos(a)]*[0;17]; % A = rotated crank shaft position
    cg_c=A;
    t=asin(A(1)/L); % angle from crank shaft to x=0 (top piston)
    B=[cos(t) -sin(t);sin(t) cos(t)]*[0;L]; % rotate top crank arm in place
    AB=[A(1)+B(1) A(2)+B(2)]; % AB = position of top wrist pin
    plot(A(1),A(2),'bs')
   
    cg_ca1=[A(1)+B(1)*(ca_offset/L);A(2)+B(2)*(ca_offset/L)];
    plot(cg_ca1(1),cg_ca1(2),'rs')
    plot([A(1) AB(1)],[A(2) AB(2)],'-r') % plot top crank arm from A to AB
    cg_p1=[AB(1)+p_offs_1(1);AB(2)+p_offs_1(2)];
    plot(cg_p1(1),cg_p1(2),'ks')
   
    % valve mass centered around valve pin
    cg_v=[cos(a) -sin(a);sin(a) cos(a)]*valve_pin;
    plot(cg_v(1),cg_v(2),'-ys') % plot orbital valve indicator
   
    % the top crank arm was the easy part, now we make a linear function of
    % the other two piston axes, then solve the equation for angle where it
    % intersects the wrist pin position of the crank arm. We get two
    % solutions as we intersect at two positions, determine the correct one
    % based on sign.
   
    % tan(30deg)=y/x, tan(pi/6)=y/x, y=x*tan(pi/6)

    % x=0:1:axis_length;
    % plot(x,-x*tan(pi/6),'-c') % this is the right hand cylinder axis
    % x=-axis_length:1:0;
    % plot(x,x*tan(pi/6),'-m') % this is the left hand cylinder axis

    % first solve equation, then evaluate expression, then remove imaginary
    % component
    g=real(eval(solve('L*sin(v)+A(2)=(L*cos(v)+A(1))*tan(pi/6)',v)));
    % evaluate both answers to determine the correct one
    v1=[cos(g(1)) -sin(g(1));sin(g(1)) cos(g(1))]*[L;0];
    v2=[cos(g(2)) -sin(g(2));sin(g(2)) cos(g(2))]*[L;0];
    if (v1(1)<0 && v1(2)<0) B=v1;
    else B=v2;
    end
   
    cg_ca2=[A(1)+B(1)*(ca_offset/L);A(2)+B(2)*(ca_offset/L)];
    plot(cg_ca2(1),cg_ca2(2),'ms')
    plot([A(1) A(1)+B(1)],[A(2) A(2)+B(2)],'-m')
    cg_p2=[A(1)+B(1)+p_offs_2(1);A(2)+B(2)+p_offs_2(2)];
    plot(cg_p2(1),cg_p2(2),'ks')

    g=real(eval(solve('L*sin(v)+A(2)=-(L*cos(v)+A(1))*tan(pi/6)',v)));
    v1=[cos(g(1)) -sin(g(1));sin(g(1)) cos(g(1))]*[L;0];
    v2=[cos(g(2)) -sin(g(2));sin(g(2)) cos(g(2))]*[L;0];
    if (v1(1)>0 && v1(2)<0) B=v1;
    else B=v2;
    end
   
    cg_ca3=[A(1)+B(1)*(ca_offset/L);A(2)+B(2)*(ca_offset/L)];
    plot(cg_ca3(1),cg_ca3(2),'cs')
    plot([A(1) A(1)+B(1)],[A(2) A(2)+B(2)],'-c')
    cg_p3=[A(1)+B(1)+p_offs_3(1);A(2)+B(2)+p_offs_3(2)];
    plot(cg_p3(1),cg_p3(2),'ks')
   
    % Centre of mass R of a system of particles of total mass M is defined
    % as their average of positions, r, weighted by their masses m.
   
    R=1/m_total*(cg_v*(m_valve+m_valve_pin)+(cg_p1+cg_p2+cg_p3)* ...
    (m_wrist_pin+m_wrist_pin_bushings+m_piston)+(cg_ca1+cg_ca2+cg_ca3)* ...
    m_crank_arm+cg_c*(m_crank+3*m_crank_bushings));
    plot(R(1),R(2),'ks')
end

axis equal
hold;
--- End code ---
PekkaNF:
Looking good. Radial moments should look symmetric anyways. What kind of moments do you get between the crank disks? I can't remember the english word for Kippmoment (DE). Long time ago I spoke to people who actually designed engines and if I remember correctly they were not that concerned balansing or vibration, but crankshaft wobling wildly and wearing damper out or snapping off somewhere. Don't remember much.

I'd like to see that engine build.

PekkaNF, annother coffee addict. I have cut down to four before lunch - on my workking days :beer:
Kjetil:
Pekka,
Kippmoment translates to "overturning moment" by google translator, but I'm not quite sure that's an accurate translation. Searching around brings up mainly building stability articles and this how-to, amongst other things referring to the Miles equation, but I can't immediately make much sense of it (then again, I'm not exactly a mechanics wiz). I text messaged a German friend of mine with the term but she's probably at school right now, don't know if she can help me out though, she's not a technician.

Another thing that boggles me when it comes to rotational physics and moment of inertia etc is the crank arms and pistons, in the sense that they are linked to the rotating system, but not directly a part of it as they don't rotate. All I've done so far is look at the mass locations over time, not the forces at play (centrifugal, piston acceleration, etc).

As a curiousity; In the Matlab plot I posted previously, the overall centre of gravity seems to be a circle centered around the origin, but it's actually off center by a tinsy bit (x=-0.0870mm, y=0.3352mm)  :zap: I'm not sure why this is, if it could be a numerical error somewhere. I averaged (min+max)/2 values for both axes over a cycle with 0.25 degrees resolution, since I noticed the vector length from origin to each plotted point varied. It would not pose a problem to perfect primary balancing though, but I'd like to understand why it's not perfectly centered.

Anyways, the crank casing is coming nicely together in SolidWorks, and I'll be ready to have it cut in not too long. The first small step of the actual hardware work  :beer:

And good luck on your coffee cutdown, I know I too should set myself such a goal one of these days  :coffee:

EDIT: the plot is not a perfect circle even when centered around it's mean value. Analyzing the circle (no offset added) I see i get a circle with a small hump where the crank shaft nears a cylinder. Or at least that's what I think I see judging from the numbers running down my screen. radius varies from 7.3mm between pistons to 8mm when crank shaft is near a piston (and thus the piston is at it's outer extremity).
Navigation
Message Index
Previous page

Go to full version