Cylindrical Cell Adapters

An octet of Eneloop AAA cells arrived, I wanted to measure their as-delivered charge (the package says “Factory Charged With SOLAR ENERGY”, so you know it’s good), and discovered I’d given away my AAA cell holders. You can actually get inter-series adapters on eBay, but what’s the fun in that? Plus, I didn’t want to delay gratification for a month; you know how it is.

Soooo:

AAA to AA Adapter - top - Slic3r
AAA to AA Adapter – top – Slic3r

It’s basically an AA-size sleeve that fits over the AAA cell, with a lathe-turned brass post conducting juice from the + terminal of the inner cell outward:

AAA to AA Adapter - parts
AAA to AA Adapter – parts

Not much to look at when it’s assembled:

AAA to AA Adapter - assembled
AAA to AA Adapter – assembled

The AAA cell fits deliberately loose, because this goes into a metal clip holding everything firmly in place for the battery tester:

AAA to AA Adapter - in use
AAA to AA Adapter – in use

The source code tabulates the sizes of several cylindrical cells, exactly zero other pairs of which have been tested; I expect most won’t work correctly. In particular, the table entries should include the contact button OD and thickness for each cell, so that I can turn out the proper terminal for each pair of cells. If I ever need a different adapter, I’ll beat some cooperation out of that, too.

Discovered I needed an adapter after breakfast, started testing cells after lunch. Life is good!

The OpenSCAD source code as a GitHub Gist:

// Cylindrical cell adapters
// Ed Nisley KE4ZNU April 2017
//- Extrusion parameters must match reality!
ThreadThick = 0.25;
ThreadWidth = 0.40;
HoleWindage = 0.2;
Protrusion = 0.1; // make holes end cleanly
inch = 25.4;
function IntegerMultiple(Size,Unit) = Unit * ceil(Size / Unit);
//----------------------
// Dimensions
OutCell = "AA"; // cell sizes
InCell = "AAA";
BottomClear = 3*ThreadThick; // shorten outer shell to allow base protrusion
Terminal = [3.0,4.0,2.0]; // terminal: OD = nub dia, length = nub thickness
NAME = 0;
ID = 0; // for non-cell cylinders
OD = 1;
LENGTH = 2;
Cells = [
["AAAA",8.3,42.5],
["AAA",10.5,44.5],
["AA",14.5,50.5],
["C",26.2,50],
["D",34.2,61.5],
["A23",10.3,28.5],
["CR123",17.0,34.5],
["18650",18.6,65.2]
];
Outer = search([OutCell],Cells,1,0)[0];
Inner = search([InCell],Cells,1,0)[0];
echo(str("Outer cell: ",Cells[Outer][NAME]));
echo(str("Inner cell: ",Cells[Inner][NAME]));
echo(str("Wall: ",Cells[Outer][OD] - (Cells[Inner][OD]/cos(180/NumSides) + 2*ThreadWidth)));
Delta = Cells[Outer][LENGTH] - Cells[Inner][LENGTH];
echo(str("Terminal OAL: ",Delta));
echo(str(" ... head: ",Terminal[LENGTH]));
echo(str(" ... shaft: ",Delta - Terminal[LENGTH]));
NumSides = 3*4;
//----------------------
// Useful routines
module PolyCyl(Dia,Height,ForceSides=0) { // based on nophead's polyholes
Sides = (ForceSides != 0) ? ForceSides : (ceil(Dia) + 2);
FixDia = Dia / cos(180/Sides);
cylinder(r=(FixDia + HoleWindage)/2,h=Height,$fn=Sides);
}
//----------------------
// Construct adapter
module Adapter() {
difference() {
cylinder(d=Cells[Outer][OD],
h=Cells[Outer][LENGTH] - BottomClear - Terminal[LENGTH],
$fn=NumSides);
translate([0,0,Delta - Terminal[LENGTH]])
PolyCyl(Cells[Inner][OD] + 2*ThreadWidth,
Cells[Inner][LENGTH] + Protrusion,
NumSides);
translate([0,0,-Protrusion])
PolyCyl(Terminal[ID],
2*Cells[Outer][LENGTH],
6);
}
}
//----------------------
// Build it
Adapter();

The original doodle:

AAA to AA Adapter - sketch
AAA to AA Adapter – sketch