6.1 introduction to acceleration analysisconstans.pbworks.com/w/file/fetch/124784631/chapter...
TRANSCRIPT
1
Figure 1: A rigid body in pure rotation about a point pinned to ground.
6.1 Introduction to Acceleration Analysis
The next logical step in our development is to study the acceleration of points on a moving
linkage. According to Newton’s Second Law, forces are proportional to accelerations. Thus, if
we know the accelerations of every point on the linkage, we can predict the forces that the
linkage must withstand. This can be very important in cases where the linkage must move at
high speed; for example, in an automobile engine.
To begin our analysis, consider the single link shown in Figure 1. It has length b, is rotating with
angular velocity ω, and has angular acceleration α. If we write the position vector of point B in
the usual way, we have
𝐫𝐵 = 𝑏𝐞 (1)
where, recall
𝐞 = {cos 𝜃sin 𝜃
}
To find the velocity at point B, we differentiate rB with respect to time, as before.
𝐯𝐵 =
𝑑𝐫𝐵
𝑑𝑡= 𝑏𝜔𝐧
(2)
2
where we have used
𝑑𝐞
𝑑𝑡= 𝜔𝐧
as found in Section 4.3. To find the acceleration of point B, simply differentiate once more with
respect to time.
𝐚 =
𝑑𝐯
𝑑𝑡=
𝑑
𝑑𝑡(𝑏𝜔𝐧)
(3)
Before proceeding, let us consider which terms are constant, and which terms vary with time.
Constant b
Time-varying ω, θ, n
Since ω may not be constant, we must employ the product rule for differentiation
𝐚 =
𝑑
𝑑𝑡(𝑏𝜔𝐧) = 𝑏
𝑑𝜔
𝑑𝑡𝐧 + 𝑏𝜔
𝑑𝐧
𝑑𝑡
(4)
Define the time derivative of angular velocity ω as angular acceleration, α. Thus
𝐚 = 𝑏𝛼𝐧 − 𝑏𝜔2𝐞 (5)
where we have used
𝑑𝐧
𝑑𝑡= −𝜔𝐞
(6)
for the time derivative of the unit normal.
3
Figure 2: Acceleration of a point fixed on a link in pure rotation.
From Equation (5), it is apparent that the acceleration has two components. These components
are shown in Figure (2) where, the first component (𝑏𝛼𝐧) is tangential to the motion of point B,
and is called the tangential acceleration. Note that if the link is rotating at constant angular
velocity, then the angular acceleration and tangential acceleration are both zero.
The second component (−𝑏𝜔2𝐞) points toward the center of rotation and is called centripetal
acceleration. Centripetal acceleration is a byproduct of rotation – in order to rotate, a point must
accelerate towards the center of rotation. If the link does not rotate, then the angular velocity and
centripetal acceleration are both zero.
The tangential acceleration points in a direction normal to the unit vector 𝐞 and the centripetal
acceleration points in the direction opposite the unit vector e.
4
Figure 3: The link rotates with angular velocity ω and angular acceleration α, while the distance,
b, to the slider is a function of time.
Acceleration of a Moving Point on a Moving Link
Let us now examine a more general case. As seen in Figure 3, the slider is free to move inside a
slot in the rotating link. The point B is attached to the slider, and we wish to find an expression
for the acceleration of this point. The position vector to the slider is
𝐫𝐵 = 𝑏𝐞 (7)
Note that length b is not constant for this case, so we must use the product rule to find velocity.
To find the velocity at point B, we differentiate rB with respect to time, as before.
𝐯𝐵 =
𝑑
𝑑𝑡(𝑏𝐞)
(8)
using the product rule
𝐯𝐵 = �̇�𝐞 + 𝑏𝜔𝐧 (9)
To find acceleration, simply differentiate once more with respect to time.
𝐚𝐵 =
𝑑𝐯𝐵
𝑑𝑡=
𝑑
𝑑𝑡(�̇�𝐞 + 𝑏𝜔𝐧)
(10)
5
Before proceeding, let us consider which terms are constant, and which terms vary with time.
Constant nothing!
Time-varying b, �̇�, θ, ω, n, e
Thus, we must apply the product rule twice for each term
𝐚𝐵 =
𝑑�̇�
𝑑𝑡𝐞 + �̇�
𝑑𝐞
𝑑𝑡+
𝑑𝜔
𝑑𝑡𝑏𝐧 + 𝜔
𝑑𝑏
𝑑𝑡𝐧 + 𝜔𝑏
𝑑𝐧
𝑑𝑡
(11)
𝐚𝐵 = �̈�𝐞 + �̇�𝜔𝐧 + 𝑏𝛼𝐧 + �̇�𝜔𝐧 − 𝑏𝜔2𝐞 (12)
𝐚𝐵 = �̈�𝐞 + 2�̇�𝜔𝐧 + 𝑏𝛼𝐧 − 𝑏𝜔2𝐞 (13)
Each of these terms has a common name, as given below
𝛼𝑏𝐧 Tangential acceleration
−𝜔2𝑏𝐞 Centripetal acceleration
�̈�𝐞 Acceleration of slip
2�̇�𝜔𝐧 Coriolis acceleration
Figure 4: The four components of acceleration for the rotating link with slider.
6
The direction of each component is shown in Figure 4. The tangential and centripetal
acceleration are the same as for the rigid rotating link. The acceleration of slip gives the
acceleration of the slider relative to the slot. If you were sitting on the link as it rotated, you
would see the slider moving toward or away from you with acceleration �̈�. The Coriolis term
arises from the fact that an object must accelerate as it changes distance to the center of rotation
if it is to maintain a constant angular velocity. If the velocity inward or outward from the center
of rotation is zero, then the Coriolis term vanishes. To visualize the effect that Coriolis
acceleration might have, imagine a child standing two meters from the center of a spinning
merry-go-round. For convenience, assume that the angular velocity of the merry-go-round is a
constant 1 rad/s. The tangential velocity of the child is
𝑣𝑡1 = (2 m) (1
rad
s) = 2
m
s
(14)
If the child wishes to join her friend standing four meters from the center, she must match her
tangential velocity, which is
𝑣𝑡2 = (4 m) (1
rad
s) = 4
m
s
(15)
Thus, to join her friend, the child must accelerate in the tangential direction. But remember that
the Coriolis term depends upon the inward or outward velocity: if the child moves very slowly
toward her friend on the outside of the merry-go-round she might not notice the sideways
acceleration. But if she tries to move rapidly from the inner part of the merry-go-round to the
outer, the sideways acceleration (and the force that accompanies it) will likely knock her off
balance sideways. Thus, the effects of Coriolis acceleration can be somewhat counterintuitive,
but are always present when a body subject to rotation moves inward or outward from the center
7
of rotation.
We will encounter tangential and centripetal acceleration as we analyze the fourbar linkage. The
other two types of acceleration will appear during the analysis of the threebar and inverted slider-
crank. To recap, the total acceleration is made up of the four components shown in Table 1.
Note that the units of translational acceleration are all the same: m/s2.
Table 1: The four different types of translational acceleration.
Quantity Formula Units
Tangential acceleration angular acceleration × length rad⋅m/s2 = m/s2
Centripetal acceleration angular velocity2 × length (rad/s)2⋅m = m/s2
Acceleration of slip translational acceleration m/s2
Coriolis acceleration 2 × translational velocity × angular velocity (m/s)·(rad/s) = m/s2
Thus, if you encounter a term with a length multiplied by an angular velocity squared, it is very
likely to be a centripetal acceleration. Likewise, the appearance of a factor of 2 in an
acceleration formula is an almost certain sign of a Coriolis acceleration.
To summarize, we can see that acceleration analysis is considerably more complicated than
velocity analysis owing to the presence of centripetal and Coriolis acceleration. Luckily, the
vector loop procedure we have developed for velocity analysis can still be applied to acceleration
analysis with no modification.
8
Figure 5: Diagram of the threebar linkage showing angular velocities and accelerations.
6.1 Acceleration Analysis of the Threebar Slider-Crank
To conduct the acceleration analysis on the threebar linkage we proceed in the same manner as
we did for velocity analysis. We assume that we have performed a full position and velocity
analysis as described in the previous sections, and wish to find the acceleration of one or more
points on the linkage. Once we have found the slider’s angular acceleration, α3, and acceleration
of slip, �̈�, it is simple to use the expressions derived in the preceding section to find the desired
accelerations. The input to the linkage is, as always, the crank and we assume that the angular
acceleration of the crank is known.
We start by listing the known and unknown quantities in the analysis
Known = 𝑎, 𝑏, 𝑑, 𝜃2, 𝜃3, 𝜔2, 𝜔3, �̇�, 𝛼2
Unknown = 𝛼3, �̈�
9
Figure 6: Vector loop diagram for the threebar linkage.
Begin by writing the vector loop equation, as shown in Figure 6.
𝐫2 + 𝐫3 − 𝐫1 = 0 (16)
Or, in unit vector form
𝑎𝐞2 + 𝑏𝐞3 − 𝑑𝐞1 = 0 (17)
Differentiate this with respect to time
𝑎𝜔2𝐧2 + �̇�𝐞3 + 𝑏𝜔3𝐧3 = 0 (18)
Then, differentiate again. For clarity, we will proceed term by term. The first term differentiates
as
𝑑
𝑑𝑡(𝑎𝜔2𝐧2) = 𝑎
𝑑𝜔2
𝑑𝑡𝐧2 + 𝑎𝜔2
𝑑
𝑑𝑡(𝐧2)
= 𝑎𝛼2𝐧2 − 𝑎𝜔22𝐞2
(19)
The second term is a product of two functions of time, so that
10
𝑑
𝑑𝑡(�̇�𝐞3) =
𝑑�̇�
𝑑𝑡𝐞3 + �̇�
𝑑𝐞3
𝑑𝑡
= �̈�𝐞3 + �̇�𝜔3𝐧3
(20)
The third term is a product of three functions of time
𝑑
𝑑𝑡(𝑏𝜔3𝐧3) =
𝑑𝑏
𝑑𝑡𝜔3𝐧3 + 𝑏
𝑑𝜔3
𝑑𝑡𝐧3 + 𝑏𝜔3
𝑑𝐧3
𝑑𝑡
= �̇�𝜔3𝐧3 + 𝑏𝛼3𝐧3 − 𝑏𝜔32𝐞3
(21)
Adding the results together gives the acceleration equation for the threebar slider-crank
𝑎𝛼2𝐧2 − 𝑎𝜔22𝐞2 + �̈�𝐞3 + 2�̇�𝜔3𝐧3 + 𝑏𝛼3𝐧3 − 𝑏𝜔3
2𝐞3 = 0 (22)
The reader will recognize several familiar terms, including centripetal accelerations
(𝑎𝜔22𝐞2, 𝑏𝜔3
2𝐞3), tangential accelerations (𝑎𝛼2𝐧2, 𝑏𝛼3𝐧3) and even a Coriolis acceleration
(2�̇�𝜔3𝐧3). The term �̈� is known as the acceleration of slip, since it gives the acceleration of the
slider relative to the fixed pin D. As before, we move the known quantities to the right side of
the equation, and the unknowns to the left
�̈�𝐞3 + 𝑏𝛼3𝐧3 = −𝑎𝛼2𝐧2 + 𝑎𝜔22𝐞2 − 2�̇�𝜔3𝐧3 + 𝑏𝜔3
2𝐞3 (23)
And finally, put this into matrix form for solution in MATLAB
𝐂𝛂 = 𝐝 (24)
where
𝐂 = [𝑏𝐧3 ⋮ 𝐞3] (25)
𝛂 = {𝛼3
�̈�} 𝐝 = −𝑎𝛼2𝐧2 + 𝑎𝜔2
2𝐞2 − 2�̇�𝜔3𝐧3 + 𝑏𝜔32𝐞3 (26)
You may have noticed that the C matrix is identical to the A matrix found earlier for the velocity
analysis. This is no coincidence – this matrix is called the Jacobian matrix. It is formed by
taking the first derivative of the constraint equations in (18). We will encounter a similar
11
phenomenon when we conduct the acceleration analysis of the remaining linkages. Jacobian
matrices and constraint equations are the subjects of more advanced courses in kinematics and
are beyond the scope of this text, although they do appear, and are briefly discussed, in the
Newton-Raphson algorithm in Section 4.18.
Figure 7: Example threebar linkage used to develop the MATLAB code.
Computing the Accelerations using MATLAB
We will now implement the acceleration matrix equation in MATLAB in order to calculate the
acceleration of any point on the threebar linkage. Start by opening your threebar velocity
analysis code. Use Save As to save the file as
Threebar_Acceleration_Analysis.m. As an example, we will consider the same
12
linkage we have used for the position and velocity analysis codes in earlier sections (see Figure
7). We will assume a constant angular velocity for the crank, so that its angular acceleration is
zero. Add the a0 and alpha2 variables to their respective positions as shown below.
% Threebar_Acceleration_Analysis.m
% Conducts an acceleration analysis on the threebar crank-slider
linkage
% and plots the acceleration of point P
% by Eric Constans, June 1, 2017
% Prepare Workspace
clear variables; close all; clc;
% Linkage dimensions
a = 0.100; % crank length (m)
d = 0.150; % length between ground pins (m)
p = 0.300; % slider length (m)
% ground pins
x0 = [0;0]; % ground pin at A (origin)
xD = [d;0]; % ground pin at D
v0 = [0;0]; % velocity of origin
a0 = [0;0]; % accel of origin
% Angular velocity and acceleration of crank
omega2 = 10; % angular velocity of crank (rad/sec)
alpha2 = 0; % angular acceleration of crank (rad/sec2)
Now preallocate memory for the new variables associated with acceleration.
N = 361; % number of times to perform position calculations
[xB,xP] = deal(zeros(2,N)); % allocate space for position of B,P
[vB,vP] = deal(zeros(2,N)); % allocate space for velocity of B,P
[aB,aP] = deal(zeros(2,N)); % allocate space for accel of B,P
[theta2,theta3] = deal(zeros(1,N)); % allocate space for link angles
[omega3,alpha3] = deal(zeros(1,N)); % allocate space for vel and accel
[b,bdot,bddot] = deal(zeros(1,N)); % allocate space for b, bdot,
bddot
Inside the main loop, immediately after the velocity calculations, add the following lines of code:
% conduct acceleration analysis to solve for alpha3 and bddot
ac = a*omega2^2; % centripetal accel
at = a*alpha2; % tangential accel
bC = 2*bdot(i)*omega3(i); % Coriolis accel
bc = b(i)*omega3(i)^2; % centripetal accel
13
C_Mat = A_Mat;
d_Vec = -at*n2 + ac*e2 - bC*n3 + bc*e3;
alpha_Vec = C_Mat\d_Vec; % solve for angular
accelerations
alpha3(i) = alpha_Vec(1);
bddot(i) = alpha_Vec(2);
Here we have defined the variables ac, at, bC and bc to compute the centripetal, tangential and
Coriolis components of the accelerations that are on the right side of the matrix equation (the
known side). This makes the form of d_Vec much simpler to type and debug. Immediately
after the main loop we will use the Derivative_Plot function to validate our solution for
alpha3 and alpha4.
dt = 2*pi/((N-1)*omega2); % time increment between calculations
Derivative_Plot(theta2, omega3, alpha3, dt)
14
Figure 8: The estimated and analytical values of α3.
15
Figure 9: Calculated and estimated values of �̈�.
Figure 8 shows the computed and estimated angular acceleration of the slider for the example
problem we have been considering. Figure 9 shows the same plot for the acceleration of slip for
the slider (�̈�). Make sure that your plots are the same as those shown in Figure 8 and Figure 9
before continuing with the analysis.
Acceleration at the pins
We will employ the relative acceleration formula to compute the translational acceleration at the
pins. As with velocity and position, we will create a separate function to compute acceleration.
Open up a new MATLAB script and enter the following function:
% Function FindAcc.m
16
% Calculates the translational acceleration of a point on the linkage
% using the relative acceleration formula
%
% a0 = acceleration of first point
% L = length of vector to second point on the link
% omega = angular velocity of link
% alpha = angular acceleration of link
% e = unit vector btw first and second points
% n = unit normal to vector btw first and second points
% a = acceleration of second point
function a = FindAcc(a0, L, omega, alpha, e, n)
a = a0 + L*alpha*n - L*omega^2*e;
As before, this is a very simple function, but it will make the main program much neater and
easier to follow. In the main program, use the following lines of code to calculate translational
accelerations
% calculate acceleration at important points on linkage
aB(:,i) = FindAcc( a0, a, omega2, alpha2, e2, n2);
aP(:,i) = FindAcc(aB(:,i), p, omega3(i), alpha3(i), e3, n3);
Of course, you should check your work for each of the accelerations using the
Derivative_Plot routine.
17
Figure 10: Acceleration of point P on the example threebar linkage.
Figure 10 shows the x and y accelerations of the point P on the example threebar linkage. Make
sure that your accelerations match the figure before proceeding to the homework problems. As
we have seen, conducting the full acceleration analysis on the threebar linkage requires only a
few additional lines of code once the position and velocity analyses are complete. This will also
be the case for the other linkages we will analyze in the next few sections.
18
Figure 11: Vector loop diagram for the slider-crank linkage showing angular velocities and
accelerations.
6.3 Acceleration Analysis of the Slider-Crank
The acceleration analysis for the slider-crank proceeds in a similar manner as the threebar. We
begin, as usual, with the vector loop equation for the slider-crank.
𝐫2 + 𝐫3 − 𝐫4 − 𝐫1 = 0 (27)
or, in unit vector form
𝑎𝐞2 + 𝑏𝐞3 − 𝑐𝐞4 − 𝑑𝐞1 = 0 (28)
Differentiating this once, as we did before, we obtain the velocity equation.
𝑎𝜔2𝐧2 + 𝑏𝜔3𝐧3 − �̇�𝐞1 = 0 (29)
Differentiate this once more to obtain the acceleration equation. The first two terms are familiar
from the threebar linkage
𝑑
𝑑𝑡(𝑎𝜔2𝐧2) = 𝑎𝛼2𝐧2 − 𝑎𝜔2
2𝐞2 (30)
19
𝑑
𝑑𝑡(𝑏𝜔3𝐧3) = 𝑏𝛼3𝐧3 − 𝑏𝜔3
2𝐞3 (31)
Recall that �̇� in Equation (29) represents the velocity of the piston; its derivative is simply the
acceleration of the piston.
𝑑
𝑑𝑡(�̇�) = �̈�
(32)
Adding the terms together gives the acceleration equation
𝑎𝛼2𝐧2 − 𝑎𝜔22𝐞2 + 𝑏𝛼3𝐧3 − 𝑏𝜔3
2𝐞3 − �̈�𝐞1 = 0 (33)
It is useful again at this point to take stock of what variables we know, and which are unknown.
As before, we assume that a full position and velocity analysis has been performed, so that we
know
Known: 𝑎, 𝑏, 𝑐, 𝑑, 𝜃2, 𝜃3, 𝜔2, 𝜔3, 𝛼2
Let the crank be driven by a motor with known speed and angular acceleration, ω2, α2. The only
unknown quantities in Equation (33) are
Unknown: 𝛼3, �̈�
Before assembling the matrices, let us move the known quantities to the right side of the
equation, and the unknown quantities to the left.
𝑏𝛼3𝐧3 − �̈�𝐞1 = −𝑎𝛼2𝐧2 + 𝑎𝜔22𝐞2 + 𝑏𝜔3
2𝐞3 (34)
Now rearrange this equation into matrix form, so that we can use MATLAB to solve it.
𝐂𝛂 = 𝐝 (35)
where
𝐂 = [𝑏𝐧3 ⋮ −𝐞1] 𝛂 = {𝛼3
�̈�}
(36)
and
20
𝐝 = {−𝑎𝛼2𝐧2 + 𝑎𝜔22𝐞2 + 𝑏𝜔3
2𝐞3} (37)
Figure 12: Dimensions of the slider-crank used in the example calculations.
Example 1: Slider-crank with constant crank angular velocity
Figure 12 shows the dimensions of the slider-crank mechanism we have used in earlier chapters.
Copy your slider-crank velocity analysis code to a file named
SliderCrank_Acceleration_Analysis.m and modify it with the matrix equations
given above. If you use the Derivative_Plot function to verify your values for α3 you should
obtain the plot shown in Figure 13. The acceleration of the piston for this example is shown in
Figure 14.
21
Figure 13: Verification of the angular acceleration of the connecting rod, α3, for example 1.
22
Figure 14: Acceleration of the piston in Example 1.
A Note on the Angular Acceleration of the Crank
In the preceding section, and in the sections that follow, we have assumed that the crank rotates
at a constant angular velocity; i.e. 𝛼2 = 0. This would be the case if the linkage is operating in
the “steady state”; that is, the motor driving the crank has reached its operating speed and is no
longer accelerating. In some situations, however, we might be interested in calculating the
accelerations and forces on the linkage during the time the crank is “ramping up” to its desired
speed. In this situation the crank (and the rest of the linkage) would start from rest, and begin
accelerating as soon as the crank motor is turned on. In this case the angular acceleration of the
crank is no longer zero, and we must make a few modifications to the code to reflect this. Let us
23
consider now the case where the linkage starts from rest, and turning on the crank motor results
in a short sinusoidal pulse of crank acceleration. The pulse of acceleration lasts for a period T,
after which the crank moves at a constant angular velocity. Let the amplitude of the acceleration
pulse be A, so that
𝛼2 = 𝐴 (1 − cos (
2𝜋𝑡
𝑇))
(38)
for t < T and
𝛼2 = 0 (39)
afterward.
Figure 15: The crank is given a sinusoidal pulse of angular acceleration, starting from rest.
24
An example of such a pulse is shown in Figure 15, where the amplitude is 1rad/sec2 and the
period is 4 seconds. Note that the total height of the pulse is twice the amplitude, since the
cosine function ranges between -1 and 1.
To find angular velocity, we must integrate Equations (38) and (39). Equation (38) is integrated
over a period t = 0 to t = T, and we determine the constant of integration is zero by remembering
that the angular velocity of the crank is zero when t = 0.
𝜔2 = 𝐴𝑡 −
𝑇
2𝜋sin (
2𝜋𝑡
𝑇)
(40)
for t < T and
𝜔2 = 𝐴𝑇 (41)
for t > T.
25
Figure 16: The angular velocity of the crank resulting from the pulse of angular acceleration
described above.
The resulting angular velocity is shown in Figure 16. Note that ω2 starts at zero, and steadily
increases until it reaches its steady-state value of 4rad/sec. We now integrate once more to find
the crank angle
𝜃2 =
1
2𝐴𝑡2 +
𝑇2
4𝜋2(cos (
2𝜋𝑡
𝑇) − 1)
(42)
for t < T and
𝜃2 = 𝐴𝑇𝑡 −
𝑇2𝐴
2
(43)
Constants of integration are required in Equation (42) and Equation (43) to ensure that the crank
26
angle starts at zero at t = 0 and that it takes on the value θ2 = AT2/2 when t = T.
Figure 17: Crank angle resulting from the acceleration pulse described above.
The crank angle function given in Equations (42) and (43) is shown in Figure 17. As expected, it
starts at zero, and increases linearly after t = T.
Up to now, we have calculated and plotted positions, velocities and accelerations for a single
revolution of the crank. Since we are now considering non-steady-state condition, it will make
more sense to perform our calculations for a given length of time. Let us repeat the analysis of
the linkage in Example 1 using the sinusoidal crank acceleration given in Figure 15. We will
perform the calculations for 1000 time steps. Use Save As to rename your code
27
SliderCrank_Nonsteady_Acceleration_Analysis.m, then modify the upper part
of your code with the following statements.
N = 1000; % number of time steps to calculate
Since the angular velocity and acceleration of the crank are not constant, we must allocate space
in memory for their calculated values. Additionally, we will plot positions, velocities and
accelerations versus time, instead of crank angle as we did before. Add the following lines of
code to allocate the necessary memory.
omega2 = zeros(1,N); % angular velocity of crank (rad/sec)
alpha2 = zeros(1,N); % angular acceleration of crank (rad/sec2)
t = zeros(1,N); % time (sec)
Of course we must also change omega2 to omega2(i) and alpha2 to alpha2(i) inside
the main loop. Now let us define the crank acceleration pulse and time increment:
A = 1; % amp of crank angular accel pulse (rad/sec2)
T = 4; % period of crank angular acceleration (sec)
B = 2*pi/T; % freq of crank angular accel pulse (1/sec)
dt = 0.01; % time increment
We have also defined a variable B that stores the frequency of the crank pulse – this will make
the formulas for calculating crank angular velocity and position simpler in the main loop.
Inside the main loop, we will calculate the current time first, and use this value to determine the
current values of crank angular acceleration, angular velocity and angle. Some simple logic will
help to distinguish between the conditions during and after the pulse of angular acceleration.
t(i) = i*dt; % calculate time
if (t(i) <= T) % calculate crank angle, vel, accel for t < T
alpha2(i) = A*(1-cos(2*pi*t(i)/T));
omega2(i) = A*t(i) - (1/B)*sin(B*t(i));
theta2(i) = A*t(i)^2/2 + (1/(B^2))*(cos(B*t(i))-1);
else % calculate crank angle, vel, accel for t > T
alpha2(i) = 0;
omega2(i) = A*T;
28
theta2(i) = A*T*t(i) - T^2*A/2;
end
That’s it! You should now change the legends and title of your plot statements to reflect the fact
that the position, velocity and acceleration of the piston are being plotted with respect to time,
instead of crank angle.
Figure 18: Position of piston vs. crank angle for constant angular velocity
(repeated from Figure 39 in Chapter 4).
29
Figure 19: Position of piston vs. time for angular acceleration pulse.
30
Figure 20: Zoomed in view of piston position vs. time for angular acceleration pulse during
steady-state portion. Note similarity to Figure 18.
Figure 18 shows the position of the piston versus crank angle for the case of constant angular
velocity (this is the solution from the example in Chapter 4). Figure 19 and Figure 20 show the
piston position versus time resulting from the angular acceleration pulse discussed above. Figure
20 is a “zoomed in” version of Figure 19 showing one cycle of the steady-state motion. Note
that Figure 18 and Figure 20 are identical with the exception of the x-axis – this reinforces the
idea that using crank angle as the x-axis is identical to using time on the x-axis if the crank
angular velocity is constant.
31
Figure 21: Velocity of piston with constant crank angular velocity from the example in Chapter
5.
32
Figure 22: Velocity of piston vs. time for angular acceleration pulse.
33
Figure 23: Zoomed in view of piston velocity vs. time for angular acceleration pulse during
steady-state portion. Note similarity to Figure 21.
Figure 21 shows the velocity of the piston for constant angular velocity – this is the same plot as
was found in the example problem in Chapter 5. Figure 22 is the velocity of the piston for the
case of the angular acceleration pulse, and Figure 23 zoomed-in to show one cycle in the steady-
state portion of the simulation. Note the similarity between Figure 21 and Figure 23. The
absolute magnitude of the velocity is different in each case because the crank angular velocity
was set to 10rad/sec in the constant angular velocity case, but it only reaches 4rad/sec in the case
of the acceleration pulse.
34
Figure 24: Acceleration of piston for the crank angular acceleration pulse case.
35
Figure 25: Zoomed in view of piston velocity vs. time for angular acceleration pulse during
steady-state portion. Note similarity to Figure 14.
Finally, Figure 24 and Figure 25 show the acceleration of the piston for the angular acceleration
pulse. As before, Figure 14 and Figure 25 are off by a scaling factor because of the difference in
steady-state angular velocity of the crank.
To summarize, we have developed a method for calculating positions, velocities and
accelerations for the case when the crank has a non-constant angular velocity. To keep things
simple, we will assume a constant crank angular velocity in the sections that follow. As we have
seen, it is a relatively simple matter to convert to non-zero angular acceleration if that is required.
36
Figure 26: Vector loop diagram of the fourbar linkage showing angular velocities and
accelerations.
6.4 Acceleration Analysis of the Fourbar Linkage
To conduct the acceleration analysis on the fourbar linkage we proceed in the same manner as
the preceding linkages. The vector loop diagram for the fourbar is shown in Figure 26. We
begin by writing the vector loop equation
𝐫2 + 𝐫3 − 𝐫4 − 𝐫1 = 0 (44)
Or, in unit vector form
𝑎𝐞2 + 𝑏𝐞3 − 𝑐𝐞4 − 𝑑𝐞1 = 0 (45)
Differentiate this with respect to time
𝜔2𝑎𝐧2 + 𝜔3𝑏𝐧3 − 𝜔4𝑐𝐧4 = 0 (46)
Then, differentiate again. The first term differentiates as
37
𝑑
𝑑𝑡(𝜔2𝑎𝐧2) =
𝑑𝜔2
𝑑𝑡𝑎𝐧2 + 𝜔2𝑎
𝑑
𝑑𝑡(𝐧2)
= 𝛼2𝑎𝐧2 − 𝜔22𝑎𝐞2
(47)
The other terms proceed in a similar manner, so that the acceleration equation is
𝛼2𝑎𝐧2 − 𝜔22𝑎𝐞2 + 𝛼3𝑏𝐧3 − 𝜔3
2𝑏𝐞3 − 𝛼4𝑐𝐧4 + 𝜔42𝑐𝐞4 = 0 (48)
As before, move the known quantities to the right side of the equation, and the unknowns to the
left
𝛼3𝑏𝐧3 − 𝛼4𝑐𝐧4 = −𝛼2𝑎𝐧2 + 𝜔22𝑎𝐞2 + 𝜔3
2𝑏𝐞3 − 𝜔42𝑐𝐞4 (49)
And finally, put this into matrix form for solution in MATLAB
𝐂𝛂 = 𝐝 (50)
where
𝐂 = [𝑏𝐧3 ⋮ −𝑐𝐧4] (51)
𝛂 = {𝛼3
𝛼4} 𝐝 = −𝛼2𝑎𝐧2 + 𝜔2
2𝑎𝐞2 + 𝜔32𝑏𝐞3 − 𝜔4
2𝑐𝐞4 (52)
As before, the C matrix is identical to the A matrix found earlier for the velocity analysis.
38
Figure 27: Fourbar linkage used in the example calculations.
Computing the Accelerations using MATLAB
Start by opening your fourbar velocity analysis code. Use Save As to save the file as
Fourbar_Acceleration_Analysis.m. As an example, we will consider the same
linkage we have used for the position and velocity analysis codes in earlier sections, as shown in
39
Figure 27. We will assume a constant angular velocity for the crank, so that its angular
acceleration is zero. Modify your code to perform the matrix calculations given above, then
check the angular accelerations of the coupler and rocker using the Derivative_Plot
function.
Figure 28: The estimated and analytical values of α3.
40
Figure 29: Estimated and analytical values of α4.
Figure 8 shows the computed and estimated angular acceleration of the coupler for the example
problem we have been considering. Figure 9 shows the same plot for the angular acceleration of
the rocker. Make sure that your plots are the same as those shown in Figure 8 and Figure 9
before continuing with the analysis.
41
Figure 30: Acceleration of the point P on the coupler.
To find the acceleration of the point P on the coupler use the FindAcc function defined earlier.
Figure 30 shows the x and y components of the acceleration of point P for the example problem.
It is interesting to note that the acceleration is relatively large, with peaks above -4g, even for a
relatively low crank angular velocity. If the example fourbar were intended to move something
delicate, the large acceleration might be hazardous. This is one of the main reasons for
performing an acceleration analysis – we must always ensure that the objects being moved do
not experience excessive acceleration, especially if they are human beings!
As we have seen, conducting the full acceleration analysis on the fourbar linkage requires only a
42
few additional lines of code once the position and velocity analyses are complete. This will also
be the case for the other linkages we will analyze in the next few sections. The completed code
for fourbar acceleration analysis is presented below.
% Fourbar_Acceleration_Analysis.m
% Conducts an acceleration analysis on the fourbar linkage
% and plots the acceleration of point P
% by Eric Constans, June 14, 2017
% Prepare Workspace
clear variables; close all; clc;
% Linkage dimensions
a = 0.130; % crank length (m)
b = 0.200; % coupler length (m)
c = 0.170; % rocker length (m)
d = 0.220; % length between ground pins (m)
p = 0.150; % length from B to P (m)
gamma3 = 20*pi/180; % angle between BP and coupler (converted to rad)
% ground pins
x0 = [0;0]; % ground pin at A (origin)
xD = [d;0]; % ground pin at D
v0 = [0;0]; % velocity of origin
a0 = [0;0]; % accel of origin
% Angular velocity and acceleration of crank
omega2 = 10; % angular velocity of crank (rad/s)
alpha2 = 0; % angular acceleration of crank (rad/s^2)
N = 361; % number of times to perform position calculations
[xB,xC,xP] = deal(zeros(2,N)); % allocate space for pos of B, C, P
[vB,vC,vP] = deal(zeros(2,N)); % allocate space for vel of B, C, P
[aB,aC,aP] = deal(zeros(2,N)); % allocate space for acc of B, C, P
[theta2,theta3,theta4] = deal(zeros(1,N)); % allocate for link angles
[omega3,omega4] = deal(zeros(1,N)); % allocate for link angular vel
[alpha3,alpha4] = deal(zeros(1,N)); % allocate for link angular acc
% Main Loop
for i = 1:N
theta2(i) = (i-1)*(2*pi)/(N-1); % crank angle
% conduct position analysis to solve for theta3 and theta4
r = d - a*cos(theta2(i));
s = a*sin(theta2(i));
f2 = r^2 + s^2; % f squared
delta = acos((b^2+c^2-f2)/(2*b*c)); % angle between coupler and
rocker
43
g = b - c*cos(delta);
h = c*sin(delta);
theta3(i) = atan2((h*r - g*s),(g*r + h*s));
theta4(i) = theta3(i) + delta;
% calculate unit vectors
[e2,n2] = UnitVector(theta2(i));
[e3,n3] = UnitVector(theta3(i));
[e4,n4] = UnitVector(theta4(i));
[eBP,nBP] = UnitVector(theta3(i) + gamma3);
% solve for positions of points B, C and P on the linkage
xB(:,i) = FindPos( x0, a, e2);
xC(:,i) = FindPos( xD, c, e4);
xP(:,i) = FindPos(xB(:,i), p, eBP);
% conduct velocity analysis to solve for omega3 and omega4
A_Mat = [b*n3 -c*n4];
b_Vec = -a*omega2*n2;
omega_Vec = A_Mat\b_Vec; % solve for angular velocities
omega3(i) = omega_Vec(1); % decompose omega_Vec into
omega4(i) = omega_Vec(2); % individual components
% calculate velocity at important points on linkage
vB(:,i) = FindVel( v0, a, omega2, n2);
vC(:,i) = FindVel( v0, c, omega4(i), n4);
vP(:,i) = FindVel(vB(:,i), p, omega3(i), nBP);
% conduct acceleration analysis to solve for alpha3 and alpha4
ac = a*omega2^2;
bc = b*omega3(i)^2;
cc = c*omega4(i)^2;
pc = p*omega3(i)^2;
C_Mat = A_Mat;
d_Vec = ac*e2 + bc*e3 - cc*e4;
alpha_Vec = C_Mat\d_Vec; % solve for angular accelerations
alpha3(i) = alpha_Vec(1);
alpha4(i) = alpha_Vec(2);
% find acceleration of pins
aB(:,i) = FindAcc( a0, a, omega2, alpha2, e2, n2);
aC(:,i) = FindAcc( a0, c, omega4(i), alpha4(i), e4, n4);
aP(:,i) = FindAcc(aB(:,i), p, omega3(i), alpha3(i), eBP, nBP);
end
% plot the acceleration of point P
figure; hold on
plot(theta2*180/pi,aP(1,:),'Color',[153/255 153/255 153/255])
plot(theta2*180/pi,aP(2,:),'Color',[0 110/255 199/255])
legend('aPx','aPy','Location','Southeast')
44
title('Acceleration of point P on the fourbar linkage')
xlabel('Crank angle (degrees)')
ylabel('Acceleration (m/s^2)')
grid on
set(gca,'xtick',0:60:360)
xlim([0 360])
Figure 31: Vector loop diagram of the inverted slider-crank showing angular velocities and
accelerations.
6.5 Acceleration Analysis of the Inverted Slider-Crank
We begin, as always, with the vector loop equation
𝐫2 + 𝐫3 − 𝐫4 − 𝐫1 = 0 (53)
In unit vector form
𝑎𝐞2 + 𝑏𝐞3 − 𝑐𝐞4 − 𝑑𝐞1 = 0 (54)
Recall that θ4 = θ3 + δ and thus ω3 = ω4. Substituting this, and differentiating as we did earlier,
we have
45
𝑎𝜔2𝐧2 + �̇�𝐞3 + 𝑏𝜔3𝐧3 − 𝑐𝜔3𝐧4 = 0 (55)
To obtain the accelerations, we differentiate the above equation again, using the chain and
product rules where appropriate. The first term is simple
𝑑
𝑑𝑡(𝑎𝜔2𝐧2) = 𝑎𝛼2𝐧2 − 𝑎𝜔2
2𝐞2 (56)
The second term is slightly more complicated
𝑑
𝑑𝑡(�̇�𝐞3) = �̈�𝐞3 + �̇�𝜔3𝐧3
(57)
The third term is similar to the second
𝑑
𝑑𝑡(𝑏𝜔3𝐧3) = �̇�𝜔3𝐧3 + 𝑏𝛼3𝐧3 − 𝑏𝜔3
2𝐞3 (58)
And the fourth term is similar to the first term
𝑑
𝑑𝑡(𝑐𝜔3𝐧4) = 𝑐𝛼3𝐧4 − 𝑐𝜔3
2𝐞4 (59)
Adding these together, we obtain the acceleration equation for the inverted slider-crank
𝑎𝛼2𝐧2 − 𝑎𝜔22𝐞2 + �̈�𝐞3 + 2�̇�𝜔3𝐧3 + 𝑏𝛼3𝐧3 − 𝑏𝜔3
2𝐞3 − 𝑐𝛼3𝐧4 + 𝑐𝜔32𝐞4
= 0
(60)
The reader will recognize several familiar terms including three centripetal accelerations, three
tangential acceleration terms, an acceleration of slip and a Coriolis acceleration term. Now place
the knowns on the right side of the equation and the unknowns on the left.
�̈�𝐞3 + 𝑏𝛼3𝐧3 − 𝑐𝛼3𝐧4 = −𝑎𝛼2𝐧2 + 𝑎𝜔22𝐞2 − 2�̇�𝜔3𝐧3 + 𝑏𝜔3
2𝐞3 − 𝑐𝜔32𝐞4 (61)
Collecting terms, and placing this into matrix form, we have
𝐂𝛂 = 𝐝
where
𝐂 = [𝑏𝐧3 − 𝑐𝐧4 ⋮ 𝐞3]
46
𝛂 = {𝛼3
�̈�} 𝐝 = {−𝑎𝛼2𝐧2 + 𝑎𝜔2
2𝐞2 − 2�̇�𝜔3𝐧3 + 𝑏𝜔32𝐞3 − 𝑐𝜔3
2𝐞4}
Figure 32: Dimensions of the inverted slider-crank used in the example calculations.
Example Calculation using MATLAB
Figure 32 shows the example inverted slider-crank that we have used for position and velocity
47
analysis. Modify your inverted slider-crank velocity analysis code to perform the acceleration
calculations described above.
Figure 33: Acceleration of point P on the example inverted slider-crank linkage.
Make sure to check your alpha3 and bddot calculations using the Derivative_Plot
function. If all goes well, your plot for the x and y components of the acceleration at point P
should look like Figure 33.
48
Figure 34: Vector loop diagram of the geared fivebar linkage.
6.6 Acceleration Analysis of the Geared Fivebar Linkage
Our next acceleration analysis will be conducted on the geared fivebar linkage, whose vector
loop diagram is shown in Figure 34. Recall that the angle of link 5 (the second gear) is known as
a function of the crank angle, through the gear ratio
𝜃5 = −𝜌𝜃2 + 𝜑 (62)
where
𝜌 =𝑁1
𝑁2 (63)
is the gear ratio. If we differentiate this expression twice with respect to time, we arrive at the
acceleration ratio between the two gears
𝛼5 = −𝜌𝛼2 (64)
The vector loop equation in unit vector form is
49
𝑎𝐞2 + 𝑏𝐞3 − 𝑐𝐞4 − 𝑢𝐞5 − 𝑑𝐞1 = 0 (65)
Differentiating this twice with respect to time gives
𝑎𝛼2𝐧2 − 𝑎𝜔22𝐞2 + 𝑏𝛼3𝐧3 − 𝑏𝜔3
2𝐞3 − 𝑐𝛼4𝐧4 + 𝑐𝜔42𝐞4 − 𝑢𝛼5𝐧5 + 𝑢𝜔5
2𝐞5 = 0 (66)
Collecting all known terms on the right-hand side of the equation and rearranging into matrix
form results in a familiar formula
𝐂𝛂 = 𝐝 (67)
with
𝐀 = [𝑏𝐧3 ⋮ −𝑐𝐧4] (68)
𝐝 = [−𝑎𝛼2𝐧2 + 𝑎𝜔22𝐞2 + 𝑏𝜔3
2𝐞3 − 𝑐𝜔42𝐞4 + 𝑢𝛼5𝐧5 − 𝑢𝜔5
2𝐞5] (69)
and
𝛂 = {𝛼3
𝛼4}
(70)
As before, the C matrix is identical to the A matrix for the fivebar.
50
Figure 35: Dimensions of the geared fivebar used in the example calculations.
Example 1: Acceleration of point P on the geared fivebar
Figure 35 shows the dimensions of the geared fivebar linkage that we have used for position and
velocity analysis. Modify your fivebar velocity code to perform the matrix calculations above
and use it to plot the acceleration of point P.
51
Figure 36: Acceleration of point P for the example geared fivebar linkage.
Figure 36 shows the x and y components of the acceleration at point P for the example linkage.
Next, modify the dimensions of the linkage such that a = 150mm, u = 150mm and d = 200mm.
You might recall that we obtained discontinuities in the velocity plot with these dimensions
reflecting the fact that the point P made a sudden change in direction when θ2 = 180°.
52
Figure 37: Acceleration of point P with the modified dimensions. The discontinuities in the
velocity of point P have resulted in near infinite accelerations when θ2 = 180°
The resulting acceleration plot is shown in Figure 37. Observe the near infinite acceleration of
the point P when θ2 = 180°. Because acceleration is proportional to force, this behavior will
result in a sudden jolt in all of the pins when the linkage passes through this point. Clearly, this
is a design to be avoided!
53
Figure 38: The acceleration of point P is "normal" except at θ2 = 180°.
If we “zoom in” on the acceleration plot by using ylim([-400 400]) we see that the
acceleration of point P seems very ordinary except where θ2 = 180°. This demonstrates the
benefit of performing a kinematic analysis for the entire range of motion of the linkage. If we
had simply done the acceleration calculations at a few crank angles, we might have missed the
disaster that occurs when θ2 = 180°!
54
Figure 39: Vector loop diagram for the Stephenson Type I sixbar linkage.
55
Figure 40: Vector loop diagram for the Stephenson Type II sixbar linkage.
56
Figure 41: Vector loop diagram for the Stephenson Type III sixbar linkage.
Figure 42: Vector loop diagram for the Watt Type I sixbar linkage.
57
Figure 43: Vector loop diagram for the Watt Type II sixbar linkage
6.7 Acceleration Analysis of the Sixbar Linkage
We will conclude the chapter on acceleration by conducting an acceleration analysis of the sixbar
linkage. We present the full derivation for only the Stephenson Type I sixbar linkage because
the other linkages follow a similar pattern. The acceleration matrices and vectors are presented
for all five sixbar linkages at the end of this section. Recall that two vector loop equations are
required for each sixbar linkage. In Chapter 5 the velocity vector loop equation for the
Stephenson Type I sixbar linkage was found to be
𝑎𝜔2𝐧2 + 𝑏𝜔3𝐧3 − 𝑐𝜔4𝐧4 = 0 (71)
58
𝑝𝜔2𝐧𝐴𝐸 + 𝑢𝜔5𝐧5 − 𝑣𝜔6𝐧6 − 𝑞𝜔4𝐧𝐷𝐹 = 0 (72)
Differentiate this once more with respect to time to obtain the acceleration vector loop equations.
𝑎𝛼2𝐧2 − 𝑎𝜔22𝐞2 + 𝑏𝛼3𝐧3 − 𝑏𝜔3
2𝐞3 − 𝑐𝛼4𝐧4 + 𝑐𝜔42𝐞4 = 0 (73)
𝑝𝛼2𝐧𝐴𝐸 − 𝑝𝜔22𝐞𝐴𝐸 + 𝑢𝛼5𝐧5 − 𝑢𝜔5
2𝐞5 − 𝑣𝛼6𝐧6 + 𝑣𝜔62𝐞6 − 𝑞𝛼4𝐧𝐷𝐹 + 𝑞𝜔4
2𝐞𝐷𝐹 = 0 (74)
Since each link is rigid, we do not have any Coriolis or slip acceleration terms. Instead, each
moving link provides a centripetal and tangential acceleration term. Thus there are two
acceleration terms for each moving link in a given loop. Now collect all unknown terms on the
right side of the equations, and the known terms on the left.
𝑏𝛼3𝐧3 − 𝑐𝛼4𝐧4 = −𝑎𝛼2𝐧2 + 𝑎𝜔22𝐞2 + 𝑏𝜔3
2𝐞3 − 𝑐𝜔42𝐞4 (75)
−𝑞𝛼4𝐧𝐷𝐹 + 𝑢𝛼5𝐧5 − 𝑣𝛼6𝐧6 = −𝑝𝛼2𝐧𝐴𝐸 + 𝑝𝜔22𝐞𝐴𝐸 + 𝑢𝜔5
2𝐞5 − 𝑣𝜔62𝐞6 − 𝑞𝜔4
2𝐞𝐷𝐹 (76)
We now have four equations, with four unknowns
unknown: 𝛼3, 𝛼4, 𝛼5, 𝛼6 (77)
and we can arrange the equations into matrix form as before
𝐂𝛂 = 𝐝 (78)
where
𝐀 = [
𝑏𝐧3 ⋮ −𝑐𝐧4 ⋮ 𝟎21 ⋮ 𝟎21
𝟎21 ⋮ −𝑞𝐧𝐷𝐹 ⋮ 𝑢𝐧5 ⋮ −𝑣𝐧6]
(79)
𝐝 = {
−𝑎𝛼2𝐧2 + 𝑎𝜔22𝐞2 + 𝑏𝜔3
2𝐞3 − 𝑐𝜔42𝐞4
−𝑝𝛼2𝐧𝐴𝐸 + 𝑝𝜔22𝐞𝐴𝐸 + 𝑢𝜔5
2𝐞5 − 𝑣𝜔62𝐞6 − 𝑞𝜔4
2𝐞𝐷𝐹
} (80)
𝛂 = {𝛼3 𝛼4 𝛼5 𝛼6}𝑇 (81)
Of course, this set of equations is only valid for the Stephenson Type I sixbar linkage. A similar
analysis can be carried out for the other sixbar linkages, the results are seen in Table 2 and Table
3.
59
Table 2: C matrix for the one-degree-of freedom sixbar linkages.
Linkage C
Stephenson I [𝑏𝐧3 ⋮ −𝑐𝐧4 ⋮ 𝟎21 ⋮ 𝟎21
𝟎21 ⋮ −𝑞𝐧𝐷𝐹 ⋮ 𝑢𝐧5 ⋮ −𝑣𝐧6]
Stephenson II [
𝑏𝐧3 ⋮ −𝑐𝐧4 ⋮ 𝑢𝐧5 ⋮ 𝟎21
𝑝𝐧𝐵𝐸 ⋮ −𝑞𝐧𝐷𝐹 ⋮ 𝟎21 ⋮ 𝑣𝐧6]
Stephenson III [
𝑏𝐧3 ⋮ −𝑐𝐧4 ⋮ 𝟎21 ⋮ 𝟎21
𝑝𝐧𝐵𝐸 ⋮ 𝟎21 ⋮ 𝑢𝐧5 ⋮ −𝑣𝐧6]
Watt I [
𝑏𝐧3 ⋮ −𝑐𝐧4 ⋮ 𝟎21 ⋮ 𝟎21
𝑝𝐧𝐵𝐸 ⋮ −𝑞𝐧𝐷𝐹 ⋮ 𝑢𝐧5 ⋮ −𝑣𝐧6]
Watt II [𝑏𝐧3 ⋮ −𝑐𝐧4 ⋮ 𝟎21 ⋮ 𝟎21
𝟎21 ⋮ 𝑝𝐧𝐷𝐸 ⋮ 𝑢𝐧5 ⋮ −𝑣𝐧6]
Table 3: d vector for the one degree-of-freedom sixbar linkages.
Linkage d
Stephenson I {
−𝑎𝛼2𝐧2 + 𝑎𝜔22𝐞2 + 𝑏𝜔3
2𝐞3 − 𝑐𝜔42𝐞4
−𝑝𝛼2𝐧𝐴𝐸 + 𝑝𝜔22𝐞𝐴𝐸 + 𝑢𝜔5
2𝐞5 − 𝑣𝜔62𝐞6 − 𝑞𝜔4
2𝐞𝐷𝐹
}
Stephenson II {
−𝑎𝛼2𝐧2 + 𝑎𝜔22𝐞2 + 𝑏𝜔3
2𝐞3 − 𝑐𝜔42𝐞4 + 𝑢𝜔5
2𝐞5
−𝑎𝛼2𝐧2 + 𝑎𝜔22𝐞2 + 𝑝𝜔3
2𝐞𝐵𝐸 − 𝑞𝜔42𝐞𝐷𝐹 + 𝑣𝜔6
2𝐞6
}
Stephenson III {
−𝑎𝛼2𝐧2 + 𝑎𝜔22𝐞2 + 𝑏𝜔3
2𝐞3 − 𝑐𝜔42𝐞4
−𝑎𝛼2𝐧2 + 𝑎𝜔22𝐞2 + 𝑝𝜔3
2𝐞𝐵𝐸 + 𝑢𝜔52𝐞5 − 𝑣𝜔6
2𝐞6
}
Watt I {
−𝑎𝛼2𝐧2 + 𝑎𝜔22𝐞2 + 𝑏𝜔3
2𝐞3 − 𝑐𝜔42𝐞4
−𝑎𝛼2𝐧2 + 𝑎𝜔22𝐞2 + 𝑝𝜔3
2𝐞𝐵𝐸 − 𝑞𝜔42𝐞𝐷𝐹 + 𝑢𝜔5
2𝐞5 − 𝑣𝜔62𝐞6
}
60
Watt II {
−𝑎𝛼2𝐧2 + 𝑎𝜔22𝐞2 + 𝑏𝜔3
2𝐞3 − 𝑐𝜔42𝐞4
𝑝𝜔42𝐞𝐷𝐸 + 𝑢𝜔5
2𝐞5 − 𝑣𝜔62𝐞6
}
Some example solutions for the sixbar linkage
Figure 45 through Figure 53 show the dimensions and acceleration plots for the example sixbar
linkages we have studied in the earlier chapters. In each case, the angular velocity of the crank is
a constant 10rad/sec. Note that the Newton-Raphson method was used for the position analysis
of the Stephenson Type II sixbar linkage, but the acceleration analysis was carried out using the
matrix method described above. Be sure to check your answers against these plots before
completing the homework problems.
61
Figure 44: Dimensions of the example Stephenson Type I sixbar linkage.
62
Figure 45: Acceleration of point G on the example Stephenson Type I linkage.
63
Figure 46: Dimensions of the example Stephenson Type II sixbar linkage.
64
Figure 47: Acceleration of point E on the example Stephenson Type II linkage.
65
Figure 48: Dimensions of the example Stephenson Type III sixbar linkage.
66
Figure 49: Acceleration of point E on the example Stephenson Type III linkage.
67
Figure 50: Dimensions of the example Watt Type I linkage.
68
Figure 51: Acceleration of point G on the example Watt Type I linkage.
69
Figure 52: Dimensions of the example Watt Type II sixbar linkage.
70
Figure 53: Acceleration of point G for example Watt Type II linkage.
Summary
This concludes our study of acceleration analysis of single degree-of-freedom linkages. As we
have seen, acceleration analysis is a simple extension of velocity analysis, although the matrix
equations are considerably more complicated. Now that we can find the acceleration of any
point on a linkage we are ready to begin calculating forces and torques. The study of position,
velocity and acceleration provides a kinematic analysis of each linkage. In the next chapter we
will add forces and torques, giving us a dynamic analysis. We will see that dynamic analysis is
considerably more complicated than kinematic analysis, but by following a systematic procedure
we will be able to tackle each linkage in turn.
71
% Sixbar_S1_Acceleration_Analysis.m
% Conducts an acceleration analysis on the Stephenson Type I sixbar
% linkage and plots the acceleration of point G
% by Eric Constans, June 14, 2017
% Prepare Workspace
clear variables; close all; clc;
% Linkage dimensions
a = 0.070; % crank length (m)
b = 0.100; % coupler length (m)
c = 0.090; % rocker length (m)
d = 0.110; % length between ground pins (m)
p = 0.150; % length to third pin on crank triangle (m)
q = 0.150; % length to third pin on rocker triangle (m)
u = 0.120; % length of link 5 (m)
v = 0.160; % length of link 6 (m)
gamma2 = 20*pi/180; % internal angle of crank triangle
gamma4 = -20*pi/180; % internal angle of rocker triangle
% Ground pins
x0 = [ 0; 0]; % ground pin at A (origin)
xD = [ d; 0]; % ground pin at D
v0 = [ 0; 0]; % velocity of origin
a0 = [ 0; 0]; % acceleration of origin
Z21 = zeros(2,1);
% Angular velocity and acceleration of crank
omega2 = 10; % angular velocity of crank (rad/sec)
alpha2 = 0; % angular acceleration of crank (rad/sec^2)
% allocate space for variables
N = 361; % number of times to perform position calculations
[xB,xC,xE,xF,xG] = deal(zeros(2,N)); % position of B, C, E, F, G
[vB,vC,vE,vF,vG] = deal(zeros(2,N)); % velocity of B, C, E, F, G
[aB,aC,aE,aF,aG] = deal(zeros(2,N)); % acceleration of B, C, E, F, G
[theta2,theta3,theta4,theta5,theta6] = deal(zeros(1,N)); % angles
[omega3,omega4,omega5,omega6] = deal(zeros(1,N)); % velocities
[alpha3,alpha4,alpha5,alpha6] = deal(zeros(1,N)); %
accelerations
% Main Loop
for i = 1:N
% solve lower fourbar linkage
theta2(i) = (i-1)*(2*pi)/(N-1); % crank angle
r = d - a*cos(theta2(i));
s = a*sin(theta2(i));
f2 = r^2 + s^2;
72
delta = acos((b^2+c^2-f2)/(2*b*c));
g = b - c*cos(delta);
h = c*sin(delta);
theta3(i) = atan2((h*r - g*s),(g*r + h*s)); % coupler angle
theta4(i) = theta3(i) + delta; % rocker angle
% calculate unit vectors
[e2,n2] = UnitVector(theta2(i));
[e3,n3] = UnitVector(theta3(i));
[e4,n4] = UnitVector(theta4(i));
[eAE,nAE] = UnitVector(theta2(i) + gamma2);
[eDF,nDF] = UnitVector(theta4(i) + gamma4);
% solve for positions of points B, C, E, F
xB(:,i) = FindPos(x0,a, e2);
xC(:,i) = FindPos(xD,c, e4);
xE(:,i) = FindPos(x0,p,eAE);
xF(:,i) = FindPos(xD,q,eDF);
% solve upper fourbar linkage
xFB = xF(1,i) - xB(1,i); yFB = xF(2,i) - xB(2,i);
xEB = xE(1,i) - xB(1,i); yEB = xE(2,i) - xB(2,i);
beta = atan2(yFB, xFB);
alpha = atan2(yEB, xEB);
aPrime = sqrt(xEB^2 + yEB^2);
dPrime = sqrt(xFB^2 + yFB^2);
theta2Prime = alpha - beta; % virtual crank angle on upper fourbar
r = dPrime - aPrime*cos(theta2Prime);
s = aPrime*sin(theta2Prime);
f2 = r^2 + s^2;
delta = acos((u^2+v^2-f2)/(2*u*v));
g = u - v*cos(delta);
h = v*sin(delta);
theta5Prime = atan2((h*r - g*s),(g*r + h*s)); % coupler and rocker
angles
theta6Prime = theta5Prime + delta; % on upper fourbar
theta5(i) = theta5Prime + beta; % return angles to
fixed
theta6(i) = theta6Prime + beta; % fixed CS
% calculate remaining unit vectors
[e5,n5] = UnitVector(theta5(i));
[e6,n6] = UnitVector(theta6(i));
% calculate position of point G
xG(:,i) = FindPos(xE(:,i), u, e5);
% Conduct velocity analysis to solve for omega3 - omega6
A_Mat = [b*n3 -c*n4 Z21 Z21;
Z21 -q*nDF u*n5 -v*n6];
b_Vec = [-a*omega2*n2; -p*omega2*nAE];
omega_Vec = A_Mat\b_Vec;
73
omega3(i) = omega_Vec(1);
omega4(i) = omega_Vec(2);
omega5(i) = omega_Vec(3);
omega6(i) = omega_Vec(4);
% Calculate velocity at important points on linkage
vB(:,i) = FindVel( v0, a, omega2, n2);
vC(:,i) = FindVel( v0, c, omega4(i), n4);
vE(:,i) = FindVel( v0, p, omega2, nAE);
vF(:,i) = FindVel( v0, q, omega4(i), nDF);
vG(:,i) = FindVel(vE(:,i), u, omega5(i), n5);
% Conduct acceleration analysis to solve for alpha3 - alpha6
ac = a*omega2^2; at = a*alpha2;
bc = b*omega3(i)^2; cc = c*omega4(i)^2;
pt = p*alpha2; pc = p*omega2^2;
uc = u*omega5(i)^2; vc = v*omega6(i)^2;
qc = q*omega4(i)^2;
C_Mat = A_Mat;
d_Vec = [ -at*n2 + ac*e2 + bc*e3 - cc*e4;
-pt*nAE + pc*eAE + uc*e5 - vc*e6 - qc*eDF];
alpha_Vec = C_Mat\d_Vec;
alpha3(i) = alpha_Vec(1);
alpha4(i) = alpha_Vec(2);
alpha5(i) = alpha_Vec(3);
alpha6(i) = alpha_Vec(4);
% Calculate acceleration at important points on linkage
aB(:,i) = FindAcc( a0, a, omega2, alpha2, e2, n2);
aC(:,i) = FindAcc( a0, c, omega4(i), alpha4(i), e4, n4);
aE(:,i) = FindAcc( a0, p, omega2, alpha2, eAE, nAE);
aF(:,i) = FindAcc( a0, q, omega4(i), alpha4(i), eDF, nDF);
aG(:,i) = FindAcc(aE(:,i), u, omega5(i), alpha5(i), e5, n5);
end
% plot the acceleration of point G
figure; hold on
plot(theta2*180/pi,aG(1,:),'Color',[153/255 153/255 153/255])
plot(theta2*180/pi,aG(2,:),'Color',[0 110/255 199/255])
legend('aGx','aGy')
title('Acceleration of point G on the Stephenson Type I sixbar
linkage')
xlabel('Crank angle (degrees)')
ylabel('Acceleration (m/s2)')
grid on
set(gca,'xtick',0:60:360)
xlim([0 360])
74