Stepper control advice

Hey everybody, I'm new to this type of thing so bear with me. I'm trying to design a stepper controller to run in real time to control a stepper based linear actuator.

It should be a fairly simple point to point point type of a motion. It will travel a certain distance, hold, then return to the original position. It will hold there for a specified time then repeat. I think it will take about 1000 pulses per second to reach the velocity required.

It seems as though the arduino should be up to the task but I wanted to post here to get some advice. Also, are there advantages to using a driver other than the arduino motor shield?

Any and all input is welcome. Thanks in advance.

Here is a link to an actuator I am considering:

http://www.haydonkerk.com/LinearActuatorProducts/StepperMotorLinearActuators/LinearActuatorsHybrid/Size11LinearActuator/tabid/75/Default.aspx

Have you seen this to start with:- http://arduino.cc/en/Tutorial/MotorKnob also :-

http://www.thebox.myzen.co.uk/Workshop/Motors_4.html

You need some sort of limit switch so you can detect the absolute position of your shaft. Have you seen the RepRap project, lots of good stuff about motors and controllers?

Thanks GrumpyMike. I had seen the first link but not the second and there was a lot of good info in there.

I checked out the RepRap and I think a reprap motherboard and one motor driver might work well for me. There is a possibility that I would want to go to multiple motors so it would be nice to have that functionality already there. Plus it is ready for the opto endstop. Anyone envision any problems with me using that setup? It looks like it might be an easy solution for a beginner.

Hi njc204 - getting steppers to turn is relatively easy. Getting them to perform at anything like their potential is more involved. What linear speed are you envisaging?

Not sure why a position indicator switch is suggested - steppers are open loop positioning devices - no feedback needed.

Cheers

How many stepper motors can we plugin on arduino? Can we plugin 3 motors?

Thanks

Not sure why a position indicator switch is suggested - steppers are open loop positioning devices

Because when you first power up you don't know where the motor is. A position indicator will allow you to get an absolute reference so you know the position in that location. Then you can just step from there. This is how disc drives (floppy) worked.

How many stepper motors can we plugin on arduino?

As many as you have output pins for. With a motor driver that gives you step and direction inputs then you need two outputs per stepping motor. For a motor drive like a H-bridge you need four outputs per motor.

Right now I am looking at the Bipolar 2.1 V version on the page I originally linked to. I'm going to need to go up to about 50 mm/s which for that arrangement would be about 1000 pulses per second. It will need to push about 5 N which includes a generous "safety" factor. Any thoughts on if I'll be able to achieve this with an arduino or reprap setup? I could go to a double stack version of the motor if I need more power.

The motor company suggests using chopper drive for best performance and it looks like I could do that with either the reprap driver or the L297/L298 on GrumpyMike's page.

It will need to push about 5 N

That is a lot of push. I have some 3N stepping motors and they are about 4" by 4" by 6" and quite heavy.

It is a simple matter of the motor drive. For maximum speed you want a chopper drive with a high voltage motor supply, something like 24 to 35V. Some of the RepRap boards would provide this or something like this:- http://www.diycnc.co.uk/html/cnc_boards.html

That is a lot of push. I have some 3N stepping motors and they are about 4" by 4" by 6" and quite heavy.

That 5N has a safety factor of about 10... I was probably a bit too conservative. So really the load is fairly small but I just want to make sure I don't get something undersized.

Does anyone have much experience with the Arduino Target for simulink? I'm fairly familiar with Simulink but I have a feeling it might just be easier to use Arduino's programmer, it seems pretty simple at first glance.

Because when you first power up you don’t know where the motor is. A position indicator will allow you to get an absolute reference so you know the position in that location.

OK Mike - fair enough - a home switch - when you referred to shaft position that implied rotary feedback wheras of course a home switch gives linear position feedback (unless of course your motor revolves less than 1 rev for full travel).

njc204 - haydon actuators are nice pieces of kit - do them justice and use a decent quality bipolar chopper drive as suggested. I’d also suggest one that supports microstepping (by a factor of around 10).

For max speed the motor you’re looking at should be powered (through your chopper) by an unregulated PS of 40V (32 * sq root of inductance in mH)

If you look at the spec on your motor page re: (linear) force vs pulse rate you’ll see that at around your 50mm/sec requirement you’ll get roughly 2lb or 9N force - so more than your requirement. This will drop a tad if you use microstepping but you stand less chance of falling foul of resonance problems.

Obviously all you’re going to need from the arduino are control signals, but do bare in mind you’ll need to program in your acceleration profiles if you want max speed from your motor. (you can’t just start a stepper at it’s max speed)

Cheers

haydon actuators are nice pieces of kit - do them justice and use a decent quality bipolar chopper drive as suggested. I'd also suggest one that supports microstepping (by a factor of around 10).

Is that a suggestion to not use the RepRap drivers? I have gotten a quote on Haydon's drivers and they aren't astronomical so they are certainly a possibility. Anybody envision any difficulties interfacing those drivers with an Arduino?

Obviously all you're going to need from the arduino are control signals, but do bare in mind you'll need to program in your acceleration profiles if you want max speed from your motor. (you can't just start a stepper at it's max speed)

I found a topic here on the forum with code for an s curve acceleration profile that seems fairly easy to implement so I was planning on using that.

do bare in mind you'll need to program in your acceleration profiles

The arduino G code interpreter has some simple acceleration stuff in it as well.

Is that a suggestion to not use the RepRap drivers? I have gotten a quote on Haydon's drivers and they aren't astronomical so they are certainly a possibility.

It wasn't meant either for or against as I know nothing about reprap stepper drivers. But there are excellent microstepping chopper drives out there suitable for your motor choice for around £35 if that helps.

Anybody envision any difficulties interfacing those drivers with an Arduino?

Any TTL drive will interface no problem.

I found a topic here on the forum with code for an s curve acceleration profile that seems fairly easy to implement so I was planning on using that.

a plain vanilla ramp will probably do just fine but if you fancy s-curve - great - your choice.

What's the application BTW?

Cheers

What’s the application BTW?

It’s for my university research. I’m a MechE, hence all the questions. Its basically going to be a cyclic strain device but one of the things we are looking at is the timing of strain against some other signals that we will be putting into the system. This is why we are looking into coming up with a real time system since the timing needs to be pretty exact.

Thanks again for all the help guys. I’ve been doing some calcs to determine what acceleration I would need if I use a linear velocity ramp. For the motor I linked to earlier I would need in the ballpark of 20000-30000 steps/s2. I just wanted to see if that is a reasonable value for a stepper to achieve? If it’s on the border I’ll contact the manufacturer. Is there an equation I could use to calculate the torque the motor can produce? Then back out an accel from that?

Thanks.