Welcome! Log In Create A New Profile

Advanced

3 axis drivers on a single board

Posted by csht 
3 axis drivers on a single board
May 02, 2009 04:46PM
I would like to know if anyone has made an arduino shield with the 3 stepper drivers all on a single board? I did the layout for one in Eagle using the components for the stepper driver v2.3 and it seems possible. I wanted to know if the drivers are a part that burns out from time to time or whether it would be a good idea to have all three together on a single board? Would having the stepper driver wires long cause any issues?

Thanks, Cody.
Re: 3 axis drivers on a single board
May 02, 2009 06:05PM
I wouldn't expect them to burn out unless overloaded, shorted or have inadequate heatsinking. Some drivers can be damaged if the motors are disconnected with the power on.

Even if they are on the same board you can replace a single chip.

I will certainly be building a controller with three or four drivers and a micro, and that is how BfB do it.

Long wires are no problem as long as the resistance is small compared to the motor. With bipolar parallel that can be quite low. It's a good idea to twist the pairs, and / or screen them to prevent them radiating. It is better than mounting the driver close to the motor and having long step and direction signals that are then susceptible to ground noise,


[www.hydraraptor.blogspot.com]
Re: 3 axis drivers on a single board
May 02, 2009 08:59PM
AFAIK, the resistance in long wires can even be a good thing. The minimum step time (=maximum speed) of steppers depends on the time constant L/R associated with the motor. Old-style simple L/2R drivers would put a resistor equal to the resistance of the motor in series to half this time constant. By using a higher voltage to get the same current, better performance at higher speeds would be achieved, at the cost of course of lower efficiency as a result of the power wasted in the resistors.

I'm not entirely sure how this will work out with a bipolar chopper driver, but the v2.3 drivers are much more efficient and should not have too much of a problem with wasting a bit of power in the wires.

-Geert
Re: 3 axis drivers on a single board
May 03, 2009 03:33AM
Adding a resistor reduces the time constant, but that only reduces the time to reach the target current if you increase the voltage to match. E.g. with a constant voltage drive if you add a resistor equal to the coil, the time constant is half but also the current is halved unless you also double the voltage.

With a chopper drive, assuming you don't change the supply voltage, the resistance will waste some power, i.e. increase the supply current slightly, and actually reduce the rise rate because the exponential rise has a lower time constant, but it is heading to a lower value.

Here is a graph to illustrate: -


Edited 1 time(s). Last edit at 05/03/2009 03:34AM by nophead.


[www.hydraraptor.blogspot.com]
Re: 3 axis drivers on a single board
May 03, 2009 09:55AM
I have been thinking along the same lines.

If you could squeeze 4 stepper drives on the board it would be better as it seems a stepper driven extruder is looking the way to go.
Anonymous User
Re: 3 axis drivers on a single board
May 03, 2009 01:06PM
Thanks for all the replies.

I've just began learning some basic programing and working with the arduino as a control board. There are some stepper drivers in the mail, i quickly realized that the motor break out shield i purchased could not run 2 steppers at the same time and the current was very limited (600MA/ coil). The printer steppers i found made the l293's get quite hot.

The shield i designed contains the 3 drivers for x y and z, If i use stackable headers a second shield could drive the extruder or speed controls for a cnc.

I would like to build a small dremel cnc with these controls, the extruder would be an interesting project too.

I would like to build this board i designed and have looked at a few options, sending it out to sparkfun to have them get it build or photo etching it and attempting to do it myself, although having no experience with designing circuits, i don't think this will come out well but then sending it out may be a waste of money if it doesn't work.
Attachments:
open | download - drivercomponents.pdf (437.7 KB)
Re: 3 axis drivers on a single board
May 03, 2009 03:02PM
Nophead, thanks for the clarification on the effect of added resistance with the chopper drive. I've been trying to measure the current in my windings during stepping by connecting the sense resistors to the analog inputs of the Arduino (same one that signals the stepper), but I think I'm running into issues with noise. I can measure Vref just fine (handy for calibration) and there seems to be only a moderate amount of noise (<5%) which I filter out in software using averaging.

I'm using the built-in 1.1V analog reference and power the Arduino and v1.3 stepper driver from the same PC power supply. I guess I should at least have some kind of capacitor/resistor low-pass filter to combat high-frequency noise that can upset the ADC. I'd like to sample at 10-20 kHz to get a good idea of how the actual currents are during stepping at different speeds.

Would you have any hints on what the best way is to wire up the output of the sense resistor to the Arduino? Thanks in advance!

-Geert
Re: 3 axis drivers on a single board
May 04, 2009 05:40AM
Geert,
Hmm, tricky if you are only sampling at 20kHz as the signal is switching at a similar speed.

The waveform on the sense resistor is shown in Khiraly's thread here: [forums.reprap.org]

At the start of the step the current builds up at a rate determined by the inductance, the drive voltage and the motor's back emf. You can get useful information from this part of the waveform. If you increase the load on the motor the current rises faster. I think anti-resonant drives use feedback from this signal to cancel out resonance in the motor.

Once the voltage on the sense resistor reaches vRef the circuit starts chopping, so you get a square wave with an amplitude of vRef. The frequency of this chopping is similar to your sample rate so you will not get a meaningful value.

Normally with an ADC you filter the signal so that it has no frequency components higher than half your sample rate. If you do that you will see the first part of the waveform, but when it starts chopping you will see the average of the square wave, which will tell you the duty cycle as you know the peak is Vref.

The tricky part would be recognising where you are on the cycle.


[www.hydraraptor.blogspot.com]
Re: 3 axis drivers on a single board
May 04, 2009 03:14PM
Hi Nophead,

Yes the beginning part is what I'm mostly looking for, especially to see how things change at higher stepping speeds. However, I think I've finally figured out what was going wrong. I forgot to reinitialize the DAC clock for higher frequency and wasn't careful about selecting the right phase in the stepping sequence for my measurements.

So, now I've got my "Arduinoscope" all set up. I'm using the "Processing" environment to communicate with the Arduino and plot a scope image with the serial data received. I'm using an ADC clock of 1 MHz, with a sample time of 20 µs and a buffer size of 250 samples. The attached plot uses 0.5 msec/div and 250 mvolt/div. I have my Vref set to 400 mvolt, so the plot makes some sense.

-Geert


Re: 3 axis drivers on a single board
May 04, 2009 03:54PM
Yes that looks good. It does mangle the square wave as expected because it is similar to the sample rate, so hit an miss whether you hit a peak or a trough, but it seems to get a good representation of the ramp part.

Now you have to figure out how to get a measure of how much the motor is lagging, from the rise rate, and adjust the timing to cancel out oscillations before they build up. Then you will have an anti-resonant drive worth $800!


[www.hydraraptor.blogspot.com]
Sorry, only registered users may post in this forum.

Click here to login