← Oct 20 Oct 22 →
Journal: Wednesday, Oct 21, 2026
- 2026-10-21 8:15 AM ET — Decision: OSSO PnP architecture, G-code coarse moves with human fine control
- 2026-10-21 8:16 AM ET — Decision: PnP fine motion
- 2026-10-21 8:19 AM ET — Decision: PnP part tray
- 2026-10-21 8:22 AM ET — Decision: PnP tray loading
- 2026-10-21 8:24 AM ET — Decision: PnP operator controls
- 2026-10-21 8:27 AM ET — Decision: PnP camera alignment
- 2026-10-21 8:30 AM ET — PnP machine concept drawing v1
- 2026-10-21 8:33 AM ET — Decision: PnP chassis accuracy scope
- 2026-10-21 8:34 AM ET — Confirmed: PnP chassis requirements
- 2026-10-21 8:39 AM ET — Decision: PnP rotation strategy
- 2026-10-21 8:40 AM ET — Decision: tray cells keep part rotation
- 2026-10-21 8:43 AM ET — Decision: PnP nozzle rotation drive
- 2026-10-21 8:44 AM ET — Decision: PnP rotation gear
- 2026-10-21 8:47 AM ET — PnP head concept drawing v1
- 2026-10-21 8:51 AM ET — Design note: PCB engraving as a placement aid
- 2026-10-21 8:52 AM ET — Design note: engraved labels for human confirmation
- 2026-10-21 8:53 AM ET — Clarification: placement labels are test-run marks
- 2026-10-21 8:54 AM ET — Design note: nozzle changes are manual
- 2026-10-21 8:56 AM ET — Decision: PnP operator controls (game controller)
- 2026-10-21 8:56 AM ET — Decision: PnP e-stop is a foot pedal
- 2026-10-21 8:57 AM ET — Decision: PnP foot pedal is an enable switch (supersedes e-stop pedal)
- 2026-10-21 8:57 AM ET — Decision: 3-position enabling pedal plus a separate e-stop
- 2026-10-21 8:59 AM ET — Decision: PnP nozzle uses a Luer-lock needle
- 2026-10-21 9:00 AM ET — Decision: PnP head illumination
- 2026-10-21 9:01 AM ET — Decision: PnP dedicated LED (supersedes camera LED)
- 2026-10-21 9:05 AM ET — Plan: PnP progressive feasibility build, stage 1 (motion only)
- 2026-10-21 9:11 AM ET — Decision: PnP platform printer
- 2026-10-21 9:23 AM ET — DECISION (the designer): PnP stage 1 printer
- 2026-10-21 9:29 AM ET — VERSION v11 snapped
- 2026-10-21 9:35 AM ET — FUTURE TO-DO (logged, not started): AI placement layer
- 2026-10-21 9:37 AM ET — STATUS: OSSO boards shipped
- 2026-10-21 9:38 AM ET — DECISION (the designer): use existing film first
- 2026-10-21 9:43 AM ET — the designer to-do list started (TODO.md), ordered by learning sequence.
- 2026-10-21 10:05 AM ET — RESTORE
- 2026-10-21 10:16 AM ET — DECISION (the designer): paste dispensing on its own machine
- 2026-10-21 10:21 AM ET — DECISION (the designer): pre-tinned boards (two-stage solder)
- 2026-10-21 10:22 AM ET — DECISION (the designer): ball stencil for pre-tinning
- 2026-10-21 10:24 AM ET — PRINCIPLE (the designer): prepare and verify before placement
- 2026-10-21 10:34 AM ET — DECISION (the designer): standard ball size and ball stencil film
- 2026-10-21 10:36 AM ET — DECISION (the designer): stencil-free ball dispensing head (supersedes ball stencil)
- 2026-10-21 10:48 AM ET — DESIGN: hand-twist ball dispenser POC v1 (resin)
- 2026-10-21 11:04 AM ET — DESIGN: hand-spin ball dispenser POC v2 (resin + FR4 gear disc)
- 2026-10-21 11:09 AM ET — DESIGN: POC v2 revised in place with a grip skirt (the designer)
- 2026-10-21 11:17 AM ET — PCB: BR-G1 FR4 gear pocket disc fab files v1 (no pricing)
- 2026-10-21 11:47 AM EDT — Design note: separate machines today, one machine later
- 2026-10-21 11:52 AM ET — VERSION v12 snapped
- 2026-10-21 12:04 PM ET — PCB: BR-G1 laser-cut STEP + DXF for quoting
- 2026-10-21 12:15 PM EDT — BR-G1 decision: FR4 PCB over laser-cut 304 stainless
- 2026-10-21 12:25 PM EDT — BR-G1 ordered from PCBWay
- 2026-10-21 12:29 PM ET — DECISION (the designer): flux dispensing for tinning = syringe head on its own Neptune 4
- 2026-10-21 12:39 PM EDT — Decision: spray conformal finish after assembly
- 2026-10-21 12:48 PM ET — CONCEPT (the designer approved): OSSO Test Board (tester)
- 2026-10-21 12:59 PM EDT — Test board power: DC rail through corner posts via e-fuse
- 2026-10-21 1:00 PM EDT — Test board pins: standard interposer architecture
- 2026-10-21 1:00 PM EDT — Test board orientation: tester under the board, quick clamp
- 2026-10-21 1:05 PM ET — DECISION (the designer): universal OSSO Test Board, hybrid matrix
- 2026-10-21 1:08 PM ET — VERSION v13 snapped
- 2026-10-21 14:06 EDT - Ball dispenser POC v3: three BR-G1 discs (fixed top/bottom, turning middle)
- 2026-10-21 2:14 PM EDT — POC v3: stack the discs, set the gap with the hold-down screws
- 2026-10-21 2:16 PM EDT — Solder application roadmap: Kapton stencil first, ball tinning later
- 2026-10-21 2:41 PM EDT — Ball dispenser POC v4: chute alignment fix + external BR-G1 drive gear (the designer's request)
- 2026-10-21 5:03 PM EDT — Flux head serves two steps
- 2026-10-21 5:15 PM EDT — Post-reflow screen ahead of test
- 2026-10-21 5:18 PM EDT — Purpose of solder ball drop (reminder)
- 2026-10-21 5:20 PM EDT — Tinning enables pre-inspection and prep ahead
- 2026-10-21 9:52 PM EDT — Ball dispenser POC v5: two part types (BR-G2 FR4 carrier, BR-C1 stainless covers), printed D-spindle (the designer's request)
- 2026-10-21 10:05 PM EDT — BR-C1 cover v2 for SendCutSend (304 SS .030", as cut, Ø0.80 hole)
- 2026-10-21 10:19 PM EDT — BR-C1 v2 covers ordered
2026-10-21 8:15 AM ET — Decision: OSSO PnP architecture, G-code coarse moves with human fine control
- Platform: a "bed slinger" 3D printer motion system with the print head removed and replaced by a custom vacuum pickup head.
- Coarse moves (everything except the last few mm) are G-code, generated from the known placement coordinates on the PCB and the known coordinates of each part's position in the tray.
- Fine control happens on a movement actuator on the head, using jog commands: nudge X/Y/Z, rotation and vacuum on/off. The human runs these while watching a microscope camera on a monitor.
- This is deliberately different from OpenPnP/LumenPnP: no vision-automated placement; the machine does the travel and the human does the final alignment.
No models yet.
2026-10-21 8:16 AM ET — Decision: PnP fine motion
Fine XYZ moves use the printer's own axes in small jog steps. The custom head only needs to add rotation (theta) and the vacuum. No separate micro-manipulator stage for now.
2026-10-21 8:19 AM ET — Decision: PnP part tray
- A 3D-printed tray made for each specific PCB, with each cell sized to its component.
- The tray is loaded before the board gets paste, so every part is ready.
- The tray rides on the bed slinger beside the PCB and registers to the same datum, so the G-code can move automatically to each part's cell for pickup, then fine jog takes over.
2026-10-21 8:22 AM ET — Decision: PnP tray loading
Tray loading is a separate step done ahead of time on the same machine. The operator advances the part tape through a tape jig by hand to expose the next part. G-code moves the head to the tape pickup point, then to that part's tray cell. The human makes the final pick and drop, the same way as at placement.
2026-10-21 8:24 AM ET — Decision: PnP operator controls
The operator controls X, Y, Z, rotation and vacuum on/off. X/Y/Z use the printer's own axes. Rotation is driven by the extruder (E) axis and vacuum by the fan output (M106/M107), both triggered from G-code on the head.
2026-10-21 8:27 AM ET — Decision: PnP camera alignment
One angled microscope camera with a calibrated digital crosshair or part-outline overlay on the monitor. Alignment is judged at a fixed hover Z above the pad, then Z drops straight down. Calibrate once by placing a test part and locking the overlay to where it lands. No second camera, mirror or prism.
2026-10-21 8:30 AM ET — PnP machine concept drawing v1
drawings/osso_pnp_machine_v1.py → .png/.pdf (concept only, no CAD). Shows the "precision manual" pick-and-place built on a bed-slinger printer (Ender/Prusa class) in front (XZ) and side (YZ) views: X gantry, Y moving bed, Z uprights; custom vacuum head with E-axis rotation stepper, hollow shaft / rotary vacuum seal and Juki-style nozzle; one angled microscope camera feeding a monitor with a crosshair/outline overlay at a fixed hover Z; software Z floor; pump, line, MOSFET/relay + vent valve on M106/M107; gamepad/jog pendant via OctoPrint/Klipper. Bed-plan insets on the common datum plate: Mode 1 (tape jig 8 mm with 12/16 inserts, sprocket/detent index, cover-tape peel, pickup point + tray) and Mode 2 (tray + 140 mm PCB jig, Ø3 pin + slot pin). Flow strip tape → tray → board. Notes table: control mapping (E = rotation, M106/M107 = vacuum, M0 = pause per part) and both operation sequences. Overall dims only: envelope ~440×420×470 mm (approximate).
2026-10-21 8:33 AM ET — Decision: PnP chassis accuracy scope
The bed slinger does not need to be precise. The camera and operator absorb all slop, such as backlash, squareness and endstop error, when landing each part. The chassis only has to hold the part without dropping it, and travel without crashing into placed components or the tray walls: safe travel height, Z clearance and smooth motion. Priorities this sets: safe-Z travel moves, gentle acceleration, and secure vacuum hold during travel.
2026-10-21 8:34 AM ET — Confirmed: PnP chassis requirements
the designer confirmed all current chassis notes as requirements:
- safe-Z travel above the tallest part or tray wall
- vacuum hold check (pressure sensor that pauses on a drop)
- gentle Y acceleration
- dowel-located tray and board on a repeatable bed plate
- cable/hose management (drag chain or strain relief)
- e-stop
- even camera lighting
Precision homing and backlash fixes are not required; the camera and operator absorb the slop.
2026-10-21 8:39 AM ET — Decision: PnP rotation strategy
The camera is fixed and only the nozzle rotates. Rotation is limited to very small fine trims, within about ±5°. All 90°, 180° and 270° rotation happens at the tape jig: the operator feeds the tape into the jig at the right starting orientation, so each part goes into its tray cell already facing the way it will be placed. The overlay crosshair or outline never rotates, and the head stays light.
2026-10-21 8:40 AM ET — Decision: tray cells keep part rotation
Each tray cell is shaped and rotated to hold its part in the final placement orientation (set at the tape jig) and keep it there. Placement from the tray therefore needs only minor rotation correction (fine trim), the same as loading.
2026-10-21 8:43 AM ET — Decision: PnP nozzle rotation drive
Only the nozzle and a short flexible silicone tube rotate (±5°). There is no rotary seal and no hollow-shaft motor. The valve, sensor and camera stay fixed. The drive is a very small stepper (on the E axis) through a gear reduction, keeping moving parts to a minimum. The nozzle runs in a bearing or bushing so it spins true.
2026-10-21 8:44 AM ET — Decision: PnP rotation gear
The nozzle holder carries a lever-arm gear sector with only enough teeth to mesh with the stepper pinion over ±5° plus margin. No full gear.
2026-10-21 8:47 AM ET — PnP head concept drawing v1
drawings/osso_pnp_head_v1.py → .png/.pdf (concept only, no CAD). Shows only the pick-and-place head in front (XZ), side (YZ) and top (XY) views plus Detail A (nozzle tip with a part at hover Z above pasted pads). Adapter plate to the X carriage (print head removed); fixed body; Juki-style nozzle on a short hollow holder in two bushings (runout target < 0.05 mm); ~15 mm class E-axis stepper with a pinion meshing a lever-arm gear sector (teeth for ±5° plus margin, ~10:1, R20/R2); optional centering spring; short silicone tube to the holder (no rotary seal); 3-way solenoid valve (M106/M107 via off-head MOSFET); pressure sensor between valve and nozzle (pause on drop); line to off-head pump + reservoir; one fixed angled microscope camera with ring LED aimed at the tip at hover Z (overlay does not rotate); strain relief and drag-chain bracket. Top view shows the sector, pinion and ±5° arc. Notes table: one row per callout (1-19), control mapping and design rules. Overall dims only: envelope ~75 W × 70 D × 95 H mm (approximate).
2026-10-21 8:51 AM ET — Design note: PCB engraving as a placement aid
The laser engraving on the PCB can be designed to help the camera crosshair and outline overlay, through deliberate graphics such as part outlines or courtyard marks, corner ticks, pin-1 marks, local fiducials and center marks. These would make manual alignment faster and more accurate. To be developed later; no action now.
2026-10-21 8:52 AM ET — Design note: engraved labels for human confirmation
At each placement position, the laser engraves a tiny text label (e.g. the reference designator) inside the camera's view at the crosshair, so the operator can confirm the G-code brought the head to the right part before placing. The part tray gets the same treatment: each cell has a printed or engraved index/label that matches the G-code prompt. To be developed later; no action now.
2026-10-21 8:53 AM ET — Clarification: placement labels are test-run marks
The engraved placement labels can be a test-run feature: engraved on test or first-article boards to check the G-code, and left off production engraving.
2026-10-21 8:54 AM ET — Design note: nozzle changes are manual
For now the human operator changes nozzles by hand. There is no automatic tool changer. G-code pauses with a prompt (e.g. 'fit nozzle N502') when the next part needs a different nozzle.
2026-10-21 8:56 AM ET — Decision: PnP operator controls (game controller)
Wired handheld game controller, used while watching the video monitor. Mapping: left stick = X/Y step nudge (discrete steps, not analog speed); D-pad = single X/Y steps, D-pad up/down = step size 1/0.1/0.01mm; triggers = Z down/up (Z down needs a deliberate hold); bumpers = rotation trim -/+; A = vacuum on (pick); B = vent (release); Start = continue to next part; Back/Select = pause/skip. Separate hardware e-stop, not on the controller.
2026-10-21 8:57 AM ET — Decision: 3-position enabling pedal plus a separate e-stop
The foot pedal is a 3-position enabling switch: released = stop, middle = run (motion allowed), stomped through = stop (panic). A separate e-stop button stays on the machine.
2026-10-21 8:59 AM ET — Decision: PnP nozzle uses a Luer-lock needle
The nozzle is an off-the-shelf Luer-lock blunt dispensing needle. It mounts on a Luer fitting on the rotating holder, which carries the gear sector and lever arm (one printed part, ideally resin). The needle tip is not printed. Nozzle changes are a manual swap of Luer tips, sized by gauge to the part.
2026-10-21 9:00 AM ET — Decision: PnP head illumination
The head has an illumination LED for the camera view. It may come built into the camera (many USB microscopes have a ring LED). Add a separate diffused LED only if the camera's light is missing or causes glare.
2026-10-21 9:01 AM ET — Decision: PnP dedicated LED (supersedes camera LED)
Don't use the camera's built-in LED. A separate LED sits in a 3D-printed mount on the head, so its angle and position can be tuned by reprinting the mount until the lighting is right. After that, only the brightness is adjusted (e.g. PWM from a spare printer output or a simple dimmer).
2026-10-21 9:05 AM ET — Plan: PnP progressive feasibility build, stage 1 (motion only)
Stage 1: a dummy soft probe in place of the head, with no camera, LED or vacuum. Generated G-code moves the probe from cell to cell in an empty printed tray to matching spots on a ghost PCB, which is just an engraved outline of the board. The goal is to prove the coordinate pipeline (board data and tray data to G-code), the datum registration, safe-Z travel and moves landing on the marks. Later stages add the camera, overlay, LED, vacuum, rotation and real parts.
2026-10-21 9:11 AM ET — Decision: PnP platform printer
the designer wants more controllable outputs for future actions. Leading pick: Elegoo Neptune 4 Pro (stock Klipper, several fan outputs that can be remapped, 225×225×265 bed, about [amount removed]–239 at us.elegoo.com). Stage 1 uses it unmodified. Not yet purchased.
2026-10-21 9:23 AM ET — DECISION (the designer): PnP stage 1 printer
Ordering two "Damaged as Parts Only" Elegoo Neptune 4 units (about [amount removed] each plus shipping, NV Liquidation, eBay item 266477091033) to combine into at least one working PnP platform. The seller warrants one fully working unit per two bought, or free replacement parts. The mainboard is shared across the Neptune 4/Pro/Plus/Max. The bed is about 235x235mm: the 140x140 OSSO board plus a combined tray/tape jig strip about 78mm wide with 5 lanes (drawings/osso_pnp_bed_n4_v1). Companion boards use the swap-mode layout.
- 9:28 AM ET: the designer confirmed the order is placed for 2 Neptune 4 parts units.
2026-10-21 9:29 AM ET — VERSION v11 snapped
v11 folder and tarball (111,135,924 bytes) came back intact with the restore. See the full entry in versions/v11_2026-10-21/JOURNAL.md.
2026-10-21 9:35 AM ET — FUTURE TO-DO (logged, not started): AI placement layer
Later, an AI placement layer could make the same fine moves from the same camera view through the same controller/jog interface, still gated by the enable pedal.
2026-10-21 9:37 AM ET — STATUS: OSSO boards shipped
5 OSSO boards shipped from PCBWay, for the alignment and full etching calibrations.
2026-10-21 9:38 AM ET — DECISION (the designer): use existing film first
the designer will use his existing 0.075mm polyimide film first. The ZXAKAOSI practice pack becomes backup stock.
2026-10-21 9:43 AM ET — the designer to-do list started (TODO.md), ordered by learning sequence.
2026-10-21 10:05 AM ET — RESTORE
The box restarted around 9:40 AM and lost /workspace/osso. The folder was restored from the work Mac copy (9:19 AM sync, checksum verified), and the entries from 9:23 AM onward were re-added from the chat.
2026-10-21 10:16 AM ET — DECISION (the designer): paste dispensing on its own machine
Paste is dispensed (not filament or stencil-squeegee on the PnP) from a custom applicator head on a dedicated bed-slinger, separate from the PnP machine. Each machine shares a common jig datum so boards move between them without re-registering, and each runs a pre-run calibration. Details to be defined later. Background: the designer considered a filament with embedded paste and set it aside (the flux and solder heat window conflicts, binder residue, and dot volume control).
2026-10-21 10:21 AM ET — DECISION (the designer): pre-tinned boards (two-stage solder)
Boards are tinned ahead of time. Stage 1: flux, place a solder sphere per pad, reflow with no parts, which leaves exact, repeatable domed solder on each pad and can be inspected by camera. Stage 2 (end user): tacky flux only, place parts, reflow. Things to watch: parts rocking on domed pads (tacky flux, or flatten or coin the pads), two reflows on ENIG (test this), and sphere sizing or count for large pads. Earlier option logged: spheres plus flux for BGA and array pads, paste for chip parts. The paste dispenser on its own machine stays the general path, and it can dispense flux too.
2026-10-21 10:22 AM ET — DECISION (the designer): ball stencil for pre-tinning
Pre-tinning uses a laser-cut ball stencil: a film mask with one hole per pad, laid on the fluxed board. Spheres are poured on, the extras are swept off, the mask is lifted, and the board is reflowed with no parts. It is made with the stencil v2 frame and the laser. For 0402, pads are about 0.5mm and spheres about 0.25-0.3mm. The PnP (30-32 gauge Luer needle, vacuum) is used only to replace a missing ball, since placing balls one at a time is too slow. Watch for static or sticking on release (a puff of air, a grounded tip).
2026-10-21 10:24 AM ET — PRINCIPLE (the designer): prepare and verify before placement
Two steps are set up and verified ahead of SMT placement: (1) the part tray, loaded from the tape jig and checked by index labels, and (2) tinning, done with the ball stencil and reflow, then checked by camera. At assembly only flux, placement and the final reflow remain. Flow: tin, then check, then flux, then place, then reflow.
2026-10-21 10:34 AM ET — DECISION (the designer): standard ball size and ball stencil film
- Standard sphere: 0.25mm SAC305, one size only, with volume set by ball count (about 0.008 mm³ per ball). Estimates to confirm by test: 0402 about 1-2 balls, 0603/0805 about 3-6, larger and thermal pads get a slot or grid sized for N balls.
- The ball stencil uses its own film, separate from the 0.075mm paste stencil film. Recommended thickness is about 0.2mm (0.7-1x the ball diameter) so balls are held while the extras are swept off.
- Apertures are about 1.2x the ball diameter (0.30mm), or a slot about N x 0.27mm long for N balls. To be calibrated with laser tests.
2026-10-21 10:36 AM ET — DECISION (the designer): stencil-free ball dispensing head (supersedes ball stencil)
Tinning uses a ball dispensing head on a bed-slinger instead of a ball stencil: no stencil, no per-board mask. Proposed concept (not yet confirmed): a hopper of 0.25mm SAC305 balls, then a singulator (an E-axis pocket disc), then a short gravity drop tube about 0.5mm above the pad. N balls per pad set the volume, and an optical gate and/or camera confirm each drop. Flux is applied first (dispenser). The earlier 0.2mm ball stencil film entry is superseded.
2026-10-21 10:48 AM ET — DESIGN: hand-twist ball dispenser POC v1 (resin)
Hand-twist "pepper grinder" proof of concept to test one-ball singulation of 0.25mm SAC305 by hand. Printed on the resin (MSLA) printer. The fixed base is 35mm diameter and the assembly is about 37mm tall. The base carries a 4mm D-flat post, the track land (R7-9, which is also the pocket floor), two flexing detent pillars and an off-center nozzle. The 31mm rotor twist ring has a 0.28mm web with 12 pockets 0.30mm in diameter on R8, and 12 V-notches give 12 clicks per turn (30° each). The hopper is fixed to the post by an M2 screw. Its 1.0mm floor runs 0.10mm above the web and has a 60° fill window opposite the drop, and the window edge is the wiper. The drop hole is 0.45mm, then a 0.8mm relief, then a 0.45mm x 10mm chute (ream with a 0.40mm drill). A lid sits on top. Running clearance is 0.10-0.15mm. The CAD fit check shows zero interference. A test coupon has holes and pockets from 0.25 to 0.45mm in 0.025mm steps plus 10mm chute bores (0.40/0.45/0.50). A metal shim pocket disc is planned for later. Files: cad/ball_dispenser_poc_v1/ and drawings/ball_dispenser_poc_v1.py/.png/.pdf.
2026-10-21 11:04 AM ET — DESIGN: hand-spin ball dispenser POC v2 (resin + FR4 gear disc)
Revision of POC v1. The resin twist ring and 0.28 web are replaced by the bought bare FR4 pocket disc OSSO BR-G1 (drawing ball_ring_fr4_gear_v1, completed earlier today): 0.30 thick, m1.0 z22 gear rim (OD 24, pitch 22, root 19.5), D-bore 3.00 / flat 2.50, 12x 0.30 pockets on R8, 1.0 home hole on R6 at 0°, 3x 0.8 pin holes on R3 (unused). The disc is modeled as a reference part only. The resin base is 31mm in diameter and the assembly is about 29.3mm tall. The disc sits on the flat floor plate (pocket floor) and is keyed and centered by a printed hub with a D-boss (2.90 / flat 2.40) that turns with it in an 8.3 recess (0.15 radial). A fixed D-shaft would lock the disc, so the D-profile is on the turning hub. The hopper cover plate runs 0.12 above the disc and has a 60° fill window opposite the drop, and the window edge is the wiper. The single 0.45 drop hole at R8, 0° leads to a 0.45 x 10 chute. A 1.0 home sight hole at R6 is aligned with P1 over the drop. A 120° side window in the housing ring exposes the teeth for fingertip spin, with 0.30 radial clearance at the tips. There is an optional light cantilever detent at 270° (22 clicks, not matched to the 30° pocket pitch). A lid is included. The CAD fit check shows zero interference at rest, and the detent preload is about 0.013 mm³ at half a tooth. Files: cad/ball_dispenser_poc_v2/ and drawings/ball_dispenser_poc_v2.py/.png/.pdf.
2026-10-21 11:09 AM ET — DESIGN: POC v2 revised in place with a grip skirt (the designer)
The base now extends downward into a hollow cylindrical grip so it is easy to hold. The grip is 31 OD (R13.0 to R15.5, 2.5 wall) and 22 tall below the 2.0 floor plate, with 36 light flutes and an open bottom. There are two 6 x 12 viewing and light slots at the bottom, at 0° (drop side) and 180°. The nozzle is now 20 long (2.9 to 2.0 dia) with a 0.80 x 10 relief, then the 0.45 x 10 chute. The tip sits 2.0 above the grip bottom, so set the grip on the target and watch the drop through the slot. The nozzle top was made smaller so the R6 home sight hole has a clear light path (0.05 clear). The 120° finger window and the 0.42 ring at disc level are unchanged. The overall height is now about 41.3 (base 24.4). The fit check again shows zero interference, and all gaps are unchanged (0.12 vertical, 0.30 radial at the teeth). Files were updated in cad/ball_dispenser_poc_v2/ and drawings/ball_dispenser_poc_v2.*.
2026-10-21 11:17 AM ET — PCB: BR-G1 FR4 gear pocket disc fab files v1 (no pricing)
Fab files for OSSO BR-G1, per drawing ball_ring_fr4_gear_v1, in pcb/br_g1_v1/. The KiCad 9 source br_g1_v1.kicad_pcb is generated by make_br_g1.py and exported with kicad-cli. Outputs are the Edge.Cuts Gerber (RS-274X/X2), the Excellon NPTH drill file, empty F/B copper, F/B mask filled (no mask) and a job file, zipped as br_g1_v1_gerbers.zip with README_FAB.md. The outline is an exact involute (m1.0 z22 PA20, OD 24.00, root 19.50) closed with R0.5 for a 1.0 router bit; the tooth space at the root is 1.10, so the root is still reached, and deviation is 0.20 at the root corners only. The D-bore is 3.00 with the flat at 2.50 and R0.5 corners. Drills: 12x 0.30 on R8, 1.0 home hole on R6 at 0°, and 3x 0.80 on R3 (optional). KiCad DRC shows 0 violations. An independent re-parse of the Gerber and Excellon confirms the outline is closed (2 loops), 22 teeth, tooth thickness 1.571 at pitch, and 16 holes in the right positions. The silkscreen label is omitted (legend needs a mask). Caveats: thickness tolerance (PCBWay standard is ±0.1 under 1 mm), the 0.30 drill is near the minimum, and routing tolerance is ±0.1-0.2. Preview: pcb/br_g1_v1/br_g1_v1_preview.png.
2026-10-21 11:47 AM EDT — Design note: separate machines today, one machine later
the designer's design note: in time, all operations (paste or flux dispensing, ball tinning, pick and place) can be collapsed into one machine. For simplicity and maintenance, they stay as separate machines today, each sharing the common jig datum.
2026-10-21 11:52 AM ET — VERSION v12 snapped
Frozen to versions/v12_2026-10-21 + OSSO_v12_2026-10-21.tar.gz (the project without versions/ and video/). Since v11: today's paste and tinning decisions (paste on its own machine, pre-tinned boards in two stages, 0.25mm SAC305 as the standard ball, stencil-free ball dispensing head replacing the ball stencil), the ball dispenser POC v1 (resin), the FR4 gear pocket disc drawing ball_ring_fr4_gear_v1 (OSSO BR-G1), the ball dispenser POC v2 with the BR-G1 disc and grip skirt (cad/ball_dispenser_poc_v2, drawing ball_dispenser_poc_v2), BR-G1 fab files (pcb/br_g1_v1: KiCad source, Gerber, NPTH Excellon, upload zip, fab notes), the design note on separate machines today and one machine later, and the regenerated TODO.md (learning order, new ball tinning track). The docs site now lists v11 and v12 and has a To-do page.
2026-10-21 12:04 PM ET — PCB: BR-G1 laser-cut STEP + DXF for quoting
Laser-cut version of the BR-G1 FR4 gear disc in pcb/br_g1_v1/laser/: br_g1_laser.step, br_g1_laser.dxf, QUOTE_NOTES.md and the make_br_g1_laser.py generator. It uses the same parameters as the router fab files, but with a sharp ideal profile (no R0.5 root fillets or D-bore corner radii), 0.30 thick. Validation: one valid solid, also valid after re-import, volume 108.757 mm³, tip R12.000 / root R9.750 (bbox 23.99 x 23.85 x 0.30 because the tooth tips are chords off the axes), D-bore 3.00 / 2.50, and 16 round holes in the right positions (12x 0.30 R8, 1.0 R6 at 0°, 3x 0.80 R3). The DXF is in mm with 2025 lines, 1 arc and 16 circles. Quote notes ask for 10 and 25 pieces, FR4 first (polyimide or stainless later), and ±0.02 on the 0.30 holes.
2026-10-21 12:15 PM EDT — BR-G1 decision: FR4 PCB over laser-cut 304 stainless
the designer compared the BR-G1 gear disc as a PCBWay laser-cut 304 stainless part with the fab-made 0.30mm FR4 PCB. The costs are very similar, but PCBWay lists laser cutting at ±0.1mm, which is too loose for the 0.30mm pockets, while a PCB's drilled unplated holes hold ±0.05mm with tighter hole positions. Decision: make BR-G1 as an FR4 PCB using pcb/br_g1_v1. The laser STEP and DXF in pcb/br_g1_v1/laser/ are kept as an alternate, for a precision etching or fiber-laser shop later.
2026-10-21 12:25 PM EDT — BR-G1 ordered from PCBWay
the designer ordered 50 BR-G1 FR4 gear discs from PCBWay for about [amount removed] shipped (only a few dollars more than 5). The order uses br_g1_v1_gerbers.zip with these settings: single pieces 24 × 23.8mm, 1 layer with copper, solder mask and silkscreen all set to none, finished copper bare board (0 oz), FR-4, 0.3mm thick (finished 0.25–0.3mm), minimum hole 0.3mm, product number removed, and the bare FR4 / NPTH-only / critical 0.30mm hole remark. PCBWay showed a shipment date of 2026-10-25 by DHL. The order spec learned: for a bare board, pick a 1-layer board with copper, mask and silkscreen set to none.
2026-10-21 12:29 PM ET — DECISION (the designer): flux dispensing for tinning = syringe head on its own Neptune 4
Flux for the tinning step is dispensed by a syringe applicator on its own Neptune 4 (bed-slinger). It uses the same common jig datum and pre-run calibration as the other machines. The flux is tacky gel flux pushed by a stepper-driven plunger (leadscrew or the E-stepper) through a 22-25ga blunt tip, with a suck-back retract after each dot to prevent stringing. Flux dots must be tacky enough to hold a 0.25mm ball in place. Backup: pin transfer (dip a pin in a thin flux film, then touch the pad). A brush or felt stripe was considered but not chosen. Not confirmed yet: whether the paste machine shares the same syringe head design. Concept drawing: drawings/osso_flux_syringe_head_v1.
2026-10-21 12:39 PM EDT — Decision: spray conformal finish after assembly
Laser-cutting isolation lines through the mask and copper leaves the trace edges as bare copper (about 35µm tall for 1 oz copper). the designer decided to spray a conformal finish after assembly for confidence. The suggested coating is acrylic (for example MG Chemicals 419D), which seals the exposed edges and can still be reworked through. The specific product isn't chosen yet.
2026-10-21 12:48 PM ET — CONCEPT (the designer approved): OSSO Test Board (tester)
The tester is itself an OSSO board. It lands on the board under test (DUT) through the same printed pogo interposer and the same jig datum as a real stack, so the interposer pads double as test pads and no board needs extra test points. the designer's reasoning: the tester uses the same pads, pins and datum, and it also verifies the interposer connection itself. One standard test controller covers every board, and a per-board script on the computer does the rest.
- Tester hardware: a standard MCU with USB to the computer; one channel per interposer pin (analog switch/mux plus ADC, or GPIO with a series resistor) for shorts, continuity and voltage; a current-limited DUT supply with an e-fuse for first power-up; status LEDs.
- Test script order: interposer contact check, then shorts, continuity, power-up current, and finally functional tests for that board's interposer signals.
- Pogo pins wear (10k cycles), so the tester uses replaceable pins (a pin plate or socketed receptacles).
- Interposer spec used (from the files): 40 sites, 4 x 10 at 10.16 x 5.08 pitch, centered on (70,70), with Ø3.0 ENIG pads in Ø4.0 isolation (drawings/top_v1i_geom.json). Pin YZD0029-20135-01 (cad/pogo_YZD0029/DIMENSIONS.md). 12.0 gap, 13.6 pitch. Datum: Ø3.0 tooling hole at (70,4), slot at x=70 y 135-137, fiducials A/B/C/C'. Power corners at (5,5), (135,5), (5,135), (135,135).
- TBD: interposer pinout, ground pin count and placement, channel topology and parts, MCU, supply rails and limits, receptacle part, tester over vs. under the DUT.
Concept drawing: drawings/osso_test_board_v1.py/.png/.pdf.
2026-10-21 12:59 PM EDT — Test board power: DC rail through corner posts via e-fuse
the designer confirmed that the DC rail always runs through the corner posts and brass standoffs, the same as on the base board, with no separate rail. On the OSSO Test Board, the tester's corner posts are split into an input side and an output side. Supply power comes in, goes through the tester's current-limited e-fuse (switched and metered), and then goes out through the corner posts and standoffs to the board under test. This keeps the standard power path while still giving a current-limited first power-up. It resolves the open item on DUT supply rails and current limits in osso_test_board_v1 as to the path; the rail voltages and current limit values are still to be decided.
2026-10-21 1:00 PM EDT — Test board pins: standard interposer architecture
the designer decided the OSSO Test Board uses the standard interposer architecture and the same pogo pin (Xinyangze YZD0029-20135-01), not a different or replaceable pin plate. Note: on a test interposer, all or more of the 40 sites may be populated, including sites the board under test uses only as test pads. This resolves the open item on the pin receptacle or pin plate part in osso_test_board_v1. Pin wear (rated 10k cycles) is handled by replacing pins or the printed interposer as needed.
2026-10-21 1:00 PM EDT — Test board orientation: tester under the board, quick clamp
the designer decided the OSSO Test Board sits under the board under test, the way a base board would, and a quick clamp holds the stack (tester, interposer, board under test) together for compression. This resolves the open item on whether the tester sits over or under the board in osso_test_board_v1. The clamp design is not done yet; it should register on the same datum (tooling hole and slot) and compress the pogo pins to the 12.0 working gap.
2026-10-21 1:05 PM ET — DECISION (the designer): universal OSSO Test Board, hybrid matrix
Pin assignments belong to each board under test and change from board to board. To keep the number of tester designs and copies small, the tester is universal: all 40 interposer sites get identical flexible channels, and the per-board test script assigns each site's role.
- Chosen architecture (hybrid): an analog switch matrix connects any site to shared buses (GND, current source and sense, ADC, drive/GPIO) for shorts, continuity and voltage. A subset of sites can also be switched to fast MCU pins for functional signals (I2C/SPI/UART), chosen by the script.
- Board ID: each board under test carries an ID (EEPROM or an ID resistor on a known site). It is read first, and the matching pin map and tests are loaded.
- Earlier decisions today, already journaled: the DC rail runs through the corner posts via the tester e-fuse (12:59 PM); the standard interposer and pins, with all or more sites populated (1:00 PM); the tester sits under the board under test with a quick clamp (1:00 PM).
2026-10-21 1:08 PM ET — VERSION v13 snapped
Milestone: the tester strategy is set, a universal OSSO Test Board. Frozen to versions/v13_2026-10-21 + OSSO_v13_2026-10-21.tar.gz (the project without versions/, video/, stray root tarballs and ._* files). Since v12: BR-G1 laser-cut STEP/DXF and quote notes; BR-G1 ordered from PCBWay (50 discs); the decision to spray a conformal finish after assembly; flux dispensing by a syringe head on its own Neptune 4, with concept drawing osso_flux_syringe_head_v1; the OSSO Test Board concept (osso_test_board_v1) and its decisions (DC rail through corner posts via e-fuse, standard interposer and pins, tester under the board under test with a quick clamp); the universal hybrid matrix with board ID first (osso_test_board_v2, refs/test_board_matrix_sizing.md); and TODO.md updates (flux head and test board tracks). The docs site now lists v13.
2026-10-21 14:06 EDT - Ball dispenser POC v3: three BR-G1 discs (fixed top/bottom, turning middle)
- New
cad/ball_dispenser_poc_v3/ + drawing drawings/ball_dispenser_poc_v3.png/.pdf. Three identical BR-G1 FR4 discs: top and bottom are fixed smooth contact planes, keyed by their gear teeth in tooth-shaped pockets (base and hopper underside); only the middle disc turns.
- Clocking (the designer confirmed): top disc at 0°, bottom disc +15° (half the 30° pocket pitch), so no straight-through path. Hopper floor exposes one top hole (fill, 180°); base has one exit under the bottom hole at 165°. Turn the middle disc 15° CW: fill -> drop; one ball per 30°. Other 11 bottom holes are blind over solid floor (stay empty; optional kapton seal).
- the designer simplified the drive (2:02 PM): no D-ring hub. The middle disc is spun by finger on its teeth and centered loosely on a plain stationary 1.90 dia round post (part of the base) through all three D-bores (0.05 radial at the flat). The v2 hub D-boss corner fix is therefore moot in v3 (no D drive).
- Kapton spacer ring under the hopper flange sets the running gap: shim = sum(t) + 0.05 - 0.80 (0.15 at nominal 0.30 discs). Measure the discs before cutting the shim.
- Fit check: no interference at rest or in a 0-20° sweep; gaps 0.05 middle/top and middle/base; all 8 disc thickness cases (0.25/0.30) give a 0.30-0.35 pocket (ball fits, second ball can't), gap < ball.
- Risks: finger window exposes fixed-disc teeth too (locked by keyed teeth elsewhere; can file back); 1.90 resin post straightness; friction between FR4 faces with no lube; kapton thickness steps.
2026-10-21 2:14 PM EDT — POC v3: stack the discs, set the gap with the hold-down screws
the designer decided to stack the three BR-G1 discs directly in POC v3 and adjust the running gap by tightening the hopper's M2 hold-down screws until the middle disc turns freely. The kapton shim is a fallback only, used if the stack binds or rattles. A 0.25mm-thick disc isn't a problem, because a 0.25mm ball then sits flush and still can't pick up a second ball.
2026-10-21 2:16 PM EDT — Solder application roadmap: Kapton stencil first, ball tinning later
the designer confirmed two solder application paths. Initial: a laser-cut Kapton paste stencil (stencil v2 track), ready to try once the laser is set up and aligned. Later: ball tinning, which is flux dots from the syringe head, then 0.25mm SAC305 balls from the BR-G1 dispenser, then reflow. It comes after the dispenser POC and flux head are proven. Both paths end in the same state, a board ready for flux and part placement, so the downstream steps (part tray, PnP, reflow, test) don't change between them.
2026-10-21 2:41 PM EDT — Ball dispenser POC v4: chute alignment fix + external BR-G1 drive gear (the designer's request)
- New
cad/ball_dispenser_poc_v4/ (script make_ball_dispenser_poc_v4.py; v3 left as is) + drawing drawings/ball_dispenser_poc_v4.png/.pdf.
- Bug (the designer's section of the v3 assembly STEP: the drop chute looked like it sat on a pin-like feature). Measured from the exported STEP (the designer's Downloads copy and the box re-export): chute axis (-7.7274, 2.0706) = R8 @165°, and the bottom-disc pocket was at the same XY (0.000 error). But the bottom disc is clocked +15°, so its R3 Ø0.80 pin hole (150°+15°) also sat on the 165° radial, at (-2.8978, 0.7765). It is the same Ø0.80 as the chute relief bore, and at rest the middle-disc web caps the Ø0.30 pocket. So any section through the chute showed it lined up with a pin hole. Root cause: the exit station was picked on a radial shared with a non-pocket hole. Fix: fill moved to 210° (top hole) and exit to 195° (bottom hole), which is 30° from every bottom pin/home hole. v4 asserts alignment from the exported geometry: hole axes for every disc, and probe cylinders along the fill and chute axes through the exported disc STEPs.
- Drive gear (the designer): a 4th BR-G1 (same part, unmodified) meshes with the middle disc at +X, CD 22.10 (22.00 + 0.10 backlash for the ±0.1-0.2 routing tolerance), in the middle plane. It rides on a printed D-axle: pivot pin, 16 dia lower flange, and a 2.90 D-shaft with R0.55 corners (0.05/side in the gear D-bore). A printed 16 dia top flange washer sits on top, and an 18 dia knurled knob sits above the hopper lobe. Base and hopper grew a closed lobe (overall 53.1 x 31 x 41.3) with a 3rd M2 screw. The finger window is gone; only the knob is exposed.
- Fixed-disc teeth: file 3 teeth flush to root on each fixed disc (top 0/16.4/343.6°, bottom 15/342.3/358.6° as assembled), leaving 19 keyed teeth each. Unfiled, a fixed disc that drifted into the drive plane would overlap the drive tip circle by 3.1 mm3, and the drive would lock. Filed, the gap is 0.52 even in the drive plane.
- Fit check: 0 interference at rest. Mesh sweep 0-30° (middle CW, drive CCW, 2° steps): 0 mm3, tooth gap 0.035-0.037. Drive parts are clear of the fixed parts at all angles. All 8 thickness cases (0.25/0.30) work: pocket 0.30-0.35, drive/middle face overlap ≥ 0.20.
2026-10-21 5:03 PM EDT — Flux head serves two steps
Decision (the designer): Keep selective flux. Whole-board flux was rejected because it means too much cleanup. The flux syringe head is needed twice: (1) a dot on each pad before solder ball tinning, and (2) a dot on each tinned pad before pick and place, to hold parts and wet the reflow. the designer plans a bench test of the manual ball dispenser with a flux dot to observe the physics: bounce, self-centering, and the dot size limit before bridging. References: EPTC 2012 tacky flux ball attach (doi 10.1109/eptc.2012.6507169), IRJMETS flip chip flux (doi 10.56726/irjmets33583).
2026-10-21 5:15 PM EDT — Post-reflow screen ahead of test
Decision (the designer): After reflow, each board goes through: (1) clean, which also knocks loose parts that never wetted; (2) a short, mild shake as a stress screen, to expose marginal joints, not to wear out good ones; then (3) the in-circuit tester. Context: one-ball-per-pad tinning gives thin joints that are hard to inspect visually (e.g. 0402), so electrical test is the real check. Solder cost check (Chip Quik prices): 1–3 balls per pad is about [amount removed]–4 per board, vs about [amount removed] for paste and about [amount removed] if balls matched paste's full volume. Qualification idea for later: a daisy-chained 0402 coupon board tinned with 1/2/3 balls per pad, shear-tested and vibration-tested while the tester watches for opens.
2026-10-21 5:18 PM EDT — Purpose of solder ball drop (reminder)
the designer: The goal of solder ball dropping is selective solder application with no stencil. Each one-off PCB skips making a stencil and spreading paste. Part of the per-board ball upcharge is the price of that stencil-free precision on one-off boards. It does not mean matching paste volume. Balls per pad are sized for a good joint on that pad (1 for small pads, more for large or stressed joints), to be confirmed by bench test.
2026-10-21 5:20 PM EDT — Tinning enables pre-inspection and prep ahead
the designer: Ball-drop tinning removes the stencil step (wasteful, a hassle, and a time saver once automated). Tinned boards can be automatically inspected (camera check of solid, domed pads, no bridges) and prepped ahead of time: tin a batch, inspect, and store until assembly. Defects are caught before parts are placed.
2026-10-21 9:52 PM EDT — Ball dispenser POC v5: two part types (BR-G2 FR4 carrier, BR-C1 stainless covers), printed D-spindle (the designer's request)
- New
cad/ball_dispenser_poc_v5/ (make_ball_dispenser_poc_v5.py, reusing the v4 code; v4 left as is), drawing drawings/ball_dispenser_poc_v5.png/.pdf, BR-G2 fab files in pcb/br_g2_v1/, BR-C1 laser files in cad/ball_dispenser_poc_v5/br_c1/.
- BR-G2 is BR-G1 (m1 z22 gear, D-bore 3.00/2.50 R0.5, 12x Ø0.30 on R8) with the home hole and the 3 R3 pin holes removed. It is used as the carrier and as the drive gear (CD 22.10, v4 axle, flanges and knob). KiCad DRC shows 0 errors, and a Gerber/Excellon re-parse confirms 22 teeth and exactly 12 holes.
- BR-C1 is a 0.30 304 stainless disc, OD 19.00, with a Ø3.40 shaft clearance hole, one Ø0.60 hole on R8 at 210° (own frame), and OD notches 1.00 at 90° and 1.60 at 330° (0.60 deep). It is used twice. The top cover sits face up, so its hole is the fill at 210°. The bottom cover is flipped and clocked +45°, so its hole is the exit at 195° (notches 315°/75°). Unequal widths and non-symmetric angles mean each printed recess (keys 0.05/side) accepts its cover in one orientation only; this is asserted. The cover OD is 0.60 inside the drive tip circle and 4.6 from the drive flanges.
- Shaft: a printed D-spindle through the stack, chosen over the v4 round post. It has Ø2.0 journals in blind holes in the base and hopper, and a D-section 2.90/flat 0.95/R0.55 keyed in the carrier, 0.25 radial clear in the covers. The carrier is now centered and carried on a real axis. The v4 home/sight hole is gone because all pockets are identical. The knob has 24 flutes, so one flute = 15° = fill to drop.
- Printed parts: base and hopper have cover recesses (0.15 base, 0.20 hopper) with 2 keys each. The base wall/skirt height is unchanged. The pocket gap is carrier t + 0.05 = 0.30-0.35 for 0.25/0.30 boards, set by the hopper screws as in v4. Overall size: 53.1 x 31.0 x 41.3, same as v4.
- Fit check (from the exported STEP): 0 interference at rest and over the 0-30° mesh sweep (2° steps), backlash gap 0.035-0.037. Fill/exit offset 15°. Cover hole to station error 0.000, carrier pocket to fill 0.000, and pocket after 15° CW to chute 0.000. No other feature on the exit radial: the nearest carrier pocket is 15° away and the nearest cover notch 120° away. Probes confirm the fill and exit paths are open and the straight-through path is blocked. All 8 thickness cases pass.
- Cover material: 304 SS 0.30 BA/2B, laser cut or photo-etched, then deburred. Alternates: polished shim, PTFE, or acetal (pros and cons in the drawing and in QUOTE_NOTES.md).
2026-10-21 10:05 PM EDT — BR-C1 cover v2 for SendCutSend (304 SS .030", as cut, Ø0.80 hole)
- Checked SendCutSend's live specs: material pages, deburr/tumble service pages, sheet-cutting guidelines, and their spec-sheet data (scs-specs-platform.fly.dev/api/specs/cutting, /general, /deburring, /tumbling). The thinnest 304 they stock is .030" (0.76 ±0.05). 316 starts at .060". No 0.30 stainless.
- SST-030 limits: min part .25" x .375", min hole/bridge/hole-to-edge .015" (0.38), cut ±.005". At .030", deburring, tumbling, and powder coat are all unavailable. Deburring also needs ≥.048" and parts ≥1" x 3". Tumbling needs ≥.119" and parts ≥0.5" x 1.5". BR-C1 cannot grow to qualify, since the OD already sits 0.60 inside the drive tip circle.
- Decision: order 304 .030" unfinished, and the designer laps the ball face on wet paper over glass (see QUOTE_NOTES.md).
- Geometry: cover t 0.30 → 0.762, fill/exit hole Ø0.60 → Ø0.80 for dross margin. OD, Ø3.40 hole, and notches are unchanged (1.00 notch ≫ .015" min). Base wall ring_H is now tb+0.30 = 1.06. Running bore and drive cavity cut heights follow ring_H. The stack rises 0.46/0.92. The pocket gap is unchanged (carrier + 0.05).
- Regenerated all printed STEP/STL files, cover REFs, the assembly, br_c1_v2.dxf/.step (v1 moved to br_c1/superseded/), and drawings/ball_dispenser_poc_v5.png/.pdf.
- Fit check: 0 interference at rest and over the sweep. Tip clear 0.60, keying unique, alignment PASS. Tolerance cases cover covers 0.711-0.813 and carriers 0.25-0.30, with drive/carrier face overlap ≥0.199.
2026-10-21 10:19 PM EDT — BR-C1 v2 covers ordered
the designer ordered BR-C1 v2 cover discs (br_c1_v2.dxf, 304 stainless .030", no finish) from SendCutSend, combined with a part for another project to reach the [amount removed] free-shipping minimum. Ship date TBD. On arrival: lap the ball face (400 to 1500 grit wet paper on glass), clear the Ø0.80 hole with a 0.7mm pin vise, and test with a 0.25 ball.