L1 · PAI-150

Process parameters

Choose spindle speed, feed, and depth-of-cut that complete the cut with no overload and an acceptable surface-finish score, and state the trade-off each parameter drives.

01
Challenge

Try this first — before any explanation.

Your rough+finish plan reopens with parameters at deliberately wrong defaults (spindle_rpm=1200, feed_mm_min=600, depth_per_pass=6.0). Tune the three until the cut finishes with no OVERLOAD and finish_score ≥ 0.70. The defaults overload (6 mm depth in one bite), or crank feed too high and the floor scallops, or go tiny everywhere and run 5× par. Feel how they fight.

The Bench

Cut gauges are pure functions of the parameters (force ∝ feed×depth×material; finish ∝ feed/rpm). Tune the three numbers and run.

=0.70, not 2x par slow.\nmy_rough = dict(rpm=8000, feed=480, depth=2.0)\nmy_finish = dict(rpm=10000, feed=350, depth=1.0)\nrg = cut_gauges(**my_rough)\nfg = cut_gauges(**my_finish)\noverload = (rg['load'] > 95) or (fg['load'] > 95)\nfinish_score = fg['finish']\ncut_time = rg['time'] + fg['time']\nprint(f\"rough load={rg['load']}% finish load={fg['load']}% finish_score={finish_score} time={cut_time:.1f}\")","label":"3 — Your turn: tune rough + finish"},{"code":"np.random.seed(2202)\npar_time = 33.4\nproblems = []\nif overload:\n bad = 'rough' if rg['load']>95 else 'finish'\n d = my_rough['depth'] if bad=='rough' else my_finish['depth']\n problems.append(f'OVERLOAD: peak spindle load on {bad} pass (depth={d}). Force scales with depth - reduce depth_per_pass to <= 2.5 mm.')\nif finish_score < 0.70:\n problems.append(f'POOR_FINISH: finish_score {finish_score} (target 0.70). Lower finishing feed or raise rpm - finish improves as feed/rpm drops.')\nif max(rg['deflection'], fg['deflection']) > 0.05:\n problems.append('CHATTER: tool is bending - reduce feed or depth on the heavy pass.')\nif cut_time > 2.0*par_time:\n problems.append(f'SLOW: cut_time {cut_time:.0f} = {cut_time/par_time:.1f}x par - raise depth on the rough pass (finish there is not graded).')\n\nif not overload and finish_score >= 0.70 and cut_time <= 2.0*par_time and max(rg['deflection'],fg['deflection'])<=0.05:\n print(f'PASS - no overload, finish_score {finish_score} >= 0.70, time {cut_time:.0f}<=2x par. '\n 'depth_per_pass most directly drives spindle load.')\nelse:\n print('FAIL - ' + ' '.join(problems[:2]))","label":"4 — Autograder (seed 2202)"}],"intro":"Cut gauges are pure functions of the parameters (force ∝ feed×depth×material; finish ∝ feed/rpm). Tune the three numbers and run.","key":"manufacturing/process-parameters","kind":"python","title":"Process parameters"}">
PYTHON · NUMPY · IN-BROWSER

Process parameters

Cut gauges are pure functions of the parameters (force ∝ feed×depth×material; finish ∝ feed/rpm). Tune the three numbers and run.

02
Model

The idea, built visually.

Same toolpath, same tool — but how hard you push it is a separate decision, and you can't win on every front. Three knobs: spindle speed sets how fast the edge moves through metal, feed sets the bite per tooth, depth sets how much you hog at once — and depth is mostly what loads the tool.

The triangle: TIME, TOOL LIFE, FINISH. Push toward fast — big feed, deep cut — and force climbs until the tool overloads. Push toward smooth — light feed, light depth — and finish is beautiful but slow. No setting maxes all three. So split the budget the way you split the toolpath: hog hard while roughing, spin fast and skim light while finishing.

▣ Stage animation: A draggable point inside a TIME/TOOL-LIFE/FINISH triangle: dragged toward fast, the TOOL-LIFE vertex flashes OVERLOAD; toward smooth, TIME balloons; a balanced interior point glows green.

03
Guided practice

Build it up, step by step.

  1. Step A (worked): rough at rpm 8000 / feed 480 / depth 2.0 (hot and deep, ugly on purpose), finish at rpm 10000 / feed 350 / depth 1.0 (light + fast buys finish 0.82).
  2. Step B (fade): three broken sets — fix each with ONE move (depth too deep → OVERLOAD; feed too high → poor finish; everything tiny → SLOW).
  3. Step C (independent): tab_slot in steel with a ∅4 tool — derive rough+finish params from surface-speed and chip-load formulas.
04
Feedback

How the Bench grades your run.

PASS WHEN overload False (peak load ≤95%), deflection ≤0.05 mm, finish_score ≥0.70 on finished faces, cut_time ≤2.0× par, cut complete, on seed 2202.

  • OVERLOAD: peak spindle load 138% on rough pass (depth_per_pass=6.0). Force scales with depth — reduce depth to ≤2.5 mm or split into more Z levels.
  • POOR_FINISH: finish_score 0.52 (target 0.70). Scallops from feed 1500 — lower feed_mm_min or raise spindle_rpm.
  • CHATTER: deflection 0.082 mm — the tool is bending; reduce feed or depth; the combination is too aggressive for a ∅4 tool.
  • MATERIAL_MISMATCH: 8000 rpm gives ~100 m/min — too fast for steel (recommended ~30 m/min). Lower spindle_rpm to ~1900.
05
Retrieve & space

Bring back what you've already mastered.

  • From 2.1: can changing depth_per_pass ever change corner_radius_ok? → no; corner reachability is set by tool radius, not feeds/speeds.
  • From M1.2: steel vs aluminum changed your whole parameter window — the process plan is downstream of the M1 material choice.
  • Interleave: at rpm 10000, ∅6, compute surface speed (≈188 m/min) and judge it for aluminum (high-normal, fine).
06
Mastery gate

What you must demonstrate to advance.

On the steel tab_slot, rough+finish parameters grade to overload False, finish_score ≥0.70, complete True, cut_time ≤2.0× par — and answer 'which parameter most directly drives spindle load?' → depth_per_pass.

07
Project

How this feeds your build.

These parameters make each toolpath survivable and fast; in M5 cut_time rolls into station cycle time (throughput) and finish_score into yield.