Creator[edit | edit source]
Project developed by Adam Pringle
Background[edit | edit source]
Sifting a desired material from another has been done throughout history since the dawn of agriculture. One widely used application is the process of separating grain from chaff for grain crops.[1] Sifting material is not limited to food crops, but can also be helpful for separating soil into various grades.
Abstract[edit | edit source]
This OSAT project is meant to provide utility in sifting for a variety of applications. This sifter is appropriate because it costs about $1.42 to create provided one has access to a 3D printer. Any task needed to sift a material from another material this sifter can be adapted to complete.
- The code provided for this project can be modified with many variables as shown below:
Modifiable variables in code |
Size(radius) |
Mesh thickness |
Outside ring length |
Height |
Mesh density |
Offset of mesh lines |
Funnel size (radius) |
Funnel height |
-
40mm sifter, 3mm mesh size
-
70mm sifter, 5mm gridsize under 7mm gridsize topdown
-
70mm sifter, 5mm gridsize under 7mm gridsize
-
Topdown view with funnel
-
Another view of assembly with funnel
-
Same sifter mesh plates, but taller funnel
-
Same sifter mesh plates, but wider funnel
Goals:
- Adjustable size of sifter
- Adjustable size of mesh
- Rotating mesh plates for mesh density adjustment
- Ease of part reconfiguration with solid design stability
Comparative 3D printable sifter: Customizable Sifter with multiple shape options
Tools needed[edit | edit source]
- MOST Delta RepRap or similar RepRap 3-D printer
- I used a hex key for my 3m hex screws
Skills and knowledge needed[edit | edit source]
Technical Specifications and Assembly Instructions[edit | edit source]
- Download the code provided (open with OpenSCAD) at the bottom of this page and change variable values to fit your need. (They are highlighted at the top and bottom of the code)
- Render the part in OpenSCAD and export as an STL
- Import STL into Cura and set print specifications similar to what is shown
- Export from Cura via G-code and upload to Franklin
- Print parts as needed
- Assemble the sifter mesh plates ontop of each other in such a way that the guide holes line up. (45 degree difference between sifter mesh plates is recommended for consistent mesh size)
- Set a screw in several(as needed) guide holes in the sifter funnel and attach the sifter mesh plates as desired.
- Your variable sifter is ready!
Common Problems and Solutions[edit | edit source]
- Include common mistakes/problems to avoid in building your OSAT and how to overcome them
- Make sure the sifter funnel and sifter mesh plate dimensions match up(CID, RingLength and SifterHeight values)
- When creating two sifter mesh plates, to get a good match up with their meshes GridSpread(Sifter2) = GridSpread(Sifter2)*2^0.5 (think of gridspread(Sifter1) as a square and gridspread(Sifter2) as the hypotenuse of the 45-45-90 triangle where two sidelengths are the sides of the gridspread(Sifter1)
- When setting up multiple sifter mesh plates in OpenSCAD take notice of the offset of each plate. Sifter1(Offset = 0) while Sifter2(Offset = x) where x = what you need it to be to get the desired mesh orientation
-
5mm gridsize under 7.5mm gridsize with no offset
-
5mm gridsize under 7.5mm gridsize with 3.75mm offset
-
5mm gridsize under 7.5mm gridsize with 3.75mm offset, incorrect 2nd gridsize
-
5mm gridsize under 7.071mm gridsize with 3.75mm offset, correct 2nd gridsize
Bill of Materials[edit | edit source]
PLA | $22.98 per Kg[1] |
3m screws | ($1.23/18)[2] |
3D printer | Mine was $500[3] |
- 2 sifter mesh plates of 11g PLA each were printed
- 1 sifter funnel of 39g PLA was printed
- 4 3m screws were used
Costs and Cost Savings[edit | edit source]
Total cost | Mine: $1.42 | Commercial: $6.95[4] - $16.99[5] - $227[6] |
Savings | Minimum 5x cheaper ($5.53 saved, %80) | Highest 160x cheaper ($225.58 saved, %99.37) |
- Values in table do not include shipping costs (although there were no shipping costs for this project, the commercial equivalents may have them)
- It is important to note that people who live in a village can make sifters for food products out of readily available materials, which would be very inexpensive cost wise.
- Thus, this project would be better suited for applications requiring more strength
References[edit | edit source]
Files[edit | edit source]
Gallery[edit | edit source]
-
Assembled sifter and extra sifter mesh plates
-
4 3m12 hex screws and a 3m hex key
-
Top down view of assembled sifter
-
Close up view of assembled sifter
-
small sifter, 1mm mesh size
-
small sifter, 3mm mesh size
-
small sifter, 5mm mesh size
-
5mm gridsize under 7.5mm gridsize with no offset
-
5mm gridsize under 7.5mm gridsize with 3.75mm offset
-
50mm sifter, 7.5mm offset
-
70mm sifter, 5mm gridsize under 7mm gridsize topdown
-
70mm sifter, 5mm gridsize under 7mm gridsize
-
5mm gridsize under 7.5mm gridsize with 3.75mm offset, incorrect 2nd gridsize
-
5mm gridsize under 7.071mm gridsize with 3.75mm offset, correct 2nd gridsize
-
Topdown view without funnel
-
Topdown view with funnel
-
Another view of assembly with funnel
-
Same sifter mesh plates, but taller funnel
-
Same sifter mesh plates, but wider funnel
-
22.5 degree rotation of 2nd sifter mesh plate
-
Cura settings for printing
-
Code[edit | edit source]
The following code is for the sifter mesh plate
module Sifter(GridThickness,RingLength, SifterHeight, GridSpread, CID,Offset) { //Example Specs //GridThickness=1; //SifterHeight=2.5; //GridSpread=10; //CID=40; Cylinder internal Radius //Do not change IterationMax=CID*3; //RingLength = 9; CubeWidth=CID*2.4; union(){ //Creating the Grid color("Purple") difference(){//Difference allows just the circular grid to be shown union(){ // Union adds both directions of grid to be one part for (y = [0:IterationMax-1] ) //number of lines {translate([0,-IterationMax*GridSpread/2+GridSpread/2+Offset,0]) //Centering selection {translate([0-1,y*GridSpread,0])cube([CubeWidth,GridThickness,SifterHeight],center=true);}} //spacing of cubes for (y = [0:IterationMax-1] ) rotate([0,0,90]) //rotate 90degrees for Perp. {translate([0,-IterationMax*GridSpread/2+GridSpread/2,0]) {translate([0-1,y*GridSpread,0])cube([CubeWidth,GridThickness,SifterHeight],center=true);}} } difference(){//Removing extra grid outside of cylinder holder cylinder(h = SifterHeight+1, r = IterationMax*GridSpread, center = true,$fn=100); cylinder(h = SifterHeight+1, r = CID, center = true,$fn=100); } } //Creating the Ring difference(){ union(){ difference(){ difference(){ color("Purple") cylinder(h = SifterHeight, r = CID+RingLength, center = true,$fn=100); cylinder(h = SifterHeight+1, r = CID, center = true,$fn=100); } //Subtracting Guide Holes for (a = [0:16]) rotate(a*22.5,[0,0,a]) translate([CID+RingLength/2,0,0]) cylinder(h=SifterHeight+1, r=1.5, center=true,$fn=50);} }}} }//Module end //Sifter(GridThickness,RingLength, SifterHeight, GridSpread, CID,Offset) Sifter(1,7,1.5,5,50,0); translate([0,0,1.5])rotate([0,0,45]) {Sifter(1,7,1.5,7.07106781187,50,3.75);} //the 2nd sifter GridSpread must be equal to the first sifter GridSpread*(2^.5) or else the mesh size will be variant.
The following code is for the sifter funnel
module Funnel(RingLength,SifterHeight,CID,bowl,bowl_r) { //Example Specs //SifterHeight=2.5; //CID=40; //Cylinder internal Radius //Do not change //RingLength = 9; thickness = 2; //Funnel translate([0,0,SifterHeight*2]) difference(){ union(){ difference(){ difference(){ color("Purple") cylinder(h = SifterHeight, r = CID+RingLength+thickness/2, center = true,$fn=100); cylinder(h = SifterHeight+1, r = CID, center = true,$fn=100); } //Subtracting Guide Holes of funnel for (a = [0:16]) rotate(a*22.5,[0,0,a]) translate([CID+RingLength/2,0,0]) cylinder(h=SifterHeight+1, r=1.5, center=true,$fn=50);} // Guide Rails of funnel }} module profile() { translate([0,SifterHeight*1.5]){ hull() { translate([stem_r, 0]) square([thickness, eps],center = true); translate([neck_r + curve_r, stem]) circle(r = curve_r,center = true); translate([bowl_r, stem + bowl - eps]) square([thickness, eps],center = true); } } } //bowl = CID*2; //bowl_r = CID*1.5+RingLength/2; stem = SifterHeight; stem_r = CID+RingLength; neck_r = CID+RingLength; curve_r = 0; $fa = 1 ; $fs = 0.1; eps = 0.01; rotate_extrude() difference() { profile(); translate([thickness, 0]) profile(); } } //Funnel(RingLength,SifterHeight,CID,bowlheight,bowl_r) Funnel(7,1.5,50,50,85);