Cam Calculations SOLVED! (But is there an easier way??)

Home Model Engine Machinist Forum

Help Support Home Model Engine Machinist Forum:

This site may earn a commission from merchant affiliate links, including eBay, Amazon, and others.


Well-Known Member
HMEM Supporting Member
Sep 4, 2019
Reaction score
North Carolina
Actually, the answer to the question in my topic title is, yes, there is an easier way, and that's actually how I started down this road.

Let's say you want to design a cam with curved flanks, and you have the following parameters:

the radius (or diameter) of the base circle;
the radius (or diameter) of the nose;
the maximum lift that the cam should exert;
the angle of duration during which the cam should exert lift.

With these parameters, you can generate the following diagram using any decent 2d CAD program that knows how to create tangent circles:


In this diagram, the heavy red line represents the desired cam; the green circle represents the base circle; the blue lines represent the angle of duration; the magenta circle represents the nose radius; and the cyan circles represent the cut that needs to be made using a boring bar to achieve the curved flanks - what I will call the "flank circles."

The issue here is for the curved flanks to transition smoothly into both the base circle and the nose radius. In order to achieve this perfect transition, the flank circles have to be tangent to both the base circle and the nose radius. As I said, with a 2d CAD program, this is trivial to achieve, and one can then take a measurement of the resulting flank circles to determine the radius needed on the boring bar to achieve this cut.

The problem is, every time you change your mind about any of the 4 parameters listed above, you have to redraw the diagram in the CAD program, and again take the measurement to find the new radius needed for the flank circle to cut the cam with the new parameters. Yes, not that big a deal ... but I wanted to automate the process.

It turns out that the 3d CAD program I use (FreeCAD) has a nifty system that lets you set up a spreadsheet of values, give any of those values a specific name, and then use those values to control the constraints in a sketch:

Screenshot from 2020-04-08 20-57-35.png

One can use these parameters to set various constraints and dimensions in a sketch (the parameters taken from the spreadsheet show up as orange dimensions) such that it will generate the desired cam:

Screenshot from 2020-04-08 21-03-25.png

And of course, one can extrude the sketch to produce a model of the cam:

Screenshot from 2020-04-08 21-03-53.png

It is like magic - change a parameter in the spreadsheet, and instantly the cam changes shape accordingly. Voila!

Except for one small problem - FreeCAD is doing essentially the same thing that the 2d CAD program is doing; it is generating the curved flanks as an arc of a circle (my so-called "flank circle," shown as a large blue circle in the sketch above) that is tangent to the base circle and the nose circle. What it doesn't automatically do is tell me what the radius of that flank circle turns out to be. You can see it in the sketch above as a red dimension, but here's the thing - to get that, I have to first constrain this circle to match the flanks, then remove that constraint, then constrain the radius without actually changing it, which finally gives me the red dimension shown. Why such an involved process? Because you can't have competing constraints - either the circle is constrained to be tangent (without showing the radius), or it is constrained to a given radius (which then will no longer automatically update when you change the parameters).

Okay, most of that last paragraph is probably as clear as mud, but I don't know how to describe it more clearly without walking someone through the process in FreeCAD. If there is interest, I could make a video, but I don't know how many people would actually find it useful ...

There may be a way to get this dimension from the 2d drawings that FreeCAD can generate from the automatically generated cam - but it is not obvious, because the large blue circle for which I want the radius is a "construction" circle that doesn't actually show up either in the displayed model or in the 2d drawings. (There may be another way to get at this - I'm still experimenting with it.)

I kept thinking there must be a way to calculate the radius of the flank circle - a simple calculation that takes into account the various parameters above and does whatever it is that the CAD programs are doing in the background to figure out the doubly-tangent circle. So ... I attempted to work out the math. If you are particularly masochistic, I have included a .pdf file that shows the calculations - but I warn you that they are not simple. I am guessing there IS a much simpler way to figure this out than I came up with, but I don't know what it is. If you know it, I sure do want to hear it!

Nonetheless, I did finally achieve the goal - as nasty as the calculations turned out to be, I finally wound up with something that could be coded into an Excel spreadsheet to generate a solution. I could not attach an Excel spreadsheet directly in this forum, but I could compress it into a .zip file and attach that. The spreadsheet lets you enter the parameters in the top left; it grinds through the calculations below that in a nanosecond or two; and it shows two possible solutions for the center and radius of a circle that is tangent to both the base circle and the nose circle. Why two? Because you could have a tangent circle on the "inside" of the base & nose circles. But the solution you (or at least, I) really want is the larger circle - this is, at last, the radius that needs to be set on the boring bar in order to cut the desired cam with the desired parameters.

Having read this, are you as exhausted as I am after spending way, way, way too much time trying to work this out???


  • Cam Calculations.pdf
    56 KB · Views: 454
  • cam
    5.9 KB · Views: 351
If it has helped, I am delighted! My hope was to emerge with a tool that would let me play with different designs and instantly see the results and have the data to make them.

Now I just need to know what the effect of the different parameters might have on the performance of the engine! I understand the duration and the lift (more-or-less), but I don't know what the trade-offs or advantages might be for one nose radius vs. another.
Aha! I also posted this on the ModelEngineMaker forum, and someone replied with - you guessed it - a much simpler way to do the calculations. The answer is in reply # 4 (see also #5) in this thread: Cam Calculations SOLVED! (But is there an easier way??)

I had suspected that the thing I was missing was some trigonometry - it has been too, too long since I took that class in high school, some 42 or 43 years ago. Sure enough, that is the key to the solution that AVTUR came up with.
Many moons ago I learned to design cams to drive production processes. What I remember is probably not really useful in the home manufacturing shed, but here it is: For a smooth running mechanism you do not only want to get smooth lift of the cam (travel) but also a gentle change in speed (velocity=differential of travel) and forces (acceleration=differential of speed) while the jerk (differential of acceleration) should be minimal, meaning zero. Doing the required differential calculus without computer is easiest when you take a sinus to go up from the base circle to the required lift resulting in a 'slanted-sinus' cam. When you have a computer an eleventh degree polynomial will yield even better results and thus eventual process speeds. Whatever the method of calculation the resulting cam-shape can only be produced by CNC milling followed bij CNC grinding. So the method described earlier above is probably much more practical.
awake !

Thanks for sharing !
I have a question (since a long time ago) - unrelated to this topic : "ModelEngineMaker forum" is a member limited forum?

minh-thanh, as best I can tell it functions about the same way that HMEM does - you register for free, and then you can post. Or you can just read it without registering, I think. It does use different forum software, but not hard to adapt.
awake - I'm trying to reproduce your work using OnShape 3D CAD. Can you help me understand your parameters. Looking at your CAD screenshot this is what I think I understand. Can you tell me if I have this right, and also how you are defining (in terms of CAD) the three ? parameters:

ID = small green circle (hub) diameter
BaseD = large green circle diameter
Lift = ? (distance between what two points?)
NoseD = small blue circle diameter
OD = ? (OD of what circle?)
ToNose = ? (distance between what two points?)

Angle = tangent points on BaseD
awake - I'm trying to reproduce your work using OnShape 3D CAD. Can you help me understand your parameters. Looking at your CAD screenshot this is what I think I understand. Can you tell me if I have this right, and also how you are defining (in terms of CAD) the three ? parameters:

ID = small green circle (hub) diameter
BaseD = large green circle diameter
Lift = ? (distance between what two points?)
NoseD = small blue circle diameter
OD = ? (OD of what circle?)
ToNose = ? (distance between what two points?)

Angle = tangent points on BaseD
I think I figured it out - had to sort out derived dimensions from inputs. I was able to create a parameter driven cam in OnShape using your input parameters. From that I could quickly generate a 2D drawing and sketch out the derived dimensions. Hope I got this right.

Thanks for your original work - very informative and useful

My CAD document is available here for any OnShape users out there:


I arrived at this thread a bit late and am bringing it back in case anyone is interested.

I have two Excel spreadsheets on my website for designing a three arc cam. Yeah, I know, I am beating my own drum, but these spreadsheets should be quite useful. They include a page which generates the data for milling the cam by step cutting. Three Arc – Carl Wilson

I am rebuilding this part of my website over the next several months so if you encounter difficulties, try again later. The rebuild will include a series of articles on cam design I wrote for Model Engine Builder several years ago and will eventually include other cam designs such as the constant acceleration profile.

There is a discussion of a custom racing cam over at Home Shop Machinist at this time: help machining camshaft - The Home Shop Machinist & Machinist's Workshop Magazine's BBS

Latest posts