Skip to content

Instantly share code, notes, and snippets.

@eonist
Created March 13, 2026 23:41
Show Gist options
  • Select an option

  • Save eonist/c8afc98a5b24c4c93a0c22933d4d79e8 to your computer and use it in GitHub Desktop.

Select an option

Save eonist/c8afc98a5b24c4c93a0c22933d4d79e8 to your computer and use it in GitHub Desktop.
battery contector

can you give me direct links to the product pages of the solution you suggest: Anderson SBS75X — best feature overlap (finger-proof, power + signal, flat-wipe self-cleaning contacts), widely available including from RS in Norway, but mates horizontally and isn't sealed CHOGORI FC09 Pro — closest application match (e-scooter battery swap, blind mate, IPX7, 40A+5A), but uses conventional pin/socket rather than interleaving fins Amphenol BSC — most configurable (modular power + signal inserts, IP2X finger-proof, optional IP67 shroud), but oversized for a 10A ebike-scale application

@eonist
Copy link
Author

eonist commented Mar 14, 2026

Here’s a very small, self‑contained OpenSCAD snippet that models:

  • A cylindrical down tube section.
  • The raised pad island on the inside bottom.
  • The matching battery dock cavity with pogo block above.

You can paste this into a new .scad file and tweak dimensions.

// Simple demo of pad island + recessed pogo dock
// Units: mm

$fn = 64;

// ---------- Parameters ----------
dt_inner_d   = 30;    // down tube inner diameter
wall_thick   = 2;     // tube wall
section_len  = 60;    // length of shown tube section

island_len   = 24;
island_w     = 10;
island_h     = 4.5;   // pedestal + PCB

dock_depth   = 7;
dock_clear   = 1;     // clearance around island inside dock

pogo_block_h = 3;     // pogo plastic height

// ---------- Main ----------
module down_tube_section() {
    difference() {
        // outer tube
        cylinder(h = section_len, r = dt_inner_d/2 + wall_thick, center = false);
        // inner bore
        translate([0,0,0])
            cylinder(h = section_len, r = dt_inner_d/2, center = false);
    }
}

module pad_island() {
    // Island at bottom inside tube (z = 0 plane is bottom)
    translate([0, 0, 0]) {
        // Use a rounded box as pedestal+PCB
        translate([0, 0, island_h/2])
            rounded_box([island_len, island_w, island_h], r = 1.5);
    }
}

module rounded_box(size = [10,10,5], r = 1) {
    // quick-and-dirty rounded rectangle prism
    hull() {
        for (sx = [-1, 1])
            for (sy = [-1, 1])
                translate([sx*(size[0]/2 - r), sy*(size [reddit](https://www.reddit.com/r/openscad/comments/1lowpyi/designing_connecting_cubes/)/2 - r), 0])
                    cylinder(h = size [hackster](https://www.hackster.io/chloe-hor/building-a-reliable-magnetic-pogo-pin-usb-charging-interface-2efafd), r = r, center = true);
    }
}

// Battery dock cavity that drops over the island
module battery_dock() {
    // We show only the dock “block” here, not the whole battery.
    dock_len = island_len + 2*dock_clear;
    dock_w   = island_w   + 2*dock_clear;

    // Position the dock above the island, leaving some air gap.
    translate([0, 0, island_h + 2]) {
        // Outer block (for visualisation)
        color("lightgray")
        difference() {
            // Solid block representing the battery bottom
            cube([dock_len+6, dock_w+6, dock_depth+5], center = true);

            // Hollow cavity that fits around the island
            translate([0, 0, -1]) // cavity starts a bit above bottom
                cube([dock_len, dock_w, dock_depth], center = true);

            // Simple chamfer / funnel: subtract a slightly rotated hull
            // (kept crude for simplicity)
        }

        // Pogo block “inside” roof of cavity
        pogo_len = island_len - 4;
        pogo_w   = 4;
        translate([0, 0, dock_depth/2 - pogo_block_h/2])
            color("silver")
            cube([pogo_len, pogo_w, pogo_block_h], center = true);
    }
}

// ---------- Assembly views ----------

// Uncomment ONE of these at a time:

// 1) Frame only with island
//rotate([90,0,0]) {
//    translate([0,0,-section_len/2])
//        down_tube_section();
//    pad_island();
//}

// 2) Frame + dock in position
rotate([90,0,0]) {
    translate([0,0,-section_len/2])
        down_tube_section();
    pad_island();
    battery_dock();
}

This is intentionally simple and blocky: it just shows the relationships and clearances. You can now:

  • Adjust diameters/lengths to match your actual DT and battery scaffold.
  • Replace the battery_dock() solid with your real battery bottom geometry and fuse this dock into it.

Want me to add a second module that shows just the pad island and its PCB as a 2D projection you can export as DXF for the copper pattern?

@eonist
Copy link
Author

eonist commented Mar 14, 2026

that's cool 2 things. 1. only 1 dock and one island. dont make double sets. 2. the island must be square. dont chafer it. and recede the pins way more into the dock. human fingers cant reach it. also make the island smaller. so the dock is narrower. safetysafetysafetysafetysafety

@eonist
Copy link
Author

eonist commented Mar 14, 2026

Screenshot 2026-03-14 at 02 10 27 Screenshot 2026-03-14 at 02 10 17 Screenshot 2026-03-13 at 23 41 35

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment