Mechanical, Electrical, and Software Design

The build behind the beauty.

Electrical & Software Design

Plate-Solved Sirus

A plate-solved version of our raw Sirius image (see the front page), showing the constellations in the region.

Plate-Solved Jupiter

A plate-solved version of our raw Jupiter image (see the front page), showing the nearby constellations and stellar objects.

Stellar Localization System & Programmatic Camera Control

The heart of ATLAS’s star tracking capabilities reside in its ability to autonomously capture photos for both calibration and observations. This is done thanks to the gphoto2 library, which we chose over other solutions like digiCamControl and CHDK due to its modularity and (relatively) detailed documentation. Through the library, we were able to fully automate the photo-taking process. We also created a variety of “modes”, or specific configurations of the camera’s settings built to optimize the photography of specific astronomical objects. Initial calibration is handled by a series of methods we’ve called set_capture_mode, take_photo, plate_solver, and reset().

First, we use the gphoto2 library to connect to our ATLAS’s camera, changing its settings to a specific mode via the set_capture_mode function. Once the connection has been established and the settings are to our liking, we command the camera to take a ten-second exposure photo via gphoto2. This photo is used for calibration, so it is imperative that during this time, ATLAS is aimed at a portion of the night sky with a good number of visible stars. The actual calibration is handled by our Plate-Solving algorithm, which works by pulling the .RAW calibration image off of the Camera’s SD card, converting it into a FITS file and comparing its metadata (camera settings, time taken, coordinates, etc) to that of various other images taken from seven distinct astronomical databases. Once a sufficient number of images similar to the calibration image have been indexed, the Plate-Solver then uses their asterisms to predict what objects are in them, as well as the coordinates, in Right Ascension and Declination, that the original image was taken at.

Due to our initial plate-solving algorithm being extremely poorly optimized thanks to the many requests we had to send back and forth, we decided to take advantage of the Astrometry database’s resources to consolidate our algorithm. As a result, we merely need to provide an appropriate image and query for the returned coordinates—the asterism cross-referencing is done autonomously.

Once ATLAS’ coordinates have been determined, the user can request to track any of the twenty million astronomical objects within the SIMBAD database, at which point the ATLAS Telescope will move to the specified location. Upon reaching a predetermined distance in arcminutes from the target, ATLAS will continually move at a speed of 0.25 degrees/minute to keep in alignment with Earth’s sidereal time.

ATLAS GitHub Repo

A link to the entire ATLAS codebase can be found here. The following packages and libraries are required in order to run the startracker code:

  • AstroPy
  • Requests
  • Gphoto2
  • Pathlib
  • Os Module
  • Raw2Fits
  • Json
  • Env
  • Time
  • Raspberry Pi

Axial Motor Control

Precise control, accurate timing, and support for large loads were our main priorities for our integrated tracking system. Hence, we selected Nema 23s, which are bipolar stepper motors that offer higher torque, power efficiency, and smoother stepping compared to unipolar motors. The pulse and directional terminals of the DM542 Driver are wired to the 3.3V logic GPIO pins of the raspberry pi. With the pigpio library leveraging the pi’s hardware timing to generate and send PWM signals to the motors, we were able to circumvent timing jitters and excessive CPU load. Limit switches mounted on either side of the declination motor also prevent collision with the camera lens.

A major issue we realized after testing our integrated system was that the motors did not have encoders, so we could never derive the system’s previous or current position. This required us to manually track steps, which obviously proved to be inconvenient and inefficient.

The DM542 drivers also require a minimum 5V input for its pulse and direction terminals. Since the GPIO pins of the pi only supply 3.3V, there was not enough of a voltage difference between the highs and lows sent to move the motors both clockwise and counterclockwise. This causes tangling of our wires since the right ascension motor must completely loop around itself to reset to its original position. With more time, we would add another circuit that provides adequate power to these terminals in the motor driver while connecting its logic back to the GPIO pins.

Lastly, AC power adapters are used to power the motors since it was the most accessible option for rapid prototyping. If we had a greater budget, we would buy lithium batteries to ensure our system can also be used in remote areas, which are more desirable to avoid light pollution. In the future, to make our telescope truly user-friendly, we would implement a wireless bluetooth connection to the raspberry pi that allows users to input the stars they want to track and take pictures remotely from their personal device.