MBD Simulation on a Piston Assembly
MBD simulation on Piston assembly is to be done.
For this we need to make parts such as follows:
- Piston Head
- Wrist pin
- Connecting rod
- End cap
- Crank
All the above parts are assembled as required.
Motion studies are to be carried out in three scenarios:
0 mm offset
10 mm negative offset
10 mm positive offset
The offsets can be achieved by editing the mate feature between the axis of the crank and right plane. Set the distance between them as -10 mm, 0 and 10 mm for the required offset.
For the motion analysis:
Motor speed at 2000 rpm
Solid contact between the parts
Motion analysis frames per second 12000
Precise contact enabled
Run the analysis and plot the displacement magnitude against time for the top face of the piston.
Superimpose the graphs for zero, positive and negative 10 mm offset and draw conclusions.
Results:
This the superimposed graph.
Care has been taken to make sure that the initial displacement in each case is the same.
We can observe from the zoomed graph below that the stroke of the zero offset assembly is the lowest. Whereas the -10 and +10 offset assembly has the same stroke as is evident (these two graphs overlap).
However, the frequency of all the scenarios is the same since the input angular velocity is same and constant.
But the piston has to travel greater distance when it is in the offset condition, which suggests that the assembly comes under greater stress in these scenarios.
However, the piston doesn’t have to rely on the momentum to move from the TDC position in the zero-offset scenario.
The above results completely agree with the calculated results.
A MATLAB code was written to simulate similar conditions and the result is as shown below:
(The distance between the axis of crank and axis at which the crank and connecting rod is mated is 60 mm. The distance between the axis of the connecting rod to the top face of the piston is taken as 260 mm in the MATLAB simulation)
We can see that the stroke is symmetrical about the zero offset.
TDC decreases as we move away from the zero offset condition. But the reduction is mild.
BDC also decreases as we move away from the zero offset condition. But the reduction is very aggressive.
Thus, the overall effect is increase of the stroke length.
clc
clear all
close all
x0 = 0;
y0 = 0;
l1 = 260;
l2 = 60;
theta = linspace(0,360,361);
d_max = l1 - l2;
d = linspace(-d_max,d_max,(d_max*2)+1);
%finding all the displacements
for i = 1:d_max*2+1
for j = 1:361
x1(i,j) = -l2*cosd(theta(j));
y1(i,j) = l2*sind(theta(j));
x2(i,j) = -d(i);
y2(i,j) = (2*l2*sind(theta(j))+sqrt(4*l2^2*sind(theta(j))^2-4*(l2^2-2*d(i)*l2*cosd(theta(j))+d(i)^2-l1^2)))/2;
end
end
%finding the stroke for each d
for i = 1:d_max*2+1
TDC(i) = max(y2(i,:));
BDC(i) = min(y2(i,:));
stroke(i) = TDC(i) - BDC(i);
end
figure(1)
plot(d,stroke)
hold on
plot(d,TDC)
plot(d,BDC)
xlabel('offset (in mm)')
ylabel('legend (in mm)')
legend('stroke','TDC','BDC')
%animating the piston movement for every offset
for i = 1:d_max*2+1
for j = 1:361
figure(2)
plot([x0 x1(i,j)],[y0 y1(i,j)],[x1(i,j) x2(i,j)],[y1(i,j) y2(i,j)],'linewidth',3)
set(gca,'XTick',(-400:50:400))
set(gca,'YTick',(-400:50:400))
xlim([-400 400])
ylim([-400 400])
pause(0.000000000001)
end
end