feat: Prototype base plate — real hub motor axle measurements #11
@ -80,11 +80,24 @@ PR #7 (`chassis_frame.scad`) used placeholder values. The table below records th
|
||||
|
||||
## Battery
|
||||
|
||||
> **Rev B update:** previous placeholder (185×72×52 mm) replaced with real pack dimensions.
|
||||
|
||||
| # | Part | Qty | Spec | Notes |
|
||||
|---|------|-----|------|-------|
|
||||
| 18 | LiPo / LiFePO4 pack | 1 | 24V (6S LiPo or 8S LiFePO4), 4Ah, ≤185×72×52mm | Confirm dims before printing tray; add 2mm clearance |
|
||||
| 19 | Velcro strap 20mm wide | 2 | 300mm length | Route through tray strap slots |
|
||||
| 20 | BMS board | 1 | Matched to cell chemistry | Mount externally on rear inner face of tray wall |
|
||||
| 18 | Battery pack | 2 (default) | 24V, 420×88×56 mm each | Sit side-by-side on deck (2-pack = 420×176 mm footprint). Up to 4 packs with underdeck shelf. |
|
||||
| 19 | Velcro strap 25mm × 500mm | 4 | One per strap slot × 2 slots × 2 packs | Pass through 25mm plate slots at x=±105mm; cinch over pack |
|
||||
| 20 | BMS board | 1–2 | Matched to cell chemistry | Mount to deck underside near battery centre; one BMS can parallel both packs |
|
||||
| 21 | 4-pack underdeck shelf plate | 0 (option) | 6mm Al, 440×200mm | Required only for 4-pack config; attaches via M5 shelf bolts; carries 2 more packs below main deck |
|
||||
| 22 | M5×20 shelf bolt + nut | 8 | SS, for underdeck shelf | Only for 4-pack config; M5 holes in main plate are pre-punched when `BATT_PACKS=4` |
|
||||
|
||||
### Battery footprint analysis
|
||||
|
||||
| Config | Width (Y) | Length (X) | Fits on 600mm wheelbase? | Notes |
|
||||
|--------|-----------|-----------|--------------------------|-------|
|
||||
| 2-pack (default) | 176 mm | 420 mm | ✅ Yes | Centred between forks |
|
||||
| 4-pack (in-line) | 176 mm | 840 mm | ❌ No | 840 > 600 mm wheelbase |
|
||||
| 4-pack (side-by-side) | 352 mm | 420 mm | ❌ No | 352 > 210 mm plate depth |
|
||||
| 4-pack (2+2 underdeck) | 176 mm | 420 mm | ✅ Yes | 2 packs below main deck via shelf |
|
||||
|
||||
---
|
||||
|
||||
|
||||
@ -1,11 +1,18 @@
|
||||
// =============================================================================
|
||||
// SaltyBot — Prototype Base Plate
|
||||
// SaltyBot — Prototype Base Plate (Rev B — real battery dimensions)
|
||||
// Agent: sl-mechanical | 2026-02-28
|
||||
//
|
||||
// Laser-cut or CNC-routed flat plate (6mm aluminium or 8mm acrylic).
|
||||
// Uses CALIPER-VERIFIED hub motor axle measurements — replaces placeholder
|
||||
// values from chassis_frame.scad (PR #7).
|
||||
//
|
||||
// ── BATTERY LAYOUT (real measurements — NOT placeholder) ─────────────────────
|
||||
// Each pack: 420 mm (L) × 88 mm (W) × 56 mm (H)
|
||||
// 2-pack (default): side-by-side in Y → footprint 420 × 176 mm on deck
|
||||
// 4-pack (expansion): 2 more packs on secondary underdeck tray
|
||||
// (4-wide = 352 mm exceeds robot width; in-line = 840 mm exceeds wheelbase)
|
||||
// Plate depth: 210 mm (176 mm battery + 17 mm margin each side)
|
||||
//
|
||||
// ── VERIFIED AXLE PROFILE (stepped D-cut) ────────────────────────────────────
|
||||
// Zone │ Feature │ Diameter / Width │ Length
|
||||
// ───────┼──────────────────┼────────────────────┼─────────
|
||||
@ -43,7 +50,9 @@ AXLE_CL_HEIGHT = TIRE_OD / 2; // 127 mm — axle centre above ground
|
||||
// =============================================================================
|
||||
|
||||
WHEELBASE = 600.0; // mm axle C/L to axle C/L
|
||||
PLATE_DEPTH = 220.0; // mm front-to-rear
|
||||
// PLATE_DEPTH driven by 2-pack battery width: 2 × 88 mm = 176 mm + 2×15 mm edge = 206 mm min.
|
||||
// 210 mm gives ~17 mm edge margin each side; increase if structural ribs are added.
|
||||
PLATE_DEPTH = 210.0; // mm front-to-rear (was 220; reduced to match 2-pack footprint)
|
||||
PLATE_OVERHANG = 40.0; // mm plate extends past axle C/L on each side
|
||||
PLATE_THICK = 6.0; // mm stock thickness (6 mm Al / 8 mm acrylic)
|
||||
|
||||
@ -68,9 +77,22 @@ DCUT_CL = 0.3; // mm all-round clearance on D-cut profile
|
||||
FC_PITCH = 30.5;
|
||||
FC_HOLE_D = 3.2;
|
||||
|
||||
// Battery area — 24 V pack footprint (mount holes)
|
||||
BATT_L = 185.0;
|
||||
BATT_W = 72.0;
|
||||
// Battery — REAL MEASUREMENTS (each cell pack)
|
||||
// ┌──────────────────────────────────────────────────────────────────────────┐
|
||||
// │ 420 mm (L) × 88 mm (W) × 56 mm (H) per pack │
|
||||
// │ Default config: 2 packs side-by-side → footprint 420 × 176 mm │
|
||||
// │ Expansion: 4 packs (2+2) → 4-pack requires underdeck shelf │
|
||||
// │ — 4-pack side-by-side (352 mm wide) exceeds robot width envelope │
|
||||
// │ — 4-pack in-line (840 mm long) exceeds wheelbase │
|
||||
// │ → Only viable 4-pack layout: 2 on deck + 2 on secondary underdeck tray │
|
||||
// └──────────────────────────────────────────────────────────────────────────┘
|
||||
BATT_L = 420.0; // mm pack length (runs along X / wheelbase axis)
|
||||
BATT_W = 88.0; // mm pack width (runs along Y / front-rear axis)
|
||||
BATT_H = 56.0; // mm pack height (clearance for under-deck routing)
|
||||
BATT_PACKS = 2; // packs on this plate (2 or 4); 4 adds shelf mounts
|
||||
BATT_INSET = 18.0; // mm mount-hole inset from each pack end
|
||||
BATT_STRAP_W = 25.0; // mm Velcro strap slot width
|
||||
BATT_STRAP_T = 4.0; // mm strap slot depth (through-slot in plate)
|
||||
|
||||
// Utility
|
||||
M3 = 3.2; M4 = 4.3; M5 = 5.3;
|
||||
@ -136,6 +158,12 @@ module assembly() {
|
||||
translate([side * WHEELBASE/2, 0, 0])
|
||||
rotate([0, side * 90, 0])
|
||||
axle_ghost();
|
||||
|
||||
// Battery pack ghosts — shows 2-pack layout on deck surface
|
||||
%for (pack_y = [BATT_W/2, -BATT_W/2])
|
||||
color("DarkGoldenrod", 0.35)
|
||||
translate([-BATT_L/2, pack_y - BATT_W/2, PLATE_THICK])
|
||||
cube([BATT_L, BATT_W, BATT_H]);
|
||||
}
|
||||
|
||||
// =============================================================================
|
||||
@ -185,22 +213,47 @@ module base_plate() {
|
||||
translate([x, y, -1])
|
||||
cylinder(d=FC_HOLE_D, h=PLATE_THICK + 2);
|
||||
|
||||
// ── Battery tray mount holes (M4 × 4 corners) ──────────────────────
|
||||
for (x = [-BATT_L/2 + 12, BATT_L/2 - 12])
|
||||
for (y = [-BATT_W/2 + 10, BATT_W/2 - 10])
|
||||
translate([x, y, -1])
|
||||
// ── Battery mount holes ──────────────────────────────────────────────
|
||||
// Layout: 2 packs side-by-side, each running lengthwise (420 mm in X).
|
||||
// Pack centres at y = +BATT_W/2 (pack A, front)
|
||||
// y = -BATT_W/2 (pack B, rear)
|
||||
// 4 mount holes per pack (corners, BATT_INSET from each end) = 8 holes total.
|
||||
for (pack_y = [BATT_W/2, -BATT_W/2]) // two packs in Y
|
||||
for (dx = [-BATT_L/2 + BATT_INSET,
|
||||
BATT_L/2 - BATT_INSET]) // two holes in X per pack
|
||||
translate([dx, pack_y, -1])
|
||||
cylinder(d=M4, h=PLATE_THICK + 2);
|
||||
|
||||
// ── Lightening / cable routing slots (3 centre panels) ─────────────
|
||||
slot_w = 28;
|
||||
slot_h = PLATE_DEPTH - 80;
|
||||
for (x = [-130, 0, 130])
|
||||
translate([x - slot_w/2, -slot_h/2, -1])
|
||||
// Rounded slot via hull
|
||||
hull() {
|
||||
translate([slot_w/2, slot_w/2, 0]) cylinder(d=slot_w, h=PLATE_THICK+2);
|
||||
translate([slot_w/2, slot_h - slot_w/2, 0]) cylinder(d=slot_w, h=PLATE_THICK+2);
|
||||
}
|
||||
// ── Velcro strap slots (2 slots per pack, run full Y depth) ─────────
|
||||
// Slots pierce the plate so the strap passes through from below.
|
||||
// Positioned at x = ±BATT_L/4 (quarter-length of battery).
|
||||
for (sx = [-BATT_L/4, BATT_L/4])
|
||||
translate([sx - BATT_STRAP_W/2, -PLATE_DEPTH/2 + 8, -1])
|
||||
cube([BATT_STRAP_W, PLATE_DEPTH - 16, PLATE_THICK + 2]);
|
||||
|
||||
// ── 4-pack expansion shelf attachment holes (M5, 4 per side) ────────
|
||||
// Only punched when BATT_PACKS >= 4.
|
||||
// These accept M5 bolts that hold a secondary underdeck tray for
|
||||
// two more packs (same 420×88mm dims) mounted below the main plate.
|
||||
if (BATT_PACKS >= 4)
|
||||
for (ex = [-BATT_L/2 - 10, -BATT_L/6,
|
||||
BATT_L/6, BATT_L/2 + 10])
|
||||
for (ey = [-PLATE_DEPTH/2 + 12, PLATE_DEPTH/2 - 12])
|
||||
translate([ex, ey, -1])
|
||||
cylinder(d=M5, h=PLATE_THICK + 2);
|
||||
|
||||
// ── Lightening / cable routing slots ────────────────────────────────
|
||||
// Placed between the two battery pack columns and at the centre.
|
||||
// Only if they don't overlap the strap slots (strap slots are at ±BATT_L/4).
|
||||
slot_w = 22;
|
||||
slot_h = BATT_W - 20; // runs between the pack boundaries
|
||||
for (x = [-BATT_L/3 + 10, 0, BATT_L/3 - 10])
|
||||
hull() {
|
||||
translate([x, -slot_h/2 + slot_w/2, -1])
|
||||
cylinder(d=slot_w, h=PLATE_THICK + 2);
|
||||
translate([x, slot_h/2 - slot_w/2, -1])
|
||||
cylinder(d=slot_w, h=PLATE_THICK + 2);
|
||||
}
|
||||
|
||||
// ── Bearing seat relief (36mm slot lets hub collar clear plate edge) ─
|
||||
// Prevents Ø37.8mm bearing seat from binding against plate edge.
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user