Jump to content

4 wire stepper motor control (ladder logic)


CasualKilla

Recommended Posts

I need to program a 4 wire stepper motor, problem is, there is no data sheet and no control circuit and i am completely lost. Can somebody please assist me with the ladder logic program to get it up and running? I have access to a decent PLC, and my only option is to hard code this, a control circuit is not an option.

Link to comment
Share on other sites

Hard. Without a control circuit (unless your PLC has some special outputs) you will only obtain poor results.

 

4-wire stepper motors should be bipolar-driven.

 

Does your PLC have transistor outputs? Open-collector or driven (push-pull) outputs? Does it have PWM capability? Does it have quadrature outputs?

 

Also, what is you know about the motor - what size it is, what is winding resistance, are there any markings on it?

Link to comment
Share on other sites

I am not experienced with stepper motors, but from skimming the article at Wikipedia and a quick Google find, it seems doable if you don't want to spin the motor fast or with a smooth rotation and are more interested in positioning.

 

It looks like a fun and interesting project!

 

Do you already have schematics of how you want to connect the motor and data on the hardware?

(Would also be nice if we could get a short backstory of the purpose with the motor control.)

Link to comment
Share on other sites

I am not experienced with stepper motors, but from skimming the article at Wikipedia and a quick Google find, it seems doable if you don't want to spin the motor fast or with a smooth rotation and are more interested in positioning.

 

It looks like a fun and interesting project!

 

Do you already have schematics of how you want to connect the motor and data on the hardware?

(Would also be nice if we could get a short backstory of the purpose with the motor control.)

The winding resistance is 5ohm, I measured it today. Other than than I have no useful info on the motor. The plc is connected to "digital" outputs on the tutor board that short the two output ports when on, and open circuit the two output ports when off.

 

post-85772-0-80538200-1429806982_thumb.png

 

I only really need one rotation direction, I need to rotate an object in steps of 45 degrees

post-85772-0-67242200-1429808521_thumb.png

 

Will this circuit work for one direction rotation? (any tips on the voltage I should use would be appreciated)

Edited by CasualKilla
Link to comment
Share on other sites

I need to program a 4 wire stepper motor, problem is, there is no data sheet and no control circuit and i am completely lost. Can somebody please assist me with the ladder logic program to get it up and running? I have access to a decent PLC, and my only option is to hard code this, a control circuit is not an option.

 

Do you mean something like this?

 

It needs voltage peak appearing on right wire in right moment..

See video how he is reversing movement by reversing order.

 

Search also YouTube for "arduino motor" or "arduino stepped motor".

 

Computer program sends data to arduino, like "set pin X to high", "set pin X to low". Write simple C/C++ for-loop, setting and clearing them in right order:

 

1,0,0,0

0,1,0,0

0,0,1,0

0,0,0,1

 

Delay between instructions will control speed of rotation.

Edited by Sensei
Link to comment
Share on other sites

 

Do you mean something like this?

 

It needs voltage peak appearing on right wire in right moment..

See video how he is reversing movement by reversing order.

 

Search also YouTube for "arduino motor" or "arduino stepped motor".

 

Computer program sends data to arduino, like "set pin X to high", "set pin X to low". Write simple C/C++ for-loop, setting and clearing them in right order:

 

1,0,0,0

0,1,0,0

0,0,1,0

0,0,0,1

 

Delay between instructions will control speed of rotation.

Yes, I have been trying to create that output sequence, but my PLC makes that difficult, how would I set each pin to Ground or Vdd using my outputs (I would need to use 8 outputs)? Could you purpose a circuit that uses less outputs? (also that looks looks a 5 wire stepper, I have a 4 wire)

 

post-85772-0-98356100-1429810232.png

 

How do I need to energize these coils to rotate the stepper in one direction?

Edited by CasualKilla
Link to comment
Share on other sites

With 4-wire motor you must energize your motor windings in both polarities (bipolar). For example (wave drive):

 

Step1: A1 is positive, A2 is negative, B1 & B2 are disconnected

Step2: A1 & A2 are disconnected, B1 is positive, B2 is negative

Step3: A1 is negative, A2 is positive, B1 & B2 are disconnected

Step4: A1 & A2 are disconnected, B1 is negative, B2 is positive

... back to step1....

 

Full step drive is very similar, only both windings are always used simultaneously (for better torque).

 

I don't know how to insert images so I cannot be of any better help.

Link to comment
Share on other sites

 

With 4-wire motor you must energize your motor windings in both polarities (bipolar). For example (wave drive):

 

Step1: A1 is positive, A2 is negative, B1 & B2 are disconnected

Step2: A1 & A2 are disconnected, B1 is positive, B2 is negative

Step3: A1 is negative, A2 is positive, B1 & B2 are disconnected

Step4: A1 & A2 are disconnected, B1 is negative, B2 is positive

... back to step1....

 

Full step drive is very similar, only both windings are always used simultaneously (for better torque).

 

I don't know how to insert images so I cannot be of any better help.

Ah ok, so I NEED to be able to switch polarities. Unfortunate..

 

So I pretty much need a circuit that switches the polarity of the phase with a single output switch, that would solve all my problems....

 

Is it possible to modified the H bridge to work with one input, input = 1 A positive, B negative then input = 0 makes it the opposite?

Edited by CasualKilla
Link to comment
Share on other sites

This is normally done wiht a H-bridge (read Wikipedia)... ask if you have questions about a H-bridge.

 

There are maybe simpler ways than H-bridge, but are ridiculously inefficient.

I understand the H-bridge well, but it uses 4 inputs, I would like modify/add on to the H-bridge to use a single switch just to flip the motor polarity. So i can use one switch for each winding, then one switch to connect/disconnect the Vdd. Thus 3 total. That would be ideal.

I thought of this idea, but I would need 2 voltage sources and I run the risk of shorting Vdd to -Vdd which sounds very unsafe.

 

post-85772-0-39023300-1429812456_thumb.png

 

 

Edited by CasualKilla
Link to comment
Share on other sites

Hmm... if you use a more complex power supply (with +V, GND and -V) then you can permanently connect one end of a winding to GND and then use two switches to bring the other end of the same winding to either +V or -V.... This would be solution if you care not to have many switches (but the power supply is then more complex).

 

Edit: I see now you have the same solution


 

and I run the risk of shorting Vdd to -Vdd which sounds very unsafe.

It would be the same with a H-birdge... This is a typical thing you have to consider when you build a bipolar drive. Your switch-timing must be carefully considered (when transistors are used, for example, care is taken to always close a transistor few nanoseconds before opening the other one).

 

(Also, and we didn't talk about it yet, you will have to add some diodes to protect transistors/switches from high voltage generated by motor coil when it is switched off)

Edited by Danijel Gorupec
Link to comment
Share on other sites

 

 

(Also, and we didn't talk about it yet, you will have to add some diodes to protect transistors/switches from high voltage generated by motor coil when it is switched off)

 

Hmm yes, the inductance of the coils, good point.

 

post-85772-0-06587700-1429821362_thumb.png

 

I have come up with this solution, its a NPN H-Bridge modified to work with 2 inputs, but this seems to do the same job as ous previous idea. I guess I should check tomorrow if our DC supplies can do the V+ V- thing first.

 

post-85772-0-27842300-1429827739_thumb.png

 

This is the final design, seems to work well, besides the diodes, are there any other components I should add, like capacitors?

Edited by CasualKilla
Link to comment
Share on other sites

Yes, at first look your design seems ok. Basically, only diodes are needed (make sure you use faster ones). If your power supply is dynamically slow, you might add some capacitors in parallel to the power supply.

 

Your resistors might overheat. I think you can safely double values for R1 and R2 and still had enough base current (modern transistors have high gain).

 

Also place transistors on a heat sink (this is always the hardest part for me).

 

Now... you use 12VDC power supply and 5ohm winding resistance. Do you expect your motor can work with 2A constant current or do you plan to use PWM?

Link to comment
Share on other sites

(any tips on the voltage I should use would be appreciated)

"Like other motors, stepper motors require more power than a microcontroller can give them, so youll need a separate power supply for it. Ideally youll know the voltage from the manufacturer, but if not, get a variable DC power supply, apply the minimum voltage (hopefully 3V or so), apply voltage across two wires of a coil (e.g. 1 to 2 or 3 to 4) and slowly raise the voltage until the motor is difficult to turn. It is possible to damage a motor this way, so dont go too far. Typical voltages for a stepper might be 5V, 9V, 12V, 24V. Higher than 24V is less common for small steppers, and frankly, above that level its best not to guess."

http://www.tigoe.com/pcomp/code/circuits/motors/stepper-motors/

Link to comment
Share on other sites

"Like other motors, stepper motors require more power than a microcontroller can give them, so youll need a separate power supply for it. Ideally youll know the voltage from the manufacturer, but if not, get a variable DC power supply, apply the minimum voltage (hopefully 3V or so), apply voltage across two wires of a coil (e.g. 1 to 2 or 3 to 4) and slowly raise the voltage until the motor is difficult to turn. It is possible to damage a motor this way, so dont go too far. Typical voltages for a stepper might be 5V, 9V, 12V, 24V. Higher than 24V is less common for small steppers, and frankly, above that level its best not to guess."

http://www.tigoe.com/pcomp/code/circuits/motors/stepper-motors/

Yes... and I can add:

 

- you will want to know how hot gets your motor when its temperature stabilizes at some winding current (preferably through both windings simultaneously). It can be quite warm, but not so hot that you cannot hold it in your hand nor that it starts to smell funny (it is too late then). It takes loooong time for temperature to stabilize (say 15 minutes for larger motors) so take your time before you decide to increase the current further.

 

- you will check other motors in catalogs that have the same physical size and construction and about the same winding resistance... this will give you a good estimation about the current your motor can use.

Link to comment
Share on other sites

Yes, at first look your design seems ok. Basically, only diodes are needed (make sure you use faster ones). If your power supply is dynamically slow, you might add some capacitors in parallel to the power supply.

 

Your resistors might overheat. I think you can safely double values for R1 and R2 and still had enough base current (modern transistors have high gain).

 

Also place transistors on a heat sink (this is always the hardest part for me).

 

Now... you use 12VDC power supply and 5ohm winding resistance. Do you expect your motor can work with 2A constant current or do you plan to use PWM?

Yes, I have just test my 100 ohm resistor at 12V and indeed it does burnout after some time, this is a real issue... (using a 200 ohm resistor at 12V heats up alot, but its still going as we speak)

 

I plan to use constant DC pulses, something like this:

 

post-85772-0-16564400-1429862546_thumb.png

 

(the other winding will have its own circuit, this is just for one of the windings)

Edited by CasualKilla
Link to comment
Share on other sites

If you can decrease your 24VDC power supply to, say, 15VDC (and re-calculate resistor values accordingly) you should decrease resistor heating a lot.

 

Or you can keep as it is, and use more powerful resistors (or use parallel/serial combinations of several resistors).

 

Or you can program your PLC never to keep single output switched on for a long time (when motor is stopped, switch output on/off with, say, 50% duty cycle, as fast as you can).

Link to comment
Share on other sites

Yes, I have just test my 100 ohm resistor at 12V and indeed it does burnout after some time, this is a real issue...

 

You probably have 1 Watt 100 ohm resistor.

Try replacing it by 2 W 100 ohm resistor.

Link to comment
Share on other sites

If you can decrease your 24VDC power supply to, say, 15VDC (and re-calculate resistor values accordingly) you should decrease resistor heating a lot.

 

Or you can keep as it is, and use more powerful resistors (or use parallel/serial combinations of several resistors).

 

Or you can program your PLC never to keep single output switched on for a long time (when motor is stopped, switch output on/off with, say, 50% duty cycle, as fast as you can).

If the PLC have relay outputs with individual terminals, then the 12 VDC power supply could be used to control the transistors.

 

Relay outputs have a mechanical lifetime to consider -> faster switching = broken sooner.

 

If the turning object don't need the motor to keep holding it still when stopped, it's probably better to turn off all power to the motor completely. Or alternatively if it needs a brake to have a second circuit with limited current for the brake feature.

Link to comment
Share on other sites

If you can decrease your 24VDC power supply to, say, 15VDC (and re-calculate resistor values accordingly) you should decrease resistor heating a lot.

 

Or you can keep as it is, and use more powerful resistors (or use parallel/serial combinations of several resistors).

 

Or you can program your PLC never to keep single output switched on for a long time (when motor is stopped, switch output on/off with, say, 50% duty cycle, as fast as you can).

I designed my circuit for a particular base current to force saturation (hfe = 30 from datasheet). But you are right, smaller Resistance should lead to less heating I^2 * R. Anybody know what kind of max current these std resistors can handle?

Link to comment
Share on other sites

Anybody know what kind of max current these std resistors can handle?

Resistor Wattage Ratings:

The photo below shows various styles and wattage resistors. From left to right, the wattage ratings are: 5 watt, 3 watt, 2 watt, 1 watt, 1/2 watt, 1/4 watt and a 1/6 watt.

IMG_5660b.jpg

http://www.bcae1.com/resistrs.htm

 

The link also have a calculator for power dissipation in resistors.

Edited by Spyman
Link to comment
Share on other sites

Resistor Wattage Ratings:

The photo below shows various styles and wattage resistors. From left to right, the wattage ratings are: 5 watt, 3 watt, 2 watt, 1 watt, 1/2 watt, 1/4 watt and a 1/6 watt.

IMG_5660b.jpg

http://www.bcae1.com/resistrs.htm

 

The link also have a calculator for power dissipation in resistors.

Thank you for that post, I believe I was using a 1/4 W resistor :( .

 

In terms of the diode, do I need to find a Schottky that can handle more than 3A?

Also can anybody explain the current spike in R1 (also happen in R2, but much smaller). Is it perhaps due to my lack of diodes?

 

post-85772-0-07182100-1429873797_thumb.png

Edited by CasualKilla
Link to comment
Share on other sites

Anybody know what kind of max current these std resistors can handle?

 

That depends on voltage.

 

I=U/R = 12 V / 100 ohm = 0.12 A

 

P=U*I=U^2/R=I^2*R=12 V * 0.12 A = 12V^2/100 ohm = 0.12A^2*100 = 1.44 W

Whatever method you calculate it's 1.44 Watts = 1.44 Joules per second of energy released by electrons..

They increase temperature of element.

If you have some clever method of cooling and will consume energy faster than it arrives (liquid nitrogen? ;) heat sink, fan ) then in theory element should survive much more current than in normal environment.

 

With 1 Watt resistor, and 12 V, you can have up to 83 mA.

1 W / 12 V = 0.08333 A

 

With 5 V, 1 W resistor should survive 0.2 A continuous current.

 

Some suggests that you should have double wattage than typical usage.

http://www.robogaia.com/how-to-calculate-resistor-wattage.html

Edited by Sensei
Link to comment
Share on other sites

 

That depends on voltage.

 

I=U/R = 12 V / 100 ohm = 0.12 A

 

P=U*I=U^2/R=I^2*R=12 V * 0.12 A = 12V^2/100 ohm = 0.12A^2*100 = 1.44 W

Whatever method you calculate it's 1.44 Watts = 1.44 Joules per second of energy released by electrons..

They increase temperature of element.

If you have some clever method of cooling and will consume energy faster than it arrives (liquid nitrogen? ;) heat sink, fan ) then in theory element should survive much more current than in normal environment.

 

With 1 Watt resistor, and 12 V, you can have up to 83 mA.

1 W / 12 V = 0.08333 A

 

With 5 V, 1 W resistor should survive 0.2 A continuous current.

 

Some suggests that you should have double wattage than typical usage.

http://www.robogaia.com/how-to-calculate-resistor-wattage.html

I see, I can handle the math though :P. It is just not always clear what the wattage spec is. We just have shelves of the cheapies here in the lab.

 

New POST

 

I may not have access to BJT, but I can get N-channel MOSFET's (60W). Could I use a circuit like this?

 

post-85772-0-49920900-1429884631_thumb.png

 

Also, if mosfets will work, how do I drive mosfets "hard-on". For BJTs I just designed the base current to be large enough to break the minimum Ic = hfe * Ib ratio given in the datasheet, which makes it saturated with very low C-E drop.

 

I assume there is also a maximum Vgs I must avoid for mosfets?

Edited by CasualKilla
Link to comment
Share on other sites

As Spyman nicely showed, resistors come in various standard power ratings. Most often you will find 1/4W and 1/2W (every electronics store)... It is also good practice, as Sensei mentioned, to have some power margin (not necessarily double, but some 50% would be nice).

 

For your simple drive circuit you don't need Schottky diodes... just use some that are faster than typical diodes used in 50/60Hz rectifiers. (If you made a high performance PWM driver then Schottky might be recommended, but in your case is probably overkill).... Anyway diodes are must and if you don't have them you risk damaging your transistors (even motor insulation, maybe).

 

I am not sure what kind of current spike do you see on R1 (during switch-on or during switch-off)? Do you use oscilloscope to see these spikes? BTW, if you don't use diodes all kind of spikes are possible, but I cannot tell for sure if this is the reason.

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.