Make your own Battery pack – part II

After quite a while I am happy that I can report some progress on our original Battery pack project. As the first, I’ve been able to raise some money from my sponsor (Veronika) and bought 60 of these:

As you can read in my previous article – they were $11 originally, but after while their price suddenly dropped to $4.75. No idea what’s behind it, but they arrived practically instantly – delivered by the FUBU guy himself.

And also we weighted one cell for reference – one cell weights 74g.

Meanwhile I started working on the battery pack frame. Using quite a simplified 2S2P design I came up with this code, which allows S & P parameters together with battery size option to print what’s needed.

use <ShortCuts.scad>

// Config
S = 2;
P = 2;
wall_thickness = 1;
wall_height = 8;
 * Battery types
 * A = 18650
 * B = 21700
battery_type = "B";
material_buffer = 1;
top = false;

function battery_d()
  = battery_type == "A"? 18 + material_buffer:21 + material_buffer;

function box_x() = P*(wall_thickness + battery_d()) + wall_thickness;
function box_y() = S*(wall_thickness + battery_d())+ wall_thickness;

function sep_x() = P*(wall_thickness + battery_d()/3) + wall_thickness;

module wall_x(x) {
  T(0, x*(battery_d() + wall_thickness), 0)
  minkowski() {
    cube([box_x() - wall_thickness/2,wall_thickness/2,wall_height], center = false);

module wall_y(y) {
  T(y*(battery_d() + wall_thickness), 0, 0)
  minkowski() {
    cube([wall_thickness/2,box_y() - wall_thickness/2,wall_height], center = false);

module separator(x) {
  if (x%2 && top)
  T(0, x*(battery_d() + wall_thickness) - battery_d()/3, -wall_thickness)
  minkowski() {
    cube([box_x()-wall_thickness/2,(battery_d()*2/3 + wall_thickness),wall_thickness/2], center = false);

  if ((x-1)%2 && !top)
  T(0, x*(battery_d() + wall_thickness) - battery_d()/3, -wall_thickness)
  minkowski() {
    cube([box_x()-wall_thickness/2,(battery_d()*2/3),wall_thickness/2], center = false);


for(x = [0:S]) wall_x(x);
for(y = [0:P]) wall_y(y);

for(x = [0:S]) separator(x);

This code translates to this beauty:

So I kept changing the code, rendering, slicing …

…printing …

… and testing. What looked initially like a trivial task still took a while (days) to get it right. All that below is just garbage.

Until today finally – voila! After quite lengthy print (13hrs), all clicked together and with a bit of help from Sebi we made it in a tiny DIY animation.

Weighted it properly, showing that our new baby 6S5P battery comes to 2.28kg.

And I took one last picture just to show off 😉

That’s all for today. Next stage is to get our nickel strips and a spot welder and let it all to click together. I can’t wait to see it all working!

One thought on “Make your own Battery pack – part II

Leave a Reply