Introduction: Baby's Bottle Milk Powder Dispenser

Baby's Bottle Milk Powder Dispenser - Introduction of concept -

1,66 year ago, I became a dad!

Among the many new stuffs I discovered there is one thing I never get used with :

Pour a 30mm diameter spoon, full of a fine milk powder, into a 34mm baby’s bottle opening !

A really difficult task for me , especially in the middle of the night!

So, I though about building this powder milk dispenser for baby's bottle.

The principle is easy:

manually dispense, in a more controlled way a defined number a measure into a baby's bottle without any loss.

The milk powder box is placer upside down on the top of the dispenser.

The milk is dispensed into the baby's bottle through a funnel

The powder flow is controlled with a rotative spoon place in the middle of the funnel which volume correspond to the measure sold with the milk (12ml). Each rotation corresponding to a the dispense of one measure.

As in my previous, and first , 3D instructable, I used OpenScad to design the object: a precise and easy to use command line editor. (Yes, "easy to use " and "command line" are compatible words! ;) ) and I print the object using 3DHubs services.

Parts and design are detailed in the following steps!

If you like My project, thanks for voting on the right corner for the 3DContest!

Step 1: The Code...

The dispenser contains 3 parts:

- the top funnel on which the milk bottle is placed.

- The dispenser mesure that manualy rotate to dispense a defined volume of milk powder

- The dispenser tube that dispense the milk into the baby bottle

-Optional feet (not shown on image)

Find bellow the Openscad code to generate the dispenser model:

The code is oganised in 3 sections: Parameter and value, and one section per parts

You can generate the model to have a full overview, or generate only one part for printing

//PARAMETERS _____________________________

r=22; //radius sphere dispenser
epd=2;// thickness dispenser

rb=13; //radius baby's bottle openning

ep=4; //wall thickness

tol=0.5; //tolerance

h=30; //plate height

R=130/2;//Radius milk box

dm=10; //diametre manivelle

sec=4; //section fixation manivelle

lm=40; //lengh manivelle

dp=18; //diametre handle

n=1; //cavity number in dispenser

H=155; //dispenser height

DP=10; //feet diameter

res=100; //reslution

// DISPENSER MEASURE______________________________________________________

//rotate([0,90,0])

union(){ // dispenser

difference() { //sphere wall

sphere(r=r,$fn=res); // sphere ext

sphere(r=r-2,$fn=res); //sphere int

for(i=[1:n])rotate([i*360/n,0,0]) //quarter cut

translate([-r,epd,epd]){cube(size = [2*r, r, r]);}

}

difference() { //measure

difference() {

sphere(r=r,$fn=res);

for(i=[1:n])rotate([i*360/n,0,0]) // quarter cut

translate([-r,epd,epd]){cube(size = [2*r, r, r]);}

}

for(i=[1:n])rotate([i*360/n,0,0]) translate([0,r/1.4,r/1.4]) sphere(r=r,$fn=res); //measure cut

}

translate([-r+tol,0,0])rotate([0,90,180]) {cylinder(h=3*ep, d=dm,$fn=res);} //axe 1

translate([r+lm-1,0,0]){rotate([0,90,180]) {cylinder(h=lm, d=dm,$fn=res);}} //axe manivelle

rotate([0,90,0]) {translate([0,0,lm+r-1]){cylinder(h=r, d=dp,$fn=res);} } //handle

for(i=[1:10])rotate([i*360/10,0,0]) //grip

translate([r+lm-1,0,dp/2]){rotate([0,90,0]) {cylinder(h=r, d=dm,$fn=res);}

}

}

//DIPSPENSER TUBE__________________________________

union() {

difference() {

cylinder(h=r, r=r+ep,$fn=res);

sphere(r=r+tol,$fn=res);

cylinder(h=3*r, r=rb,$fn=res,center=true);

rotate([0,90,0]) {

cylinder(h=3*r, d=dm+tol, center=true,$fn=res);

}

}

translate([0,0,r]){ // funnel

difference() {

cylinder(h=r/2, r1=r+ep, r2=rb+ep,$fn=res);

cylinder(h=r, r=rb,$fn=res,center=true);

cylinder(h=0.05, r=r+tol,$fn=res, center=true); //debug hi

cylinder(h=2*r, r=rb,$fn=res); //debug lo

}

}

difference() { // fixation

union() {

translate([0,-r/2-R/2-tol-ep/2,r/2]){cube(size = [2*ep,R-r+ep,r], center=true);}

translate([0,-3*r-ep,r/2]){cube(size = [2*r,ep,r], center=true);}

}

translate([r/2,-3*r,r/1.3]){cube(size = [ep,4*ep,r/2], center=true);}

translate([-r/2,-3*r,r/1.3]){cube(size = [ep,4*ep,r/2], center=true);}

}

}

//TOP FUNEL______________________________________________

union(){

rotate([0,180,0]) {

difference() {

cylinder(h=h, r1=r+ep, r2=R+ep,$fn=res);

cylinder(h=h+tol, r1=r+tol, r2=R-ep,$fn=res);

translate([0,0,-1]) { cylinder(h=h, r=r+tol,$fn=res);}

rotate([0,270,0]) {

cylinder(h=4*r, d=dm+tol, center=true,$fn=res);

}

for(i=[1:3])rotate([0,180,-60+i*360/3]){ //hole

translate([R-ep/2,0,-h+ep]){

cylinder(h=H+h+r, d=DP,$fn=res);

}}

}

translate([0,0,h]){

difference() {

cylinder(h=ep, r=R+ep,$fn=res);

cylinder(h=2*h, r=R+tol, center=true,$fn=res);

}

}

}

}

//OPTIONAL FEET___________________________________________

*for(i=[1:3])rotate([0,0,-60+i*360/3]){

translate([R-ep/2,0,-h+ep/3]){

cylinder(h=H+h+r+r/2, d=DP);

}

}

Step 2: From Code to Reality

I printed the parts in PETG to ensure a compatibility with food using 3DHUBs service!

I just need to find a way to have a nice glossy polish of PETG to improve cleanability and a better powder flow into the funel ... If you have any advices for polishing, I'm interested!

Thanks for your interest!

3D Printing Contest 2016

Participated in the
3D Printing Contest 2016