Welcome! Log In Create A New Profile

Advanced

Multiplexing stepper drivers

Posted by unlimitedbacon 
Multiplexing stepper drivers
April 03, 2013 01:43AM
I'm designing a printer that will have a lot of extruders. Its going to need 10 independently controlled stepper motors. Obviously this is beyond the limits of the current electronics. One solution would be to use a different microcontroller with many more GPIO pins (probably the Arduino Due). However, I imagine a future in which there will be machines with an even more absurd number of motors. I also can't help but remember Bill Gate's infamous "Nobody will ever need more than 640 kilobytes" line. So I'm trying to find a more elegant solution.

I'd like to know what everyone thinks of multiplexing the stepper drivers. By adding cheap multiplexing chips to the drivers, you would use much fewer pins on the microcontroller and you could hook up as many drivers as you want* using one big ribbon cable. The only problem I can see is that you would have to switch between them extremely rapidly in order to run all the motors simultaneously. But surely this can be done, right? Does anyone see any other drawbacks?


* = as determined by the number of address lines
Re: Multiplexing stepper drivers
April 03, 2013 02:20AM
e.g. RAMPS 1.4: you need 3 pins for an Enable, Dir, Step. Ramps has already 5 Drivers sockets, and on AUX-4 are 15 I/O Pins so with an adapter board you could drive 10 Steppers
Re: Multiplexing stepper drivers
April 03, 2013 03:44PM
Thank you. I should have actually bothered to count the pins first. It should have barely enough pins with the extra steppers, heaters, thermistors, fans, etc. so RAMPS is what I will go with for now. Nevertheless, I'd still like to hear what people think of the multiplexing thing.
Re: Multiplexing stepper drivers
April 03, 2013 04:01PM
Look at this
Re: Multiplexing stepper drivers
April 03, 2013 04:16PM
The standard way to increase digital IO lines is to use a serial-parallel shift register, such as 74HC595 or variants. You just need a few lines lines for serial output, and can daisy chain chips to create as many IO lines as you want. They have latching outputs, so you can also synchronize their outputs.
Re: Multiplexing stepper drivers
April 04, 2013 11:01PM
You could certainly multiplex the enable lines with little hassle, as these are only really toggled to save power. That'd get you to 18 just with a ramps board. If you want to multiplex the step/dir pins you might need to look for a faster MCU, I don't think the avrs could keep up with the rate of data and pin toggling for controlling a huge number of motors.
Re: Multiplexing stepper drivers
April 05, 2013 11:29AM
[fab.cba.mit.edu]

and

[mtm.cba.mit.edu]


- akhlut

Just remember - Iterate, Iterate, Iterate!

[myhomelessmind.blogspot.com]
Re: Multiplexing stepper drivers
April 07, 2013 11:32PM
konwiddak Wrote:
-------------------------------------------------------
> Look at this

unlimitedbacon: Fancy that, we feel the same: [www.reprap.org]
thumbs up

You honor the idea very much as it was only just finalized a few days ago and I'm really thrilled to know there are people who want it before its ready! We hired two electronics guys to figure out that indeed, it only takes 3 pins from arduino per stepstick. And that means an upper limit of closer to 15 stepsticks controlled per arduino mega. If you are trying to do fancy 4th order controls accross all 10 motors at the same time, then probably DUE would have been a better solution, but for most applications, you can reduce complex equations to be estimated as linear and I believe arduino mega is a simpler (less costly) solution that will work for the majority of these kinds of applications.

I'm happy to help get you early samples of this board (possibly free) in exchange for feedback, development blurbs, open source firmware, pictures of your application, updates to the reprap.org, etc.

We receive our first samples here 2-3 weeks.

We made sure to use the G3D design stepstick because it handle 2Amp without getting hot, and doesn't have that nagging issue where you have to guess the optimal current max position of the trimpot. Can you tell me more about your current/voltage requirements? The way it is setup now, the expansion only has 8thermistors and 8extruder controllers, so it seems like you may have to supply use a first board for XYZ. If your voltage is 24V you can probably do thermal extruder PID from the expansion board on all channels, otherwise, it becomes a hack to avoid current limitations. I also recommend something like a 600W switching power supply for this...its quite a bit of power.

Also please feel free to be critical. I want to stay on top of the change here. Design the board as you would want it, and if we can redesign revision 2 to make it better please let me know personally, and I'll do my best to include this new knowledge. I once was stubborn as hell and thought steppers were overpriced and a waste as compared to other types of motors... ha.

Now I am looking to some new chips, namely, DRV8825, and one I really think will please: the overpowered 3 Amp RMS (7A peak) L6470dSPIN: Fully integrated microstepping motor driver with motion engine and SPI" with 1/128th microstepping
[www.st.com]

Edited 1 time(s). Last edit at 04/07/2013 11:41PM by Simba.
Re: Multiplexing stepper drivers
April 07, 2013 11:35PM
unlimitedbacon Wrote:

> I'd like to know what everyone thinks of
> multiplexing the stepper drivers. By adding cheap
> multiplexing chips to the drivers, you would use
> much fewer pins on the microcontroller and you
> could hook up as many drivers as you want* using
> one big ribbon cable. The only problem I can see
> is that you would have to switch between them
> extremely rapidly in order to run all the motors
> simultaneously. But surely this can be done,
> right? Does anyone see any other drawbacks?
>
>
> * = as determined by the number of address lines

Also I don't claim to be an expert, I'm just an engineer. But I looked at the problem for quite some weeks in depth.
The idea of using a bus line, A.K.A. register, is already used in stepper controllers. For example, they may take a complex signal on 2 pins to run up to 8 steppers in one IC. So expanding this makes sense, IF the pulses are controlled within the stepper controller. Direct control over the FETs is a bad idea in generall, the MCU couldn't keep up.

Personally, I think the bigger problems to consider are talkback along the electronics lines, peak current overloads, processing power, and current capacity/cooling on the PCB.

However, with SPI as mentioned in my previous post, I believe all these issues of daisy chaining dozens if not hundreds of motors is already solved in a more expensive stepper package driver

Edited 1 time(s). Last edit at 04/07/2013 11:42PM by Simba.
Re: Multiplexing stepper drivers
April 08, 2013 02:12AM
Thanks Simba. I'd love to get one of your boards.

This is the monstrosity that I'm currently working on [forums.reprap.org]. The mechanical portion is coming along nicely, so the next challenge is the electronics and the software. Hopefully I will get a blog up soon and start posting regular updates.

With 4 extruders, it should be within the capabilities of your Decapede. It does not use any more powerful motors than a normal reprap, so I'm not expecting extreme power requirements. But if its too much for the board, I can always just run the heaters via relays. This is what I already do on my Makerbot. I was planning on using a spare ATX power supply.
Re: Multiplexing stepper drivers
April 10, 2013 05:23PM
I'm certain the Decapede+ expansion can handle it. It \designed for this purpose.

You also could straddle the nozzle heaters to a common circuit on the main output (20A)
So if 5A = 200 degC, put them all to say ~3A for a default on mode, then you can have 8 extruders powered on PID with only 2A each... just a thought if your temperature between extruders isn't going to vary by more than ~ 80C..

I've tried my best to understand your project, but I think you are in your own league with the unique rotational elements. Best of luck, it looks really cool. I will try to help with extruders, and I think writing the firmware would be an easy task for anyone since it can be based on whatever arudino mega takes, but different pin assignments. I'll let you know when my samples are in.
Re: Multiplexing stepper drivers
May 27, 2013 11:12AM
Can PICKit3 program Atmel AVR?
Re: Multiplexing stepper drivers
May 27, 2013 11:32AM
There was a pickit 2 AVR mod:
[www.sonsivri.to]

but you can also bootstrap via arduino, just buy an ATmega with arduino bootloader already programmed plus a 16MHz crystal and capacitors (under $10 a kit from various ebay sellers) then make a minimalist "arduino" circuit (basically just the MPU, crystal, caps and some PSU decoupling caps plus a header to fit on and FTDI USB to serial cable )

[fficial&tbm=isch&tbo=u&source=univ&sa=X&ei=OXujUYv1Noi7hAe53QE&ved=0CD8QsAQ&biw=1525&bih=687" target="_blank" rel="nofollow">www.google.co.uk]


and make a programmer with this:

[arduino.cc]

or just stick to the arduino bootloader and use the FTDI cable to programme it.

Cheers,

Robin.
Re: Multiplexing stepper drivers
May 27, 2013 12:03PM
I feel like I don't want to mess with it. Chances are that I won't be very good with it working alone. This is what happened when I tried to make PIC USB device in the past. It worked but I learned the wrong software and got bad results.

I am wondering what will happen if I use teensy USB?
Otherwise I would use software like Mach3 and a parallel port configuration.

I need to know what the USB device will receive as an input from the most popular 3D printer control software that the masses prefer.

Edited 1 time(s). Last edit at 05/27/2013 12:27PM by Tarakan.
Sorry, only registered users may post in this forum.

Click here to login