Giter VIP home page Giter VIP logo

dobson-star-tracker's Introduction

dobson-star-tracker

This project aims to enable makers to motorize their dobson-style mounted telescopes using easily sourced hardware.

Hardware

  • 2 Stepper Motors + drivers. I found that the size of my telescope (as pictured badly below) requires at least NEMA 17 with 1.2A current per phase. The altitude motor uses a (roughly) 5:1 gear ratio
  • Arduino with at least 6 Digital Pins. The instructions and example config work for an Arduino Mega with a RAMPS 1.4 shield
  • 3D printed motor mounts and gears
  • Optional: Two Buttons; Each requires one additional digital pin
  • Optional: A GPS module; Requires either a free TX/RX pin pair or two digital pins

3D Files

The printable files (stl and step format) can be found at: https://www.thingiverse.com/thing:3851307

Installation

First of all, you will need the Arduino IDE and a few libraries:

Clone or download this repository and open the dobson-star-tracker.ino file in the Arduino IDE. The first thing you will need to set up are a few constants in the config.h file. Please read through the whole file and set everything according to your needs. When you initially build and upload the sketch without setting at least the AZ_STEPS_PER_REVand ALT_STEPS_PER_REV constants, the scope will not move since both of the values are set to 0. This is done to prevent the motors from moving unexpectedly and maybe damaging your telescope. Check the output of the Serial Monitor for more information. Initially, DEBUG, DEBUG_SERIAL and DEBUG_STOP_ON_CONFIG_INSANITY are enabled for useful output via the Serial Monitor. Once everything works correctly, you can disable them. For more information on how to connect the scope to Stellarium or how to use the display unit, check below.

Connection to Stellarium

There are a few requisites for establishing a connection between the telescope and Stellarium.

Arduino project

  1. Set the SERIAL_BAUDRATE to 9600
  2. Disable all of the DEBUG constants, so that the telescope does not send invalid commands to Stellarium. If Stellarium receives an invalid answer, it will wait for a few seconds before interacting with the telescope again. This either means, that it won't receive position updates from the telescope or that it won't send your commands. Setting a new position requires three commands sent by Stellarium. If one of them receives an invalid answer, Stellarium will not send the rest of the commands and your input will basically be ignored.
  3. Close the Serial Monitor or Stellarium will not be able to connect to the telescope

Settings in Stellarium

  1. Open Stellarium and locate the "Telescope" tab. It should be in the lower control bar to the left of the time controls. If you can't find it, you may need to enable the "Telescope Control" plugin and restart Stellarium. Do so in the Configuration window in the last tab.
  2. Click "Add" and set the following:
    • Telescope controlled by: "Stellarium, directly through a serial port"
    • Name: Choose one :)
    • Connection delay: Something around 0,1s, but should not matter too much
    • Coordinate System: J2000 (default)
    • Start/Connect at startup: Ticking the box means that Stellarium will try to connect to the telescope as soon as you open it. Use your preference.
    • Serial port: Select the same port as in your Arduino IDE
    • Device Model: Meade LX200 (compatible)
    • Use field of view indicators: Does not matter for controlling the telescope. Use your preference.
  3. Confirm the settings with "OK"
  4. Use "Start" to connect to the telescope
  5. Wait a few seconds for it to show up on the screen and for it to settle down
  6. The motors will not move until you align the telescope. To do so, follow this procedure:
    1. Choose your alignment star and select it in Stellarium
    2. Click "current object" in the telescope section
    3. Manually point the telescope at the selected star
    4. Confirm alignment by clicking "slew" and wait for the telescope on screen to point at the correct star
    5. The telescope is now aligned to that particular star and the stepper motors will be enabled
  7. Now you can select a different star in Stellarium
  8. Click "current object" in the telescope section
  9. Click "slew" and watch the telescope move

Wiring a RAMPS1.4

Wiring without the display unit

Wiring with the Display Unit

My example uses a version of the well-known RepRap Discount Full Graphics Smart Controller. The only connection between the two Arduino boards is via the two cables connected to RX2 and TX2 on the Display Unit. For more information + code for the display unit head over to ThisIsJustARandomGuy/telescope-display-unit/.

Wiring without the display unit

Aligning using the display unit

If you have a display unit, you can use it to easily align the telescope. This works with/without Stellarium. To align the telescope when using a display unit, do the following:

  1. Start the display unit and scope
  2. Navigate to "Set Alignment" -> "Stars"
  3. Look through the list and select a star that's visible in the sky
  4. Once you click the star in the list, the motors of the telescope will turn off
  5. Align the telescope to the star you have selected
  6. Click again and confirm the alignment
  7. The motors will turn on again and the telescope is now aligned.

Serial Commands

  • :HLP# Print available Commands
  • Commands used by stellarium (you can use them as well)
    • :GR# Get Right Ascension
    • :GD# Get Declination
    • :Sr,HH:MM:SS# Set Right Ascension; Example: :Sr,12:34:56#
    • :Sd,[+/-]DD:MM:SS# Set Declination (DD is degrees) Example: :Sd,+12:34:56#
    • :MS# Start Move
    • :Q# Quit Move (Not Implemented)
  • Other commands
    • :TRK0# Disable tracking. This sets the telescopes isHomed member variable to false, so the motors stop moving
    • :TRK1# Enable tracking. The telescope will track whatever the target is
    • :STP0# Disable steppers permanently
    • :STP1# Enable steppers (after they were disabled using the STP0 command)
  • Debug commands
    • :DBGDSP# Send a status update to the display unit
    • :DBGDM[00-99]# Disable Motors for XX seconds
    • :DBGM[0-9]# Move to debug position X (see conversion.cpp; Later we will have a separate file with a star catalogue)
    • :DBGMIA# Increase Right Ascension by 1 degree
    • :DBGMDA# Decrease Right Ascension by 1 degree
    • :DBGMID# Increase Declination by 1 degree
    • :DBGMDD# Decrease Declination by 1 degree

TODOs

The Most important TODOs are as follows (in no particular order)

  • Documentation
  • Equatorial Mounts: Adding equatorial mounts would be rather easy, but I don't own one so it's difficult to test. Maybe someone is interested in providing a PR?
  • Board compatibility: Out-of-the-box support for Arduino Mega and Arduino Due with their respective RAMPS shields (Mostly done, Mega + RAMPS 1.4 and Due + modified RAMPS 1.4 work)
  • Time keeping: Handle big swings which could happen due to GPS issues
  • EEPROM: Store time and location in EEPROM (Mega) or Flash (Due); Provide a simple API for doing so
  • Motor control: Turn On/Off permanently. Off for X seconds is already implemented as :DBGDM[00-99]#
  • SD card support: Loading a star atlas from a sd card (preferrably connected to the display unit, but direct connection should be possible too)

dobson-star-tracker's People

Contributors

thisisjustarandomguy avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

dobson-star-tracker's Issues

Aligning the telescope: How should it work?

I haven't figured out how I want aligning the telescope to work. I'm currently using the following method, but a better way is needed, obviously:
1. Turn off the power supply to the steppers
2. Manually point the telescope at a star
3. Select that star in Stellarium
4. Click "current object" in the telescope section
5. Click "slew" and wait for the telescope on screen to point at the correct star
6. Reconnect the stepper driver power supply
7. The telescope now knows where it is actually pointing at and can track correctly

Suggestions for the display unit

  • [IMPLEMENTED] A button in the menu of the display unit which would turn off the steppers and then ask for the alignment star (which could be selected from a list). Finally it would wait for the user to manually align the telescope. The user would then confirm the alignment and the steppers would turn back on.
  • The same button and alignment star selection, but it would expose a way to directly control the two motors (Azimuth/Altitude) without converting to Right Ascension/Declination. After using the display to align the telescope, the user would confirm the alignment and the steppers would turn back on.

Suggestions for Stellarium

  • [IMPLEMENTED] Waiting for the first "slew" command sent by Stellarium before turning on the stepper drivers

I'll draw a conclusion.

I'll draw a conclusion. Project, not working. Intentionally or not, drivers for RAMPS are not specified, what a step. I can also make the video provided, if I don’t connect Stellarium... Neither version works with the program. And the creator of the project disappeared. All problems in communication between the program and the Stellarium program.

Sellarium Problems

Stellarium won't move the telescope. I connect to the telescope and the motors freeze up when I hit slew.

LCD does not work

LCD does not work for me, how to integrate a Telescope Display Unit?
(RepRapDiscount Full Graphic Smart Controller with smart adapter)

Calculating ALT_STEPS_PER_REV

Hello. I am using your project for my purposes and I don't get value of 5.18 when you calculate ALT_STEPS_PER_REV.

#define ALT_STEPS_PER_REV 0. // How many steps the stepper motor needs to complete for a vertical 360degree revolution of the telescope (my setup: 5.18:1 and 3200 : 1 and 105 : 12 = 147840.0)

Thanks for all, great project!

setTime' was not declared in this scope

I had an issue with this error and I found that it helped to include

#include <TimeLib.h>

instead of

#include <Time.h>

I am not sure why I have this issue, maybe because I am on a Mac.

It doesn't work in my stellarium

I managed to move the stepper motors through the commands in the Arduino IDE Serial Monitor. But there are still intermittent small movements of the steppers (tracking?) If I enter the command: TRK0 # then the steppers will stop. OK. I close the monitor and start Stellarium, fill in the parameters according to your input and connect to the telescope. A yellow cross will appear with the name I entered, select the object in the sky> the current object and click on the slew. The steppers start making the same small movements as I wrote above and nothing more, the yellow cross does not move. I dont know what to do next :(

The display does not work and there is no control from the stellarium

Hi all. Has anyone gotten the display to work? I connected it with a sandwich and, as in the picture, the display was completely illuminated. with stellarium the engines get warm, sometimes they hum quietly, but there is no movement. I made the changes that were in this thread. 8825 was set to 70% of the maximum motor current, checked the ramps on the Marlin firmware, everything works. #define AZ_ENABLE_PIN 38 // RAMPS 1.4 X stepper
#define AZ_STEP_PIN 54 // RAMPS 1.4
#define AZ_DIR_PIN 55 // RAMPS 1.4
#define AZ_STEPS_PER_REV 0. // My value: 119467.0 // How many steps the stepper motor needs to complete for one a horizontal 360degree revolution of the telescope (my setup: 3200 : 1 and 560 : 15)
#define AZ_MAX_ACCEL 300 // Maximum acceleration for the azimuth stepper
#define AZ_MAX_SPEED 4000 // Maximum speed for the azimuth stepper

/*

  • Altitude stepper
  • Direct Drive: Axis 2
  • Dobson: Altitude (vertical) axis
  • Equatorial: Not implemented; Declination axis
    */
    #define ALT_ENABLE_PIN 56 // RAMPS 1.4 Y stepper
    #define ALT_STEP_PIN 60 // RAMPS 1.4
    #define ALT_DIR_PIN 61 // RAMPS 1.4
    #define ALT_STEPS_PER_REV 0. // How many steps the stepper motor needs to complete for a vertical 360degree revolution of the telescope (my setup: 5.18:1 and 3200 : 1 and 105 : 12 = 147840.0)
    #define ALT_MAX_ACCEL 400 // Maximum acceleration for the altitude stepper
    #define ALT_MAX_SPEED 10000 // Maximum speed for the altitude stepper

#define AZ_STEPS_PER_DEG (AZ_STEPS_PER_REV / 360.0)
#define ALT_STEPS_PER_DEG (ALT_STEPS_PER_REV / 360.0)
what should the values ​​be? can someone post a working sketch? and how to connect the display. Thanks everyone

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.