Follow the Stars With Star Tracker

by bulesume in Circuits > Cameras

7615 Views, 120 Favorites, 0 Comments

Follow the Stars With Star Tracker

FNJY8W8HVXDZJZD.MEDIUM.jpg
IMG_0002.JPG

Hi there! here another project for summer photographers...

The star tracker derived from barn door star tracker.

MATERIAL:

2 x aluminium plate 40mm X 5mm X 250mm long

2 x aluminium L section 30x50 X 200mm long

2 x aluminum U section 10mm X 8mm 50mm long

2 x good steel hinges

20x m4 bolt

8 x m4 countersunk screw

12 x m4 screw

1x Stepper motor

1 x Arduino uno

1x multi rotation 10K ohm potentiometer

1 x stepper motor driver with ULN2003 chip driver

1 x M6 screw (for plate movement)

1 x M6 barrel nut (forniture use)

1x 1/4 whit worth screw (for join the photographic head on star tracker)

1 M4 to M6 CNC flexible coupling shaft (same as used for 3D printer)

TOOLS:

Drill

screw driver (plate and star shape)

set of wrench

1/4 MALE THREAD WHITWORTH (same thread used in photography)

Join Together the Plates

Diapositiva1.jpg
IMG_0004.JPG
IMG_0009.JPG
IMG_0030.JPG
IMG_0023.JPG
UNL2003-board.jpg

Now is the moment to assemble these plates with screw and nuts and motor. All screw holes are 20 mm distanced. The barrel nut is keep inside the small "cage" made by U aluminum bar. In this way the higher plate can move up and down.

The hole for the motor screw is 10-12 mm ovale shape.

The tripod connection is made by 1/4 MALE THREAD WHITWORTH.

First model I've used one gear motor of 2rpm at 12VDC managed by RC model ESC and servo tester. (if interested ask me).

After I've used Arduino and 5 wires stepper motor obtained from air conditioner. I suppose the motor used in the kit is useful for this. The main important things is the motor have to run 1 rotation every 60 seconds.

I've installed the Arduino board and the stepper driver inside the plastic box.

Arduino sketch used:

______________________________________________________________________________________

// This Arduino example demonstrates bidirectional operation of a

// 28BYJ-48, which is readily available on eBay, using a ULN2003

// interface board to drive the stepper. The 28BYJ-48 motor is a 4-

// phase, 8-beat motor, geared down by a factor of 68. One bipolar

// winding is on motor pins 1 & 3 and the other on motor pins 2 & 4.

// Refer to the manufacturer's documentation of Changzhou Fulling

// Motor Co., Ltd., among others. The step angle is 5.625/64 and the

// operating Frequency is 100pps. Current draw is 92mA. In this

// example, the speed and direction of the stepper motor is determined

// by adjusting a 1k-ohm potentiometer connected to Arduino pin A2.

// When the potentiometer is rotated fully counterclockwise, the motor

// will rotate at full counterclockwise speed. As the potentiometer is

// rotated clockwise, the motor will continue to slow down until is

// reaches its minimum speed at the the potentiometer's midpoint value .

// Once the potentiometer crosses its midpoint, the motor will reverse

// direction. As the potentiometer is rotated further clockwise, the speed

// of the motor will increase until it reaches its full clockwise rotation

// speed when the potentiometer has been rotated fully clockwise.

///////////////////////////////////////////////

/declare variables for the motor pins

int motorPin1 = 8; // Blue - 28BYJ48 pin 1

int motorPin2 = 9; // Pink - 28BYJ48 pin 2

int motorPin3 = 10; // Yellow - 28BYJ48 pin 3

int motorPin4 = 11; // Orange - 28BYJ48 pin 4

// Red - 28BYJ48 pin 5 (VCC)

int motorSpeed = 0; //variable to set stepper speed

int potPin = 2; //potentiometer connected to A2

int potValue = 0; //variable to read A0 input

//////////////////////////////////////////////////////////////////////////////

void setup() {

//declare the motor pins as outputs

pinMode(motorPin1, OUTPUT);

pinMode(motorPin2, OUTPUT);

pinMode(motorPin3, OUTPUT);

pinMode(motorPin4, OUTPUT);

Serial.begin(9600);

}

//////////////////////////////////////////////////////////////////////////////

void loop(){

potValue = analogRead(potPin); // read the value of the potentiometer

Serial.println(potValue); // View full range from 0 - 1024 in Serial Monitor

if (potValue < 535){ // if potentiometer reads 0 to 535 do this

motorSpeed = (potValue/15 + 5); //scale potValue to be useful for motor

clockwise(); //go to the cw rotation function

}

else { //value of the potentiometer is 512 - 1024

motorSpeed = ((1024-potValue)/15 + 5); //scale potValue for motor speed

counterclockwise(); //go the the ccw rotation function

}

}

/////////////////////////////////////////////////////////////////////////////

/set pins to ULN2003 high in sequence from 1 to 4

//delay "motorSpeed" between each pin setting (to determine speed)

void counterclockwise (){

// 1

digitalWrite(motorPin1, HIGH);

digitalWrite(motorPin2, LOW);

digitalWrite(motorPin3, LOW);

digitalWrite(motorPin4, LOW);

delay(motorSpeed);

// 2

digitalWrite(motorPin1, HIGH);

digitalWrite(motorPin2, HIGH);

digitalWrite(motorPin3, LOW);

digitalWrite(motorPin4, LOW);

delay (motorSpeed);

// 3

digitalWrite(motorPin1, LOW);

digitalWrite(motorPin2, HIGH);

digitalWrite(motorPin3, LOW);

digitalWrite(motorPin4, LOW);

delay(motorSpeed);

// 4

digitalWrite(motorPin1, LOW);

digitalWrite(motorPin2, HIGH);

digitalWrite(motorPin3, HIGH);

digitalWrite(motorPin4, LOW);

delay(motorSpeed);

// 5

digitalWrite(motorPin1, LOW);

digitalWrite(motorPin2, LOW);

digitalWrite(motorPin3, HIGH);

digitalWrite(motorPin4, LOW);

delay(motorSpeed);

// 6

digitalWrite(motorPin1, LOW);

digitalWrite(motorPin2, LOW);

digitalWrite(motorPin3, HIGH);

digitalWrite(motorPin4, HIGH);

delay (motorSpeed);

// 7

digitalWrite(motorPin1, LOW);

digitalWrite(motorPin2, LOW);

digitalWrite(motorPin3, LOW);

digitalWrite(motorPin4, HIGH);

delay(motorSpeed);

// 8

digitalWrite(motorPin1, HIGH);

digitalWrite(motorPin2, LOW);

digitalWrite(motorPin3, LOW);

digitalWrite(motorPin4, HIGH);

delay(motorSpeed);

}

/////////////////////////////////////////////////////////////////////////////

/set pins to ULN2003 high in sequence from 4 to 1

//delay "motorSpeed" between each pin setting (to determine speed)

void clockwise(){

// 1

digitalWrite(motorPin4, HIGH);

digitalWrite(motorPin3, LOW);

digitalWrite(motorPin2, LOW);

digitalWrite(motorPin1, LOW);

delay(motorSpeed);

// 2

digitalWrite(motorPin4, HIGH);

digitalWrite(motorPin3, HIGH);

digitalWrite(motorPin2, LOW);

digitalWrite(motorPin1, LOW);

delay (motorSpeed);

// 3

digitalWrite(motorPin4, LOW);

digitalWrite(motorPin3, HIGH);

digitalWrite(motorPin2, LOW);

digitalWrite(motorPin1, LOW);

delay(motorSpeed);

// 4

digitalWrite(motorPin4, LOW);

digitalWrite(motorPin3, HIGH);

digitalWrite(motorPin2, HIGH);

digitalWrite(motorPin1, LOW);

delay(motorSpeed);

// 5

digitalWrite(motorPin4, LOW);

digitalWrite(motorPin3, LOW);

digitalWrite(motorPin2, HIGH);

digitalWrite(motorPin1, LOW);

delay(motorSpeed);

// 6

digitalWrite(motorPin4, LOW);

digitalWrite(motorPin3, LOW);

digitalWrite(motorPin2, HIGH);

digitalWrite(motorPin1, HIGH);

delay (motorSpeed);

// 7

digitalWrite(motorPin4, LOW);

digitalWrite(motorPin3, LOW);

digitalWrite(motorPin2, LOW);

digitalWrite(motorPin1, HIGH);

delay(motorSpeed);

// 8

digitalWrite(motorPin4, HIGH);

digitalWrite(motorPin3, LOW);

digitalWrite(motorPin2, LOW);

digitalWrite(motorPin1, HIGH);

delay(motorSpeed);

}

____________________________________________________________________________________

the sketch is very simple can run the stepper motor tuning the speed by potentiometer.

Orientation

IMG_0028.JPG

You have to orientate the star tracker to the north star. Here in north Italy is 45° degree parallel, and find Polar Star inside the pipe (hinges can be used).

The Result

8452150074_77d6c1c362_z.jpg

Buy new Vixen Polarie is too much expansive! I use this tracker to take some pictures: this one is 136 seconds exposure.... I've to test this in one site far from the city lights pollution.

I've made this picture form my house...