Week 15. Mechanical Design

15. Mechanical Design


Mechanical Design (part 1 of 2) Group assignment

Design a machine (mechanism + actuation + automation), including the end effector, build the passive parts and operate it manually. Machine Design (part 2 of 2) Group assignment

Plan and make a machine. Document the group project Individual assignment:

Document your individual contribution.


Adobe Illustrator


Shopbot CnC mill


openSCAD cilindrical gates design
SVG of prototype
openSCAD final 3D design with servo
openSCAD 2D design
SVG millable 2D design
G-cde rail v1 test cutout 5mm
G-cde rail v1 test pockets 5mm
Partworks marble rail v1 test
Partworks marble rail v2
G-cde rail v2 5 mm
G-cde rail v2.1 5 mm
G-cde rail v2.1 excutout


We had a idea to make a marble machine calendar that displays the Waag Machine Scheduler.
For the full start of the idea and how we got the the final idea that we created please read our group page

My summarry is, first we thought up several interpretations, wild ideas without sketches.

  1. A wall mounted marble display.
  2. A table mounted marble display.
  3. A 4-in-a-row type marble display
  4. Marble clock

Prototype #1

We decided to make a first prototype of cardboard to get a sense if our idea could work, and how we should properly design it.
See also the documentation of Micky. From this prototype I wrote down the following requirements:

Must have

  1. Marbles that indicate if a machine is reserved
  2. Gears
  3. The machine should be wall mounted
  4. The marbles should dropp down when the system is reset.
  5. Something to lift the marbles
  6. Way to reset the day

Could have

  1. Different marble colour per machine
  2. Buttons to indicate what machine should be displayed

We negociated which member would be responsible for what task:

  • Micky: the base were everything will be mounted on
  • Rutger: the magnificent marble stairs, our masterpiece
  • Anne: the marble dispenser
  • Joey: the marble gates, where the marbles will be representing the reserved machine

Marble gates

(I contributed my 2D and 3D design work for this week also to week 3, so you might read duplicate work here) In total we will have 20 gates, one for each half our a machine can be reserved.
Each gate will fit one marble,
A servo is responsible for removing the marble.
The marble dispenser will deliver the marble to the gates via a special arm or trunk.
The most difficult part of the gate is that the marbles will run behind the gates, drop in a gate when available and run past a full gate.
There will be a lot of friction at the end of the dispenser and around the gates. Also I hope the marbles will not push the other marbles out of the gate.

Sketch of the first impression of the marble gate with cilinder rails

I switched to a simple and small CAD design tool OpenSCAD. It is a function representation design tool, meaning you write code to model your design.
It reminds me of the 3D objects I made in Processing during my Masters, and I am curious how fast it will allow me to design a complex shape.
OpenSCAD can be downloaded from http://www.openscad.org.
Or install on a Mac via MacPorts:

$ sudo port install openscad

While waiting for OpenSCAD to install you can try out its brother: OpenJSCAD, a online browser version of the modeling tool.
It is almost the same in functionality, not in code. Documentation can be found at https://openjscad.org/dokuwiki/doku.php.

OpenJScad in action with first design for marble rails

To create a shape in OpenSCAD: start the application and start defining the shape function with its parameters.
The list of functions available can be found at http://www.openscad.org/cheatsheet/index.html.
I tried to translate the OpenJScad code to OpenSCAD code, but as can be seen in the code the basic idea and parameters are the same, but the whole code structure is different.
OpenScad in action with cilinders as rails

For the rail design I created a test with 2 time gates. I made the design modulair and parametric. This allowed me to first design one time gate module, which I call a cell.
To create multiple cells I can call the cell() function and move (translate) the cell to the correct position.
Also for the rails I created a rail() module, that I used for both the rail as for the gates. The dimensions I used were:

  • rail width 16 mm
  • rail depth 8 mm
  • gate depth 8.1 mm
  • base width 40 mm
  • cell size 40 mm

After designing the first cells I had to conclude that the design in its current form was unmillable given the time. I used cilinders and substracted them from the base (cube) using the function difference() to create nice rails. Unfortunately milling these shapes will take up a lot of time.
To quickly resolve this, I modified my design to use cubes in stead of cilinders and made a 2D design in Illustrator that we could use to mill.

Sketch of cube rails

Rail gates prototype in PartWorks

After milling a succesfull first test, we decided it would be nicer if the marbles would be more visible, and the gates should be a little more deeper than the rails. I made the rail a little less wide and deep to allow the marbles to be more visible.
Also when placing the servo near the gate, I concluded the gate needs a cutout for the servo arm.
With a saw and chisel I created a cutout to test with the servo.

The milled design of the first test with 2 gates

I further enhanced my digital design to allow for a servo mount to be added to the base later.
First priority this week is the gate, the servo is in a week from now.
To create the optimal mount I had to create a servo module, representing the servo in the digital space.

The servo in the digital space

With the color() function I added colors to make the different components more distinct. Combining everything together our digital rail design with servo’s looks pretty impressive.

The final rail design impression front view The final rail design impression top side view

I adjusted the first desing to the final design with the following parameters:

  • rail width 14 mm
  • rail depth 6 mm
  • gate depth 6.2 mm
  • base width 800 mm
  • cell size 39 mm
  • servo cutout width 5 mm
  • servo cutout depth 16 mm + 7 mm (1 marble + 1/2 a rail width)

Unmillable 2D blob in openSCAD

Having decided on the final design I tried to transfer the 3D design to a 2D design and vectors to be able to mill it. This was more difficult in openSCAD than anticipated.
I had to replace all 3D functions for 2D functions. e.g. replace cube for sqaure.
Also I had to modify the 3D translate() and the rotate() functions to fit the 2D actions. Last in exporting the design to SVG I had to conclude the software would join all the shapes, creating one big blob.
I tried to unjoin this in Illustrator, but was unsuccessfull.
My sollution was to export each object as an idividual SVG and combine these files in Illustrator to one file. Also the size is different when exporting, the width was 14 mm instead of 40mm , by adjusting the size in Illustrator you get a correct size SVG.

Correct SVG for the mill

I shared the SVG with the team, and Anne added the connectors of Micky’s frame and Rutger milled the rails, this is teamwork!

Milled rails and gates


Not able to download FreeCAD

For the marbel gates design I decided to create the first impression in FreeCAD.
It is my first time with FreeCAD, but having tried Fusion360 for several designs, it is time to try something new.
On the FreeCAD website we read FreeCAD has many features that I am now used to thanks to Fusion360: complex 3D shapes, parametric design, support for standard formats as obj, simulation and rendering.
Unfortunately at the time I needed FreeCAD, I was unable to download the software, even after multiple tries. The download is almost 600mb, but I never got further than 80mb. And after 1 hour of trying I decided to try a different design tool.

Share this story