Advice on viability for a 3-axis camera slider.

Hello, I am building a camera slider with a 3-axis positioning system + Zoom and length motor (5 motors in total). I have researched a lot on what components to get but I would like some advice. I will try to describe how I want it to work and then what my research has come up with. I would like to apologize in advance for the amount of text :smiley:

My idea is to be able to position the 5 individual motors in a specific setting. Let’s call these Position points (PP). Each Position point contains the current value of each motor. So for example

PP0: All Motors are Zeroed for a reference point.
PP1: “jogging” from the Zero point to first desired position lets say:
X:+100
Y:+30
Z:-20
Focus: +30
Length:0

I now want to store this positional information that contains these amount of steps that need to be made to get to this position from “PP0”. And I want to be able to keep doing this for PP(n) amount of values. Then I set the start PP and end PP and the programs starts from PP(start#) to PP(end#) with a set amount of time between each PP#. With all motors running at the SAME TIME, and arriving at the final position at the same time. So I will need to divide the total travel the motors need to do over a time period so a motor that need to make, let’s say 400 steps vs 200 steps for another motor. Then the motor that need to make 200 step needs to make half the amount of steps over the same time period compared to the motor that needs to make 400steps for them both to stop at the 200 and 400 position at the same time.

Right now I have a Genuino Starterkit + a pololu stepper driver, a nema 17 and 23. but I have yet to get around to do much. Just finished the mechanical design for the whole thing. I am going to start fiddling around with that as soon as possible to learn the basics and go from there. I am quite familiar since I have a fair bit of experience in Matlab. But since I might have to order from abroad I need to start making orders soon. And I need to get an expanded Arduino I believe.

So my thoughts right now. Start with a kit made for a RepRap or something similar. I have been looking at a SainSmart-kit for a reprap 3D printer (Ramps 1.4 + A4988 + Mega2560 R3 + LCD 12864 3D Printer Controller Kit For RepRap – SainSmart.com). I am thinking of using the LCD, Ramps, Mega, Nema 17 motors and stepper drivers. And then just leave the rest of the stuff. I might get limit switches mounted if it can be done without too much hassle.

I have also looked at a similar kit on RepRapDiscount (Ramps 1.4 Ultimate Kit, 1 wiring set, 5 A4988 - RepRapDiscount Online Shop).

So basically, I need to drive 5xNema 17 stepper motors at the same time. Be able to drive these individually manually to the correct position (6 pole positional switch to select what motor to control and then jog with the rotary on the LCD, with the 6th position being navigate on the LCD interface) , store this information with a button, change the PP position and store new information. Be able to cycle the PP number, Change Time and execute the command.
I would like to build my own screen layout where it displays what PP(n) you are in, the current position on each motor, and set the transition time from PP(n) to PP(n+1).

I would also like to make a different “screen pages” where I can run for example a simple time lapse with shutter control.

I will sort these into different questions to make it easier to answer.

#1: Can it be done? Or Is there a limitation in the Arduino I have not thought about?

#2: Will the Arduino Mega2560 have enough connections for 5 Nema17 motors, LCD. the extra buttons/positional switch and shutter circuit (http://www.robotroom.com/Camera/Panasonic-GH1-remote-shutter-control-schematic.gif). If not solutions?

#3: Will the components that I suggest work? Do you have any other suggestions? Any similar kits combinations of components from (better?) manufactures like Pololu, Sparkfun etc? I am a bit skeptical to the cheaper kits from china as the quality varies (from what I heard). But If I can salvage a 3D printer kit it would probably save me a lot of time.

#4: Am I able to redo the LCD12864 interface to my own liking or is it in some way “locked” to only work with RepRap?

#5: What are your thoughts on A4988 vs DRV8825 for this application? 1/16 vs 1/32 and different amperage. Get DRVs instead? I do not care about the few extra dollars they cost if it makes a big difference.

#6: Will I have enough memory on the Arduino for a program like this? And if not is it some way to fix this? (As I said I am a bit new still, I have only done a few of the starter projects so far)

#7: I read somewhere that you can only control one stepper at the time? Is this true? Or does it only apply to some specific shield/circuit?

#8: Should I continue with the Arduino IDE or go for another like Visual Studio?

It is a lot of text and I am still very green to the Arduino world. But I am willing to learn and I only want to be sure that I buy the right hardware and that there are no limitations that I will not be able to overcome. I just don’t have time to learn more and then get to the point where I know exactly what components I need and THEN order the stuff. If I just have the right stuff I am sure I can figure out and research on forums/wikis more to get the functions I want.

I “Just” need someone with some experience to tell me/point me in the right direction on what to buy and I will try and solve the rest myself! I am a student but I am willing to pay for quality but I just don’t want to throw money/and stuff away to buy the wrong things. I can’t really afford that.

I appreciate all help I can get. And please suggest other solutions if you think you have a better one!

Best regards
Andreas

You have not posted a link to the datasheet(s) for your stepper motors and the choice of driver depends very much on the requirements of the motor.

A Mega should be able to do what you want.

I'm not sure what you expect from the RepRap kits that you mention. Is it just a convenient way to connect the stepper drivers?

How many pre-programmed positons do you want to store? (I assume each position needs to store 5 position values)?
Will these positions be known before the program is compiled or will you want to enter them when the program is running (it makes a difference regarding where the data can be stored).

I think the Arduino IDE will be perfectly adequate and more familiar to people here who may offer assistance. I use the Arduino IDE to compile and upload programs but I use the Geany editor to edit my code.

Your concept for moving the motors simultaneously is similar to a system I use for 3 motors on a small lathe.

...R
Stepper Motor Basics
Simple Stepper Code

Robin2:
You have not posted a link to the datasheet(s) for your stepper motors and the choice of driver depends very much on the requirements of the motor.
I have been looking at a Sparkfun NEMA 17 400step: http://www.lawicel-shop.se/prod/Stepper-Motor-NEMA17-400-step_880198/Sparkfun_64668/SWE/SEK
And i have also been watching this one: http://www.jbcnc.se/images/datasheets/STM42-40.pdf
What type of motor would you use? Any specific brand or?

A Mega should be able to do what you want.
Thought so!

I'm not sure what you expect from the RepRap kits that you mention. Is it just a convenient way to connect the stepper drivers?
Yeah, basically. An easy way to connect five A4988 or DRV8825. And also the LCD screen that comes with. But I don't need the other stuff on the shield, like heatbed etc.

How many pre-programmed positons do you want to store? (I assume each position needs to store 5 position values)?
Exactly, 5 position values (one for each motor). Lets say you would probably only do 2-4 in normal cases. Lets say 10 would be a good max number.
Will these positions be known before the program is compiled or will you want to enter them when the program is running (it makes a difference regarding where the data can be stored).
The thought was that you start the arduino. Set the "PP0 value" as a reference/startpoint. Then you jogg the motors to different locations you want to focus on with the camera. Store these in PP1, PP2 PP(n) and then start from PP0 and cycle through all the stored positions. From 0 to (n) and so on.

I think the Arduino IDE will be perfectly adequate and more familiar to people here who may offer assistance. I use the Arduino IDE to compile and upload programs but I use the Geany editor to edit my code.
Ohh, nice. So you can use a different editor then compile it in the Arduino IDE, never thought of that :D. The reason I wanted something else was that I was hating a bit on the editor compared to lets say matlabs.

Your concept for moving the motors simultaneously is similar to a system I use for 3 motors on a small lathe.
Okay, good. It kinda loses the purpose for smooth sweeping motion with the camera if the 1st motor does it move, then the next and so on :smiley:

...R
Stepper Motor Basics
Simple Stepper Code

Thx! Answered the questions with bold in your reply!

The motors you are thinking of require 1.7 amps and 2 amps. Both would be too much for an A4988 and the 2 amp one might be marginal for the DRV8825.

Have you made any attempt to estimate the torque you require from the motors? There is a simple (if crude) suggestion for this in the link I gave you. Maybe a less powerful motor would be adequate - especially if high speed is not required.

Storing 10 positions with 5 data points for each would be no trouble.

This is an ambitious project if you have little Arduino experience. I suggest you start by treating it as several separate parts - moving one motor, using the LCD, storing positions etc

You may find some ideas in Planning and Implementing a Program

...R

Robin2:
The motors you are thinking of require 1.7 amps and 2 amps. Both would be too much for an A4988 and the 2 amp one might be marginal for the DRV8825.
Okay. I will be making a custom milled heatsink for all the stepper drivers. I will also have some sort of cooling. Even if they are rated at that amp, do you think they will use that much? Its not like they will be pushed to their limit. Also they will probably only be running for periods of 30 sec or less. Otherwise just hold the position. Do still think that the 2A is pushing it with the additional cooling etc?

Have you made any attempt to estimate the torque you require from the motors? There is a simple (if crude) suggestion for this in the link I gave you. Maybe a less powerful motor would be adequate - especially if high speed is not required.
Yeah, I have done some calculations. And I think that going down in torque will be "ok" but not optimal. Especially if I put on a full frame DSLR with a few kg of optics.

Storing 10 positions with 5 data points for each would be no trouble.
Good! What would you think is the limit where it gets sketchy?

This is an ambitious project if you have little Arduino experience. I suggest you start by treating it as several separate parts - moving one motor, using the LCD, storing positions etc
Yes! My exact thought! I have been reading up on using steppers. Will be trying to move a motor with a simple rotary button. Will do the project in segments. Add the 2 row LCD i got with the starter kit and so on. Just want to have all the stuff so I can get to it when I am able! I'm not afraid to put in the time :).

You may find some ideas in Planning and Implementing a Program

...R

If I don't get the reprap combo, do you have another suggestion for a 4 or 5 stepper shield I can use and a good LCD with a lot of space? I will only need 4 stepper drivers for the Nema17 and then I already have a:

Pololu AMIS-30543 Stepper Motor Driver
Beskrivning: This is a breakout board for ON Semiconductor’s AMIS-30543 microstepping bipolar stepper motor driver, which features SPI-adjustable current limiting, 11 step modes (from full-step through 1/128-step), back-EMF feedback that can be used for stall detection or optional closed-loop control, and over-current and over-temperature protection. The board operates from 6 V to 30 V and can deliver up to approximately 1.8 A per phase without a heat sink or forced air flow (it is rated for 3 A per coil with sufficient additional cooling).

Will use this for a Nema 23 driving the belt to move the whole thing up the slide (sized to be able to lift the whole thing vertically).

Done all this on a Mega1280,
4x steppers
5x servos
many switches
three unassigned bi-Di serial ports (with protocol conversion)

Read up on 'motion control'

lastchancename:
Done all this on a Mega1280,
4x steppers
5x servos
many switches
three unassigned bi-Di serial ports (with protocol conversion)

Read up on 'motion control'

Great, then I know it CAN be done!

Would you suggest using these shields that you can pop on like 4-5 stepper drivers or just individually connect each to the arduino. If so, what brand and typ of shield should one be looking at.

Shields are optional…
My project used a separate outboard 4-channel stepper driver.
For everything else, I made my own 'shield on a perfboard to handle the other I/o.

Steppers need a power driver module to meet the current and drive specs of the motors. Easiest if you get drivers that support ‘direction’ and ‘step’ inputs.

Servos are easy if they use RC style PWM control.

The Mega supports multiple serial ports, so use the default USB channel for debugging and command-line stuff, and the others to do whatever else you’re doing!

If you go to PM, I can help with specifics (like stepper speed ramping etc)

Responding to Reply #4

You can set the current limits on the drivers lower than the current required by the motors but then you won't get the full torque. Stepper motors draw their full (permitted) current all the time - even when stationary. I don't know how well the cooling will help - it is worth trying. I don't have any high current steppers myself.

If you have a small number of positions there will be no problem accomodating them even though the Arduino has only a small amount of SRAM (compared to a PC). If you have too many positions there may not be enough spare SRAM for operational needs. I suspect 20 or 30 positions would not cause a problem - but it does depend on the rest of your program.

I don't have any suggestions for a "shield" for the motor drivers. I made my own from a piece of strip board but for the price of some shields I suspect that was false economy.

...R

I have researched some more. This is the current hardware I am thinking of.
Controller:
Genuino Mega2560 R3

Shield:
V3 engraver shield with room for 4xDRV8825 (it says for A4988 but other say both. I guess its only a programing issue?)

Motors:
4x Sparkfun 400 steps/rev 1.7A Nema 17
1x Nema 23 Sized 200

Drivers:
4x DRV8825 Stepper Motor Drviver HC 2.2A with sufficient cooling (1/64 step)
1x AMIS-30543 Stepper Motor Driver 3A with sufficient cooling (1/128 step)

Sensors:
Rotary Encoder with push function (For jogging motors and navigating in the menu)
Rotary Switch 2pol 6 position (To be able to fast select what motor to drive Pos 6 for moving in the LCD menues)
Button (To start and stop program)

Screen: (Here I am the most unsure, I need something that is easy to connect with few wires and is big and easy to program) These are the ones I have looked at:

Sparkfun Graphic LCD 160x128 Huge (Big display, number of connections needed?)
Or
SparkFun Serial Graphic LCD 128x64

From what I can understand both these contains a "SparkFun Graphic LCD Serial Backpack" so that you can easily connect it to the genuino with a few wires?

I have also looked at the:
adafruit Monochrome 2.7" 128x64 OLED Graphic Display Module Kit 3.3v logic but they supply a converter circuit for 5v.
"The driver chip, SSD1325 can communicate in two ways: 8-bit or SPI. Personally we think SPI is the way to go, only 4 or 5 wires are required. "
Would this eat up to many inputs/outputs or will I still be fine?

What would you guys recommend?

I have not used them but I reckon having a serial interface to the LCD will make life very much easier - including from the point of view of hardware connections.

...R