Introducing the Motate128 Stepper Motor Control System.
Primarily designed to drive 3D printers, such as RepRaps and MakerBots, as well as CNC milling machines and DIY laser cutters, it's truly capable of driving almost any project that is based on bipolar stepper motors. And it will always be 100% open source, software and hardware. I've also submitted it as an entry into the Open Hardware Scholarship competition.
Utilizing the ST L6470 chip, it's capable of 1/128th-step microstepping with speed and acceleration control (which is why I chose the model I did for the Acceleration mods to the MakerBot firmware), with minimal intervention of the microcontroller. It even supports sensorless skipped-step detection, so missed steps could be accounted for in real-time.
With a truly modular design, the Motate128 Stepper Drivers could be used in any number of other projects on their own.
Adding temperature measurement and MOSFETs to drive heating elements, DC motors, solenoids, etc, the Motate128 Shield sits atop an Arduino to drive up to six Stepper Drivers.
For compatibility there will be modified versions of both the MakerBot and RepRap firmwares to support the new hardware.
And finally, the Filament Caliper will use hall-effect sensors to precisely measure the filament width and speed as it enters the extruder, allowing unprecedented levels of accuracy depositing extruded plastic.
Update: Credit where it's due, this is inspired by a blog post on the Ultimaker site, and I would love to continue to collaborate on this with them or anyone else.
Well that's just a little exciting. 1/128th? Hall sensor filament caliper? ./drool
ReplyDeleteYes, I'm glad you like it. I feel it'll be quite revolutionary. The resolution we'll be able to achieve for about the same price of hardware will be amazing. And having skipped-step detection without additional sensors will help prevent failed builds.
ReplyDeleteI didn't mention: No trimpots. The tuning of the steppers will be automatic. I'm putting digitally-controlled "pots" on the drivers, so the microcontroller can tune it on the fly, based on info from the driver. A missed step will cause the power to be increased to that axis.
what!?
ReplyDeleteThat is just my excitement, I want this like yesterday! goodluck man :D
I looked at those drivers once and I couldn't figure out how you could synchronize motion (with acceleration) across axes. Is there a way to do that? If not, accelerated diagonal paths are going to have curved ends.
ReplyDelete@Ben
ReplyDeleteI plan on using the daisy-chain method of synchronizing the movement: clock-in the commands to all drivers at once, then drop CS and they all get the command at the same time.
As for syncing the acceleration: That's why the firmware still needs to be able to do look-ahead acceleration planning. Even though the motherboard won't be dealing with each step, it still needs to know the relative acceleration rates to get the sync right. Between each movement we'll set the speed, acceleration, and deceleration parameters before sending the movement command. Since the max clock speed is 5MHz and the next-highest we can use on the AVR is 4MHz, we should have plenty of time to clock-in those parameters and start the movement without any noticeable gap between moves. Only testing will prove this, though.
@Rob, I'm trying to user the same chip for CNC control myself. Can you expand on how you're able to send the command to all the drivers at the same time?
ReplyDelete@Kurtnele
ReplyDeleteI plan on using the daisy-chain SPI method. A quick google search will show several examples of using that technique with other devices. Basically you push the bytes for all N of the chips through their shift-registers, and then drop (or raise? I can't recall) the CS line that is connected to all the chips, basically lowering the green flag.
There's more to it. The movement speeds and acceleration profiles must be synced as well. That's up to the firmware to get right.
I'm planning on making the drivers themselves first, and selling a few for the more adventurous to play with. It'll be a while though, I have too many other projects lined up. :-/