lose up view of assembled sifter

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
Mesh thickness
Outside ring length
Mesh density
Offset of mesh lines
Funnel size (radius)
Funnel height


  1. Adjustable size of sifter
  2. Adjustable size of mesh
  3. Rotating mesh plates for mesh density adjustment
  4. Ease of part reconfiguration with solid design stability

Comparative 3D printable sifter: Customizable Sifter with multiple shape options

Tools needed[edit | edit source]

  1. MOST Delta RepRap or similar RepRap 3-D printer
  2. I used a hex key for my 3m hex screws
My tool and screws

Skills and knowledge needed[edit | edit source]

Technical Specifications and Assembly Instructions[edit | edit source]

  1. 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)
  2. Render the part in OpenSCAD and export as an STL
  3. Import STL into Cura and set print specifications similar to what is shown
    Cura settings for printing
  4. Export from Cura via G-code and upload to Franklin
  5. Print parts as needed
  6. 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)
    22.5 degree rotation of 2nd sifter mesh plate
  7. Set a screw in several(as needed) guide holes in the sifter funnel and attach the sifter mesh plates as desired.
  8. 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

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]

Thingiverse account

Gallery[edit | edit source]

Code[edit | edit source]

The following code is for the sifter mesh plate

 module Sifter(GridThickness,RingLength, SifterHeight, GridSpread, CID,Offset) {
 //Example Specs
 //CID=40; Cylinder internal Radius
 //Do not change
 //RingLength = 9;

 //Creating the Grid
 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.
 		 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
 		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])
 					cylinder(h=SifterHeight+1, r=1.5, center=true,$fn=50);}

 }//Module end

//Sifter(GridThickness,RingLength, SifterHeight, GridSpread, CID,Offset)		

//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
 //CID=40; //Cylinder internal Radius
 //Do not change
 //RingLength = 9;
 	 thickness = 2;
 		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])
 					cylinder(h=SifterHeight+1, r=1.5, center=true,$fn=50);}
 // Guide Rails of funnel
module profile() {
 	 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;
 	difference() {
 	translate([thickness, 0])
 			 } }


Contact details[edit | edit source]

Ampringl (talk) 20:01, 16 November 2015 (PST)

Discussion[View | Edit]

Cookies help us deliver our services. By using our services, you agree to our use of cookies.