Simple Machines


Type: Investigation

Theme: Engineering

Grades: 5, 6, 7, 8, 9, 10

Learning Target: Students will collaborate to produce a simple machine with moving parts.

Instructions
  1. Select one or more partners (you may work alone).
  2. Design a plan for your group's simple machine. Collaborate on a detailed sketch. Please take note who will produce which component.
  3. Develop your OpenSCAD component. Use inline comments to tell about what your code does and who you are.
  4. Combine all component code into one simple machine. Test and refine with animation turned on (variable $t must be in your code).
  5. Submissions
    1. A video or screen recording of your machine in action. If possible, please use Microsoft Stream. You are not required to create a Sway or PowerPoint.
    2. A detailed sketch, including a list of who created which part in your group's machine. Each student must create at least one part of the machine. Machine must contain a minimum of two moving parts.
    3. Please also submit the code. You must create your own code. However, you may modify existing open-source code for an individual component of your machine.

OpenSCAD

OpenSCAD Example Code:

Variable $t is reserved for the animation time ($t).

//three gears
//to animate > View > Animate. Add a start time, such as 0. Set FPS to 24 or so. Set Steps to desired number, try 100.
$gear1 = 20;
$gear2=8;
//gear 1
rotate([0,0,$t*360])for(i=[1:1:$gear1]){
rotate([0,0,(360/$gear1)*i])
translate([$gear1*.7,0]) linear_extrude(2)
circle(3,$fn=3);
}
//gear 2
translate([22,4])
rotate([0,0,-$t*360*$gear1/$gear2])
color("red")
for(i=[1:1:$gear2]){
rotate([0,0,16+(360/$gear2)*i])
translate([$gear2*.7,0]) linear_extrude(2)
circle(3,$fn=3);
}
//gear 3
translate([4,-22])
rotate([0,0,-$t*360*$gear1/$gear2])
color("red")
for(i=[1:1:$gear2]){
rotate([0,0,16+(360/$gear2)*i])
translate([$gear2*.7,0]) linear_extrude(2)
circle(3,$fn=3);
}
//square gear 1
rotate([0,0,$t*360])color("green")for(i=[1:1:12]){
rotate([0,0,(360/12)*i])
cube([2,16,2],true);
rotate([0,0,(360/24)+(360/12)*i])
cube([2,12,2],true);
}
//spherical gear
rotate([0,0,0])translate([12.2,0,0])rotate([0,0,-$t*360])color("red")
for(i=[1:1:6]){
rotate([90,90,(360/24)+(360/6)*i])
cylinder(h=.7, r1=6, r2=6);
//cube([2,18,2],true);
}
//coil and ball
//set Time = 0, FPS = 20, Steps = 20
$coils=4;
$spring=0;
$height = sin(100*3.1415*$t)+2;
$height_ball = sin(100*3.1415*$t/2)+2;
$ball_deform = sin(4*3.1415*$t)+.8;
color("red")linear_extrude(height = $height, center = false, convexity = 2, twist = 360*$coils, $fn = 100)
translate([1, 0, 0])
circle(r = .3);
color("DeepSkyBlue")translate([0, 0, 1.3+$height_ball])scale([1,1,$ball_deform])sphere(2.2, $fn=50);

See https://www.thingiverse.com/groups/openscad/things for more objects.

Exit Ticket
CCSS Math Practice
  • I can make sense of problems and persevere in solving them.
  • I can attend to precision.
NGSS Crosscutting Concepts
  • Cause and Effect
  • Scale, Proportion, and Quantity
  • Structure and Function

Samples