D-90 Ross Yoke-drive Engine

Andy Ross of Columbus, Ohio has been designing and building small air engines since the 1970's, including extremely innovative Alpha designs. Refer to Andy Ross' delightful book: Making Stirling Engines (Ross Experimental, 1993). The D-90 Yoke-drive Alpha Stirling engine described in his book is used as the primary case study of this web resource. Matt Keveney has done an animation showing clearly the principles of operation of the Ross yoke linkage mechanism . This ingenious mechanism for transferring dual piston motion into rotational motion minimizes the piston side forces normally encountered on a regular crankshaft mechanism.


The D-90 Ross Yoke-drive engine at Ohio University


In order to do a simulation of the performance of the Ross Yoke-drive engine we need to evaluate the compression and expansion volume variations Vc and Ve as well as the volume derivatives d Vc and d Ve as functions of the crankangle θ. The equations shown here were derived in the section on Ross Yoke-drive volume variations and the main purpose of the function below is to fill in the values of the global variables required in order to enable evaluation of these equations.




   function 
yokedrive 
 
   % Ross yoke drive engine configuration 
 
 
   % Israel Urieli 4/14/02 
 
 
   global 
vclc vcle % compression, expansion clearance vols [m^3] 
 
 
   global 
vswc vswe % compression, expansion swept volumes [m^3] 
 
 
   global 
alpha % phase angle advance of expansion space [radians] 
 
 
   global 
b1 % Ross yoke length (1/2 yoke base) [m] 
 
 
   global 
b2 % Ross yoke height [m] 
 
 
   global 
crank % crank radius [m] 
 
 
   global 
dcomp dexp % diameter of compression/expansion pistons [m] 
 
 
   global 
acomp aexp % area of compression/expansion pistons [m^2] 
 
 
   global 
ymin % minimum yoke vertical displacement [m] 
 
 
   global 
new fid % new data file 
 
 
  fprintf( 'Ross yoke drive engine configuration\n' 
); 
 
   if 
(strncmp(new, 'y' 
,1)) 
 
   vclc = input( 
 
 
    'enter compression space clearance volume [m^3]: ' 
 
 
 
   ); 
 
 
   vcle = input( 
 
 
    'enter expansion space clearance volume [m^3]: ' 
 
 
 
   ); 
 
 
   b1 = input( 
 
 
    'enter Ross yoke height b1 [m]: ' 
 
 
 
   ); 
 
 
   b2 = input( 
 
 
    'enter Ross yoke length b2 (1/2 yoke base) [m]: ' 
 
 
 
   ); 
 
 
   crank = input( 
 
 
    'enter crank radius [m]: ' 
 
 
 
   ); 
 
 
   dcomp = input( 
 
 
    'enter compression piston diameter [m]: ' 
 
 
 
   ); 
 
 
   dexp = input( 
 
 
    'enter expansion piston diameter [m]: ' 
 
 
 
   ); 
 
 
   fprintf(fid, 
 
 
    '%.3e\n' 
 
 
 
   , vclc); 
 
 
   fprintf(fid, 
 
 
    '%.3e\n' 
 
 
 
   , vcle); 
 
 
   fprintf(fid, 
 
 
    '%.3e\n' 
 
 
 
   , b1); 
 
 
   fprintf(fid, 
 
 
    '%.3e\n' 
 
 
 
   , b2); 
 
 
   fprintf(fid, 
 
 
    '%.3e\n' 
 
 
 
   , crank); 
 
 
   fprintf(fid, 
 
 
    '%.3e\n' 
 
 
 
   , dcomp); 
 
 
   fprintf(fid, 
 
 
    '%.3e\n' 
 
 
 
   , dexp); 
 
 
   else 
 
 
   vclc = fscanf(fid, 
 
 
    '%e' 
 
 
 
   , 1); 
 
 
   vcle = fscanf(fid, 
 
 
    '%e' 
 
 
 
   , 1); 
 
 
   b1 = fscanf(fid, 
 
 
    '%e' 
 
 
 
   , 1); 
 
 
   b2 = fscanf(fid, 
 
 
    '%e' 
 
 
 
   , 1); 
 
 
   crank = fscanf(fid, 
 
 
    '%e' 
 
 
 
   , 1); 
 
 
   dcomp = fscanf(fid, 
 
 
    '%e' 
 
 
 
   , 1); 
 
 
   dexp = fscanf(fid, 
 
 
    '%e' 
 
 
 
   , 1); 
 
 
   end 
 
 
  acomp = pi*dcomp^2/4.0; 
 
  aexp = pi*dexp^2/4.0; 
 
  yoke = sqrt(b1^2 + b2^2); 
 
  ymax = sqrt((yoke + crank)^2 - b2^2); 
 
  ymin = sqrt((yoke - crank)^2 - b2^2); 
 
  vswc = acomp*(ymax - ymin); 
 
  vswe = aexp*(ymax - ymin); 
 
  thmaxe = asin(ymax/(yoke + crank)); 
 
  thmaxc = pi - thmaxe; 
 
  thmine = pi + asin(ymin/(yoke - crank)); 
 
  thminc = 3*pi - thmine; 
 
  alpha = 0.5*(thmaxc - thmaxe) + 0.5*(thminc - thmine); 
 
  phase = alpha*180/pi; 
 
  fprintf( '\nRoss yoke drive engine data summary:\n' 
); 
 
  fprintf( 'yoke height b1 %.1f [mm]\n' 
, b1*1e3); 
 
  fprintf( 'yoke length b2 (1/2 yoke base) %.1f [mm]\n' 
, b2*1e3); 
 
  fprintf( 'crank radius %.1f [mm]\n' 
, crank*1e3); 
 
  fprintf( 'compression piston diameter %.1f [mm]\n' 
, dcomp*1e3); 
 
  fprintf( 'expansion piston diameter %.1f [mm]\n' 
, dexp*1e3); 
 
  fprintf( 'comp clearance, swept vols %.1f, %.1f [cm^3]\n' 
, vclc*1e6, vswc*1e6); 
 
  fprintf( 'exp clearance, swept vols %.1f, %.1f [cm^3]\n' 
, vcle*1e6, vswe*1e6); 
 
  fprintf( 'ymin = %.1f(cm), ymax = %.1f(cm)\n' 
, ymin*1e2, ymax*1e2); 
 
  fprintf( 'alpha = %.1f(degrees)\n' 
, phase); 
 
   %============================================================== 
 
 

The rest of the define function modules include the heat exchangers, regenerator, operating parameters, working gas parameters and Schmidt analysis, and all are independent of the engine type. The complete data file that defines the Ross D-90 Yoke drive engine is ross90.dat .


Stirling Cycle Machine Analysis by Israel Urieli is licensed under a Creative Commons Attribution-Noncommercial-Share Alike 3.0 United States License

View Site in Mobile | Classic
Share by: