Polynomial Cam Function (Derivation of Fifth-degree function) - Part 2
In [Polynomial Cam Function (Introduction) - Part 1], we discussed about fundamental of cam design and introduction of polynomial cam function. In this post, we’re going to derive the equation of fifth-degree polynomial cam function. We start from the general term of fifth-degree polynomial function as follows.
where:
s = displacement (mm)
b = cam angle in that sector (rad)
bm = total angle in that sector (rad)
We can find the velocity in mm/rad by derivative of displacement. Later we can change it to the time domain.
v = ds/db
v = c1/bm + 2c2/bm(b/bm) + 3c3/bm(b/bm)2 + 4c4/bm(b/bm)3 + 5c5/bm(b/bm)4
Rearrange to get,
Acceleration in mm/rad2 can be calculated by a = dv/db
a = 1/bm[2c2/bm + 6c3/bm(b/bm) + 12c4/bm(b/bm)2 + 20c5/bm(b/bm)3]
Rearrange to get,
Then we set the boundary conditions for the function. Let us introduce another parameter, hm.
where:
hm = total displacement in that sector (mm)
Applying boundary conditions:
(BC.1) At the beginning of movement, the displacement must start from 0 and has acceleration of 0. This is for connecting to another cam curves in other sectors. But we will leave the velocity at this point not equal to zero. Then we have more freedom to select the starting velocity. Of course, if the starting velocity is not zero, then we can’t connect it with dwell or cycloid functions because it will create discontinuity in velocity. But we will use it to connect with linear cam function or another fifth-degree polynomial curves.
At b = 0: s = 0, v = v0, and a = 0.
(BC.2) Then we set the boundary conditions at the end of the movement. The same approach applied here.
At b = bm: s = hm, v = v1, and a = 0
where:
v0 = starting velocity in that sector (mm/rad)
v1 = ending velocity in that sector (mm/rad)
Apply BC.1 into (eq.1)
0 = c0 + 0 + 0 + 0 + 0 + 0
So, c0 = 0
Apply BC.1 into (eq.3)
0 = 1/bm2[2c2 + 0 + 0 + 0]
Also, c2 = 0
Apply BC.1 into (eq.2)
v0 = 1/bm[c1 + 0 + 0 + 0 + 0]
Then c1 = bmv0
Apply BC.2 into (eq.1)
hm = 0 + c1 + 0 + c3 + c4 + c5
Substitute c1 = bmv0 and rearrange to get,
Apply BC.2 into (eq.3)
0 = 1/bm2[0 + 6c3 + 12c4 + 20c5]
Rearrange to get,
6c3 + 12c4 + 20c5 = 0
Or
Apply BC.2 into (eq.2)
v1= 1/bm[bmv0 + 0 + 3c3 + 4c4 + 5c5]
Rearrange to get,
Solve the simultaneous equations (eq.4, eq.5 and eq.6) for the values of constants c3, c4 and c5
(eq.6) – 3x(eq.4);
3c3 + 4c4 + 5c5 – 3c3 – 3c4 – 3c5 = bmv1 – bmv0 – 3hm + 3bmv0
(eq.5) – 3x(eq.4);
3c3 + 6c4 + 10c5 – 3c3 – 3c4 – 3c5 = 0 – 3hm + 3bmv0
(eq.8) – 3x(eq.7);
3c4 + 7c5 – 3c4 – 6c5 = -3hm + 3bmv0 + 9hm – 3bmv1 – 6bmv0
c5 = 6hm – 3bmv1 – 3bmv0
Substitute value of c5 into (eq.7)
c4 = -3hm + bmv1 + 2bmv0 – 2[6hm – 3bmv0 – 3bmv1]
c4 = -3hm + bmv1 + 2bmv0 – 12hm + 6bmv0 + 6bmv1
c4 = -15hm + 8bmv0 + 7bmv1
Substitute values of c4 and c5 into (eq.4),
c3 = hm – bmv0 + 15hm – bm(8v0 + 7v1) – 6hm + bm(3v0 + 3v1)
Therefore, the fifth-degree polynomial cam function becomes,
v = 1/bm[c1 + 3c3(b/bm)2 + 4c4(b/bm)3 + 5c5(b/bm)4]
a = 1/bm2[6c3(b/bm) + 12c4(b/bm)2 + 20c5(b/bm)3]
where:
We've derived the fifth-degree polynomial cam function with velocity and acceleration profiles that satisfies all boundary conditions as described earlier. Then we can use this cam function to design the timing diagram. Let's see how to use it in the next post.
s = c0 + c1(b/bm) + c2(b/bm)2 + c3(b/bm)3 + c4(b/bm)4 + c5(b/bm)5 ….. (eq.1)
where:
s = displacement (mm)
b = cam angle in that sector (rad)
bm = total angle in that sector (rad)
We can find the velocity in mm/rad by derivative of displacement. Later we can change it to the time domain.
v = ds/db
v = c1/bm + 2c2/bm(b/bm) + 3c3/bm(b/bm)2 + 4c4/bm(b/bm)3 + 5c5/bm(b/bm)4
Rearrange to get,
v = 1/bm[c1 + 2c2(b/bm) + 3c3(b/bm)2 + 4c4(b/bm)3 + 5c5(b/bm)4] ….. (eq.2)
Acceleration in mm/rad2 can be calculated by a = dv/db
a = 1/bm[2c2/bm + 6c3/bm(b/bm) + 12c4/bm(b/bm)2 + 20c5/bm(b/bm)3]
Rearrange to get,
a = 1/bm2[2c2 + 6c3(b/bm) + 12c4(b/bm)2 + 20c5(b/bm)3] ….. (eq.3)
Then we set the boundary conditions for the function. Let us introduce another parameter, hm.
where:
hm = total displacement in that sector (mm)
Applying boundary conditions:
(BC.1) At the beginning of movement, the displacement must start from 0 and has acceleration of 0. This is for connecting to another cam curves in other sectors. But we will leave the velocity at this point not equal to zero. Then we have more freedom to select the starting velocity. Of course, if the starting velocity is not zero, then we can’t connect it with dwell or cycloid functions because it will create discontinuity in velocity. But we will use it to connect with linear cam function or another fifth-degree polynomial curves.
At b = 0: s = 0, v = v0, and a = 0.
(BC.2) Then we set the boundary conditions at the end of the movement. The same approach applied here.
At b = bm: s = hm, v = v1, and a = 0
where:
v0 = starting velocity in that sector (mm/rad)
v1 = ending velocity in that sector (mm/rad)
Apply BC.1 into (eq.1)
0 = c0 + 0 + 0 + 0 + 0 + 0
So, c0 = 0
Apply BC.1 into (eq.3)
0 = 1/bm2[2c2 + 0 + 0 + 0]
Also, c2 = 0
Apply BC.1 into (eq.2)
v0 = 1/bm[c1 + 0 + 0 + 0 + 0]
Then c1 = bmv0
Apply BC.2 into (eq.1)
hm = 0 + c1 + 0 + c3 + c4 + c5
Substitute c1 = bmv0 and rearrange to get,
c3 + c4 + c5 = hm – bmv0 ….. (eq.4)
Apply BC.2 into (eq.3)
0 = 1/bm2[0 + 6c3 + 12c4 + 20c5]
Rearrange to get,
6c3 + 12c4 + 20c5 = 0
Or
3c3 + 6c4 + 10c5 = 0 ….. (eq.5)
Apply BC.2 into (eq.2)
v1= 1/bm[bmv0 + 0 + 3c3 + 4c4 + 5c5]
Rearrange to get,
3c3 + 4c4 + 5c5 = bmv1 – bmv0 ….. (eq.6)
Solve the simultaneous equations (eq.4, eq.5 and eq.6) for the values of constants c3, c4 and c5
(eq.6) – 3x(eq.4);
3c3 + 4c4 + 5c5 – 3c3 – 3c4 – 3c5 = bmv1 – bmv0 – 3hm + 3bmv0
c4 + 2c5 = -3hm + bmv1 + 2bmv0 ….. (eq.7)
(eq.5) – 3x(eq.4);
3c3 + 6c4 + 10c5 – 3c3 – 3c4 – 3c5 = 0 – 3hm + 3bmv0
3c4 + 7c5 = -3hm + 3bmv0 ….. (eq.8)
(eq.8) – 3x(eq.7);
3c4 + 7c5 – 3c4 – 6c5 = -3hm + 3bmv0 + 9hm – 3bmv1 – 6bmv0
c5 = 6hm – 3bmv1 – 3bmv0
c5 = 6hm – bm(3v0 + 3v1)
Substitute value of c5 into (eq.7)
c4 = -3hm + bmv1 + 2bmv0 – 2[6hm – 3bmv0 – 3bmv1]
c4 = -3hm + bmv1 + 2bmv0 – 12hm + 6bmv0 + 6bmv1
c4 = -15hm + 8bmv0 + 7bmv1
c4 = -15hm + bm(8v0 + 7v1)
Substitute values of c4 and c5 into (eq.4),
c3 = hm – bmv0 + 15hm – bm(8v0 + 7v1) – 6hm + bm(3v0 + 3v1)
c3 = 10hm – bm(6v0 + 4v1)
Therefore, the fifth-degree polynomial cam function becomes,
s = c1(b/bm) + c3(b/bm)3 + c4(b/bm)4 + c5(b/bm)5
It has velocity (v) and acceleration (a) as follows,v = 1/bm[c1 + 3c3(b/bm)2 + 4c4(b/bm)3 + 5c5(b/bm)4]
a = 1/bm2[6c3(b/bm) + 12c4(b/bm)2 + 20c5(b/bm)3]
where:
c1 = bmv0
c3 = 10hm – bm(6v0 + 4v1)
c4 = -15hm + bm(8v0 + 7v1)
c5 = 6hm – bm(3v0 + 3v1)
We've derived the fifth-degree polynomial cam function with velocity and acceleration profiles that satisfies all boundary conditions as described earlier. Then we can use this cam function to design the timing diagram. Let's see how to use it in the next post.
Comments