Follow the Stars With Star Tracker
by bulesume in Circuits > Cameras
7615 Views, 120 Favorites, 0 Comments
Follow the Stars With Star Tracker
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
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.
Downloads
Orientation
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
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...