Qball's Weblog

My solution for a cheap air purifier - part 2

Tags ESP8266  Air Purifier 

2nd part of air purifier. I just finished printing v2. The overall result is very nice, although the bottom part holding the filter is not the cleanest print, as it does not like the larger holes in the bottom. Nothing that you would notice if you don’t put it right in from of you on the table.

This post is mostly to provide the sources for the 3d printed parts.

It is written for OpenScad. It is not nice, it is just hacked together until it worked:

lid

difference()
{
    union()
    {
        cylinder(d=200,h=4,$fn=100);
        translate([0,0,2]){
            cylinder(d=188,h=6,$fn=100);
        }
    }


    for ( i = [0 : 90 :360 ] ) {
        rotate([0,0,i])
            translate([0,15, -0.1]){
                cylinder(d=8,h=10,$fn=20);
            }
    }
    for ( i = [0 : 45 :360 ] ) {
        rotate([0,0,i])
            translate([0,25, -0.1]){
                cylinder(d=8,h=10,$fn=20);
            }
    }
    for ( i = [0 : 45/2 :360 ] ) {
        rotate([0,0,i])
            translate([0,35, -0.1]){
                cylinder(d=8,h=10,$fn=20);
            }
    }
    for ( i = [0 : 45/3 :360 ] ) {
        rotate([0,0,i])
            translate([0,45, -0.1]){
                cylinder(d=8,h=10,$fn=20);
            }
    }
    for ( i = [0 : 45/4 :360 ] ) {
        rotate([0,0,i])
            translate([0,55, -0.1]){
                cylinder(d=8,h=10,$fn=20);
            }
    }
    for ( i = [0 : 45/5 :360 ] ) {
        rotate([0,0,i])
            translate([0,65, -0.1]){
                cylinder(d=8,h=10,$fn=20);
            }
    }
    for ( i = [0 : 45/6 :360 ] ) {
        rotate([0,0,i])
            translate([0,75, -0.1]){
                cylinder(d=8,h=10,$fn=20);
            }
    }
    for ( i = [0 : 45/7 :360 ] ) {
        rotate([0,0,i])
            translate([0,85, -0.1]){
                cylinder(d=8,h=10,$fn=20);
            }
    }
}

Ring top

difference()
{
    union()
    {
        cylinder(d=200,h=50,$fn=100);
    }


    if( 1){
        translate([0,0,-4]){
            cylinder(d=170,h=20,$fn=100);
        }
        translate([0,0,3]){
            cylinder(d=190,h=50,$fn=100);
        }

    }

    translate([0,0,30]) {
        rotate([90,90,0]) {
        }
    }

    if( 1){
        translate([127/2,127/2,-3]){
            cylinder(d=3.3,h=10,$fn=100);
        }
        translate([127/2,-127/2,-3]){
            cylinder(d=3.3,h=10,$fn=100);
        }
        translate([-127/2,127/2,-3]){
            cylinder(d=3.3,h=10,$fn=100);
        }
        translate([-127/2,-127/2,-3]){
            cylinder(d=3.3,h=10,$fn=100);
        }
    }

}

separator

difference()
{
    union()
    {
        cylinder(d=200,h=3,$fn=100);
        cylinder(d=118,h=10,$fn=100);

    }

    if( 1){
        translate([0,0,-4]){
            cylinder(d=114,h=20,$fn=100);
        }
        translate([105/2,105/2,-3]){
            cylinder(d=5,h=10,$fn=100);
        }
        translate([105/2,-105/2,-3]){
            cylinder(d=5,h=10,$fn=100);
        }
        translate([-105/2,105/2,-3]){
            cylinder(d=5,h=10,$fn=100);
        }
        translate([-105/2,-105/2,-3]){
            cylinder(d=5,h=10,$fn=100);
        }
    }
    rotate([0,0,45])
        if( 1){
            translate([127/2,127/2,-3]){
                cylinder(d=3.3,h=10,$fn=100);
            }
            translate([127/2,-127/2,-3]){
                cylinder(d=3.3,h=10,$fn=100);
            }
            translate([-127/2,127/2,-3]){
                cylinder(d=3.3,h=10,$fn=100);
            }
            translate([-127/2,-127/2,-3]){
                cylinder(d=3.3,h=10,$fn=100);
            }
        }
}

split ring

difference()
{
    union()
    {
        cylinder(d=200,h=3,$fn=100);
        translate([0,0,3]){
            cylinder(d=192,h=4,$fn=100);
        }
    }
    cylinder(d=175,h=10,$fn=100);
    translate([0,0,3]){
        cylinder(d=184,h=10,$fn=100);
    }
    if( 1){
        translate([127/2,127/2,-3]){
            cylinder(d=3.3,h=100,$fn=100);
            translate([0,0,5])
                cylinder(d=7,h=100,$fn=100);
        }
        translate([127/2,-127/2,-3]){
            cylinder(d=3.3,h=100,$fn=100);
            translate([0,0,5])
                cylinder(d=7,h=100,$fn=100);
        }
        translate([-127/2,127/2,-3]){
            cylinder(d=3.3,h=100,$fn=100);
            translate([0,0,5])
                cylinder(d=7,h=100,$fn=100);
        }
        translate([-127/2,-127/2,-3]){
            cylinder(d=3.3,h=100,$fn=100);
            translate([0,0,5])
                cylinder(d=7,h=100,$fn=100);
        }
    }
}

bottom part

translate([0,0,2])
{
    difference()
    {
        cylinder(d=200,h=178,$fn=100);
        cylinder(d=194,h=181,$fn=100);

        for ( i = [ 5 : 10 :185 ] )
        {

            rotate([90,0,i]){
                translate([0,5,-220/2]) {
                    for ( j = [8 : 10 : 160 ] ){
                        //#cylinder(d=4, h=220, $fn=10);
                        translate([0,j,0]){
                            cylinder(d=8, h=220, $fn=10);

                        }
                    }
                }
            }
        }

        //translate([0,-110,-1])
        // #cube([250,220,124]);
    }
}



difference()
{
    union()
    {
        cylinder(d=200,h=2,$fn=100);
        cylinder(d=118,h=6,$fn=100);

    }
}

Together:

images

The split-ring, separator and ring-top screw together with 4 m3 screws. (in old version they where glued, this is still possible)

The filter sits in the bottom. I always remove the bottom rubber/foam ring that is stuck on the bottom from the filter so it sits flush on the bottom. This is also taken into account in the height. The ring in the bottom and the ridge in the separator seal the filter, so all air is pulled through the lamellar.

The 12x12cm fan is mounted to the separator with 4 m5 screws and sits in the top ring with airflow towards the top (so draw in air from filter.)

And done:

images

The photo looks a bit better then the actual print, but overall it looks nice enough. If it starts irritating me, I will paint it.

comments powered by Disqus