|
|
ASEE Illinois/Indiana Sectional ConferenceMarch 16-18, 1995
|
Gregory P. Neff, Mohammad A. Zahraee, James B. Higley
Purdue University Calumet
This paper illustrates how computer software and coordinate measuring
apparatus may be used to add a hands-on experience to the cam design portion of
a mechanism kinematics course. Students analyze existing commercial cams and
compare the results with mathematical models. The software written can also
analyze simple cam shapes such as curved arc cams or other shapes drawn on a
CAD system.
The design and kinematic analysis of flat plate cam mechanisms have appeal for students who recognize the use of these devices in automotive applications. The topic is usually introduced in mechanism kinematics or design courses in mechanical engineering and mechanical engineering technology curriculums.
Textbooks generally treat cam shape generation using a graphical paradigm that is laborious and repetitive. Traditional approaches are also limited to only a few types of follower displacement. Usually covered are constant velocity or acceleration, harmonic, and cycloidal follower displacements. These are either limiting cases usable only at low RPM or can be difficult and expensive to manufacture using the cam grinder method covered.
By ``reverse engineering'' we are referring to the process of obtaining engineering data by obtaining an existing example of a part or product not manufactured ``in house'' which is measured, tested, or analyzed. In industry, reverse engineering is often applied to competitors' products for comparison. In auto manufacturing, clay models can be reverse engineered to obtain shape information for the fabrication of dies for stamping sheet metal parts. To provide data for analysis, several cams from low horsepower 2-cycle lawnmower engines and a cam designed for a plastics manufacturing machine were obtained. The cams were measured on a Mitutoyo AE122 coordinate measuring machine (CMM) used in our metrology course. This manually operated CMM has capacity and is interfaced with an IBM PS/2 35SX. Two pieces of software are needed to produce an AutoCAD compatible file, Geopak 2000 version 2.0 and Scanpak to IGES version 2.01. These are available from the CMM manufacturer.
To do the measuring, the cam is placed on the CMM table and clamped down if necessary. A two millimeter diameter steel probe is then passed around the surface of the cam while the CMM records a data point after every movement using the scan feature in Geopak 2000. After generating the data, Scanpak to IGES writes the data to an IGES file as a splined curve. AutoCAD then uses its IGESIN command to read data into AutoCAD format. The whole process takes about five minutes per part.
The imported computer files from the CMM can be plotted directly in AutoCAD. A short AutoLISP program, shown as Program 1, was written to export the CMM data to the analysis program. The AutoLISP program extracts the coordinate shape information from the points defining the nodes of the polyline representing the cam shape at approximately one degree increments around the cam. These data are translated to a coordinate system having the center at the axis of rotation of the cam as origin and then written to an output file. To locate the axis of rotation of the cam we defined a 3-Point AutoCAD circle by selecting widely spaced points on the dwell circle. The inquiry menu was then used to locate the center.
Figure 1 shows the shape of one of the cams on the cam shaft of a 3 horsepower, nine cubic inch displacement Briggs and Stratton classic engine taken from a lawn mower. The figure is a graph of the data transferred to the analysis program. With a few AutoLISP routine modifications, circular-arc disk cams or other cam shapes drawn on the CAD system may be studied instead of starting with reverse engineering data.

The cam analysis software program was written in PC:Solve. Solve is described as a problem solving tool. It combines a flexible scratchpad interface with an intuitive programming language, a collection of single command graphics tools, and a versatile editor. Solve has hundreds of built-in functions and procedures. Hundreds more are included with the engineering learning kit MET students buy for an introductory computer course where they learn Solve. The derivative function makes it unnecessary to know numerical analysis when generating derivatives of the follower displacement corresponding to follower velocity, acceleration, and jerk. The usual method of treating cam velocity, acceleration, or jerk using a computer is to study only cam displacements which have displacements which are described in relatively simple mathematical terms. Such displacements can be differentiated in closed form, giving velocity, acceleration and jerk expressions which are then programmed into cam analysis programs available with textbooks or as separate packages. We could not find software available to teachers of design or mechanism kinematics which allows kinematic analysis of arbitrary cam shapes described in the form of CAD models or reverse engineering data.
The PC:Solve analysis program shown as Program 2, consists of a subroutine to read ASCII file data generated by the AutoLISP program, a few statements to change to polar coordinates, and a graphing and analysis subroutine. The graphing and analysis subroutine is taken from the PC:Solve program called CAM_MENU. It assumes a radial point cam follower geometry. Figure 2 shows the graphical output from PC:Solve for the lawn mower cam. The cam shaft is a casting with the cam surface neither ground smooth nor precisely shaped. The lack of precision in shape and the follower type account for the large jerk at about 240 degrees of cam rotation.
Short AutoLISP and PC:Solve programs coupled with coordinate measuring apparatus and software may be used to add a hands-on experience for the cam design and analysis portion of a mechanism kinematics course. The programs may also be used independently of the coordinate measuring hardware and software to analyze simple cam shapes such as curved arc cams or other shapes drawn on a CAD system.
(defun c:CAM3()
(setvar "cmdecho"1) (setq x (open "cam3.txt" "w")); Get the coordinates of the center of CAM (setq cen (getpoint "\n Enter the coordinate of center of CAM: ")); explode the cam to line segments (setq pol (entnext)) (command "explode" pol);set e to the first record in the database
(setq e (entnext));start the loop to look at every entity in the database
(while e;set enttype to group 0
(setq enttype (cdr (assoc 0 (entget e))));if the entity is line then set p to be the starting point of the line
(if (equal enttype "LINE") (progn (setq p (cdr (assoc 10 (entget e)))) (setq px (rtos (- (car p) (car cen)))) (setq py (rtos (- (cadr p) (cadr cen)))) (write-line px x) (write-line py x) ))
;do the loop again if there are more entities
(setq e (entnext e)) ))
camin ; Press enter on these two procedures to run the programcamout(x,y)
procedure('camin');DRDR (Dwell, Rise, Dwell, Return) Cam Design Program, Gregory Neff, 2/15/95;Purdue University Calumet, email: neff@nwi.calumet.purdue.edu
trigmode='degrees'
; Inputinput=readdata('CAM3.TXT') ;LISP file dataif SIZE(input)[1]/2-truncate(SIZE(input)[1]/2) GT .01 then input=removerow
&(input,SIZE(input)[1])
input=shaperow(input,SIZE(input)[1]/2,2) ;cam data from AutoCADx_coord=input[,1]
y_coord=input[,2]
y=sqrt(x_coord^2+y_coord^2) ;follower displacementx=find_angle(x_coord,y_coord) ;cam anglereturn
function('find_angle',x_coord,y_coord) ; 360 degree inverse tangent functionx=fill(?,SIZE(input)[1])
for i= 1 to SIZE(input)[1] do if x_coord[i] GT 0 then if y_coord[i] GE 0
then x[i]=atan(y_coord[i]/x_coord[i])for i= 1 to SIZE(input)[1] do if x_coord[i] GT 0 then if y_coord[i] LT 0
then x[i]=360 +atan(y_coord[i] /x_coord_[i]) for i= 1 to SIZE(input)[1] do if x_coord[i] LT 0 then x[i]=180+atan(y_coord[i]/x_coord[i])
return(x)
procedure('camout',x_,y_) ;analysis & graphing proceduregdefault
v=derivative(x_,y_) @ v[size(v)[1]]=v[1] ;velocitya=derivative(x_,v) @ a[size(a)[1]]=a[1] ;accelerationjerk=derivative(x_,a) @ jerk[size(jerk)[1]]=jerk[1]
xaxislabel= 'Cam Angle in Degrees'
yaxislabel= 'Displacement'
gtitle= 'Follower Radial Position'
gline(x_,y_) ;follower displacement graphyaxislabel = 'Vel, displ/deg'
gtitle= 'First Derivative- Velocity'
gline(x_,v) ;follower velocity graphyaxislabel= 'Accl, displ/deg^2'
gtitle='Second Derivative- Acceleration'
gline(x_,a) ;follower acceleration graphyaxislabel= 'Jerk, displ/deg^3'
gtitle= 'Third Derivative, Jerk'
gline(x_,jerk) ;follower jerk graphgtitle='Cam Shape from Follower Displacement'
x_coordinate=(y_)*sin(x_)
y_coordinate=(y_)*cos(x_)
xrefline=0 @ yrefline=0
xaxislabel='Both Axes in Inches' @ yaxislabel=' '
gline(x_coordinate,y_coordinate) ;cam shape graphreturn
\
Figure 2: Analysis
results