Kinematic Analysis and Synthesis - XP

This mechanism is a relatively simple four bar mechanism. Since Link 2 is always vertical, the length can be determined to be the instantaneous radius of the cam plus the length of the link itself. This link length change is the input motion of the mechanism, and all variables are solved for based on the change in length.

The vector loop is shown in Figure 1 and the equation is 

From this equation, position, velocity and acceleration equations can be found. Those are as follows:

Position:

Velocity:

Acceleration:


Figure 1: Vector Loop of Mechanism


To use the equations above, the radius of the cam at every angle needs to be determined. The easiest way to do that is to use standard Matlab image processing functions, either built-in or simple calculations found online. Unfortunately, due to the complexity of the shape needed to be processed, the built-in functions were unable to provide a successful representation of the provided shape. Because of this, a GUI found on the MathWorks File Exchange called Grabit was used. While this GUI requires that the user manually select points around the boarder of the image, it was able to provide a much more accurate depiction of the correct shape. Figure 3 shows how Grabit point determination was completed at a similar point spacing to what was used in the kinematic calculation. When the entire border of the shape is completed, the vector of coordinates can be exported to Matlab. This same method was used to locate the center of the cam.

Figure 2: Cam image processing

Figure 3: Grabit screenshot

After the cam coordinates are found, the radius is calculated for each point. Because the radius is changing, there is a velocity and acceleration associated with each point that must be calculated. As the radius is found graphically, the velocities and accelerations associated do not have an accompanying equation and must be calculated using numerical differentiation. The loop through the length of the radius vector for velocity and acceleration must be done separately as the end of the velocity vector is needed in the caluclation for the start of the acceleration vector.

Numerical Differentiation for finding r_dot
for i = 1:length(r)
	if i == 1
		r_dm1 = r(length(r));
		r_dp1 = r(i+1);
		ca_dm1 = crank_angle(length(r));
		ca_dp1 = crank_angle(i+1);
	elseif i == length(r)
		r_dm1 = r(i-1);
		r_dp1 = r(1);
		ca_dm1 = crank_angle(i-1);
		ca_cp1 = crank_angle(1);
	else
		r_dm1 = r(i-1);
		r_dp1 = r(i+1);
		ca_dm1 = crank_angle(i-1);
		ca_dp1 = crank_angle(i+1);
	end
	r_d(i) = (r_dp1 - r_dm1)/(ca_dp1 - ca_dm1);
end

From here, implementation of the vector loop equations can begin, iterating through as a function of r.

The end effector of this mechanism is an offset of Link 4, so the angular velocity and angular acceleration are the negative what is calculated for Link 4. Using these values, the calculations for position, velocity and acceleration of the end effector are straightforward and provide the graphs below.