Using a Makita 18v Battery

I have a number Makita cordless tools and a number of batteries for them. It has always irked me that the batteries only fit Makita tools, it seems such a waste of a very good quality battery.

It occurred to me that the batteries rated at a nominal 18v (they are more likely to be about 21v) would be perfect to run things like a laptop when no other power is available. There is an element of danger here because the lithium cells can pack quite a punch.

Looking at the connector on the base of my Makita drill I thought I would try to recreate it as a connector to attach an in-line fuse and an outlet for a laptop.

Whether it will be successful I have no idea but I have been working on a test print and so far have come up with this:

I have got to say the maths involved drove me up the wall as you will see from the code:

//Makita Battery Connector

//Note x=width, y==length

//Variables

Conwd=71;    //connecor Width
Conlg=48;    //Connector Length

Clpht=15;   //Height of slide
Clpwd=63;   //Slide Width
Tgeht=6.2;  //tongue height
Tgewd=54;    //Tongue gap/width

Thk=2;       //Basic thickness
//Contact Info
Ctspwd=39;  //Contact width
Ctsp1=9.3;  //Front contact distance
Ctsp2=20.6; //Rear contact distance
Ctln=5;     //Contact Length
Ctwd=1;     //Contact Width

//Contact Box Variables
Xtra=6;    //extra space in box
xx=8;//Box Width
yy=(Ctsp2-Ctsp1)+Ctln+(Thk*2)+Xtra;//Box Length
zz=10; //Box Height

//Variables End

difference()
{
    //Basic Shape
    translate([0,0,0])
    cube([Conwd,Conlg,Clpht+Thk]);
    
    //Cut out
    //top
    translate([(Conwd-Clpwd)/2,0,Tgeht])
    cube([Clpwd,Conlg,Clpht-Tgeht]);
    //bottom
    translate([(Conwd-Tgewd)/2,0,0])
    cube([Tgewd,Conlg,Tgeht]);
     
    //insert contact slots
    translate([((Conwd-Ctspwd)/2)-(Ctwd/2),Ctsp1-(Ctln/2),Clpht])
    ContactSlot();    
        
    translate([((Conwd-Ctspwd)/2)-(Ctwd/2),Ctsp2-(Ctln/2),Clpht])
    ContactSlot();  
    
    translate([(((Conwd-Ctspwd)/2)-(Ctwd/2))+Ctspwd,Ctsp1-(Ctln/2),Clpht])
    ContactSlot();    
        
    translate([(((Conwd-Ctspwd)/2)-(Ctwd/2))+Ctspwd,Ctsp2-(Ctln/2),Clpht])
    ContactSlot();   
    
}    //End of difference

// Contact Boxes

translate([((Conwd-Ctspwd)/2)-(xx/2),Ctsp1-(((Xtra+Ctln)/2)+Thk),Clpht+Thk])
ContactBox();


translate([(((Conwd-Ctspwd)/2)-(xx/2))+Ctspwd,Ctsp1-(((Xtra+Ctln)/2)+Thk),Clpht+Thk])
ContactBox();

//Add Text

translate([((Conwd-Ctspwd)/2)+Ctspwd,Conlg-15,Clpht+Thk])
linear_extrude(.5,center=false)
text("+",size=10);

translate([((Conwd-Ctspwd)/2),Conlg-15,Clpht+Thk])
linear_extrude(.5,center=false)
text("-",size=10);

module ContactSlot()
    cube([Ctwd,Ctln,10]);

module ContactBox()
      
    difference()
    {
         
        cube([xx,yy,zz]);
            
        translate([Thk,Thk,0])
        cube([xx-(Thk*2),yy-(Thk*2),zz+1]);  
    }    

I am printing out a test piece to get the fit at the moment but whether it goes any further remains to be seen. Making the connectors/contacts might be a obstacle, we shall see.

BTW in many ways I regret getting Makita cordless tools they are so expensive, for the same price as one you can buy two or three Ryobi equivalents. Ryobi tools are more than adequate for people like me who use them occasionally. You can buy adapters to fit Makita batteries in Ryobi tools but frankly I already have all the tools I need.

…and he was never seen again!..

Not very good use of coding standards there, Bruce, variables and their types should be defined at their fist declaration to avoid type incompatibilities and incorrect type assignments etc.

For example, Tongue height is an integer value whereas connector width is a floating point and neither is assigned its variable type.

Poppycock and balderdash! :roll_eyes:

Be careful Bruce when adapting different power sources to things that might not be compatible.
I tried to make my wildlife camera run on an external power source to save on batteries. It hasn’t worked since, and sits on a shelf in the workshop waiting for repair or despatch…
:worried:

This is not VBA

OpenSCAD is a Functional programming language, as such variables) are bound to expressions and keep a single value during their entire lifetime due to the requirements of referential transparency. In imperative languages, such as C, the same behavior is seen as constants, which are typically contrasted with normal variables.

Don’t worry that won’t happen. Lithium cells have a voltage of 4.2v when fully charged down to 3.7v when discharged, these batteries are nominally 18v (3.7 x 5) but fully charged are about 22v so are perfect for laptops which usually are powered with about 19v external power supply.

She’ll be right.

1 Like

That’s more or less what I told him, but more succinctly. :slightly_smiling_face:

2 Likes

I was a C++, VB, Delphi and 8086 developer for about 15 years. Also clipper (remember that) and a number of other languages, which I still keep my hand in from time to time.

Constants and variables in C++ have to be defined or they won’t compile, the problem with VB and other languages is that the variables become defined by the value they are first assigned. If they are assigned the wrong type in the code rather than in the header and that value is wrong, they will error out the next time they are used with the correct values. Its not good coding practice if you do this in large coding teams as they don’t know what the variable type is unless they search through the lines of code.

OK for home coding though I suppose.

Nobody cares. This has nothing to do with any of that. Come back when you know what you are talking about.

I made a test piece to check for size and fit

As you can see it wasn’t bad. The slots for the terminals were clearly not big enough but overall the fit wasn’t bad. I made a few adjustments, a couple of mm here and a 0.5mm there before printing out the final version.

The idea is that the terminals will be held in place with hot glue filling those boxes.

Because this design included a lot of horizontal unsupported printing the slicing software had to include supports. This it did automatically. Well, I told it to do it automatically. This is the first time I have had to use supports during printing.

As you can see the supports are very thin slivers of plastic to stop the horizontal layer collapsing before it set. They are so thin and made of a lattice that you can actually see through.

They remove really easily by tearing them out with just finger or thumb pressure.

The next job is to create the contacts which fit in the slots and connect to the battery. I have a couple of ideas.

More later…

1 Like

Dicking around with 18v batteries and laptops is a really stupid idea and very dangerous Bruce

Just buy the right battery it might prevent you burning your house down killing yourself or both.

So you’re an expert on that too are you?

I know enough not to dick around with 18v batteries and laptops.

And I wrote software commercially for 15 years too - not as a kitchen table hobbyist. I now perform technical audits on safety critical systems … what’s your background Bruce ?

Not that it is anything to do with you but Telecommunications, Electronics and Power Generation. Why?

I don’t expect we’ll ever see him again, then. :slightly_frowning_face:

Well, if you know what your doing, fair play to you and good luck with it, just be very careful.

I know a couple of people that were dicking around with valve amps and got lucky escapes because they didn’t know what they were doing.

A slight setback - I thought I would be able to use some low voltage connectors as the contacts.

Unfortunately they are not long enough. While they do touch the battery contacts I don’t personally think they make enough of a contact. Each battery terminal has spring loaded contacts the connector is only gripped by half of the top one which, even with all four in place, I fear will over heat if higher current is drawn.

I think I have going to have to visit a hobby shop and get some copper sheet to make decent connectors.

Ho hum…