Open Face Router

This project is for an Open Faced Router. It is an open source non bed mill

Similar projects worth following
This project is for an Open Faced Router. The concept behind this machine is bring the router to the material instead of the material to the router.

The controller board has connectors for 8 axis of PID control, all of which can be coordinated in the kinematics engine.

We have replaced stepper motors with High Torque Windshield wiper motors. Two motors control the Y axis with 1 on the X and Z axis. In addition a motor controls the Lathe movements to add a 4th axis. These motors are coupled with a hall effect orientation encoder. The best part is we can get 4096 'tick' per revolution measurements and a controller that can drive the motor to within +-2 ticks

The control framework is a high speed protocol called Bowler. We can send packets and get a response back to Java in 4ms. Most of the complex features can now be handled at the high level. We also support a full configuration storage system, so the print configurations stay with the Machine.

Here is the Open face router. It is the first open source closed loop open face router.

This machine is designed to be moved to its surface. Its primary focus is to cut on non-movable surfaces. It can easily be set up on the floor of a house for inlays or against a wall or door for intricate etchings. 


The entire machine is moved by Windshield wiper motors with a close-loop encoder feedback. #40 bicycle chain, sprockets and idlers are used instead of leadscrews on the x and y. A leadscrew is used to move the Z axis.

The machine is designed to sit in a horizontal position or be mounted vertically. It can 

Additional upgrades to come include a 5th axis head.


The bed of the machine is able to cut on a 4'X4' surface. It will be movable to cut larger pieces by moving the machine in a grid power. This eliminates 


A laser can be easily added to increase the functionality of the machine. The entire laser tube and optics are covered in either lexan, plywood or plastic. This creates a bubble around the beam for protection. In laser mode the z axis lowers to help protect the user from the beam. It is cabable of housing up to a 150 watt co2 laser. An additional feature we are currently working on is laser detection. This will disable the laser if the beam is not contacting the cutting area.

Once the machine has been assembled and tested all parts will be available open source under a creative commons license.


This project uses the same electronics hardware and software platform as the Servostock, Flower router and laser cutter.

The system we developed over 4 years and have now applied to the flower router is an extensible, namespaced communication protocol. Think of it like a domain specific language over a generic serialized communication link. The protocol allows devices to report to the computer their capabilities, then the computer can generate packets based on that report. We have complete implementations in Java and C99. Clojure, Jython, Jruby and Matlab have been tested working with this library. There is a partial implementation in pure Ruby as well.

We have redesigned the entire control system from the ground up. From the get-go we started using magnet orientation encoders plus low cost continuous servos. The motherboard is a Pic32mx440f128h with each axis receiving a servo pulse and an SPI channel for the encoder. The motherboard uses a 7x2 ribbon cable to connect to each axis. Each axis has a small board with the encoder chip and the connector for the servo.

The control loop runs at 20 ms for the servo pulse calculation, interpolation and forward/inverse kinematics. The device identifies itself as having the PID control namespace, the kinematics namespace, and the router configuration namespace. Through the communication layer you can change kinematics models, change PID constants and store all the configurations. The configurations are stored non-volatile in Flash and travel with the printer to be read at runtime. NO MORE CONFIG FILES!!

The firmware also has auto-config system. The servo dead band is measured at boot time. The end stops are measured using the encoder with no limit switches.

a (new to you guys) bootloader that i developed for the DyIO controller. It is a serial bootloader that uses the same communication protocol as the printer or any other device for that matter. The bootloading interface is just another namespace that any device can implement. The toolchain for generating bootloader file is all written in Java and attaches to any Makefile build chain.

  • On Hold

    sporkius09/30/2014 at 01:25 0 comments

    I didnt want to leave this project without an update. Due to the work being done on the open source router and open source laser cutters this project is temporarily on hold. I am hoping to resume this project in the next month or two as time becomes more available.

  • Bed Progress

    sporkius07/26/2014 at 11:53 0 comments

    The Bed for the Open Face Mill has made a good amount of progress. All sides have been attached. Work has begun on installing the rails.

    The Bed

    Corner with a hole for the motor.

View all 2 project logs

Enjoy this project?



Carter Brown wrote 10/18/2020 at 08:44 point

I think that if two motors are used to drive a shaft, there is a problem of synchronization between the two motors. If step loss occurs, torsion will appear at both ends of the shaft, which will affect the life of the shaft and the motor and affect the control accuracy. If you switch to a closed-loop stepper motor, the situation will get better, but there are still problems that affect the control accuracy and life.

Recommend a perfect axis stepper motor(nema 17) and driver, 59Ncm, 1.8 degree.
Stepper motor:

  Are you sure? yes | no

Similar Projects

Does this project spark your interest?

Become a member to follow this project and never miss any updates