Open Source Router/Laser/Lathe (Flower Router)

This project is for an Open source Router, Laser, Lathe. (Flower Router)

Similar projects worth following
This is a multi function Mill, Lathe and Laser designed to stand horizontal and vertical.

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 Source Mill, Laser Lathe (Flower Router). It is the first open source closed loop servo mill.


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 y and 4th axis. A leadscrew is used to move the Z axis.

The machine is designed to stand in a vertical or horizontal position. This allows the mill to fit in a smaller footprint where required. The horizontal mill can easily be converted to vertical mill with only the addition of the supports.

Additional upgrades to come include a 5th axis head, Automatic Tool change, multiple y,z axis, reel to reel feeder, auto unload bed.


The bed of the machine is able to take a full 4'X8' sheet of plywood. It has clamp holes built into the bed to allow dimensional lumber to be bolted or clamped into place and milled. It also includes a vacuum table. This allows plywood to be held in place during cuts.


The lathe ends act as a 4th axis. It is controlled by a servo motor with encoder to allow precise cuts. It is able to easily removed or added as is desired.


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 , laser cutter and open face mill..

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...

Read more »

  • Y Axis is up and moving

    sporkius05/20/2015 at 17:46 0 comments

    After several months in mothballs I am finally getting back to work on the router. We are currently testing the Y Axis. Below is a video of the gantry moving and a closeup of the encoder and motor.

  • And we are vertical

    sporkius09/30/2014 at 01:09 0 comments

    A ton has happened since our last update.  The router is now standing vertical. Everything has been tested without computer control. We are currently wiring the machine and hoping to start cnc testing shortly. 

    The router took a short trip from our warehouse in worcester to the big apple for NYC makerfaire. Thanks to all you makers for asking tons of questions and throwing out amazing ideas on how to make our open source router even better. 

    Idler sprocket on the Y axis

    Motor mount on the Y axis

    Gantry chain connection on the Y axis.

    Initial control systems wiring/testing

    Upgraded X and Z gantry.

    A little vertical rib encouragement. 

    Vertical Router showing X, Y, and Z axis

    Y axis rail mounting

    Back of the Vertical Router

    Front of the Vertical router

    Packed up and ready for a trip to NYC Makerfaire.

    Makerfaire tent.

  • Gantry Assembled.

    sporkius07/14/2014 at 00:13 0 comments

    The Gantry is completely assembled. There are a couple small adjustments to be made but all axes are able to move. We have begun work mounting the motors and chain. Once this is completed we will begin testing kinematics without load. Stay tuned for the upcoming video of its first move.

    Gantry attached to the rails

    Length of the Gantry

    The Gantry attached to the bed

    Closeup of the X and Z axis.

  • Better late than never

    sporkius06/29/2014 at 19:15 0 comments

    The work on this machine has been progressing over the last couple months. At this time the bed is completed and we have begun construction of the gantry. We are hoping to begin testing of milling by July's end. Here are some pictures of the machine as it currently stands. 

    Work being done on the gantry spacers

    A little mill encouragment

    Parts of the bed and under support structure being cut.

    The Beginnings of a gantry

    The Bed.

View all 4 project logs

Enjoy this project?



Similar Projects

Does this project spark your interest?

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