16. Mechanical and machine design

Design a machine that includes mechanism + actuation + automation

Group Assignment


Back in 2009 I built my first CNC machine from HDF wood, called a Phlat Printer MKI (Mark 1). It was a kit designed by Mark and Trish Carew of NJ USA, and open source plans are still available Phlatprinter MK1 Foam Cutting Machine. This CNC kit and the community around it changed my life forever, and eventually led to my involvement with Fab Labs and Hackerspaces.

The Phlat Printer MKI was designed to cut blue insulation foam to make radio control aircraft. It used 1/4-20 threaded rod, aluminum bars and PVC pipe for bushings. In 2009 is was a great CNC machine and cost about $500 to build. However the 1/4-20 drive system used had problems. Here you can see the 1/4-20 screw drive of the z axis.

In 2013 I upgraded the Phlat Printer MKI to maker slide belt drive on the Y and Z axis. This greatly improved the reliability, reduced jamming of 1/4-20 threaded rods and sped up the machine. I designed this upgrade in SolidWorks.

In 2016 I used the Phlat Printer MKI to cut over 100 glider kits for a mass glider build at the Chicago South Side Mini-Maker Faire. The Phlat Printer MKI ran pretty well for over 8 hours in 32C (90F) heat, but had overheating problems in the hot summer weather. This is when I started to think about designing a entirely new foam cutting CNC machine that would be more robust.


FoamCrawler CNC I designed my new machine in Onshape. It has two X Axis rollers covered in grip tape just like the Phlat printer, but it has two Y Axis drive rollers instead of one and no platen at all. It has two un-driven upper rollers. The Z axis is 8mm Metric Acme Lead Screw, X Axis is belt drive on makerslide. These 3 different drive types will be interesting to actuate manually by hand.

I went through a few iterations of the Y roller drive. The first was PVC pipe sprial wrapped with emery cloth glued onto PVC pipe.

Manual Operation

Here I am holding the parts in place to run each axis by hand.
When run by hand with a piece of foam this setup has a few issues. 1. the foam would work it’s way along the x axis due to the spiral and the PVC pipes were hard to buy without bending and roundness defects, leading to a kind of clapping onto and off of the foam sheet while being driven. 2. The hand operation also revealed that accelerating and decelerating the rollers took a surprising amount of force. 3. The M8 bolts were also loose in the bearings leading to slop.

Future Development

In the future we would like to build more Foam Crawler CNC machines for RC aircraft build programs at other Fab Labs. We would also like to develop, design, mill and stuff our own scratch built machine control board.

727 Glider Cutting

100 727 gliders will be cut this spring and summer for workshops at the MSI Chicago.
Other Incite Focus Fab Academy participants plan on making RC aircraft for their own drone workshops.

Individual Assignment

Actuate and automate your machine

GRBL gSheild Setup

I have a lot of Synthetos gShield CNC controllers in stock, so that’s what I used to actuate the Foam Crawler. The instructions for connecting the gShield I used are here: Using grblShield

I compiled, flashed, programmed and setup the gShield cnc control using grbl.

Installing and getting USB to work with the Arduino IDE on Linux is not well documented. Here is a good post to help: Arduino IDE on Linux Mint

The GRBL wiki has good instructions on how to compile and install GRBL: Grbl wiki!

Universal Gcode Sender(UGS)

To send gcode I decided to use Universal Gcode Sender(UGS) software in the “platform” flavor. The download for linux platform UGS was located at: https://github.com/winder/Universal-G-Code-Sender.

After wiring up my 24VDC power supply, I plugged a USB cable between my computer and the Arduino UNO with gShield.

I fired up UGS and clicked the Port: to select the port the Arduino UNO was on.

Then I clicked the “Machine” and then “Connect”… and GRBL initialized and talked back! YES!

It’s Alive!

I then executed some jog moves, they worked moving my X and Y axis along with lighting up the green lights on the gSheild stepper outputs! Although the movements were very weak. I needed to set my stepper driver currents.

Setting Stepper Currents

I used the procedure on the synthetos/grblShield wiki Setting Motor Current to intially set the stepper motor currents.

Later I will verify the current settings with Vref measurements. This is a good guide on that process: Setting the stepper motor current limit from this page “The gShield (version 5) uses a 0.1 ohm current sense resistor so the formula is Vref = 0.8 * I.

The maximum current the driver chip can deliver with appropriate cooling is 2.5 amps. To use this current value you would set the Vref voltage at (0.8 * 2.5 amps) = 2 volts. This is the theoretical current limit.”

Note: the gSheild stepper driver are limited to 2.5 amps

Stepper Multiplier Target Amps Vref
NEMA 28 X&Y Axes KL23H251-28-4A 0.8 2.5 A 2.0 V
NEMA 17 Z Axis SM42HT47-1684B 0.8 1.68 A 1.3 V

Steps per mm

Next I used the GRBL settings calculator to get the correct distance movements. I also found the Norwegian Creations Tutorial: Calibrating Stepper Motor Machines with Belts and Pulleys useful for the roller drive calculations. Grbl v1.1 commands can be found here: (https://github.com/gnea/grbl/wiki/Grbl-v1.1-Commands) I also found the FABLAB León LE-CAR-BIL MACHINE documentation useful.

My steps per mm calculations:

X axis

Steps/rev: 360 deg / Step Angle 1.8Deg = 200
Microsteps: 4 micro steps per step Belt Pitch: 3mm Pulley Teeth: 20

srev is the number of steps per revolution for the motor fm is the microstepping factor (1, 2, 4, 8 etc.) p is the pitch Nt is the number of teeth on the pulley attached to the motor shaft.

srev * fm / p * Nt
200 * 4 / 3 * 20 =
800 / 60 =
13.333 steps per mm

Y axis

Belt Pitch: 3mm
Steps/rev: 360 deg / Step Angle 1.8Deg = 200
Roller Diameter: 42.9mm
Microsteps: 4 micro steps per step

srev is the number of steps per revolution for the motor
Nf is the number of teeth on the final (passive) pulley
fm is the microstepping factor (1, 2, 4, 8 etc.)
Nm is the number of teeth on the motor pulley
Dr is the diameter of the roller

srev * Nf * fm / Nm * piDr
200 * 20 * 4 / 20 * (3.14159 * 42.9) =
16000 / 2695.48422 =
5.936 steps per mm

However, as expected, the variable slip vs grip nature of the grip taped Y Axis rollers needed steps per mm adjustment.

Using the helpful info GRBL Steps Per mm – How to Fine Tune Your Settings I re-calibrated.

On a 441.7 mm move the actual cut length was 444.5

Updated Steps/mm = (Current Steps/mm) x (Commanded Travel) / Actual Cut Length

5.936 * 441.7 / 444.5 = 5.899

5.899 Adjusted steps per mm

Z axis

8mm Metric Acme Lead Screw This Tr8*8-2p(4 starts) trapezoidal Lead Screw results in a pitch of 8mm. Pitch of a lead screw is the distance traveled with one revolution. In this case one revolution results in 8mm movement. If you are not sure of a threaded rod pitch simply put a nut on it and rotate it 1 revolution and measure the distance moved.

Z motor (steps/rev): 360 deg / Step Angle 1.8Deg = 200
Z Microsteps: 8 micro steps per step
Z threaded rod pitch (mm): 8
Pulley Teeth: 1 (direct drive)

srev is the number of steps per revolution for the motor fm is the microstepping factor (1, 2, 4, 8 etc.) p is the pitch Nt is the number of teeth on the pulley attached to the motor shaft. For direct drive use 1.

srev * fm / p * Nt 200 * 2 / 8 * 1 = 400 / 8 =
50 steps per mm

Axis Steps per mm Setting Command
X 13.333 $100=13.333
Y 5.899 $101=5.899
Z 50 $102=50
Inverting Axes

The Z axis was inverted, So I issued the following command to Invert Z:
Carefully read the documentation at: (https://github.com/gnea/grbl/wiki/Grbl-v1.1-Configuration#3–direction-port-invert-mask) and you will be able to understand how the code above works.

Max Feed Rates

Jogging the machine was painfully slow. So I updated the following Max rate, mm/min
X $110=8000
Y $111=8000
Z $112=4000


Acceleration could be increased as well
X $120=3000
Y $121=3000
Z $122=200

Above is a video of the Foam Crawler CNC Machine being actuated and run. In the video the Foam Crawler is cutting a simple example to demonstrate its basic capabilities. See my main Foam Crawler page for further work on how the Foam Crawler was designed, fabricated and built.

CAD Flies

FoamCrawler CNC Onshape CAD Assembly Files

Back to Home Page