Hackaday Prize Entry: Modular Stepper Control

Stepper motors are a great solution for accurate motion control. You’ll see them on many 3D printer designs since they can precisely move each axis. Steppers find uses in many robotics projects since they provide high torque at low speeds.

Since steppers are used commonly used for multi-axis control systems, it’s nice to be able to wire multiple motors back to a single controller. We’ve seen a few stepper control modules in the past that take care of the control details and accept commands over SPI, I2C, and UART. The AnanasStepper 2.0 is a new stepper controller that uses CAN bus for communication, and an entry into the 2017 Hackaday Prize.

A CAN bus has some benefits in this application. Multiple motors can be connected to one controller via a single bus. At low bit rates, it can work on kilometer long busses. The wiring is simple and cheap: two wires twisted together with no shielding requirements. It’s also designed to be reliable in high noise environments such as cars and trucks.

The project aims to implement an API that will allow control from many types of controllers including Arduino, Linux CNC, several 3D printer controllers, and desktop operating systems. With a few AnanasSteppers one of these controllers, you’d be all set up for moving things on multiple axes.

22 thoughts on “Hackaday Prize Entry: Modular Stepper Control

  1. Is this closed loop? Is there some method of absolute position sensing? It’s nice to see the modularization of parts like this as it makes integration so much easier but it really should be fixing the issues that using just a motor with no closed loop control creates.

    1. Copied straight from the link:

      1.CAN bus based https://en.wikipedia.org/wiki/CAN_bus
      2.STM32 ARM MCU with more performance.
      3.Closed loop control with magnetic encoders(AS5145 and TLE5012 support).
      4.Driver integrated(A4988 or more power MOS Driver)
      5.Extendable, and easily for installation.
      6.USB-CAN adapter and SPI-CAN adapter For systems without CAN bus.
      7.API for multi-control systems(Arduino Windows Linux Mac LinuxCNC Marlin Smoothie Repetier .etc).

    1. Thanks for your comment.
      Nice Question! Ananas Project aims to build an easily used motion control device.
      AnanasStepper 2.0 abandon dir/step interface, because there is overshoot when driving the motor, even there is a perfect PID adjustment.
      And, Dir/Step interface needs to use a lot of ports and wires, especially there is a lot of motors.
      And, I2C is another choice, but which is not stable.

      So AnanasStepper uses CAN bus to fix all the problem up.And It works!!

    1. CAN bus is not meant for situations where bad actors could connect to the bus. Generally, this would not be a problem, until car companies started to connected vulnerable GSM-connected devices to the CAN bus (like navigation, ONSTAR-type devices, and windows-powered infotainment systems).

      A CAN bus message does not have a source or destination field, the ID conveys the message type, and only a maximum of 8 data bytes. There simply is no space for authentication or other security features in the current design, and adding such features would create a large overhead,possibly unacceptably large for real-time applications without drastically increasing the bitrate.

      BTW, CAN bus required THREE wires, not two; there must be a common ground, since the common mode voltage is limited (to about 7V IIRC). Usually, this requirement is met because the devices connected share a power supply.

  2. All i would wish for is to get rid of the Allegro stepper driver and add one from Trinamic. And i actually prefer RS485 over CAN, because it is much easyer to work with. I mean, why not just go Profibus (Profidrive), Profinet, EtherCAT or what ever at that point…

    1. Thanks for your comment! You are right. CAN bus is not the easiest one or the most powerful one in all the communications protocols. But the real-time, up to 1Mhz speed, and powerful communicate ability inspires me a lot. CAN bus is cheap enough and qualified to handle motion control.

  3. CAN bus is very nice, but I do not understand how to connect it to grbl, marlin etc… The, in the DIYer scene, common controllers use all the step / dir interface. Are there converters out there? Or is it required to write code for the controllers?

Leave a Reply

Please be kind and respectful to help make the comments section excellent. (Comment Policy)

This site uses Akismet to reduce spam. Learn how your comment data is processed.