OSSO To-Do (the designer), ordered by learning sequence
Updated 2026-10-22 7:46 PM EDT (19a now points at tool_drop_mech_poc_v2b; earlier: added 14c pneumatic ball dispenser build and test). Each step depends only on what earlier steps teach. The tracks can run in parallel. The PnP track comes before ball tinning because the flux head needs a working Neptune 4 (item 9).
Laser and stencil track
- [ ] Laser setup. Check the red-dot/focus features and find the real focal distance.
- [ ] Center crosshair test (laser_align_v0_center, engrave only, existing film): find the galvo center and offset.
- [ ] Full alignment test (laser_align_v1): scale, distortion, smallest aperture.
- [ ] Print the stencil v2 frame, ring and lift (about 21h, 1.32kg). Can run in parallel with 1-3.
- [ ] Frame and film hold test with the existing 0.075mm film.
- [ ] First stencil cut: cut with no board, then insert the board and lift. Apply the queued drawing note (PENDING_ADJUSTMENTS.md).
- [ ] OSSO board etching calibration on the 5 PCBWay boards (shipped).
PnP track
- [ ] Plan the PnP stage 1 parts: probe mount, empty tray, ghost board engraving, G-code generator.
- [ ] Build one working Neptune 4 from the 2 parts units (ordered). Record the X carriage and hotend mount pattern for the flux head (item 15).
- [ ] Stage 1 motion test: probe from the tray to the ghost board.
Ball tinning track (0.25mm SAC305, stencil-free dispensing)
- [ ] Order the OSSO BR-G1 FR4 gear pocket discs. Fab files are ready in pcb/br_g1_v1 (router: br_g1_v1_gerbers.zip; laser: laser/br_g1_laser.step/.dxf). Confirm 0.3mm FR4 and ±0.05 thickness tolerance with the fab first (PCBWay standard is ±0.1 under 1mm), plus no mask, no silk, NPTH only.
- [ ] FIX before printing: the POC v2 hub D-boss has sharp corners, but the routed disc D-bore has R0.5 corners (1.0 bit). Add R0.5 corner relief or chamfer to the hub D-boss in cad/ball_dispenser_poc_v2, then re-run the fit check. (Not needed for laser-cut discs, which have sharp corners.)
- [ ] Resin print the ball dispenser POC v2 parts (base with grip, hub, hopper, lid). Wash holes with IPA, ream the chute with a 0.40 drill if needed, and lap the floor top flat.
-
[ ] POC v2 mechanical test (or POC v5: cad/ball_dispenser_poc_v5, BR-G2 carrier + 2x BR-C1 stainless covers + D-spindle; order BR-G2 x3 from pcb/br_g2_v1 and BR-C1 x2 from cad/ball_dispenser_poc_v5/br_c1) with 0.25mm SAC305 balls once the discs arrive: free spin, home-hole indexing, wiper action, and single-ball drop reliability (count drops per pocket pass, log misses and doubles). 14a. [ ] ~~POC v3 print~~ superseded by POC v4 (do not print v3: exit/fill sat on the bottom-disc pin-hole radial; no drive gear). Measure four BR-G1 discs (micrometer). FILE 3 teeth flush to root on each fixed disc before assembly (top disc: teeth at 0°, 16.4°, 343.6° = the tooth at the home hole and its two neighbors; bottom disc: teeth at 15.0°, 342.3°, 358.6° in assembled position = local teeth 0, 20, 21). Then resin print the POC v4 parts (cad/ball_dispenser_poc_v4: base with lobe and 1.90 post, hopper with lobe, lid, drive axle, top flange washer, knob). Ream the hopper shaft bore 3.30; check the D-shaft slides into a disc D-bore. Kapton shim ring is optional (gap set by the 3 M2 screws). 14b. [ ] POC v4 test with 0.25mm balls: turn the knob; middle disc turns smoothly through the drive gear (backlash ~0.07), fixed discs stay locked and never engage the drive gear, 15° fill (210°) to drop (195°), no doubles, blind bottom holes stay empty, home sighting through the R6/15° sight hole. Compare with v2 and pick one for the tinning test. 14c. [ ] Build and test the pneumatic-index dispenser (cad/ball_dispenser_pneumatic_v1, reusing BR-C1/BR-G2): print it, fit the 3799N21 O-ring, tune the stop sleeve to a 3.0 stroke, then run the BOM.md test plan (dry clicks, index repeatability ±0.05 at R8, 200 FILL/DROP pairs logging misses and doubles, puff seat rate, 1000-step endurance). Watch for forward overrun.
-
[ ] Flux syringe head design (concept: drawings/osso_flux_syringe_head_v1). Verify the mount pattern on the arrived Neptune 4 (item 9), then CAD and print the mount, pusher and syringe clamp. Wire the plunger to the E-stepper.
- [ ] Flux dot calibration under the camera: tacky gel flux, 22-25ga tip. Tune push volume, dwell, suck-back and tip height for about 0.3-0.5mm dots on 0402 pads, with no stringing. Check that a dot holds a 0.25mm ball. Backup if needed: pin transfer.
- [ ] Combined tinning test: flux dots, then balls dropped from the chosen POC (v2, v4 or v5) by hand onto the dots, then reflow with no parts. Camera-check the domed pads.
Test board track (universal tester; can start once the interposer is proven)
- [ ] Board ID scheme for every OSSO board (EEPROM or ID resistor on a known site) and the per-board pin map format the test script loads. The tester itself no longer depends on any one board's pinout.
- [ ] OSSO Test Board v2 design (concept: drawings/osso_test_board_v2; sizing: refs/test_board_matrix_sizing.md): 4x ADG2128 universal matrix + 8 fast-site bypasses + RP2350A, precision ADC and current source, e-fuse on the corner-post rail, quick clamp on the datum. Then the test script: board ID, interposer contact, shorts, continuity, power-up current, functional.
Combined-cell head track (folding tool drop)
19a. [ ] Needle retract feasibility test: build and test the mechanical-only tool-drop PoC (cad/tool_drop_mech_poc_v2b = v2 with a torsion return spring on the pivot and a side-plunger detent; v1 was past dead center and v2's spring and latch are superseded): print the 7 parts (STLs), and buy hardware from the designer's own lower-cost BOM (BOM.md McMaster numbers are reference only). Use manual air (regulator + push buttons). Expect to need about 15 psi or more to deploy (predicted 13.5 psi for a 1.3 margin); the torsion spring is made to order (McMaster number UNVERIFIED). Test the deploy action, the lock holding with air off, the unlock and return, the cycle count and tip repeatability. Add a stainless hard-stop insert only if the tip drifts. Update 2026-10-23: the v2d concept (single double-acting piston, EPM latch, no plunger, 60 psi) now has a CAD model, cad/tool_drop_mech_poc_v2d (7 printed parts + REF parts, BOM.md, fit_check.json PASS: no interference over the full sweep, deploy margin 3.15 / 2.52 / 2.46 at mu 0.2 / 0.3 / 1.5x, coil release margin 3.6+); build from it instead of v2b once the designer approves the changes listed in its BOM.md (EPM lowered to z -16.5, arm 32 mm, stop dowel moved, armature 1.88 mm SendCutSend plate).
Later
- [ ] Later: PnP stages 2-7, updating the PnP drawings, the site write-ups in a big batch, and the AI placement layer.
- [ ] Later: motorized ball dispensing head (from the POC v2 results); decide whether the paste machine shares the syringe head design.
- [ ] Later: separate machines for now (paste/flux dispensing, ball tinning, PnP), all on the common jig datum. Collapse them into one machine once each process is proven.
Waiting on: 2 Neptune 4 units, 5 PCBWay boards (shipped), ZXAKAOSI film (backup), BR-G1 discs (not yet ordered).
Integrated machine track (skeleton v1, 2026-10-25)
- [ ] Galvo working distance and focus depth: on the laser table, with the 150 lens, find the best-focus height (a ramp burn on film) and the depth of focus; record the lens-bottom-to-work distance and the beam-cone exit aperture. Feeds skeleton WD (placeholder 230) and I11 adjust range.
- [ ] Measure the laser source, galvo head and chiller (dimensions, beam port position, hose/cable bend radii) to replace the skeleton placeholders and settle source location (SKELETON_v1 Q1).
- [ ] Tray slide motion test: 2020 rails supported both ends, printed sliders vs V-wheels, a loaded tray with 0402 in nests; find the jerk/accel limit that keeps 0402 seated and the settle time for a pick (shuttle-per-pick cycle, Q3).
- [ ] Bed jerk test with placed (unreflowed) parts on flux: max Y accel before 0402/QFN shift on the 345 mm Y axis.
- [ ] Head Z-to-tray clearance check on hardware: verify the v2d folded belly height (46 above tip) and the folded needle reach (92 ahead of pivot) on the printed PoC, since the skeleton tray/lens clearances depend on them.
Integrated machine track (skeleton v2, 2026-10-25)
- [ ] (superseded by 32/40) Focus mount PoC (SKELETON_v2 §4): 2x 2020 uprights, printed carriage plate (or 6 mm Al), T8x2 screw with a printed nut block and knob, 4x M5 slot locks. Load with an about 7.5 kg dummy, 68 mm ahead of the plate. Check that it holds with the locks loose (no back-drive), plate tilt/sag at the top locks, and focus repeatability after re-locking (target ±0.1 at the lens).
- [ ] Needle station v3-B (vertical retract slide) feasibility: print one 22 mm station with a 46 mm needle slide (MGN5 or Ø3 pins in printed bushings), a +Z return spring and a latch. Measure tip XY repeatability over 500 cycles, the place-load stiffness (+Z) and the retract time; compare with v2d.
- [ ] Tray shuttle timing with back-out: measure the pick → back-out (30 mm, and 134 mm worst case) → place cycle time and the 0402 seating at that accel (extends TODO 25; feeds Q11).
- [ ] Chiller hose and source cable loop over the ±40 focus travel: bend radius, drag on the mount (adds to the 75 N), and a pass-through grommet seal for UV light.
Integrated machine track (skeleton v3, 2026-10-25)
- [ ] (2026-10-26: no T8x2/handwheel; manual slide + 2x M5 clamp, see 63) Focus column PoC (SKELETON_v3 §4, replaces the two-upright TODO 28 rig): one 2040 column hanging 216 mm from a 2020 cross member, printed carriage on an MGN12 rail with 2x MGN12H (no locks, 2026-10-25), arm saddle + cradle, T8x2 + printed handwheel. Load a 7.5 kg dummy with its CG 85 mm ahead of the column face. Measure lens tilt/sag on the MGN12 carriage, no back-drive with the motor off, focus repeatability (±0.02), and whether the 2020 diagonal brace is needed (tilt > 0.05).
- [ ] Check the real galvo for a top or rear input and the source-to-galvo flange (TODO 24): decides whether arm orientation B (540 W) is ever possible (Q12).
- [ ] Fume extraction test with the RIGHT-panel port (2026-10-26: moved from the top; Ø100 stub at Y 650 Z 500, external fan on the right): extractor flow (target ≥ 0.5 m/s across the field), smoke capture during a film burn with the door closed; check the airflow switch for interlock 6.
- (removed 2026-10-25, the designer: plain top duct, no nozzle or hood; capture is tested in TODO 34)
- (removed 2026-10-25, the designer: no focus locks; MGN12 guide + non-back-driving T8x2 + motor hold the carriage, so no lock-loose interlock)
Integrated machine track (skeleton v3b, 2026-10-25)
- [ ] Repeatability and backlash test, per axis (X, Y, Z head, focus, tray): dial indicator (0.001 mm) or the camera on a fiducial. Home, then 30 approaches to one point from each direction at the working speed; report the ±3σ repeatability (targets X/Y ±0.02, Z ±0.01, focus ±0.02, tray ±0.05) and the reversal error (backlash, target ≤0.02 after the anti-backlash nut). Repeat with the MGN12H preload checked and after 1000 cycles; log the home-switch repeatability separately.
- [ ] Lead accuracy map, X and Y: measure the T8x8 lead error every 10 mm over the full travel (camera on a glass scale or a calibrated board); store as firmware compensation (target ±0.03 after compensation from ±0.10-0.15 raw).
- [ ] Y screw whip/resonance check: run the Y axis (440 mm unsupported, both ends supported) up to 250 mm/s and listen/measure vibration with an accelerometer; confirm no whip below the 2100 rpm safe limit. Fall back to a 10 mm screw or SFU1204 ball screw only if it whips.
- (superseded 2026-10-26, the designer: focus is MANUAL, clamp + scale, no motor; see 63) ~~Focus NEMA17 drive (replaces the handwheel, TODO 32/36): T8x2 + rigid coupler + dual-shaft motor with a printed knob; home to the top switch (WD max). Measure the raise current at 75 N, missed steps over 100 up/down cycles, focus repeatability (±0.02), and that the unit stays put powered off.~~
- [ ] Column brace check (TODO 32 with the 2020 diagonal fitted): tilt at the lens under the 7.5 kg dummy with and without the brace.
- [ ] Multi-row tray test: 8 rows of 8 mm tape strips at 12 mm pitch; cycle row 1 (36 mm) and row 8 (120 mm) back-outs to 442; measure cycle time and strip/0402 seating (extends TODO 30).
- [ ] Electronics bay thermal test: laser driver + PSUs + 6 drivers in the 620 x 580 x 125 bay under the heated bed; log temperatures with the bed at reflow and the laser on; size the 2x 80 mm fans and any bed-underside heat shield.
- [ ] Laser cable service loop: route the real source cable from the bay riser (right side, Y 215) into the U loop; cycle the focus 500x over ±40, check bend radius, drag on the focus motor and no rub on the source end (2 mm gap in the model).
- [ ] Door (2026-10-26: opaque slide-up door, counterweighted, interlock on the right track): build the tracks, shoes, pulleys and counterweights; check it stays at any height, the brush seal is light-tight at 355 nm, the interlock cuts the laser before a 5 mm lift, and (2026-10-26 rev) the 360 x 165 load opening is enough for real jigs/carriers and tray strip loading with a gloved hand; no overhead (overall ~680 mm).
- [ ] Measure the laser PSU/controller box (the grey base): W x D x H, connector and vent faces, weight; confirm it fits the 300 x 200 x 100 bay placeholder (v3c, unmeasured). Also measure the galvo head (W x D x H, input port height) and the galvo-source adapter/collimator (length, diameter); v3c estimates galvo 110 x 110 x 120 and adapter Ø40 x 40.
- [ ] Tray T8x8 drive (v3c): MGN12 on the inner faces of the tray 2020s, POM anti-backlash nut on the bridge, front NEMA17; tune a jerk-limited (S-curve) profile so the strips do not shift; check repeatability ±0.02 at T 442.
- Measure the real DB25 and laser power connector backshells against the 90x50 pass-through cutout before cutting the panel.
- [ ] (10/25) Station E closed loop: fit the K-type MI Ø1.0 thermocouple on the nozzle (tip 4 mm above the exit) and run the heater on PID from it. Log nozzle vs outlet temperature, overshoot, settling time, and the 46 mm slider cycle effect on the reading (lead loop). Check for stepper noise on the lead in the chains.
- [ ] (10/25) Bay thermal with the moved mains filter (X 400-480, Y 340-395): log the filter case, SSR 2 and driver 5 temperatures with the hot-air heater at full duty for 30 min and the bed at reflow.
- [ ] (10/25) Tray sprocket pins: Ø1.4 steel pins in real EIA-481 8 mm tape (paper and embossed). Check that a strip drops on without forcing, the X play is about 0.1 mm, and pocket position error is under ±0.05 at the camera.
- [ ] (10/25) Laser & Optics mount v1: weigh the source, galvo and lens (7 / 1.5 / 0.6 kg assumed). Measure the galvo mounting face (threads on −Y?) and the adapter length. Then measure lens sag/tilt on the 6 mm carriage plate (MGN12H 70 apart) with a dial at the lens under the real load, and pointing drift on a target over 100 focus cycles (extends TODO 40/41).
- [ ] (10/25) Hot-air hose: get the real OD, min bend radius and length of the insulated hose. Check that it fits 50x20 at R60 and the riser gap (X 780-798 between the tray rail X 778 and the right panel X 800). Lay a 1.64 m mock-up along the route and measure it.
- [ ] (10/25) X chain under the beam: print the moving bracket and check the 4 mm arm-to-beam gap and the bracket stiffness (chain push-pull 3-5 N). Run 1000 X cycles at full speed and log any rubbing.
- [ ] (10/25) Measure the E-coupler entry: is a 90° PTFE elbow needed? The model has a 10 mm straight, which is short of R50.
- [ ] (10/25) Measure the bed heat-up and the 150 °C duty against the 11 min / 24% model. Log the carriage temperature after 30 min at 150 °C (target < 50 °C).
- (superseded 2026-10-26: slide-up door needs ~60 mm front, ~426 mm overhead; see 45) ~~Door: mock up the 766 mm front clearance at the install site, or trim the door/handle to 750 if needed.~~
- [ ] (10/25) Safety chain timing: with door open, E-stop, and duct fan off, the enable must drop in < 100 ms. Check against the external laser base's interlock input once its type is known.
- [x] (done 2026-10-26: sensor moved to Z 150-162 under the plate + FDM flag; sweep clean) frame_motion: the Y-min sensor body overlaps the bed carriage by 512 mm³ at Y 160 (top sweep). Move the sensor or check the flag/trigger geometry.
- [ ] (10/25) EMC: stepper and hot-air SSR noise on the K TC lead (tied to the hose) and the NTC in the Y chain. Log the readings with all axes moving.
- [ ] (10/25) Duct airflow: measure the dP at the taps with the chosen external fan, then set the dP-switch setpoint.
- [x] (done 2026-10-26) Add the 2020 x 773 shelf cross member to the frame_motion cut list and BOM.
Integrated machine track (2026-10-26)
- [ ] Manual focus clamp: torque the 2x M5 clamp bolts to 5 Nm and check no slip under 122 N down (9 kg source case) plus a 2 g bump; check the printed scale reads WD within ±0.2 against gauge blocks at 190/230/270.
- [ ] Foot-pedal interlock jack (W42): 2-wire dry contact (ASSUMED) in series with the force-guided enable relay contact; isolated 6.35 mm jack on the right panel. PENDING the designer checking the pedal wiring (contact type, NO/NC, any LED or common to PE).
- [ ] Laser coolant/cable: measure the real OD, min bend radius and length (ASSUMED OD 12, R60, 1.8 m). The inside run is 0.28 m; confirm the chiller/base position on the right leaves the rest of 1.8 m enough, and the R60 bends fit at the pass-through.
- [ ] Door counterweight (small door 0.39 kg, 2x 0.22 kg weights): drop stops added so a cord break only lets the door fall to closed; check the stops and EPDM pads on a mock-up, weigh the real door and trim the weights. (Gas/constant-force springs not needed at this size.)
- [ ] Fume capture with the side port: smoke test at the field during a film burn (replaces the top-port capture assumption).
- (v4 idea, NOT adopted, 2026-10-26) Bed lift: raise the bed instead of moving the focus. Logged for v4 only.
- [ ] Confirm the tallest jig/carrier and part height for the 165 mm opening (model: board top 223.6 + 15 TH, tray top 282.6, +75 hand room); if a jig is taller than ~285 above the floor datum (~73 above the plate), raise OPEN Z1 in enclosure.py.
- [ ] Design a cart for the integrated machine: it carries the chiller, the laser grey base and the external fume fan, with the machine on top. Requested by the designer, Oct 25, 2026 8:27 PM EDT. 70. [ ] the designer: tray right-front support is blocked by the tray drive. Accept the 3-block support (rear bridge + front-left block), or move the tray drive (e.g. belt-fold the motor below) to add a front-right block? 71. [ ] Fume: smoke-test the low inlet (Z 355) + Ø30 top bleed; drill the orifice to Ø40 if the top pocket stays hazy. 72. [ ] Tray v2: check the 300 mm PETG body flatness (lane floor ±0.1) and print bed size (300+ mm); split into 2 dovetailed halves if needed.
Run 4 / 4b (2026-10-26)
- [x] Cart designed (the cart item above is done): see cad/cart. Open: confirm the real chiller and laser base sizes and weights (ASSUMED 580x290x470 / 25 kg and 450x350x200 / 15 kg). CRITICAL: they set the cart height and the shelf fit.
- [ ] Cart height is 1466.5 mm (top panel; nothing above it). It fits under a wall shelf with its bottom at ≥ 58 in (1473 mm, 6.5 mm margin) and at 60 in (57.5 mm margin), but not at 54-56 in. Measure the real shelf slot (height, depth, and the bench gap width ≥ 915 mm + the side fan).
- [ ] Push stability on castors is SF 0.92 front/back (ASSUMED 20%-W / 250 N criterion): lower the leveling feet when parked (SF 1.17). Confirm the criterion and use.
- [ ] Lowest shelf crossbars (3x 2020) deflect ~1.24 mm under the chiller: check on the build, or switch to 2040 if the chiller feet sit mid-span.
- [ ] Cross1 (2020 laser mount) sag with the 9 kg source case is ~1.1 mm simply supported (~0.28 fixed), shared with cross2 via the rung + gusset: verify by measurement once the source is weighed.
- [ ] Second X rail: shim/parallelism to 0.02 over 760 between the front and rear MGN12 faces; check for X binding.
- [ ] Tray cassettes: check the D4 dowel + slot location repeatability (target ±0.05) and the latch hold under the T moves; check the partial cover peel holds the parts in the pockets during the bench-to-machine transfer.
- [ ] Exhaust: the side fan protrudes ~310 mm past the right guard (overall width 1223 mm with the fan). Right-corner placement needs the OPTIONAL up-elbow (docs only), which breaks the top-clear rule.
- [ ] Touchscreen centre is 1335 mm above the floor (standing). Check with the real user height; a 10-15 deg tilt-back bezel is an option.
- [ ] E-stop in the niche has an extended head (mushroom 5 mm proud of the front face). Confirm it is reachable and visible (ISO 13850) on a mock-up.
- [ ] Vision: calibrate the head camera to nozzle offsets and the up camera to station B. Check the up camera ring (top Z 214) against the tray at T 322 when deployed over X 111 (only used with the tray back).
- [ ] Chamber LED strips + matte black interior: check camera exposure and glare at the field; confirm the powder-coat spec for 355 nm stray light.
- [ ] Velcro tie slots in the right guards: check the slot size (25x5) suits the chosen tie width (20 mm).