Introduction: ArduCamSlider: a Motorized Slider for DSLR Camera

About: Maker, engineer and researcher at the National Research Council of Italy. Generally I'm interested in the topics of Indoor Environmental Quality and its interaction with energy efficiency, 3D printing, open ha…

Clicca qui per la versione italiana

Here how to realize ArduCamSlider, a DSLR camera slider, based on arduino PCB and recovered material. The small stepper motor allows movement of the DSLR camera along the binary and the LED IR activates the DSLR camera to take shoots (I use a Nikon D5100).

Step 1: List of Parts

I used the following parts:

  • Arduino UNO r3
  • LED IR
  • ULN2003 Stepper Board and 28BYJ-4 motor
  • Plywood piece (recovered)
  • Piece of wood to stabilize the binary (recovered)
  • Frame piece of a mosquito net (recovered)
  • Rechargeable 9v battery (in a first attempt I used a 9V 300mAh battery. Then a battery of 3.7V and 2300 mAh with recharge module )
  • rack and gear
  • small wheels for wardrobe (like this and this other)

All assembled parts appear as in the picture.

Step 2: Arduino Sketch

The Arduino sketch code requires the use of two libraries: IRcameraControl e Stepper.

Here it is:

#include //IRcameraControl library
#include //Stepper library

//Because of the length of the binary (about 60 cm), the maximum number of steps is 6150

//Tab1:

//if stepsset = 5 => 1230 loop

//if stepsset = 6 => 1025 loop

//if stepsset = 7 => 878 loop

//if stepsset = 8 => 769 loop

//if stepsset = 9 => 683 loop

//if stepsset = 10 => 615 loop

//if stepsset = 15 => 410 loop

//if stepsset = 20 => 307 loop

//if stepsset = 25 => 247 loop

//if stepsset = 30 => 205 loop

//if stepsset = 35 => 175 loop

//if stepsset = 40 => 153 loop

//if stepsset = 45 => 136 loop

//if stepsset = 50 => 123 loop

//The following data are modifiable by the user

/Define now the delay in milliseconds before and after shooting

#define delaypre 6000

#define delaypost 6000

//Edit the value of stepsset below taking account of what is written above and also of the fact that each loop is equal to (delaypre + delaypost)/1000 in seconsds.

#define stepsset 10 //by multiplying the number of loops corresponding to the stepsset for the duration of the single loop the total duration is obtained . Obviously the number of loops also identifies the number of photos taken. In this case: with stepsset = 10 we have defined 615 loops = 615 photos. 615 loops x (delaypre + delaypost)/1000 = 7380 seconds = 123 minutes = about 2 hours

//Stop user modifications

/---( step numbers of the motor)---

#define STEPS_PER_MOTOR_REVOLUTION 32

//---( Steps output taking into account gear dimension)---

#define STEPS_PER_OUTPUT_REVOLUTION 32 * 64 //2048

// Arduino pins to wich is connected the ULN2003 chip

Stepper small_stepper(STEPS_PER_MOTOR_REVOLUTION, 8, 10, 9, 11);

//define the connection pins of IR LED

Nikon D5000(5); //pins of IR LED for the auto shooting

//declares the variables

int numberofloopforward; //to know the serial number of the loops forward

int steps = stepsset; //indicates the number of steps defined by the user (see above)

int maxloop = 6150/steps; //It defines the total maximum number of loops taking into account the length of the binary.

int numberofloopbackward = maxloop; //to know the sequence number of loops backward

//int Steps2Take;

void setup()

{ Serial.begin(9600);

Serial.print("steps= ");

Serial.println(steps);

Serial.print("maxloop= ");

Serial.println(maxloop);

}

void loop() /*----( LOOP: RUNS CONSTANTLY )----*/

{

if( numberofloopforward < maxloop )

{

numberofloopforward= numberofloopforward +1;

Serial.print("numberofloopforward= ");

Serial.println(numberofloopforward);

small_stepper.setSpeed(500);

small_stepper.step(steps);

delay(delaypre); //stop time before shooting

D5000.shutterNow(); //scatto

delay(delaypost); //stop time after shooting

}

else

{

if( numberofloopbackward > 0 )

{

numberofloopbackward = numberofloopbackward -1;

Serial.print("numberofloopbackward= ");

Serial.println(numberofloopbackward);

small_stepper.setSpeed(500); //speed

small_stepper.step(- steps);

}

else

{

small_stepper.setSpeed(0);

small_stepper.step(0);

}

}

}

As can be seen from the above code, the LED IR is connected to pin 5 while the ULN2003 Stepper Board to pins from 8 to 11. Here above a very short video of how the system works.

Step 3: ArduCamSlider in Opera

With the battery of 2300 mAh the camera comes to the end of the binary.

Here above the result on a day less than ideal, without turning off the autofocus.