3-axis camera slider with focus pull and linear motion.

Hello!

I am building a camera slider with a 3-axis (think gimball) + Focus and linear motion (5 motors in total). I Just finished the mechanical design for the whole thing I have researcheded a lot on what components to get but I would like some advice since I am still learning. 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:

http://i.imgur.com/6pVWstA.jpg

(The black rod is not connected to the “head” its just the tripod mount to the linear guide)

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

PP#0: All Motors are Zeroed for a reference point.

All values are 0 here. Just used for reference for the other points.

PP#1: “jogging” from PP#0 a number of steps to lets say:

X:+100

Y:+30

Z:-20

Focus: +30

Length: 10

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 “PP#0”. And I want to be able to keep doing this for PP#(n) amount of values.

When I have stored n:amounts of PP# then I would like to set a start PP# and end PP#. On each PP I want to set the time it should take to get from PP(current) to PP(current+1) so I can set the transition time. I need 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 the set time period. So if motor X that need to make 400 steps and motor Y 200steps. Then motor Y need to make half the amount of steps over the same time period compared to motor X for them both to stop after 200 and 400 steps at the same time.

So basically, I need to drive 4xNema 17 size stepper motors and a Nema 23 at the same time. Be able to drive these individually with a rotary switch to the correct position (Im thinking a 6 pole positional switch to select what motor to control and use the left over position to navigate on the LCD interface).

Idea on how the interface on the LCD could look like.

http://i.imgur.com/3JCEQtV.jpg

With the rotary switch change navigate to the PP# box change the number and be able to store the current motor position information in that PP# with either a button or a button in the LCD interface. Be able to cycle the PP number to view the stored info, Set a TT value (Travel time from PP(#) to PP(#+1)). And finally execute the a move from PP(number x) to PP(number y). Im thinking a different screen set when you run that shows what PP it is running and time elapsed. And there you can start the program and stop it. Lets call these “pages”. One main with the PP numbers etc. One for running when everything is set up. And another one for a simple time lapse function with a shutter circuit.

I would have to build my own menu system. I am thinking something like this (Is this even doable?)

These are the components I am thinking of using (Please point out errors or mismatched components if you find!)

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?

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

#1: Can it be done? Or Is there a limitation I have not thought about? If so please do tell! Maybe I need a Raspberry pi?

#2: Will I have enough connections with the components needed on a Arduino Mega2560 (5xStepper drivers, LCD. the extra buttons/positional switch and [shutter circuit.

#3: Should I rethink or change some of the components I have considered? Do you have any other suggestions?

#5: What are your thoughts on A4988 vs DRV8825 for this application? 1/16 vs 1/32 and different amperage.

#6: Will I have enough memory on the Arduino for a program like this? And how many PP# do you think you can store before you run out of memory? (5 values for each motor, Traveltime and maybe some acceleration/deacceleration value. So a total of 7 values)

#7: I read somewhere that you can only move 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 and editor or go for another like Visual Studio or Arduino IDE + Visual studio code? Want to learn the “right way”.

#9: I would have to build my own menu system. I am thinking something like this (Is this even doable?)

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. I am going to start fiddling around with that as soon as possible to learn the basics and go from there. Learn how to operate 1 motor, add a LCD, buttons etc etc. Learning everything in modules and then combine these into this project. 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 more and then get to the point where I know what components I need and THEN order the stuff. I want to just order what I need. Learn element by element, familiarize with the component. Im not going balls to the walls and try to write the program from start to finish. Nor connect all the components at once and start fixing. Will do this in a slow and composed manner :D. But I am a planer and I need to have things set up or I have trouble starting to work.

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

Best regards

Andreas](http://www.robotroom.com/Camera/Panasonic-GH1-remote-shutter-control-schematic.gif)](Monochrome 2.7 128x64 OLED Graphic Display Module Kit : ID 2674 : Adafruit Industries, Unique & fun DIY electronics and kits)](Serial Graphic LCD Hookup - SparkFun Learn)](SparkFun Serial Graphic LCD 128x64 - LCD-09351 - SparkFun Electronics)](SparkFun Serial Graphic LCD 160x128 - LCD-08884 - SparkFun Electronics)](Pololu - AMIS-30543 Stepper Motor Driver Carrier)](Pololu - DRV8825 Stepper Motor Driver Carrier, High Current)](Stepper Motor - 68 oz.in (400 steps/rev) - ROB-10846 - SparkFun Electronics)](http://www.ebay.com/itm/171907310448)](https://www.sparkfun.com/products/11061)

The issue I see right now is the number of connections you MAY need versus the Uno’s connectors. Before you go off the deep end and start buying more expensive devices, start learning with what you have now. If you try to slap all this together at once, it will be doomed to fail and you will be down on yourself. Start with spinning a stepper, then two.

You will want a Serial or SPI or even an I2C screen to cut down on connections. There are also stepper drivers that can run more than one motor from one Serial, SPI connection. If you research enough, you will find that you can put more than one device on SPI and I2C bus.

Stick with the Arduino IDE, I still use it as do many others. Once you have played with the Arduino code enough, you will know if or when you need a better IDE. Hint, one reason will be when the code gets long enough where you need to split it into “chunks” so you can even read it.