Astrophotography Camera Mount
Ben Gillette · March 15th, 2022
Rough sketch of camera mount design
My first step was to outline the requirments for my design. The final product will be used in outdoor environments, so it has to be solid and portable. In addition, using it outdoors means the whole system has to be run off a battery pack, meaning the design should be as power efficient as possible. The camera and lenses I use for astrophotography can sometimes weigh a couple of pounds totaled up, so the design has to be sturdy enough to hold that load securely. Finally, because the whole purpose is to keep the stars in focus, the movement has to be smooth and perfectly match with the 15 degrees per hour that the Earth rotates. For my original prototype of this design, I bought a continuous hinge for added stability, a NEMA 17 stepper motor to drive the rotation, an L298N dual H-bridge controller to power the stepper, and some hardware to mount the stepper and motor driver. To control the stepper in my initial designs, I am using an Arduino Uno because it’s easy to use, then for my final iteration I will use an Arduino Nano for the small size.
For my first mechatronics project I decided to make an equatorial tracking mount to use with my camera for astrophotography. When photographing the stars, it’s necessary to keep the camera’s shutter open for 30 seconds, all the way up to multiple minutes. During this time, the camera must stay Completley still relative to the subject, so that there is no blur in the final image. The problem when it comes to taking pictures of the night sky is that the Earth is constantly rotating, which makes the stars constantly move (very slightly) across the sky. When my camera is connected to a tripod on the ground, this means that the stars will slowly move cross the frame as the Earth rotates, taking the night sky out of focus.
There are many motorized tracking mounts available that will follow the sky, allowing for a longer exposure time while keeping the stars in focus. However, these often cost hundreds of dollars, so I decided to try and make one myself. My design concept can be seen on on the left here, essentially consisting of two plates attatched by a hinge that rotates the camera at 15 degrees per hour (speed of Earths rotation). The rotation is driven by a stepper motor that spins a gear attached to a threaded rod, Slowly moving the camera plate. Rotating the gear threads it down the rod, pushing the opposite plate and creating the rotation.
My supplies for prototyping
Design Process
Prototype circuit
Prototype circuit diagram
My first step has been working on the electrical side of the mount, which I anticipate to be by far the most time-consuming part of the process. So far I have created a test circuit with the stepper motor and L298N with an Arduino that will step at single step increments with varying speeds. While this does spin the motor, the vibrations from using whole steps are significant, and I anticipate the motor would vibrate the entire mount if used single steps, which isn’t an option. The solution here is to use micro-stepping, a process of energizing both coils with varying strengths to get a fraction of a step, and less vibration in the process. The only problem with this is that the motor driver I currently have does not support micro-stepping, so to achieve less vibrations with the stepper motor, I will have to change the motor driver I am using with the Arduino.
Working with my first circuit hasn’t been totally useless though. Aside from getting some experience with using stepper motors at all, also tested the ideal currents and voltages I need for the motor. I have found using a DC power supply that the motor can operate with 4 volts instead of the specified 12 V. I believe this is because the board I’m using does not limit the current, so knowing the resistance is 2.3 ohms per phase and using Ohm’s Law (I = V/R), a 4V operating voltage keeps the current down to 1.7 A, below the 2A threshold for the L298N. Another reason to switch motor drivers that I have found is that because the L298N isn’t current limited, it tends to get very very hot. This does not seem ideal and I’m hoping that by switching to an Adafruit motor driver Arduino shield I can eliminate that problem.
My program for driving the stepper motor can be seen below, and the running version has been incredibly simple. I have made other sample programs to run the stepper a certain number of revolutions one way, and then back in the opposite direction. For my purposes in this project, I am not concerned with the direction of the steps and I have no need to accelerate the speed at which the motor rotates, all I need is a constant, slow, and accurate rotation. To work out the circuit and other parts of my project, I’ve been using this program which simply spins the motor in one direction indefinitely. Although simple, it allows me to test the circuitry very easily, and when I do need to integrate this into the final design, the only thing I will need to do will be adjusting the speed at which the motor is turning.
//Ben Gillette Equitorial Camera Mount - March 2022 // Include the Arduino Stepper Library #include <Stepper.h> // Number of steps for one full revolution of the stepper motor const int stepsPerRev = 200; // Create instance of the stepper library // Sets the number of steps in a revolution, and the output pins Stepper myStepper(stepsPerRev, 8, 9, 10, 11); void setup() { // set the speed at 20 rpm: myStepper.setSpeed(20); // initialize the serial port: Serial.begin(9600); } void loop() { // Steps the motor counter clockwise forever at 20 rpm in full steps myStepper.step(-1); }
At this point in the process, I had a problem with the hardware I was using, where I couldn’t micro-step with the L298N motor driver. Being able to micro-step the stepper was important for me in this project in order to reduce vibrations, minimize noise, and keep the movement of the mount smooth. With normal steps, the vibration could possibly shake the camera, obviously not ideal for long exposures like I am dealing with. To enable micro-stepping, I switched my motor driver to the Adafruit Motor Shield V2. This involved a slight update to my circuit setup, and my code shown below:
Final Circuit Diagram
Arduino with Adafruit Motor Shield
//Ben Gillette Equitorial Camera Mount - April 2022 //Includes the Wire.h and Adafruit_MotorShield Libraries //to run the motor shield #include <Wire.h> #include <Adafruit_MotorShield.h> //Tells the program that there is a shield present, //delares it with the default I2C adress, nothing within //the parentheses Adafruit_MotorShield shield = Adafruit_MotorShield(); //Tells the program that a stepper motor (200 steps/rev) is //now running on the previously defined sheild, connected to //port 2 (M3 and M4) Adafruit_StepperMotor *stepper = shield.getStepper(200, 2); void setup() { shield.begin(); //Starts shield on default frequecy (1.6 kHz) stepper->setSpeed(1); //sets the stepper motor to rotate at 1 rpm } void loop() { //Tells the program to step the motor clounter-clockwise in //microsteps (default is 1/16 steps) stepper->step(1, FORWARD, MICROSTEP); }
With my circuit and coding complete, I turned my attention to the design and assembly stages of the project. As far as design, I only had to model two gears to fit over the motor shaft and another to encase the hex nut driving the threaded rod. To design these gears, I started out with a blank from the McMaster-Carr Catalog in order to get the teeth and pitch right for each gear. I used a pitch of 24, with the gear on the motor having an outer diameter of 1 inch, and the hex nut gear 2 inches. By gearing down the motor, I can more finely control how much the top plate is being pushed up later on. After inserting the component, I deleted everything besides for the side profile of each gear. From there I created a hex shaped inset for the nut, and whole for the D shaft on the stepper. I designed both these components with .2mm tolerance to keep the fit very snug. Here are some images from my design process to 3D printing:
The final step I had to take was assembly. I measured out and drilled holes for the hinge to fit onto the mounting plates to start. Once the hinge was on and the mount could rotate, I measured out and drilled new holes for the motor shaft and the threaded rod to move through the plates. The stepper is mounted underneath the bottom plate, and the threaded rod has room to arc down in the fully closed position. One of the problems I ran into was how to bend the rod into a perfect arc. I decided to measure the radius of the rotating mount, then draw out the arc with a pencil and piece of string. From there I had a template which I could use to get a close-to-circular arc. Some of my pictures from final assembly can be seen below:
Final Product and Future Steps
I’ve learned a lot about the applications of and how to use stepper motors throughout this project. With steppers being used to drive all sorts of machines today like CNC routers and 3D printers, it’s really interesting to play around with them for personal projects. I faced some challenges with this project as I’ve talked about (driving stepper motors is hard) but the experience was well worth it. As far as the function of the actual product, I’m happy with how everything tuned out. Unfortunately, current weather conditions prevent me from testing this for photography until summer, but I look forward to seeing how well my design works. As far as improvements go, I can see a sturdier design being useful with enclose electronics. I could also size down the board to an Arduino nano and solder my connections for a final version. I will also need to connect the system to a battery, but that is relatively easy to do. I’m sure other flaws in my design will come up, but that’s what prototypes are for. I can’t wait to test this in the field and continue improving this project in the future.
Fusion Design Link: https://a360.co/3OAkmgD