The Kohler brand soap dispenser in my apartment kitchen stopped working after the refill container neck twisted cleanly off. I considered re-attaching the neck using hot-glue or epoxy, but there wasn’t enough contact surface area to make a strong bond, so I brainstormed other possible fixes.
- Ask Landlord to replace the part
- Perhaps the most practical solution, but Zero fun.
- Try attaching any other bottle with similar threads
- Kohler bottle uses an uncommon thread profile. Digging through my own recycle bin( and the neighbors) yielded no matches. 🙁
- Fix the part using 3d printing.
- what I ultimately decide on.
Why fix it?
Fixing the dispenser gives me the opportunity to learn about some 3D printing, and FreeCAD.
Maybe my efforts result in solution that will be useful to others with similar issues.
Plan of Action
- Model the replacement bottle part.
- Print the replacement part.
After taking all the needed measurements for a 3D-printed bottle replica, I’m finally ready to model.
The first part of the 3D model I choose to tackle are the bottle threads. Luckily, FreeCAD has excellent built in feature that just works so no serious math or any coding required to sweep a profile along a helical path.
Now that the challenging part is sorted out all that’s left to do is give the bottle a big beautiful body.
I don’t know how much of an overhang the 3-D printer can manage so I go with a steeper angle to be safe.
Also When modeling the bottle I rationalize that printing horizontally would be ideal but would also use lot more material for supports and probably take a whole day to print. Being impatient, I go with vertical print, and cross my fingers that the layers will hold up to the weight of the soap and the twisting force of being screwed into the dispenser threaded flange.
The print goes smoothly, for several hours, but over 70% of the way done, I realize I’ve made a big mistake and cancel it. The pump tube is much longer than the 15 cm maximum print height of my FlashForge Adventure 3 printer. So I won’t be able to print the bottle as a single piece.
My original plan being foiled by the limited print-area leads me to design in a different direction – instead of printing a whole bottle, make an adapter that will allow me attach a regular plastic water bottle to the dispenser.
Back in FreeCAD, I model the water bottle half of the adapter, more concerned about the threads than the surrounding support.
After I marry the two parts into a single adapter and make a few adjustments. It’s back to printing.
This time I’m able to print the adapter on its side rather which should be stronger against sheering. This also seemed the only way to avoid the 3D prints being ruined due to beading residue all along the threads when printed horizontally.
The print fails halfway though, but enough is there to join both dispenser and the water bottle end. I install this version of the adapter, but later decide to round out the sharp edges to make it more hand friendly.
Challenges & Conclusion
3-D Printing even this simple piece required lots of tweaking to get the print settings right, as well as lots of unforeseen issues, like bumps depending on print orientation.
I’m very happy to say this works so well that am now on lookout for any other opportunities to replace proprietary refill bottles with some combination of recycled bottle and threaded adapter.
It took way more trial and error than I expected, to print such a basic part, but it was a cool example of limitations like the lack of space in 3d printer, leading to a solution that is more cost efficient and also more environmentally friendly.
- Built-in Python interpreter allows for live-debugging https://www.freecadweb.org
- Fused Deposition Modeling ( FDM )
- ( 3D ) printing overhangs
- Frenet–Serret formulas
I created the model using FreeCAD spreadsheet feature, so that it could be tweaked to work with other bottle cap threads and sizes. Check it out at MannyAdumbire/soap-dispenser-bottle-adapter-freeCAD.
I would advice against using it as an example of a well-done model, if you are a FreeCAD newbie like me. 😉