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.


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;
Cells = [
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() {
h=Cells[Outer][LENGTH] - BottomClear - Terminal[LENGTH],
translate([0,0,Delta - Terminal[LENGTH]])
PolyCyl(Cells[Inner][OD] + 2*ThreadWidth,
Cells[Inner][LENGTH] + Protrusion,
// Build it

The original doodle:

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