Welcome! Log In Create A New Profile

Advanced

Multiaxis (1<n<20) Stepper Controller Firmware for Coordinated Motion

Posted by LoboCNC 
Multiaxis (1<n<20) Stepper Controller Firmware for Coordinated Motion
November 21, 2018 01:58PM
I've developed alternate firmware for Pololu's new Tic T500 stepper controller that supports tightly coordinated motion across multiple axes for a 6-axis robot arm I am working on. If anyone is interested, I'm happy to post more details as well as the firmware source code and a Windows test utility.

I'd been searching for a while for stepper controllers that support tightly coordinated motion for greater than 4 axes. Lots of CNC/Printer controllers support coordination across 4 axes, and a few (like the Slush Engine) that support 7 axes, but with no good way to tightly coordinate motions. The Tic's standard firmware supports connection of multiple modules through I2C, but it doesn't support coordinated motion. The firmware I developed lets you load multiple modules with path point data (up to 2.5 sec. of motion) and then use a single command to start all modules moving simultaneously. The individual axis motions then stay synchronized to within the accuracy of the clock crystals. The path point buffers are dynamically loadable, so you can create continuous motions that are arbitrarily long. The path points are spaced at 50Hz intervals, with constant velocity motion in-between path points. (Note that 50Hz is fine for robots and CNC machines, but you might need to modify the interval to 100Hz for faster 3D printer motion). It's up to the host (PC, RPi, etc) to calculate the path points to create a smooth multiaxis paths, but it doesn't have to do anything in real-time, which is the real advantage.

I've discussed this a bit with Pololu, hoping they'd fold this functionality into their standard firmware (it's not that complicated), but they seem uninterested. So I'm happy to to offer it up directly to anyone willing to re-flash their Tic T500 (and erasing the standard Tic code forever).

Edit: I've gone ahead and attached a data sheet for the firmware.

Edited 1 time(s). Last edit at 11/21/2018 02:00PM by LoboCNC.
Attachments:
open | download - TicStep.pdf (483.4 KB)
Re: Multiaxis (1<n<20) Stepper Controller Firmware for Coordinated Motion
November 21, 2018 02:18PM
Quote
LoboCNC
I'd been searching for a while for stepper controllers that support tightly coordinated motion for greater than 4 axes.

You can't have looked very hard then! smiling smiley RepRapFirmware on Duet WiFi/Ethernet has supported coordinated motion across up to 9 axes for well over a year. We only stopped at 9 because nobody has asked for more yet.

Edited 1 time(s). Last edit at 11/21/2018 02:19PM by dc42.



Large delta printer [miscsolutions.wordpress.com], Robotdigg SCARA printer, Crane Quad and Ormerod

Disclosure: I design Duet electronics and work on RepRapFirmware, [duet3d.com].
Re: Multiaxis (1<n<20) Stepper Controller Firmware for Coordinated Motion
November 21, 2018 02:53PM
Quote
dc42
Quote
LoboCNC
I'd been searching for a while for stepper controllers that support tightly coordinated motion for greater than 4 axes.

You can't have looked very hard then! smiling smiley RepRapFirmware on Duet WiFi/Ethernet has supported coordinated motion across up to 9 axes for well over a year. We only stopped at 9 because nobody has asked for more yet.

Does the RepRap firmware coordinate motion for 9 axes moving at the same time? I was under the impression that it could control the motions of only 4 axes at a time (3 motion axes + 1 extruder axis at a time) but I'd love to be wrong. To be honest, I last searched for controllers seriously a more than a year ago, so I may have missed this capability.
Re: Multiaxis (1<n<20) Stepper Controller Firmware for Coordinated Motion
November 21, 2018 06:23PM
Yes, the current build of RepRapFirmware on Duet WiFi/Ethernet coordinates motion of up to 12 stepper drivers simultaneously, of which up to 9 can be axes (XYZUVWABC). Even in 2014, RRF supported 3 axes + 5 extruders, all coordinated because it was the first firmware to support mixing extruders.

Duet 3 extends this much further, using expansion boards connected by a CAN-FD bus. The demo we did at the TCT show (see [www.youtube.com]) has a mixture of Nema 17, Nema 23 and Nema 34 motors. In the video only 2 of the 12 motors are running at a time because that looked better, but it can do coordinated moves on all 12 simultaneously. Each expansion board has its own processor to do the step pulse generation, so we should be able to support at least 30 coordinated drivers.

Edited 3 time(s). Last edit at 11/21/2018 06:29PM by dc42.



Large delta printer [miscsolutions.wordpress.com], Robotdigg SCARA printer, Crane Quad and Ormerod

Disclosure: I design Duet electronics and work on RepRapFirmware, [duet3d.com].
Re: Multiaxis (1<n<20) Stepper Controller Firmware for Coordinated Motion
November 21, 2018 06:46PM
Oh, that's excellent! When I looked at the reprapfirmware wiki page, all I saw for, say G01, was the parameters X, Y, Z & E (and other misc parameters). Looking deeper I see that it does much more. (This capability is kind of buried in the documentation I was looking at - it might be worth making it higher profile.) I'd definitely keep this in mind for my next robot project, but for my current arm, I actually need distributed motor controllers build into the arm to keep the cabling manageable.
Re: Multiaxis (1<n<20) Stepper Controller Firmware for Coordinated Motion
November 21, 2018 07:23PM
Anyway, back to the original thread topic, if anyone is interested in the coordinated multi-axis stepper control firmware I developed for the Tic T500, let me know.
Re: Multiaxis (1<n<20) Stepper Controller Firmware for Coordinated Motion
November 22, 2018 12:10PM
I'm currently using a Teensy 3.5 (Arduino compatible) microprocessor with the TeensyStep library to do synchronized steppers. I'd be interested in your firmware.
Re: Multiaxis (1<n<20) Stepper Controller Firmware for Coordinated Motion
November 22, 2018 01:27PM
Quote
etfrench
I'm currently using a Teensy 3.5 (Arduino compatible) microprocessor with the TeensyStep library to do synchronized steppers. I'd be interested in your firmware.

Here's a link to the TicStep firmware source and a Windows test utility program. PDF documentation for firmware is included with the firmware source code, and for the Windows test utility, I've included the C++ Builder (v5) source code to use as an example.

TicStep Folder

Note that you will need a Microchip programmer (like the PicKit4 ~$50) to reprogram the PIC18F25K50 on the Tic T500 board. (Unfortunately, I couldn't get access to Pololu's USB bootloader.)

Edited 1 time(s). Last edit at 11/22/2018 02:11PM by LoboCNC.
Sorry, only registered users may post in this forum.

Click here to login