Mooov Motion Controller

ARM based Motion Controller for CNC, 3D-printer, Laser-cutter,..
6 Axis, Helical, S-Profile

Similar projects worth following
Building a CNC Motion Controller which fills the gap between GRBL on an Arduino, and LinuxCNC :
1. runs on low-cost, easy available hardware : Teensy
2. high-quality trajectory and speed control : 6 Axis, Helical natively supported, S- and T-profile speed profiles (2nd and 3rd order)
3. simple design for high reliability - open source - open hardware

Mooov is CNC Motion Controller, a piece of hardware/software controlling the motors (Stepper motors or Servo Motors) and peripherals (Spindle, Coolant, Vacuum, Dust control, ..)

What makes Mooov unique ?

  1. runs on low-cost, easy available hardware
  2. high-quality trajectory and speed control
  3. simple design for high reliability


Many existing CNC controllers run either on an Arduino, or on a Linux PC.
The Arduino is very low cost and available everywhere, however it is limited in ROM, RAM and CPU throughput.
A PC has much more resources, but this platform is not designed for real-time processing and as such it is difficult to achieve accurate control of the motors.
ARM-based uControllers, such as the Teensy provide a good compromise : plenty of HW resources for a reasonable cost and true real-time performance.

Trajectory and speed control

Moving the CNC along the correct path, at the correct speed requires lots of calculations. Todays uControllers allow to do accurate 6 axis linear and helical movement. At the same time they allow for higher-order speed profiles, optimizing the forces, speed and acceleration of the machine.

Complexity - Reliability

Mooov focuses on doing 1 thing only. We stick to the 80/20 Pareto 'rule'. The advantage is reduced complexity and improved reliability.

  • Assembly

    Pascal Roobrouck06/01/2017 at 09:07 0 comments

    After receiving PCB, it was time to assemble all components : the PCB, Stepper Motor Drivers and Solid State Rely.

    My current CNC is an Openbuild OX, which needs 4 motor-drivers (2*Y, X Z) and the Spindle is a simple Makita RT0700, so I only need 1 peripheral driven by a Solid State relay.

    I made a layout in Fusion360 and cut a baseboard out of 5 mm plexiglass (Polymethylmethacrylaat (PMMA))

    All components are mounted with M4 bolts and nuts. The head of the bolt is recessed in the baseboard, so it can be mounted flush under the machine.

    Next step is to do all the wiring between the motherboard and the motor drivers - TBC

  • Motherboard PCB

    Pascal Roobrouck06/01/2017 at 08:22 0 comments

    Connecting the Teensy to (up to) 6 Motor Drivers, (up to) 6 peripherals Solid State Relays and (up to) 12 input switches, involves a lot of wiring. Furthermore all inputs are opto-coupled and all outputs are open-collector drivers, allowing any type of motor drivers to be used.

    So I decided to design a PCB to keep al this clean. Turns out I needed about 100 * 140 mm.

    PCB was designed in Autodesk Eagle, schematics and layout files are available on Github.

    During assembly I noticesd a few mistakes : basically the serial port and USB port connector are hard to reach because other components are obstructing it. This will need to be solved in the next version.

    I had the PCB manufactured at Euro-Circuits.

View all 2 project logs

Enjoy this project?



Phil King wrote 05/16/2019 at 20:33 point

Has any of the software for this project been published? I have looked on GitHub ( but I am only finding hardware documentation.


  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