Skip to content

Latest commit

 

History

History
230 lines (180 loc) · 9.39 KB

File metadata and controls

230 lines (180 loc) · 9.39 KB

OpenFixture 3D Model & Laser Cut Component Checklist

✅ Component Verification - All Parts Accounted For

🟦 THE 4 MAIN BOARDS (PCB Support + Pogo Pin Support)

# Component 3D Model Laser Cut Z-Position Purpose
1 HEAD BASE ✅ Line 799 ✅ Line 948 Z=0 (head) Pogo pin holes (both top & bottom)
2 HEAD TOP ✅ Line 809 ✅ Line 944 Z=10.75mm (head) Structural top + pogo clearance
3 BOTTOM CARRIER ✅ Line 858 ✅ Line 933 Z=19mm (base) PCB support (1mm inset cutout)
4 TOP CARRIER ✅ Line 863 ✅ Line 938 Z=22mm (base) PCB clamp (exact fit cutout)

🔧 HEAD ASSEMBLY COMPONENTS

In 3d_head() Module (Lines 796-823):

Component Quantity 3D Line Laser Line Description
head_base 1 799 948 BOARD 1 - Pogo pin plate
head_top 1 809 944 BOARD 2 - Top structural plate
head_side 2 801, 805 979, 981 Side panels
head_front_back 2 813, 817 993, 996 Front/back panels
cable_retention 1 819 1000 Cable management clip

Total Head Parts: 8 (including 2 main boards)


🏗️ BASE ASSEMBLY COMPONENTS

In 3d_base() Module (Lines 827-867):

Component Quantity 3D Line Laser Line Description
base_side 2 829, 833 954, 957 Side panels with pivot
base_front_support 1 838 972 Front support beam
base_support 1 840 975 Middle support beam
base_back_support 1 842 977 Back support with pivot
spacer 2 848, 852 963, 965 Pivot spacers
bottom_carrier 1 858 933 BOARD 3 - PCB support (inset)
top_carrier 1 863 938 BOARD 4 - PCB clamp (exact)

Total Base Parts: 10 (including 2 carrier boards)


🔒 LATCH/LOCK ASSEMBLY COMPONENTS

In 3d_latch() Module (Lines 870-881):

Component Quantity 3D Line Laser Line Description
latch 2 872, 876 1009, 1012 Locking mechanisms
latch_support 1 878 986 Latch support bar

Total Latch Parts: 3


📊 GRAND TOTAL

Category Unique Parts Boards Other
Head Assembly 8 2 6
Base Assembly 10 2 8
Latch Assembly 3 0 3
TOTAL 21 4 17

🎯 Verification Status

✅ 3D Model (mode = "3dmodel")

Status: COMPLETE - All 21 parts properly positioned

Assembly structure:

3d_model()
├── 3d_head() → 8 parts (HEAD BASE + HEAD TOP + 6 structural)
├── 3d_base() → 10 parts (BOTTOM CARRIER + TOP CARRIER + 8 structural)
└── 3d_latch() → 3 parts (latches + support)

✅ Laser Cut DXF (mode = "lasercut")

Status: COMPLETE - All 21 parts laid out with spacing

Export order (left to right):

  1. Bottom carrier (with 1mm inset) - BOARD 3
  2. Top carrier (exact fit) - BOARD 4
  3. Head top - BOARD 2
  4. Head base - BOARD 1
  5. Base sides (x2)
  6. Spacers (x2)
  7. Base supports (x3)
  8. Head sides (x2)
  9. Latch support
  10. Head front/back (x2)
  11. Cable retention
  12. Latches (x2)

🔍 The 4 Boards in Detail

BOARD 1: HEAD BASE (Pogo Pin Plate)

  • Location: Bottom of head assembly (Z=0 relative to head)
  • Function: Contains ALL pogo pin holes
    • Holes for test_points_top array (top copper layer pads)
    • Holes for test_points_bottom array (bottom copper layer pads)
  • Material thickness: mat_th (default 3mm)
  • Module: head_base() → calls head_base_common()
  • Code: Lines 520-535 (pogo hole drilling loops)

BOARD 2: HEAD TOP (Structural Plate)

  • Location: Top of head assembly (Z=10.75mm relative to head)
  • Function:
    • Structural strength for head assembly
    • Clearance holes for screws
    • Logo cutout (if enabled)
  • Material thickness: mat_th (default 3mm)
  • Module: head_top()
  • Code: Lines 439-471

BOARD 3: BOTTOM CARRIER (PCB Support)

  • Location: Base assembly (Z=19mm absolute)
  • Function: Supports PCB from below with edge support
  • PCB cutout: Smaller by bottom_carrier_inset (default 1mm per side)
  • Result: Creates 1mm support ledge all around PCB
  • Material thickness: mat_th (default 3mm)
  • Module: carrier(pcb_outline, pcb_x, pcb_y, bottom_carrier_inset)
  • Code: Line 858 (3D), Line 933 (laser cut)
  • NEW FEATURE: Configurable inset for different board support needs

Carrier Centering Algorithm

Critical implementation detail: When creating carriers with inset borders, OpenSCAD's scale() affects ALL coordinates including the board origin position. The centering calculation must compensate for this:

// Calculate scale factors for inset cutout
scale_x = (pcb_x - 2 * border) / pcb_x;
scale_y = (pcb_y - 2 * border) / pcb_y;

// CRITICAL: Offset to re-center the scaled DXF
// This accounts for board_origin being scaled along with the geometry
sx_offset = (board_origin_x + pcb_x / 2) * (1 - scale_x);
sy_offset = (board_origin_y + pcb_y / 2) * (1 - scale_y);

// Apply transformation
translate([sx_offset, sy_offset, 0])
    scale([scale_x, scale_y, 1])
        import(pcb_outline);

Why this matters:

  • KiCAD 9 exports DXFs with absolute coordinates (board_origin_x/y can be 100+ mm)
  • When OpenSCAD scales the DXF, the board's center point shifts
  • Formula calculates how much the center moves and compensates with translation
  • Result: Bottom carrier (1mm inset) and top carrier (0mm inset) are perfectly concentric

Verification: Use mode = "check_aligned" to visually verify alignment in OpenSCAD:

  • Cyan = bottom carrier (smaller)
  • Magenta = top carrier (exact fit)
  • Both should be perfectly centered on red/blue head plates

BOARD 4: TOP CARRIER (PCB Clamp)

  • Location: Base assembly (Z=22mm absolute)
  • Function: Clamps PCB from above, prevents movement
  • PCB cutout: Exact fit (border = 0)
  • Result: Tight fit around PCB perimeter
  • Material thickness: mat_th (default 3mm)
  • Module: carrier(pcb_outline, pcb_x, pcb_y, 0)
  • Code: Line 863 (3D), Line 938 (laser cut)

🎨 3D Model Visualization

When rendered with mode = "3dmodel":

        HEAD ASSEMBLY (rotated -8° when closed)
        ═══════════════════════════════════════
Z=36mm  ●●●●●●●●● PIVOT HINGE ●●●●●●●●●
        
        ┌───────────────────────────────────┐
Z=25mm  │ HEAD TOP (Board 2)                │
        │   (clearance holes)               │
        │                                   │
        │     ↓  ↓  ↓  Pogo Pins  ↓  ↓     │
        │                                   │
Z=22mm  └───────────────────────────────────┘
        ┌───────────────────────────────────┐
        │ HEAD BASE (Board 1)               │
        │   ● ● ● (pogo pin holes) ● ● ●   │
        └───────────────────────────────────┘
        ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─  Contact
        
        BASE ASSEMBLY (fixed)
        ═══════════════════════════════════════
Z=25mm  ┌───────────────────────────────────┐
        │ TOP CARRIER (Board 4)             │
        │   [PCB cutout - exact fit]        │
        └───────────────────────────────────┘
Z=22mm  ┌ ─ ─ ─ ─ ─ ─PCB─ ─ ─ ─ ─ ─ ─ ─ ─ ┐
          ┌─────────────────────────────┐
Z=19mm  ║ │ BOTTOM CARRIER (Board 3)  │ ║
        ║ │  [PCB cutout - 1mm inset] │ ║
        ║ └─────────────────────────────┘ ║
        ║    ← 1mm support ledge →        ║
        └───────────────────────────────────┘
Z=0mm   ═══════════════════════════════════

✅ CONCLUSION

All 4 boards ARE present and properly configured:

  1. HEAD BASE (Board 1) - Pogo pin holes
  2. HEAD TOP (Board 2) - Structural + clearance
  3. BOTTOM CARRIER (Board 3) - PCB support with 1mm inset ← NEW
  4. TOP CARRIER (Board 4) - PCB clamp with exact fit

Plus 17 additional structural components for complete fixture assembly.

3D export: Use mode = "3dmodel" to generate PNG preview
Laser cut export: Use mode = "lasercut" to generate DXF with all 21 parts laid out

Recent improvement: Bottom carrier now has configurable bottom_carrier_inset = 1.0mm for better PCB edge support (2mm smaller cutout total, centered).