BBAstroDesigns, Inc.

 

Formed October 2000 by Mel Bartels and Barbara Bajec,

BBAstroDesigns Inc.    http://www.bbastrodesigns.com

aims to serve the amateur telescope making community,

specializing in products for computer operated telescopes.

 

Computer Operated Telescopes

Stepper System Software, “Scope II”

by Mel Bartels

last revised Dec 6, 2004

 

Copyright BBAstroDesigns, Inc. 2001-4

 

 

 

 

 

 

 

 

Table of Contents

 

Safety Guide and Warning. 5

Quick Start Guide. 5

Configuring the Stepper Software. 6

Setting the altitude axis and azimuth axis fullstep size in the config.dat file. 15

Setting the slew (halfstep) speed. 15

Setting the microstepping parameters. 15

Program Display. 19

LX200 supported commands. 21

Customized LX200 commands. 22

Coordinates' display on the screen. 22

Shortcut keys. 22

Equatorial Mount Startup. 23

Altazimuth Startup Sequence. 24

Your First Equatorial Initialization and Goto Run. 25

Your First Altazimuth Initialization and Goto Run. 26

The Handpaddle. 27

The Software. 28

Files Used. 29

Data object file layout 29

Main program execution loop. 30

German Equatorial Mount Meridian Flip. 30

Drift/Guiding/PEC.. 31

PEC notes by Chuck Shaw: 32

Updating the PEC data on the fly. 33

Improve Local Finding/Tracking Accuracy. 33

Improving the initializations - Optimizing Goto and Tracking. 34

Setting Backlash Values by Jerry Pinter. 45

Autoguide. 45

Interfacing with other programs. 47

PCB Testing Prior to Motor + Computer Hookup. 48

PCB voltage diagnostic as reference to ground. 48

PCB checkout 48

PCB Parts Layout 49

Circuit Diagram.. 50

Focuser Motor Circuit Add-On. 51

Stepper Software Notes. 51

Stepper Hardware Notes. 51

Hooking up the stepper windings, by Chuck Shaw.. 52

Current Limiting Modification. 55

Stepper Field Rotator/Focuser. 56

Soldering Tips. 57

Handpad. 58

Handpad Circuit Diagram.. 59

Handpad Cable. 59

PCB and Parts List 60

Encoders. 60

Flywheels by Tom Krajci 61

Stepper Motor Noise. 62

Parallel Port Interface. 63

Stepper Motors. 63

Telescope Vibration. 66

Drive Gear Ratios. 68

Mechanical Aspects of the Drive. 68

Creating Your Own Gears. 70

Making Your Own Drive Gears by Tom Krajci 70

ALT/AZ Conversion Lessons, by Chuck Shaw.. 71

WHY???. 71

WHERE TO START???. 72

UPDATE THE OTA (Optical Tube Assembly) "SUB-SYSTEM": 72

UPDATE THE ROCKER BOX "SUB-SYSTEM": 72

BUILD A NEW GROUND BOARD "SUB-SYSTEM": 73

BUILD THE DRIVE ELECTRONICS "SUB-SYSTEM": 73

UPGRADE THE DRIVE ELECTRONICS: 73

Design Details and Fabrication Notes: 73

1. OTA DESIGN AND FABRICATION: 73

Balance: 73

Critical Path to find Balance Point: 74

Reassembly Pins/Templates: 74

Vertical Alignment Hard Stop. 74

Spin Alignment Technique…(Optical and Mechanical Axis alignment) 75

Field Rotation System.. 75

2. ROCKERBOX DESIGN CONSIDERATIONS: 76

Azimuth and Altitude Trunions and Bearings. 76

Idler Bearings. 78

Drive System Gear Reduction. 78

Motors. 82

Base Board. 83

3. ELECTRICAL SYSTEM DESIGN CONSIDERATIONS: 84

Opto Isolators or not???. 84

Board Layout (additional FR circuitry) 84

Cooling. 84

Mounting location on Rockerbox. 84

Connectors (CJ vs DIN vs DB) 84

Cable harnesses/wire sizes/types. 85

Power inputs (110vac vs 12vdc) 85

4. COMPUTER SUPPORT DESIGN CONSIDERATIONS. 85

Laptop vs Microprocessor (Interactive vs Black Box) 85

Where to Mount the Computer?. 85

5. SOFTWARE.. 86

PC’s System Software. 86

Config.sys. 86

Autoexec.bat 86

Directory Structure. 87

Power Management 87

Config.dat Constants. 87

Microstep Optimizing: 88

PWM Profile. 89

AltFullStepSizeArcsec (and AzFullStepSizeArcSec) 90

FRStepSizeArcSec. 91

MaxDelay (MinDelay) 91

PPortAddr. 91

EncoderErrorThresholdDeg. 91

LongitudeDeg, Tz, and DST.. 91

PWMRepsTick. 91

MsPause. 92

MsDelayX.. 92

PEC.. 92

Opening and Closing Messages. 92

Scope Ops Cue Card (Hot Keys) 92

One last comment... 92

Image Plane Derotation System by Chuck Shaw.. 93

Spin Alignment 94

Contributors. 97

Limited Warranty. 98

Gnu General License. 98

 

 


 

Safety Guide and Warning

 

You must exercise proper safety precautions, including the wearing of glasses and thick rubber lug shoes.

Shock hazard! Bodily injury hazard! Any device using electricity is a shock and bodily injury hazard. You must hook up the device properly and follow all safety precautions, particularly when using electricity outdoors. If improperly hooked up or improperly operated, electronic components can shock, overheat, melt, and explode.

Peripheral equipment hazard! Any device electrically attached to a computer can damage the computer if hooked up improperly, or used improperly.

In particular:

  • Never operate when the equipment or cabling is wet or moist, even if there is only a possibility that some of the equipment is wet or moist
  • All grounding points must be connected to the battery (-) terminal before turning on any equipment; the grounds must never be disconnected while the unit is powered on (disconnecting any ground will force the current to search out a return path to ground, possibly by traveling through your body, causing shock and bodily injury)
  • Power leads must be connected in proper order with the black ground wire connected before the red positive voltage lead
  • Power leads must not be reversed: instant component failure is a certainty; components will overheat and can explode with violent force
  • Do not exceed 12 volts DC power input: shorting more than 12 volts DC through your body can be lethal.
  • The power supply (+ or positive voltage) lead can only be connected or switched on when the software scope.exe is executing, and if running under Windows, can only be connected or switched on if scope.exe is the foreground program

 

 

Quick Start Guide

 

  1. Re-read the Safety Guide and Warning
  2. Attach the circuit board to the computer's parallel port using a straight through 25 pin serial cable
  3. Attach the hand paddle to the circuit board
  4. Using a small 12 volt battery, or two 6 volt dry cell batteries connected in series, attach the battery's (-) post to the circuit board ground, which will be the black lead
  5. Turn on the computer
  6. Enter the appropriate parallel port in the config.dat file: look near the end of the file for a line that starts PportAddr, and enter the desired lpt #, usually a 1
  7. Run scope.exe, selecting either altazimuth or equatorial alignment
  8. Attach the battery's positive (+) post to the circuit board's red lead
  9. Check the hand paddle operation by pressing the hand paddle buttons in turn, verifying that scope.exe is reading the buttons properly
  10. Using the optional LED tester unit, plug it into the altitude or the azimuth motor port (do not plug it into the field de-rotator port), then turn on tracking in scope.exe, and verify that a. the lights turn on and off in sequence from one side to the other, and b. no more than 2 lights are on at any one time
  11. Verify motor movement by attaching a motor to the azimuth/right ascension port of the circuit board (the middle db-9 connector), then turn on tracking in scope.exe
  12. Attach the other unipolar stepper motor to the altitude/declination port of the circuit board and verify movement by using the up button of the hand paddle
  13. If using a bipolar field rotator motor, attach it to the field rotator port (the bottom db-9 connector, next to the raised IC), then set the altitude to 80 degrees in scope.exe

 

 

Configuring the Stepper Software

 

Scope.exe requires a config.dat file.  You can specify an alternative config.dat file by using the command line option -c, ie, scope.exe -c \temp\config.tmp

 

Note: all variables, names, and strings are case insensitive, so defaultbackground will work as will DefaultBackground

 

The following variables set the display colors:

DefaultBackground

DefaultColor

TitleColor

BorderColor

MenuColor

DisplayColor

SelectColor

CurrentColor

SelectBackground

based on:

  • BLACK=0,Both
  • BLUE=1,Both
  • GREEN=2,Both
  • CYAN=3,Both
  • RED=4,Both
  • MAGENTA=5,Both
  • BROWN=6,Both
  • LIGHTGRAY=7,Both

 

  • DARKGRAY=8,Foreground only
  • LIGHTBLUE=9,Foreground only
  • LIGHTGREEN=10,Foreground only
  • LIGHTCYAN=11,Foreground only
  • LIGHTRED=12,Foreground only
  • LIGHTMAGENTA=13,Foreground only
  • YELLOW=14,Foreground only
  • WHITE=15,Foreground only
  • BLINK=128,Foreground only

 

 

ConfirmQuit: set to 1 if you wish a confirming message before the program quits

 

DisplayOpeningMsgs: if set to zero, opening and closing messages are suppressed

 

MoveHsMsgDeg: how long of a slew allowed before a confirming message is displayed

 

F9Hotkey, F10Hotkey, F11Hotkey, F12Hotkey: optional user specified hotkeys; should only be set via the program; delete from config file if you wish to erase them

 

InterfacePath: location of controlling planetarium software program, ie, c:\guide\ also location of Project Pluto's planetarium DOS program, dosguide.exe

 

UseMouseFlag: if 1, use mouse to select menu items, datafiles, objects from datafiles, and move the scope in microstep, halfstep, and auxiliary motions.

 

IACA_Flag: if 1, use IACA to communicate with other IACA aware programs

 

GEMFlipPossible: if 1 or on, GEM meridian flip can occur

 

AutoGEMFlip: if 1, the GEM flip will occur automatically when the scope is asked to traverse to the opposite hemisphere

 

AutoGEMFlipFuzzDeg: some value entered here, like 7.5 degrees, will give some fuzz or wiggle room so that the scope doesn't flip back and forth from hemisphere to hemisphere as you touch the centering buttons

 

Siderostat: set to 0 if standard equatorial or altazimuth mount, set to 1 if you are using a siderostat or uranostat flat to focus light into a stationary telescope tube; you must set AzLowLimitDeg to about 90, AzHighLimitDeg to about 270, where due south is about 180, the difference between the limits must be 180 deg or less. This allows the altitude to exceed 90 deg, otherwise the flat mirror will attempt to flip upside down when aimed at northly objects.

 

HomeAltDeg, HomeAzDeg: these are the home, or park coordinates

 

MsArcsecSec: microstepping speed when the hand paddle is used to center objects, can be changed while the program is running

 

AltFullStepSizeArcsec, AzFullStepSizeArcsec: these are the step sizes for the altitude and azimuth steppers. The altitude is measured by using a precision level to set the tube horizontal, resetting alt to 0, then moving the scope via the motors until the precision level indicates the tube is exactly vertical. The ratio between the displayed alt and 90 degrees is the amount to adjust the step size by. Similarly, one complete turn in azimuth can be used to adjust the azimuth step size

 

precessionNutationAberration: 1 if you wish precession, nutation, and annual aberration corrections to be used with the equatorial coordinates, 0 if you wish these corrections ignored

 

RefractFlag: 1 if you wish refraction to be used, 0 if you wish refraction to be display only

 

UseAltAzECFlag: if 1, ALTAZEC turned on at program startup.

 

UseAltAltECFlag: if 1, ALTALTEC turned on at program startup.

 

UseAzAzECFlag: if 1, AZAZEC turned on at program startup.

 

PointingModelFlag: if 1, PMC turned on at program startup.

 

HandPadPresentFlag: if 1 then handpad present, if 0, then handpad not present and handpad is ignored.  If the handpad is not connected or in an error condition at program startup, it is ignored.

 

StartingHandPadMode: sets starting handpad mode, also ending handpad mode saved at program exit to this variable: values are 

  • off: 0
  • init auto on: 1
  • init 1: 2
  • init 2: 3
  • init 3: 4
  • polar alignment: 5
  • analyze on: 6
  • guide on: 7
  • guide stay on: 8
  • guide stay save on: 9

 

  • guide stay rotate on: 10
  • guide drag on: 11
  • grand tour: 12
  • scroll tour: 13
  • scroll auto tour: 14
  • record equat: 15
  • toggle track: 16
  • FR mode:17
  • focus mode:18
  • Auxiliary control mode: 19

 

 

HandpadDesign: 0 if standard handpad, 1 if using the four data lines to represent the four directions (no mode control or speed control available: this is for autoguiders that need simultaneous action in two directions, something not possible with standard handpad design)

 

HandpadFlipUpDownWithGEMFlip: if 1 then handpad will flip its up/down direction buttons when GEMFlip is on to match the declination direction reversal that occurs when the GEMFlip has occurred

 

AltBacklashArcmin, AzBacklashArcmin: these are backlash values (if both are 0, backlash is disabled). If backlash correction is desired, values should be positive. A negative value means that the motor will move in the opposite direction than expected in order to take up backlash

 

ABacklashSignalPPortPin17: if non-zero, then parallel port pin 17 used to signal the direction of the 'A' motor backlash: logical high if backlash direction is CCW, logical low if backlash direction is CW (can be used to control motorized counterweights); starting value is logical low

 

AltLowLimitDeg, AltHighLimitDeg, AzLowLimitDeg, AzHighLimitDeg: these limits are active only when HsTimerFlag is set to 1 (on); if HsTimerFlag is on and desiring to disable the alt limits, set both alt limits to 0; if HsTimerFlag is on and desiring to disable the az limits, set both az limits to 0

 

GuideArcsecSec: guiding correction speed, can be changed while the program is running

 

The following are drift rates that a star will be dragged across an autoguider with knife-edge detector.  These autoguiders work by expecting the tracking rate to be slightly off guaranteeing that the star will always eventually move across the knife-edge.  When the star crosses the knife-edge the autoguider gives it a little kick in the opposite direction, then waits for the star to reappear.

GuideDragAltArcsecPerMin

GuideDragAzArcsecPerMin

GuideDragRaArcsecPerMin

GuideDragDecArcsecPerMin

 

HPUpdateDriftFlag: if 1, then the drift is updated at the end of a handpaddle guiding session.  Drift is calculated based on accumulated guiding corrections over the session and then automatically adopted. 

 

DriftAltArcsecPerMin: starting value of altitude drift in arcseconds of angular movement per minute of time.

 

DriftAzArcsecPerMin: starting value of azimuth drift in arcseconds of angular movement per minute of time.

 

DriftRaDegPerHr: starting value of declination drift in degrees of angular movement per hour of time.

 

DriftDecDegPerHr: starting value of right ascension drift in degrees of angular movement per hour of time.

 

PECFlag: if 1, then PEC turned on at program startup time.

 

AutoAltPECPin: parallel port pin(s) that auto synchronization of altitude will be read from: must be 15, 16 or 17, or 10+12+13 (3 pin combination), or deleted from config.dat (default will be 17 then).  If you use the 10+12+13, be careful not to simulate it by any of the following hand paddle key presses: UpKey + DownKey + CCWKey, or CCWKey + CWKey, or UpKey + RightKey, or DownKey + LeftKey 

 

AutoAltPECSyncOnFlag: turns on automatic synchronization of the altitude PEC using the AutoAltPECPin pin of the parallel port

 

AutoAltPECSyncLowHighFlag: if 0, synch point occurs after +5 VDC has been applied, and at the moment ground is applied; if 1, synch point occurs when +5VDC is applied after pin has been grounded.

 

AutoAltPECSyncDirFlag: direction that alt PEC must be moving in order to trigger auto-sync: 0 = either direction, 1 = CCW direction, 2 = CW direction

 

AutoAltPECDeBounce: if 1 or on, then software will debounce the synchronizing signal: the

debounce period ends when the PEC index is between the ¼ and ¾ point of the PEC cycle

 

 

AutoAzPECPin: parallel port pin that auto synchronization of azimuth will be read from: must be 15, 16 or 17, or 10+12+13 (3 pin combination), or deleted from config.dat (default will be 15 then).  If you use the 10+12+13, be careful not to simulate it by any of the following hand paddle key presses: UpKey + DownKey + CCWKey, or CCWKey + CWKey, or UpKey + RightKey, or DownKey + LeftKey

 

AutoAzPECSyncOnFlag: turns on automatic synchronization of the azimuth PEC using pin 15 of the parallel port

 

AutoAzPECSyncLowHighFlag: if 0, synch point occurs when ground is removed from pin; if 1, synch point occurs when ground is applied.

 

AutoAzPECSyncDirFlag: direction that az PEC must be moving in order to trigger auto-sync: 0 = either direction, 1 = CCW direction, 2 = CW direction

 

AutoAzPECDeBounce: if 1 or on, then software will debounce the synchronizing signal: the

debounce period ends when the PEC index is between the ¼ and ¾ point of the PEC cycle

 

FullstepsPerPECArray: This allows periodic correction for single through quad worms by tying the PEC sequence to an amount of fullsteps, not to a motor's single turn. Positive values in PEC.DAT indicate too much clockwise motion. Values are in tenths of an arc second. A total of 200 values per PEC are used regardless of number of fullsteps per PEC array. PEC must be synchronized by placing the motor shafts in the predetermined starting position and hitting the 'PEC on' keyboard menu item selection or by using the auto-sync option.

 

PECIxOffset.A, PECIxOffset.Z: index offsets of both axes between rotor position of 0 and synch point, for instance, if the current position coordinate is zero with the rotor in the up position, and you have 200 fullsteps for a PEC cycle, and if the PEC synch point occurs with the rotor in the down position, then the offset will be 100; leave at 0 until PEC is turned on and synchronized, at which point let the program determine these values

 

FRStepSizeArcsec: field rotation motor step size, set to 0 if you wish field rotation disabled

 

SectoredFRDrive: if using a sectored field de-rotation drive, set to 1, otherwise field de-rotator motor may slew large angles after the scope finishes a slew.

 

FRStepSpeedMilliSec: speed of field rotation motor when slewed by hand paddle

 

ReverseFRMotor: reverse field rotation motor direction

 

FocusMethod: can be 0, 1, 2, or 3:

  1. Connecting parallel port pins 16 and 17 to a pair of relays to control a small DC motor for focusing.  Pin 16 focuses 'out' and pin 17 focuses 'in'.  This can be operated with the field rotator concurrently.
  2. As above in option 0, with the addition of parallel port pins 1 and 14 for slow speed control.  Field rotation is disabled with this option.
  3. Using the field rotation motor control circuit with a small stepper motor for focusing.  This uses parallel port pins 1 and 14 for pulse and direction.
  4. 3. Adding a second MC3479 bipolar stepper control circuit with a small stepper motor for focusing.    This uses parallel port pins 16 and 17 for pulse and direction.  Both the field rotation and focus motors can be operated simultaneously.  Along with the altitude/declination and azimuth/hour angle motors, this means that four motors are controlled at the same time.

 

ReverseFocusMotor: if 1, then reverse direction of focusing motor

 

FocusFastStepsSec: if using bipolar stepper motor for focusing, then this value contains the fast speed setting in steps per second

 

FocusSlowStepsSec: if using bipolar stepper motor for focusing, then this value contains the slow speed setting in steps per second

 

FocusPosition: if using bipolar stepper motor for focusing, then this value contains the focuser position in steps

 

 

MotorControlMethod:

  • 0 = pulse width modulation of unipolar stepper motors (if in doubt, pick this option),
  • 2 = pulse and direction control, if option 2, set the fullstep size to the amount moved every motor pulse

 

KeepAlivePPortPin: set to the parallel port pin (1, 14, 16, or 17) you wish to use for input to a keep alive circuit; the pin will pulse at least 9 times per second; design the circuit so that the power supply to the motors is cut off if the pin fails to trigger after a short period of time.

 

MotorWindings: 4 or 5: number of windings that the stepper motors have; almost all have 4 windings, but the software can work with 5 phase motors such as those from Vexta

if going with 5 phase motors then please observe the following notes:

An option is provided for driving 5-phase motors by using pins 16 and 17 for the fifth phases of the A and Z motors respectively. To use this option, set MotorWindings to 5 in CONFIG.DATA. Note that the choice of 4 or 5 phases for has no effect on the parallel port outputs for the field rotation motor.

 

The following changes in design or usage apply in the 5-phase case:

  1. Driver circuitry must use H-bridge design.  Refer to "Jones on Stepping Motors" at http://www.cs.uiowa.edu/~jones/step/ or design data for  the SGS Thompson L298 Dual Full Bridge Driver at http://www.st.com/stonline/books/pdf/docs/1773.pdf  
  2. Interpretation of the 0's in the microstepping table above and in variables such as HsOut changes from "off" to "grounded" (see Jones).

 

InvertOutput: Original designed called for 7404 inverters to drive the transistors, hence InvertOutput 1 in the original config.dat (parallel port output goes high, hex inverters go low, and drive transistors turn off, hence the need to invert the output).  In the original design, if opto-isolators were used, then InvertOutput 0 (parallel port output goes high, hex inverters go low, opto-isolators turn on pulling output low, hex inverters go high, and drive transistors turn on, hence no need to invert output). If using the printed circuit board, the pcb design uses 7408 and gates (parallel port output goes high, 7408 and gates go high, opto-isolators turn off allowing output to return to high, 7408 and gates go high, and drive transistors turn on, hence no need to invert the output).  Screw this up and you will pump a lot of current through the steppers!

 

ReverseAMotor: set to 1 if you wish to reverse direction of the 'A' motor (the altitude or declination motor).  This is equivalent to swapping winding leads 1 and 3.

 

ReverseZMotor: set to 1 if you wish to reverse direction of the 'Z' motor (the azimuth or right ascension motor).  This is equivalent to swapping winding leads 1 and 3.

 

HsRampStyle: set to 0 if you wish the old simple ramp, and set to 1 if you wish the new 'S' shaped ramp curve, where the ramp starts slowly, speeds through the middle range, and slows down for the highest speeds at the end of the ramp.

 

HsTimerFlag: set to 1 if you wish to use IRQ 8 to time the halfstep slews, this allows for realtime updating of scope coordinates, keyboard interruption of slews, and altitude limit checking during a slew, otherwise if set to 0, halfsteps are timed by a delay loop with interrupts disabled to avoid interruption; using IRQ8 works perfectly in DOS, not at all in Win 3.x, and slowly in Win95

 

MaxDelay, MinDelay, HsDelayX: these set the slowest and fastest slew speeds:

when using IRQ 8 timing of halfsteps, ramp speed starts at MaxDelay and achieves highest speed at MinDelay; with interrupt 8 method of timing the halfsteps, speed can be converted to halfsteps per second by dividing MaxDelay and MinDelay into 1,000,000, so that a MaxDelay value of 1000 means 1000 halfsteps per second, and a MinDelay value of 200 means 5000 halfsteps per second.

when using delay loop timing of halfsteps with interrupts disabled, ramp speed starts at (MaxDelay - MinDelay)* HsDelayX and achieves highest speed of MinDelay * HsDelayX, where HsDelayX is used as a multiplier to keep the MaxDelay and MinDelay values reasonably sized on fast CPUs.  

 

HsRampX: the amount of time to ramp up or ramp down is multiplied by HsRampX

 

InterruptHs: number of halfsteps before interrupts disabled if using delay loop timing of halfsteps

 

HoldReps: time to lock stepper rotors at beginning and end of slew to prevent shaft oscillation and overshoot

 

HsOverVoltageControl: for optional halfstep high speed slewing over-voltage control; if desired, enter a non-zero value.  Control line is parallel port pin #17.  Value entered here will be the Delay value at which the over-voltage control line will be toggled logical high.  Pick a value between MaxDelay (slowest speed or greatest delay) and MinDelay (fastest speed or least delay between halfsteps)

 

MaxConsecutiveSlews: maximum number of consecutive slew attempts to reach a desired position.  If slews cannot reach position, scope begins tracking.  This prevents oscillations when MsRepsTick or PWM values are low and tracking speed exceeds maximum microstepping speed.

 

MsPowerDownSec: number of seconds before idle motor will power down during microstepping.

 

PWMRepsTick: count of pulse width modulations per bios clock tick. Set to average value of PWMReps displayed on screen.

 

AvgPWMRepsTickOnFlag: if 1, then auto-averaging of the PWMRepsTick will occur, based on the actual number of PWM repetitions per timer tick as averaged over 3.5 seconds; if 0, then the PWMRepsTick value as entered in the config.dat file will be used. 

 

MsDelayX: repetition value of each value in the microstepping arrays, this allows for smaller arrays when needing large PWM[] values for fast PCs.

 

MsPause: the number of dummy loop repetitions at the end of every PWM[] loop. This allows for fine low voltage resolution when using a high voltage power supply

 

Ms: number of microsteps: up to 40 per each fullstep

 

MaxIncrMsPerPWM: maximum microstep increment per pulse width modulation.  In order to microstep faster, microsteps can be skipped. Consequently, this sets the maximum microstepping speed.  Microsteps can be skipped up to very roughly 4 per fullstep.  For instance, if you have 20 microsteps per fullstep, then you can enter a value of 5 here.  Consequently, this variable also controls the maximum microstepping or tracking speed.  For instance, if you set it to 1, then your max microstepping speed will be the PWMRepsTick * 18 (ticks per second).  The max value that you can set it to will be the number of microsteps in a halfstep, because the fastest the microstepping routine can work at is one halfstep per PWM.  (if the number exceeds MsHsToggleIncrMsPerPWM, the routine switches from microstepping per each PWM to halfstepping per each PWM)

 

MsHsToggleIncrMsPerPWM: while microstepping, the routine will switch into halfstep mode if necessary.  This is toggled when the number of microsteps per each PWM repetition exceeds MsHsToggleIncrMsPerPWM.  For instance, if the PMW repetitions per timer tick is 50, and if MsHsToggleIncrMsPerPWM is 5, and you ask the program to track at more than 250 (50*5) microsteps per PWM, then the routine will toggle to halfstep movement.  Max speed is still the # of microsteps per fullstep divided by 2, equivalent to halfstepping.  In this example of 20 microsteps per fullstep, the max speed is 20/2 or 10 microsteps per PWM, or 500 (50*10) microsteps per PWM.  Overall speed in any case is still limited by MaxIncrMsPerPWM.

 

MaxPWM: maximum pulse width modulations, and consequently the maximum value that any PWM[] value can take.  This can be set higher than PWM[0] so that PWM[1]... can be set higher than PWM[0] to ameliorate stepper motor cogging

 

PWM[0] through PWM[19] : These values sets the voltages for individual microsteps. In general, these values should reflect the ratios discussed earlier. If the microstepping is not smooth, adjust these values. If the motors become too warm and take too much current, increase MaxPWM, lower the PWM[0] through PWM[19] values, decrease MsDelayX and/or increase MsPause.  When tracking, the steppers should draw no more than approximately 0.1 amp while still producing adequate torque.

The rotor is positioned based on the inverse square strength of two adjoining windings, for instance,

PWM[0] 100 : 0

means that the first microstep has a current value for winding A of 100 and a current value for winding B of 0 positioning the rotor exactly over winding A, and,

PWM[10] 100 : 100

means that the 11th microstep has a current value for winding A of 100 and a current value for winding B of 100 positioning the rotor exactly between winding A and winding B, and,

PWM[19] 29 : 100

means that the 20th microstep has a current value for winding A of 29 and a current value for winding B of 100 positioning the rotor 9/10ths of the way between winding A and winding B (there is a slight deadband where a certain amount of counts, usually about 10, are needed for the motor to feel the current pulse at all);

here are the values for 20 microsteps:

PWM[0] 100 : 0

PWM[1] 100 : 29

PWM[2] 100 : 45

PWM[3] 100 : 56

PWM[4] 100 : 65

PWM[5] 100 : 72

PWM[6] 100 : 81

PWM[7] 100 : 88

PWM[8] 100 : 95

PWM[9] 100 : 98

PWM[10] 100 : 100

PWM[11] 98 : 100

PWM[12] 95 : 100

PWM[13] 88 : 100

PWM[14] 81 : 100

PWM[15] 72 : 100

PWM[16] 65 : 100

PWM[17] 56 : 100

PWM[18] 45 : 100

PWM[19] 29 : 100

 

Optional variables: QSC_..., which stands for QuarterStepCorrection: the '_a' through '_d' indicate the winding, and the extra '2' indicates the intermediate halfstep; enter corrective values in fullsteps, for instance, if the motor moves too far for the 'a' winding by 0.1 fullstep halfway through its range, and no other corrective actions are required, here is what the entries will look like for the 'a' winding (for windings 'b' through 'd', duplicate these entries, replacing the 'a' with the winding letter 'b', 'c', or 'd'): 

QSC_a0  0   : 0

QSC_a1  0   : 0

QSC_a2  0.1 : 0

QSC_a3  0   : 0

 

Optional variables: PWM_... which taken together allow compensation for current variation to each stepper motor winding.  It has been discovered that the 8 output lines from the circuit may vary in output current thanks to variations in the parts themselves.  In addition, there may be variations in motors.  Some of the quarter step correction (QSC) issues may be due to variations in motor winding current.  By allowing for individual current adjustment of each output line, one can tune very output line to give the same current.  For instance, if one finds that the 2nd output line ('B' winding of the altitude/declination motor) reads a low current compared to the other output lines, the other lines can have their output current lowered by the software to compensate.  Default is no compensation and config.dat does not need to be changed.  If you wish to use output line/motor winding current compensation, add the following variables to config.dat.  A value of 1 means output 100% of available current, a value of 0.5 means output 50% of available current, and so forth.

Here is what the entires will appear to handle a compensation for a disparate 'B' winding of the altitude/declination motor:

PWM_A_a_Comp 0.8

PWM_A_b_Comp 1

PWM_A_c_Comp 0.8

PWM_A_d_Comp 0.8

PWM_Z_a_Comp 0.8

PWM_Z_b_Comp 0.8

PWM_Z_c_Comp 0.8

PWM_Z_d_Comp 0.8

 

PPortAddr: parallel port address: enter a 1 or 2 or 3 for lpt port 1 through 3, or enter the base address in a 3 digit decimal form where portid lpt1 = decimal 888 (hex 378) lpt2 = decimal 632 (hex 278), monochrome video card = decimal 956 (hex 3BC)

 

COM3Base: com3 base address in decimal form (if entry not listed in the config file, will default to 0x3E8 in hex or 1000 decimal)

 

COM3IRQ: com3 interrupt from 3 to 15 ( if entry not listed in the config file, will default to 4)

 

COM4Base: com4 base address in decimal form (if entry not listed in the config file, will default to 0x2E8 or 744 decimal)

 

COM4IRQ: com4 interrupt from 3 to 15 (if entry not listed in the config file, will default to 3)

 

EncoderString: options are:

  • NoEncoders,
  • BSeg = Bob Segrest unit,
  • ResetViaR = MicroGuiderIII, Ouranos, StarPort, and types that support reset by 'R...',
  • ResetViaZ = BBox, NGC types, and types that support reset by 'Z...',
  • NoReset = SkyWizard and types that are not resettable,
  • Ek = encoder box as designed by Dave Ek,
  • Mouse = using encoders from mouse (turn off acceleration, etc in mouse driver)
  • LM629Serial = use serial interface to LM629 servo controller

 

EncoderComPort: enter 1 or 2 for com1 or com2, ignored if using Mouse driver

 

EncoderBaudRate: baud rate to access the encoder interface box; normally 9600

 

SerialWriteDelayMs: millisecond wait after querying encoders before reading encoders; some wait is required, often 20-50 milliseconds

 

AltEncoderCountsPerRev, AzEncoderCountsPerRev: encoder counts per full revolution of the telescope mount; max of 65,534 with some encoder boxes having lower limits; if unable to set limits, then start scope.exe in serial test mode, turn on encoder box, enter commands from encoder box manual to manually set the resolution, check manual for any confirmation commands, if successful, write down what you entered and what the encoder box returned and send to the author, exit scope.exe, restart scope.exe in normal mode - do not turn off encoder box - and continue with normal operation of the telescope

 

AltEncoderDir, AzEncoderDir: allows changing of direction that encoder counts up, set to 0 to reverse count direction

 

EncoderErrorThresholdDeg: if encoder readings compared to current coordinates exceed this threshold, then current coordinates reset to encoder readings; if 0, coordinates not reset no matter how great the discrepancy

 

TrackEncoderErrorThresholdDeg: as above, but the error threshold to be used when tracking or slewing is on

 

MakeEncoderResetLogFile: set to 1 if you wish encoder threshold violations to be recorded into the file "Encoders.txt"

 

EncoderOffset.A, EncoderOffset.Z: offsets of encoder position from scope position in radians; let the software calculate these values

 

LX200ComPort: enter 1 or 2 for the com port to receive LX200 styled commands from external PC; set to 0 if not used

 

LX200BaudRate: baud rate for LX200 control; normally 9600, but if possible to change the external controlling program, set the baud rate to highest speed for faster data throughput and consequent less impact on motor movement

 

LX200MotionTimeoutSec: if no LX200 stop motion command received, motion will stop in this many seconds

 

LX200SlewHs: if no slew stop received, slew distance in halfsteps

 

LX200_LongFormat: start the program in emulate long format mode

 

Current.Alt, Current.Az: current telescope altazimuth coordinates in degrees

 

AccumMs.A, AccumMs.Z: current telescope altazimuth coordinates in accumulated microsteps; these are used for the telescope's starting and ending position.  Calculate the current altazimuth coordinates in degrees by multiplying the accumulated microsteps * the microstep size (which is fullstep size divided by number of microsteps).

 

StartInitState:  This controls the startup state of the initializations.  It operates exactly as the query at program startup:

  • 0 means ask user per traditional menu options,
  • 1 means adopt equatorial alignment,
  • 2 means adopt altazimuth alignment,
  • 3 means adopt no alignment at all, and
  • 4 means to reuse last alignment. 
  • Any other option than 0 means that you will not be queried.  This is a config.dat replacement for the query menu at startup time.  Use it if your answer to the opening query is always the same.  Default is 0, to query the user.

 

OneInit, TwoInit, ThreeInit: the stored initializations used to orient the telescope to the sky; these are written by the program; each line consists of Ra, Dec, altitude, azimuth, and sidereal time all in degrees

 

Z1Deg: elevation offset to horizon perpendicular

 

Z2Deg: optical axis error in same plane

 

Z3Deg: correction to zero setting of elevation (this can be set to zero permanently and the altitude offset function in the program used to make an automatic Z3 correction)

 

LatitudeDeg: used only for rough initial altaz alignment

 

CMOS_RTC_Access: CMOS Real Time Clock access: 0 = direct port access, 1 = bios call access - use 1 only if machine locks up including during ATimes test (very rare - only one reported instance)

 

LongitudeDeg: your site's longitude, used to determine HAOffset and local sidereal time

 

Tz: used to determine sidereal time, the initialization process does not depend on sidereal time or longitude, instead relying completely on the time interval between initializations

 

DST: also used to determine sidereal time

 

TestString:

  • NoTest = normal program execution, 
  • PreloadGuidexx.dat = preloads the program with guidealt.dat and guideaz.dat, then runs normally,
  • Track = start 2 motor tracking with default value

 

 

Setting the altitude axis and azimuth axis fullstep size in the config.dat file

 

Use the move/halfstep menu option to move the telescope a set amount of halfsteps.  Assuming fullstep size of 3 arcseconds, and ability to measure angle change down to several arcminutes (8192 count per revolution encoders, or precision bubble), then execute at least 5,000 steps for 1% accuracy.  If encoders are used, the program will automatically display the fullstep values for AltFullStepSizeArcsec and AzFullStepSizeArcsec that you should enter into the config.dat file.  Try for 0.1% or 1 part in 1000 accuracy (move at least 50,000 steps, or roughly 45 degrees).

 

 

Setting the slew (halfstep) speed

 

Because computer capabilities vary greatly and because of widely varying motor and scope mounts, it will be necessary to spend time optimizing the values relating to halfstepping in the configuration file, config.dat. I use a 486/100 laptop. Included is config.386, which were the values I used on my old 386/20 with 387 math coprocessor.

To set the halfstep slewing, try to set HsTimerFlag to 1, enabling the interrupt drive timing. The interrupt driven timing is independent of cpu speed, so regardless of the computer's speed, set MaxDelay to 2000, MinDelay to 500, and HsRampX to 5. MinDelay and MaxDelay can be converted to Hertz by dividing them into 1,000,000. For instance, if MaxDelay is 1000, then Hertz is 1000 or step frequency is 1000 steps per second.

Be sure to run scope.exe after booting to DOS, or exiting Win95 to DOS. The motor's starting speed is set by MaxDelay, the fastest speed by MinDelay, and the time to ramp up and down set by HsRampX. Adjust to suit your combination of steppers, drive voltage, and scope's torque loading.

If the interrupt drive timing won't work and it is necessary to use the delay method of timing the halfsteps, set HsTimerFlag to 0. If you have a cpu close to a 386/20, start with MaxDelay 8000, MinDelay 3000, and HsDelayX 1. If you have a cpu close to a 486/100, change HsDelayX to 2. Speed starts at (MaxDelay-MinDelay)*HsDelayX, and achieves fastest speed at MinDelay*HsDelayX. HsDelayX is used as a multiplier to keep the MaxDelay and MinDelay values reasonable; otherwise the array size becomes too large. Again, adjust as necessary to fit the motors, the drive voltage, and the scope.

 

 

Setting the microstepping parameters

 

To set the microstepping: start with the suggested PWM[] values ranging from 100 on down. Start with MsDelayX = 1, and MsPause = 0 if on a slower machine, and MsDelayX = 6 if on a faster machine. Adjust MsDelayX such that PWMRepsTick displayed (turn on tracking for a few seconds) is 20 to 40. People have reported mixed success with slow machines and PWMRepsTick values as low as 7. Values as high as 50 to 100 will also work. Find the MsDelayX value that results in smoothest motor rotation, adjusting MsPause to higher values possibly to 500 or more, to reduce voltage and current draw, and to smooth the motor rotation.

 

Here's how the microstepping is laid out:

 

To reverse motor direction, swap motor leads #1 and #3, or alternatively, #2 and #4.  Finally, you can swap motor directions in the config.dat file.

Adjusting the microsteps:

The program handles microstepping up to 40 microsteps per fullstep.

For 10 microsteps per fullstep, the windings are combined as follows:

; starting a line with ‘;’ means a comment line

;rotor centered on winding

PWM[0] 100

PWM[1] 100

PWM[2] 100

PWM[3] 100

PWM[4] 100

;rotor between windings

PWM[5] 100

PWM[6] 85

PWM[7] 70

PWM[8] 55

PWM[9] 35

 

For 20 microsteps per fullstep, the windings are combined as follows:

;rotor centered on winding

PWM[0] 100

PWM[1] 100

PWM[2] 100

PWM[3] 100

PWM[4] 100

PWM[5] 100

PWM[6] 100

PWM[7] 100

PWM[8] 100

PWM[9] 100

;rotor between windings

PWM[10] 100

PWM[11] 94

PWM[12] 86

PWM[13] 77

PWM[14] 69

PWM[15] 62

PWM[16] 54

PWM[17] 46

PWM[18] 37

PWM[19] 27

 

(this written with 10 microsteps per fullstep in mind)

Set TestString to Track in the config.dat file, and choose 1 microstep per second. Put a piece of masking tape on the motor shaft and watch it carefully for even spacing of the microsteps. If the step is too far apart, bring the voltages closer together. For instance, if the spacing between microstep #0 and #1 is too far, then lower PWM[9], if the motor hardly seems to move between #0 and #1, increase PWM[9]. Again, if the spacing between #3 and #4 is too large, then increase #3, or decrease #4, or a combination of the two.  You can change the PWM[] values on the fly.  When you get them the way you wish, copy the values to the config.dat file.

Here is a contributed method: "There is a way that I used to find the proper PWM numbers for the drive that can interest you:

I started first with approximate numbers in the software.

I mounted a 7.96" plastic rod on the shaft to get   a 50" circumference or 0.025" per microstep.

I put the software in TestString = Track mode with 0.1 step per second.

I measure each microstep position with a micrometer head for 4 full steps.

I calculate the mean displacement for each microstep 0 to 1, 1 to 2 etc..

And more important I PUT THE CALCULATED DATA ON A GRAPHIC SHEET.

This gives me a nice smooth curve. I pickup the PWM numbers for 0.025", 0.050", 0.075" and so on. I put back these numbers in the config.dat file and restart the measurement and write down. The result was almost perfect. I had to change the numbers of only plus or minus 1."

Yet another suggestion from Juan Herrero: "I was going nuts trying to measure and adjust the variances between the microsteps in my Altaz controlled motors. I had 4 drinking straws taped end on end. Attached to the stepper motor shaft. The end of the 3' straw contraption, would only move a couple of millimeters per microstep. It was very difficult to take the measurements. And then...Mel decided to improve his software from 10 to 20 microsteps! How could I measure all those tiny steps ? Well yesterday I saw the light! Laser light that is. I went to RadioShack and got their cheapest laser pen pointer. Taped it to the motor shaft. And projected the beam on the wall. I can now measure microstep movements 20mm big! TA DA!"

Date:________ Computer _________ Dir:_________ Scope.exe

Compiled:__________ Telescope _____PCB ______

InvertOutput    0       0 for PCB

FR Step Size            2.25 for ½ step, 4.5 for full step

HSTimerFlag             1 for IRQ8 (DOS), 0 for Windows

Max Delay               2000 (DOS)

Min Delay               1000 (DOS)

HsDelayX                N/A DOS, Multiplier for Windows slews

PWMRepsTick             Shoot for 20-60

MsDelayX                SlowPC=1, fast PC=6

MsPause                 Current Control during MS

Motor Current

PWM[0]                    a   100     Step0 = PWM[0]

PWM[1]                    b   100     Step1=PWM[1]+PWM[9]

PWM[2]                    c   100     Step2=PWM[2]+PWM[8]

PWM[3]                    d   100     Step3=PWM[3]+PWM[7]

PWM[4]                    e   100     Step4=PWM[4]+PWM[6]

PWM[5]                    f   100     Step5=PWM[5]+PWM[5]

PWM[6]                    g           Step6=PWM[6]+PWM[4]

PWM[7]                    h           Step7=PWM[7]+PWM[3]

PWM[8]                    i           Step8=PWM[8]+PWM[2]

PWM[9]                    j           Step9=PWM[9]+PWM[1]

SETUP:   Pointer and scale on Motor, 10amp Range on Meter.

Calculate current to meet wattage limit on Motor: V=IR, VRated * IRated = WattsRated,

        Iops = WattsRated / Vops   __________________________

 

1. Start: Default PWM's, MsDelayX=1 for slow and up to 6 for fast,

MsPause=0, PWMRepsTick=display in Track

 

2. Adjust MsDelayX till PWMRepsTick = 20 <-> 60 (may increase current) and motion is smooth.    (Motion is smoother at lower PWM's, but current is higher and so is sound)

 

3. Adjust MsPause to get current within Motor Wattage Limits: (When current is too low, motion gets jerky)                                                                                 

Increase MsPause, Decrease PWM[x]'s or Decrease MsDelayX  to Decrease current

 Decrease MsPause, Increase PWM[x]'s, or Increase MsDelayX to Increase current

 

4. Adjust PWM[x] Matrix for even steps (Larger PWM[x]'s decrease PWMRepsTick

 If spacing is too big: bring voltages closer together;

      if spacing too small, increase the difference in voltages:

 If the move between 0 and 1 is too big,

        reduce [9] to decrease how much winding B pulls off of centered on A

 If motor barely moves between 0 and 1,

        Increase [9] so winding B pulls it more off of centered on A

 If spacing between [3] and [4] is too big,

        increase [3] or decrease [4]  (or both)

 

PWM (winding A)    Step #              PWM (winding B)

100  a   0--0--------------------0  a  100

100  b   1---1-------------------9  j  ___

100  c   2-----2-----------------8  I  ___

100  d   3-------3---------------7  h  ___

100  e   4---------4-------------6  g  ___

100  f   5-----------5-----------5  f  100

___  g   6-------------6---------4  e  100

___  h   7---------------7-------3  d  100

___  i   8-----------------8-----2  c  100

___  j   9-------------------9---1  b  100

 

5. Iterate 2-4 till current within wattage limit,

        PWMRepsTick = 30-60, and motion is smooth/even

 

6. Adjust MinDelay and MaxDelay (and HsDelayX if Windows)

        to allow smooth and fast slews with no buzzes (Min Delay = Buzz)

 

7. Copy these values into Config.dat

 

 Bob Norgard has written a webpage on adjusting the microstep values.  It is at http://home.gci.net/~rnorgard/Scope/Microsteps

Tom Krajci has an Excel spreadsheet to adjust the microstepping available at http://www.egroups.com/Logon and look at the scope-drive archives.

Andrew Martyn has an excellent microstep and QSC configuration page at www.spin.net.au/~afmartyn/index.html


 

 

Program Display

 

+--------- Scope Control Program compiled Nov 7, 2004 by Mel Bartels ---------+

¦File     Motors    Handpad   EC        Init     Coord     Move      Reset     ¦

+------------------------------------------------------------------------------¦

¦Quit           SaveCfg         DataFile       DataFile2       DataFile3       ¦

¦DataFile4      ClosestGT       ScrollTour     InputComment    DOSShell        ¦

¦Guide.bat      Hotkeys         ReadSlew       WriteSlew       LX200           ¦

¦TestSerial     Screen                                                         ¦

+------------------------------------------------------------------------------¦

¦-> quit the program                                                           ¦

¦     Current      Input      Drift    Encoders     Refract   FieldRot   Focus ¦

¦Alt:  30.028     30.028      0.000/m                 0      A 315.562         ¦

¦Az:  200.000    200.000      0.000/m                        R  0.31 /m        ¦

¦                                                            M 315.56          ¦

¦Ra:  15:34:21   15:34:00    0:00:00/h       AirMass  2.0    M    0  0         ¦

¦Dec: -13:44:45  -13:44:45  + 0:00:00/h  DomeAzimuth  200    G   0.00          ¦

+------------------------------------------------------------------------------¦

¦File                          Track Off   FRTrack Off  Init 2     GEMFlip Off ¦

¦Object                        Handpad Off                  DUon     m         ¦

¦Sidereal Time   16:45:21      Mouse         Microstep 300"/sec  Guide  5"/sec ¦

¦Date/Time 12/27 10:19:11      FastFocus 500/sec   SlowFocus 100/sec           ¦

¦                              PWM    / 37 Ms  0   0 b00 c00 000 QSC           ¦

¦PEC                           AZEC       AAEC       ZZEC       PMC            ¦

¦Slew  Done                                                                    ¦

¦LX200 LX200 commands off                                                      ¦

+------------------------------------------------------------------------------+

 

Use the cursor keys to select a menu item.  Left-Right cursor keys select the main menu category and Up-Down cursor keys select the submenu item.  Just under the menu selections, a more detailed description of the menu item's action is displayed.

 

The "Current" coordinates display where the telescope is currently pointing.

 

The "Input" coordinates display user input coordinates, ready for the telescope to be moved to, if "Move To/Equat" or "Move To/Altaz" is selected from the menu.

 

The "Drift" coordinates show the current drift rate in each axis.

Encoder coordinates are displayed in degrees and in raw counts.

 

The "FieldRot" or field rotation shows one value if field rotation motor disabled, otherwise shows four values.  The upper value is the current field rotation angle.  The second value down is the rate of field rotation in degrees per minute.  The next value down is the angle of the field rotation motor.  The two numbers immediately below show the accumulated step count (clockwise adds, and counterclockwise subtracts), and the number of resets: all modulus 100. The final angle displayed under this line is the guide buttons rotation angle.

 

The "Focus" position shows the accumulated count of the focuser stepper.  If no number is displayed, then the FocusMethod is set to something other than stepper motor control

 

The "AirMass" field shows the airmass number, or number of atmospheres that the telescope is aimed through.

 

The "DomeAzimuth" field shows the angle of the dome rotation in degrees.

 

The "File" area indicates which data file, or external program or device, has sent coordinates to the program.

If the coordinates have been reset because the encoder reset threshold values in the config.dat file have been exceeded, the "File" field will display a message stating the scope motion immediately preceeding the reset (enc.res.slew = encoder reset after slew, enc.res.on = encoder reset after tracking on, enc.res.off = encoder reset after tracking off), and a running count of the encoder resets for that particular scope motion.

 

The "Track" field shows if tracking is on or off. 

 

The "TrackFRMotor" shows if the field rotation motor tracking is enabled/disabled.

 

The "Init" field shows how many initializations have been done so far.

 

The "GEMFlip" indicates if a german equatorial mount has been flipped across the meridian.

 

The "Object" area shows which object from the data file has been loaded into the input coordinates.

 

The "Handpad" field shows what handpad mode the program is currently in, and if that mode is active (for instance, if the mode is set to focus, and control of the focus motor is activated by the mode switch, then an 'on' will appear), if handpaddle auto-drift-update is on or off (DUon or DUoff), if guiding corrections saved to a file are finished then a "Fn" will appear, and further to the right, which buttons are being pressed and the switches' positions.  C=clockwise button pushed, W=counterclockwise button pushed, U=up button pushed, D=down button pushed, m=speed switch in microstep position,H=speed switch in halfstep position, L=mode switch in left position, R=mode switch in right position, x = up, down buttons reversed. 

 

The "Mouse" field shows the mouse mode: mouse modes include menu, where the traditional point and click is available, and various move modes, where mouse movement moves the telescope.

 

The "Microstep" field displays the current microstepping speed in arcseconds per second.

 

The "PWM" field shows the actual number of pulse width modulations per bios clock tick (there are about 18.2 clock ticks per second), and the averaged number of PWMs per timer tick that the program is currently using.

 

The "Ms" area shows the number of microsteps moved per timer tick (occurs 18.2 times per second) for altitude and azimuth motors, the winding from 'a' to 'd', the microstep within the winding for altitude and azimuth motors.

 

The "QSC" shows the current quarter step correction values for both motors.

 

The "Guide" field displays the current guiding speed in arcseconds per second.

 

The "FastFocus" displays the fast focus speed in steps per second.

 

The next area shows if the field rotation motor is moving "Fr+" or "Fr-", any auxiliary control lines activiated "A1" or "A14" or "A16" or "A17" and if the focus motor is moving "Ff+" (fast out) or "Ff-" (fast in) or "Fs+" (slow out) or "Fs-" (slow in).

 

The "SlowFocus" displays the slow focus speed in steps per second.

 

The "PEC" area, if PEC is on, shows the altitude and azimuth indexes and correction values in tenths of an arcsecond, respectively.  In addition, if the auto-sync of altitude PEC or azimuth PEC is enabled, the PEC index at synch point is shown, and if an error, the PEC display is highlighted with the current selection color.

 

The "AZEC" shows the altitude vs azimuth error corrections in arcminutes.

 

The "AAEC" shows the altitude vs altitude error corrections in arcminutes.

 

The "ZZEC" shows the azimuth vs azimuth error corrections in arcminutes.

 

The "PMC" shows the pointing model error corrections for altitude and azimuth in arcminutes.

 

If using interrupt method to time the half steps, the "Slew" field will display the slew status, slew abort reason, the ramp half steps (1/2 of the total steps to move), the ramp up steps (steps taken while ramping up to max speed), the steps taken while at maximum speed up to the midpoint of the move, the remainder of the steps taken at maximum speed, the ramp down steps, and the current speed index (larger numbers = slow speeds, smaller numbers = high speeds).

 

If the menu option to display LX200 is turned on, then the LX200 field will show the history of commands received with an '*' by the last command, and, the next line down will display the raw characters as received from the external device ouputting the lx200 protocol serial data.

 

 

LX200 supported commands

 

 Commands are displayed in abbreviated form on the LX200 line in scope.exe if the display LX200 is turned on as follows:

 

NA = no acknowledge yet received

AK = acknowledge received (indicates that external controlling program has queried for existence of lx200 device)

AA = align altaz

AL = align land (turns off tracking)

AP = align polar

B+ B- B0 B1 B2 B3 = reticle brightness commands (ignored)

F+ = focus out

F- = focus in

FQ = focus quit

FF = focus fast

FS = focus slow

GR Gr = get right ascension

GD Gd = get declination

GA = get altitude

GZ = get azimuth

GS = get sidereal time

GL = get local time (24 hr format)

Ga = get local time (24 hr format )

GC = get current date Gc = get clock status

LI =return object info (ignored)

Lo = load object catalog from library (ignored)

Ls = load star catalog from library (ignored)

Mn = move north

Ms = move south

Me = move east

Mw = move west

MS = start slew

Q = stop slew

Qn = end motion north

Qs = end motion south

Qe = end motion east

Qw = end motion west

RG = set motion rate to guide speed

RC = set motion rate to centering speed

RM = set motion rate to find speed

RS = set motion rate to slew

Sr = set right ascension

Sd = set declination

Sb = set brighter magnitude limit for find operation (value ignored)

GF, GVF = get field (returns 100)

Gq = get minimum quality of the find operation

GM GN GO GP get site info ("SCP" returned)St = set latitude (ignored)

Sg = set longitude (ignored)

SG = set GMT offset (ignored)

SM SN SO SP = set site number (ignored)

Sq = set minimum quality of the find operation

Sy GPDCO = sets the ‘type' string for the FIND operation (ignored)

Sl = sets the larger size limit for the FIND operation (value ignored) 

Ss = sets the smaller size limit for the FIND operation (value ignored)

Sw = ???

CM = synchronize scope

TQ = time quartz (ignored)

U = toggle long format (coordinates)

Un = unfinished command (no ending '#')

Sf = set fainter magnitude limit for find operation (value ignored)

SF = sets field (value ignored)

Sh = set current higher limit (value ignored)

SS = set sidereal time

SL = set local time

SC = set current date U0 = unknown command: first character uninterpretable

U1 = unknown command: second character uninterpretable

U2 = unknown command: third character uninterpretable

W1 through W4 = set site number (ignored)

Ig = ignored command

 

 

 

Customized LX200 commands

 

commands starting with X are customized:

XgF gets focusing fast speed in deg/sec, format 999

Xgf gets focusing slow speed in arcsec/sec, format 999

Xgp gets focuser position, format 9999

XsF sets focusing fast speed in deg/sec, format 999

Xsf sets focusing slow speed in arcsec/sec, format 999

XGG get guiding rate in arcseconds per second, format 9999

XGM get MsArcsecSec

XGR get field rotation in degrees, format 999.99

XHa through XHt set handpadMode

XHL simulate press of handpad left mode key

XHR simulate press of handpad right mode key

XI1 initialize #1 with current altazimuth and input equatorial coordinates

XI2 initialize #2 with current altazimuth and input equatorial coordinates

XI3 initialize #3 with current altazimuth and input equatorial coordinates

XS set guiding rate in arcseconds per second, format 9999

XN set object name

XX unused in Scope II; used in scope.exe for clearing the LX200 display area

 

XGG = get GuideArcsecSec

XHa through XHz = set handpad mode 0 to 26 respectively

XHL = simulate handpad left mode key

XHR = simulate handpad right mode key

XI1 through XI3 = initialize point 1 through 3 using already sent equatorial coordinates

XSG = set GuideArcsecSec

XSM = set MsArcsecSec

XX = clear LX200 display area

 

 

Coordinates' display on the screen

 

There are three main coordinates displayed: encoders, current, and input. The current coordinates show the scope's current position. The encoders coordinates show the positioning as relayed from the encoders. The input fields show coordinates that will be used if any of the move or reset to input menu items are selected.  Inputting new equatorial coordinates does not change whatever inputted altazimuth coordinates are present, and visa versa.

 

 

Shortcut keys

 

'1' selects 'move to equat'
'2' selects 'track on/off'
'3' saves current equatorial coordinates
'4' retrieve saved equatorial coordinates into the input fields
'5' saves current #2 equatorial coordinates
'6' retrieves saved #2 equatorial coordinates into the input fields
'7' read slew file from Guide6
'8' write slew file to Guide6
'9' input altaz
'0' reset to input altaz
'a' adds in the altitude offset to all initialization altitudes, adds in the altitude offset to the current altitude, and re-initializes
'b' begins an already loaded scroll file, and once started, 'l' continues onto the next scroll action, simulating a leftkey press of the handpaddle
'c' displays PEC graphically
'd' selects 'data file' menu item
'e' averages PEC analysis files and displays results graphically for the altitude axis
'f' averages PEC analysis files and displays results graphically for the azimuth axis
'g' selects menu item 'Guide.bat' (which calls Wguide.exe, passing it the current scope coordinates, the DOS 32 bit version of Guide)
'h' selects menu item hand paddle, toggling through handpad modes
'H' selects a hand paddle mode from a selection palette
'i' displays the initializations
'k' kills the inits
'l' reloads pec.dat file (when scrollfile is underway, 'l' simulates the handpad's leftkey press)
'm' selects microstepping speed
'n' slews to input altazimuth coordinates
'o' reset to input altazimuth coordinates
'p' selects PEC
'q' quits the program
'r' resets to input equat coord
's' selects scroll file
't' toggles tracking on/off
'u' altitude axis: graphically displays guiding efforts with respect to pec - gives options to save and update pec
'v' azimuth axis: graphically displays guiding efforts with respect to pec - gives options to save and update pec
'y' zeroes out the altitude pec array (does not save PEC.DAT)
'z' zeroes out the azimuth pec array (does not save PEC.DAT)
F1-F4 moves the scope with microstepping: F1 up, F2 down, F3 CCW, F4 CW  
'`' (the left apostrophe key in the upper left of most keyboards) selects the menu item 'Guide.bat'
'$' or '[' or '{' gem meridian flip
'?' input equatorial coordinates
'<' handpad mode left key
'>' handpad mode right key
'&' restart scroll file
'@' toggle right handpad mode to reset equatorial in grand tour
'%' zero out backlash
'*' do a three star polar alignment

User selectable Hotkeys: Use Cursor Left/Right and Up/Down to select function, then Hotkey highlighted function using F9-F12.

 

 

Equatorial Mount Startup

 

  1. select equatorial option at program startup; the scope will track accurately for any position in the sky, and, if the laptop's time and date is accurately set and the longitude value in the config.dat file accurately set then the scope will also slew accurately, but most likely these values will not be exactly accurate, so to refine the positioning:
  2. center an object in the scope
  3. enter object's coordinates via one of the data files, or manually if necessary
  4. then do a reset to equat coordinates to inform the software where you are pointed; remember to never do any initializations at any time because it will confuse the original equatorial initializations at program startup time  

 

Don Ware's polar alignment procedure is a part of scope.exe. Start with the telescope at least roughly polar aligned, and start the program using the equatorial alignment option. Then, follow the polar alignment instructions:

 

“Polar Alignment is split into five parts to allow operator intervention between stages. The process is started via the Init Menu or via hotkey '*'. Subsequent stages are entered via hotkey '*' or via the handpad left key.

In Stage 0, three stars are selected from the databases and the coordinates of the first star entered as input. After slewing to start#1, the operator then centers this star in the eyepiece with the handpad.

In Stage 1, a ResetEquatorial is executed, the coordinates of the second star entered as input and a slew to those coordinates executed. The operator then centers this star in the eyepiece using the handpad.

In Stage 2, the apparent coordinates of the second star are read and the offset of the polar axis calculated. Then a set of coordinates are calculated for the third star which are offset so that when the polar axis is moved to correct alignment the star will be centered in the eyepiece. A slew to these coordinates now takes place. The operator then adjusts the polar axis using altazimuth mount corrections only.

In Stage 3, a Reset Equatorial is performed using Star 3's correct coordinates. Finally, a slew back to the first star takes place.

In Stage 4, the operator is given the choice of repeating the process or of quitting. If the handpad is to be used, the Select HP Option "Polar Alignment" should be set prior to the start of the polar alignment process.”

 

 

Altazimuth Startup Sequence

 

there are several methods to initialize the scope with the sky -- they include:

Ø       previously initialized + scope not moved,

Ø       the instant eyeball initialization - good enough for visual tracking,

Ø       tracking initialization,

Ø       traditional 2 star initialization

 

previously initialized + scope not moved:

If the scope was previously accurately initialized and the scope has not been moved since then, pick altazimuth option 'reuse coordinates' at program startup.

If the encoder box has been left on, select 'reuse encoder coordinates' at program startup.  You are set!  If the encoder box was turned off, or if no encoders, then set the altitude and azimuth by

  1. center object in eyepiece
  2. enter object's coordinates via a data file or if necessary, manually
  3. select reset to equat coordinates: this will update the altazimuth coordinates

 

the instant eyeball initialization - good enough for visual tracking

  1. select option to adopt altazimuth alignment at program startup
  2. enter best guess altitude and azimuth coordinates where scope is pointing, ie, if scope is horizontal and pointing to the south, enter 0 degrees altitude and 180 degrees azimuth
  3. reset to altazimuth coordinates

This gives tracking accuracy good enough for visual purposes.

To improve (assumes that mount is fairly level, that timezone and longitude entered accurately in config.dat file, and that time/date of laptop is correct):

  1. center object in eyepiece
  2. enter object's coordinates via a data file or if necessary, manually
  3. select reset to equat coordinates: this will update the altazimuth coordinates

 

tracking initialization

  1. at program startup, select option to adopt no alignment
  2. enter best guess altitude and azimuth coordinates where scope is pointing, ie, if scope is horizontal and pointing to the south, enter 0 degrees altitude and 180 degrees azimuth
  3. reset to altazimuth coordinates
  4. put handpad mode into init #1
  5. enter an object's coordinates (typically a bright star from bstar.dat)
  6. center object in eyepiece (use high powered illuminated crosshair eyepiece with barlow for most accurate results)
  7. using handpad, init #1
  8. put handpad mode into init #2
  9. follow object with microstep movements using handpad for a minute or so
  10. using handpad, init #2: scope now tracks accurately and can find nearby objects
  11. hit shortkey 'i' to display the initialization results and check that the latitude is reasonable
  12. continue to follow the object for a few more minutes
  13. using handpad, init #2 once again
  14. hit shortkey 'a' for altitude offset reset, answering yes
  15. the initialization results (shortkey 'i') should show accurate latitude, differing from the real value for the site only by the mount's unlevelness
  16. as objects further away from initialization object #1 are slewed to, continue to re-init #2 for increased accuracy of slewing across the sky

 

traditional 2 star initialization

  1. at program startup, select option to adopt no alignment
  2. enter best guess altitude and azimuth coordinates where scope is pointing, ie, if scope is horizontal and pointing to the south, enter 0 degrees altitude and 180 degrees azimuth
  3. reset to altazimuth coordinates
  4. put handpad mode into init #1
  5. enter an object's coordinates (typically a bright star from bstar.dat)
  6. center object in eyepiece (use high powered illuminated crosshair eyepiece with barlow for most accurate results)
  7. using handpad, init #1
  8. put handpad mode into init #2
  9. enter another object's coordinates (typically a bright star from bstar.dat)
  10. center object in eyepiece (use high powered illuminated crosshair eyepiece with barlow for most accurate results)
  11. using handpad, init #2
  12. hit shortkey 'i' to display the initialization results and check that the latitude is reasonable
  13. hit shortkey 'a' for altitude offset reset, answering yes
  14. the initialization results (shortkey 'i') should show accurate latitude, differing from the real value for the site only by the mount's unlevelness

 

Your First Equatorial Initialization and Goto Run

 

create a scroll file called startup.scr composed of these commands:

trackon

data_file bstars.dat

reset_equat

move_file messier.dat

prompt finished

the first command turns on tracking

the second command says to find an object from the bright star data file

the third command says to reset the telescope's position to the object's position

the fourth command says to move to a Messier object

and the last command displays a 'finished' statement indicating that the scroll file has finished

 

run scope.exe with the following command

scope -x startup.scr

this says to run scope and execute the scroll file startup.scr

answer 1. adopt an equatorial alignment and turn on the power supply to the motors when instructed

 

start the scroll file by pressing the left mode key on the handpad or the 'B' key on the keyboard

as you do so, tracking will start

 

move onto the next scroll command via the left mode key or the '<' key on the keyboard which loads and displays the bstars.dat file, where you pick a nearby bright star

 

now center the telescope on the star using the handpad slew and microstepping speed switch and the four direction buttons

 

after centering, move onto the next scroll command via the left mode key or the '<' key on the keyboard which resets the telescope's coordinates to the star's coordinates

 

now move onto the next scroll command using handpad or keyboard, and select an object from the messier.dat file; the scope will slew to it

 

finish by moving on to the last scroll command which displays the finish command

 

exit the scroll function by pressing any key

 

 

Your First Altazimuth Initialization and Goto Run

 

create a scroll file called startup.scr composed of these commands:

data_file bstars.dat

1i

trackon

data_file bstars.dat

2i

move_file messier.dat

prompt finished

the first command says to find an object from the bright star data file

the second command says to initialize position #1 using the star's coordinates

the third command turns on tracking

the fourth command says to find another object from the bright star data file

the fifth command says to initialize position #2 using the star's coordinates

the sixth command says to move to a Messier object

and the last command displays a 'finished' statement indicating that the scroll file has finished

 

a. run scope.exe with the following command

scope -x startup.scr

this says to run scope and execute the scroll file startup.scr

 

b. answer 3. adopt no alignment and start from scratch and turn on the power supply to the motors when instructed

 

c. start the scroll file by pressing the left mode key on the handpad or the 'B' key on the keyboard

as you do so, the program loads and displays the bstars.dat file, where you pick a nearby bright star

 

d. now center the telescope on the star using the handpad the four direction buttons and halfstep/microstep speed switch

 

e. after centering, execute the next scroll command to initialize position #1 via the left mode key or the '<' key on the keyboard

 

f. execute the next scroll command, setting up tracking to start as soon as the 2nd initialization is accomplished

 

g. move onto the next scroll command using handpad left mode switch or keyboard '<', and select the 2nd object from the bstars.dat file

 

h. center the telescope on the 2nd star by using the handpad as before

 

i. after centering, execute the next scroll command to initialize position #2 via the left mode key or the '<' key on the keyboard

 

j. now move onto the next scroll command and select an object from the messier.dat file; the scope will slew to it

 

k. finish by moving on to the last scroll command which displays the finish command

 

l. exit the scroll function by pressing any key

 

 

The Handpaddle

 

The handpaddle has four momentary-on buttons that move the scope in altitude and azimuth. The center switch selects between fast halfstep slewing and smooth slow microstep centering.

The upper two momentary switches select different actions based on the software's current handpad status.  'Left' is the left mode key, and 'right' is the right mode key.

 

 

Handpad mode can be:

  • off: mode switch does nothing
  • init auto on: pressing either the left or right mode buttons inits the next available init, for instance, if init 1 already accomplished, then init 2 done, if all inits done, then closest init to the new init is replaced by the new init
  • init 1: pressing either the left or right mode buttons does an init # 1
  • init 2: pressing either the left or right mode buttons does an init # 2
  • init 3: pressing either the left or right mode buttons does an init # 3
  • polar alignment: steps through the polar alignment procedure for equatorial mounts – see the section on equatorial startup
  • analyze on: if on, the handpad will save a position based on input equatorial and current altazimuth and sidereal time values to the analysis.dat for later mount error analysis
  • guide on: pressing the left mode button puts the hand paddle into guide mode, where the push buttons act to move the scope very slowly in right ascension and declination by adding or subtracting from the current tracking rate - speed is set by GuideArcsecSec in the config.dat file - moving the switch momentarily to the right ends guide mode, and causes drift values to be calculated, put into use, and displayed - These drift values are used to null out any temporary residual drift due to imprecise initialization of a portable setup or imprecise mount construction, then the scope is moved back to the original Ra, Dec coordinates
  • guide stay on: as 'guide on' but the scope stays put, adopting the new Ra, Dec coordinates of wherever the guiding corrections took the scope
  • guide stay rotate on: when turned on by a press of the left mode hand paddle button, the program will rotate the hand paddle buttons by the guide rotate angle, which is slaved to the field rotation angle
  • guide drag on: drift or drag values from the config.dat file are added to the current drift when the left mode button is momentarily pressed, and subtracted from the current drift values when the right mode switch is momentarily pressed; this is for knife edge autoguiders that rely on the guide star being constantly dragged back across the knife edge
  • scroll tour: if the left mode button is pressed, this will cause the scope to continuously move through the scroll file; to stop move press the right mode switch or press any key on the keyboard
  • scroll auto tour: if the left mode button is pressed, this will cause the scope to continuously move through the scroll file, repeating the scroll tour endlessly; to stop move press the right mode switch or press any key on the keyboard
  • grand tour: the mode switch moves forward to the next object in the data file, or backwards to the previous object, depending if the left or the right mode button is pressed
  • record equat: the mode switch will write the current scope equatorial coordinates to the record.dat file when either left or right mode button is pressed
  • toggle track: the mode switch on the handpaddle can be used to turn tracking off and on (left button = on, right button = off)
  • FRFocus mode: where the mode buttons actives/deactivates FR and focus motor control, where the up/down controls the field rotation motor and the CW/CCW controls the focus motor

 

 

The Software

 

The software has gone through several reincarnations, starting as 6502 assembly code for the Commodore 64, when the Commodore 64 first came out (I bought my Commodore 64 for at the time incredible sales price of $600, and with no floppy or tape drive, and had to reenter my programs everytime I turned the computer back on!). Unfortunately, the stalwart 2 megahertz 6502 processor could only muster recentering the object every couple seconds. The dream of an inexpensive amateur built altaz drive seemed far away, until the AT class machines arrived. The code was then rewritten in C. Later, the code went through its C++ object oriented life on a 386. Now, in interests of making the code as universal and easy to port, the code lives in ANSI C. Functions that are directly tied to low level hardware such as the parallel port and bios clock, use pointers to access the appropriate memory locations. For non-DOS machines, some modification of these parts of the code will be necessary.

The servo version of the software was started in May 2001.

The program is based on the popular two-star conversion algorithm, based on an Feb '89 Sky and Telescope magazine article by Toshimi Taki, to translate between altazimuth and equatorial coordinates. The scope need only be accurately aligned on two widely separated stars using a high power reticle eyepiece; there is no need to level the base. The scope can also be initially set on a planet, say, soon after sunset. After a couple of minutes of microstepping recentering, the scope is initialized on the same object again. The scope will continue to track the object, keeping it in the eyepiece field of view for an hour or two.

In addition, the program will use a third initialization point, for more accuracy than the two star initialization would otherwise give. Any of the three initialization positions can be reinitialized as often as wanted.  All init positions are saved to a file for later analysis.

The conversion algorithm allows the input of mount construction errors. For instance, one altitude bearing may be a bit lower than its counterpart. Normally this would cause a pointing error, but the conversion algorithm will compensate once given the amount of the error.   The program can refine the altitude angle based on the initialized positions.  Per the original Taki routine, the starting azimuth can be any number.  Now the starting altitude only needs to be set to within 10 degrees or so.  This altitude offset algorithm was contributed by Dave Sopchak.  This is the 'Z3' error (offset in elevation between the optical axis and the mechanical axis) so named by Taki.  Taki's Z1 (axes non-perpendicularity) and Z2 (offset in horizon between the optical axis and the mechanical axis) errors are also calculated after at least three initializations are done.

The software is event driven by either keyboard or hand paddle input. If no events occur, then the scope moves to the current equatorial coordinates. If the coordinates remain unchanged, the scope tracks. If new coordinates are entered, the scope slews. Slews can only be interrupted by pressing or releasing a button on the handpad, and by the keyboard, and by the altitude or azimuth limits if the interrupt driven halfstepping option is turned on. Tracking should be paused if hot-keying out to another program. When the program is exited, the scope's altazimuth coordinates are saved along with any initialized positions.

The software handles backlash and handles periodic error correction, or PEC, for both axis. A 'guide' function is also included so that guiding for a minute or two nulls occasional tiny residual drift.  Drift can be manually entered in both equatorial and altazimuth coordinates.

 

 

Files Used

 

scope.exe - the executable program

*.c, *.h - source code

config.dat - the configuration file

bstars.dat, messier.dat, are object catalog files along with other *.dat files too numerous to mention

*.scr - scroll files

*.cdf – comet definition files that include comet positions and equatorial drift values

inithist.dat - a history of all initializations, in degrees (Ra, Dec, Alt, Az, Sidereal Time, reason for init)

analysis.dat - a file of recorded positions triggered by the handpaddle that is used for later mount analysis

analysis.err - errors calculated from the analysis file

altazec.dat - correction file for altitude errors vs azimuth (rocker base levelness)

altaltec.dat - correction file for altitude errors vs altitude (altitude eccentricity, tube flexure)

azazec.dat - correction file for azimuth errors vs azimuth (azimuth eccentricity)

pmc.dat - a file containing corrections used by the pointing model corrections routine

pec.dat - the file used for periodic error corrections to the motors

guidealt.dat and guideaz.dat - a record of guiding corrections

outguide.dat - list of exit positions from Project Pluto Guide

input.dat - a record of all Ra, Dec, and name, that appear in the equatorial input fields

YYMMDDa through YYMMDDz.log, ie, 000313a.log - observer's log: a copy of the input.dat file, saved at program exit

record.dat - recorded scope equatorial scope positions via the handpaddle

encoders.txt - a recording of encoder threshold violations for each session

trenc.txt - file containing encoder readings per each microstep for all windings

polealgn.txt – file containing record of polar alignment procedure results

 

 

Data object file layout

 

(a single blank space must start each line):

 

 Ra_hrs Ra_min Ra_sec Dec_deg Dec_min Dec_sec name or comment

ie,

 12 23 14 33 53 09 test position

I have a conversion program available for the asking that will convert Megastar and Sky commander file formats to scope.exe's data file format.

For scroll file data layouts, see the webpage on operating the software - subpage scrolling.

Comet file layout (a single blank space must start each line):

 Ra_hrs Ra_min Ra_sec Dec_deg Dec_min Dec_sec Drift_Ra_hrs Drift_Ra_min Drift_Ra_sec Drift_Dec_deg Drift_Dec_min Drift_Dec_sec name or comment

ie,

07 14 31 +23 +12 +11 +00 00 +2 -00 -00 -1 31P Schwassmann-Wach

note that drift is per hour

 

 

Main program execution loop

 

In detail, the sequence of events for each bios clock tick (which occurs about 18.2 times a second) is:

  • add equatorial drift to current equatorial position,
  • update a status field or work with the optional encoders: either a calculation or a direct write to video memory or reading the encoders or setting current coordinates to encoder coordinates,
  • check for keyboard event, if none,
  • check for handpad event, if none,
  • check for IACA event, if none,
  • check for LX200 events and process all accumulated commands since last bios clock tick, but if none,
  • check to see if field rotation motor needs pulsing,
  • then move to current equatorial coordinates by:
  • calculate new altazimuth coordinates based on new sidereal time that was calculated when bios clock tick occurred,
  • find difference between current altazimuth coordinates and newly calculated altazimuth coordinates,
  • find distances to move in each axis and decide between microstepping or halfstepping, if microstepping,
  • then check for backlash, if none,
  • then spread microsteps over the bios clock tick by dividing # of microsteps into MsTicksRep, the count of PWM's per bios clock tick: if microsteps exceeds MsTicksRep, then reduce # of microsteps per fullstep up to halfstep, and if necessary, halfstep pulse the motors,
  • continuously generate PWMs, checking for bios clock tick at end of each PWM: a PWM consists of outputting to parallel port an already calculated array of ons and offs to the stepper motors' windings,
  • when bios clock tick occurs, PWMs end and new sidereal time is calculated,
  • the field rotation motor calculations are done at the start of the microstepping function, and at the end of every PWM, a check is made to see if the field rotation motor needs pulsing,
  • current altazimuth coordinates updated to reflect # of microsteps that actually occurred, current altitude coordinate updated to include refraction,
  • current altazimuth coordinates updated to include any backlash compensations already moved,
  • current altazimuth coordinates updated to include PEC based on steppers rotors' position,
  • current altazimuth coordinates updated to include altazimuth drift,
  • current altazimuth coordinates updated to include any guiding motions

 

 

German Equatorial Mount Meridian Flip

 

The program handles GEM mounts and their required meridian flip. It does so by changing the altitude and right ascension in low level functions. Right Ascension is rotated by 180 degrees.  The altitude is mirrored across the pole so that a declination of 80 is an altitude of 100 degrees .After a flip, the altitude will read in the range of +90 to +180 to higher values (-90 to -180 and lower if in the southern hemisphere). The Declination and Right Ascension will be calculated and displayed correctly. The hand paddle buttons are not automatically swapped in case autoguiders are wired in.  However, the hand paddle buttons can be swapped after the GEM flip by selecting the menu option 'flipbuttons' in the control section.

 

To do the flip automatically:

  1. 1.Either turn on autogemflip in the config.dat file, or via the menu option: motors | autogemflip.  The meridian flip will occur automatically, starting with a move to the pole, followed by the move across the meridian, ending with the move from the pole.  You will have to cancel each slew in sequence if you wish to abort.
  2. 2.Or, select the menu option: move | gemflip.

 

To do the flip manually:

  1. 1.Turn off tracking. 
  2. 2.Select the GEM flip menu option.
  3. 3.Position the telescope in declination so that the tube is roughly pointing at the celestial pole, for instance, a declination of 80+ degrees (-80 degrees if in the southern hemisphere). 
  4. 4.If using the hand paddle to position the scope, or encoders are operational, the Ra and Dec should agree with the equatorial coordinates displayed before starting the GEM flip.  
  5. 5.Move the scope 180 degrees in azimuth or 12 hours in right ascension. 
  6. 6.Move the scope across the pole in Declination until the scope is roughly pointed properly. 
  7. 7.Re-center the object.  
  8. 8.If the hand paddle was not used to position the scope, or no encoders are present, you must do a 'reset to equat' to set the altazimuth coordinates properly.  
  9. 9.The altitude will display a reading greater than 90 degrees (southern hemisphere users will see a reading below -90 degrees), and the Declination will display a reading less than 90 degrees (southern hemisphere users will see a reading greater than -90 degrees).
  10. 10.Tracking and goto functions can be resumed.
  11. 11.Hand paddle up down buttons can be reversed if desired by going into the menu section: control and selecting the flipbuttons option.

 

Program startup and shutdown:

You may start with the scope on either side of the meridian, and end with the scope on either side of the meridian.  It is preferable to end with the scope on the same side of the meridian that you expect to start next time with.  If you do not, read the next section.

 

Synchronizing software and telescope to same side of meridian:

  1. 1.turn off tracking
  2. 2.reverse the GEM flip (if it was off, turn it on, and visa versa)
  3. 3.enter appropriate input equatorial coordinates where the scope is actually pointing (if flip is off, RA should be less than sidereal time, if flip is on, RA should be greater than sidereal time)
  4. 4.do a 'reset to equat'

 

 

Drift/Guiding/PEC

 

After the initialization, typically high power tracking will show two residual errors.

The first is a slow steady drift, commonly a couple of arcseconds per minute of time. This is caused by small initialization errors such as not precisely centering the star in the crosshairs when initializating, and mount errors such as the azimuth and altitude axes not being exactly perpendicular.

The second is periodic error caused by the gearing, commonly the worm not being centered on its shaft or butting the gear properly. This shows as a slow oscillation of the star back and forth across the crosshairs.

The program has both periodic error and drift error cancellation features.

The PEC, or periodic error correction, file consists of two columns. The first is a counter, 0 to 199, that indicates the index. The index is the resolution or number of steps that the PEC is divided into. Commonly this is spread over a single motor rotation or 200 fullsteps, but may be spread over any number of fullsteps. For instance, spreading the PEC over 400 fullsteps would cover the PEC caused by a double turn worm. Set the number of fullsteps that a PEC cycle will cover with the variable FullstepsPerPECArray. Mark a synchronization point on the motor shaft or the worm shaft that indicates the starting position, corresponding to an index of 0. Next to the index numbers in the PEC.DAT file are numbers that that indicates the amount of PEC in tenths of an arcsecond to apply at each index. For instance, if a single turn worm causes 2.3 arcsecond of periodic error with the motor shaft at a 45 degree angle, then index 50 would have a value of 23 (assuming 200 fullsteps per motor revolution). See the PEC.TXT file to see how to enter these values. The altitude PEC comes first, with indexes of 0-199, then the azimuth motor comes with indexes of 0-199.   Remember that you have 200 PEC values per axis, no matter how many fullsteps you spread the PEC over.

 

 

PEC notes by Chuck Shaw:

 

"I am Chuck Shaw. I recently finished converting my 14.5"f/5 dob into an AltAz system using Mel's plans and software. I concur, it is MUCH more of a "system" than I ever imagined!!!

I also just went through coming to grips with nulling out PE and I have a few "lessons learned" that might be helpful....

 

1. Use LOTS of power when running in Guide mode to build Guide.dat I used two barlows stacked into each other (a 1.7x and a 2.8x and a 12mm illuminated reticle eyepiece and an ~1808mm scope gives about 720x...... use AT LEAST that much if you can.... (Slightly defocused blobs are easier to guide with than points anyway!!)... You ARE using an illuminated reticle EP aren't you??? Do not try to keep a focused image of the star in the center of the box. Either defocus till the star fills the box, or put the star in the center of an intersection of two lines, or put it in a "corner" where its just touching two lines. Try different techniques to see which works best for you. I found the biggest source of inconsistencies in my data sets was ME and my poor guiding!!!!!! My reaction times usually had the wrong direction and were late..... (duh......) :-) Play with the orientation of the handpaddle also to see if a "fly to" type of guiding is easier.....

 

2. Use the guide routine several times to nail the drift as well as possible BEFORE you try to write a file to capture PEC data.

 

3. For Azimuth data collection, be sure and aim the scope due south, near the celestial equator. This will minimize motion from Alt, and maximize the motion in AZ....

 

4. Shell out to DOS without stopping tracking after a Guide run, Do a "copy c:\guide.dat PE-AZ1.txt", then a copy "c:\PEC.txt guide.dat" (say YES to overwrite) , then type exit and SHAZAM the scope will slew back to the star you were guiding on and you are ready for another run!!!!! Name the next file PE-AZ2,txt, etc...... This allows you to capture several runs very quickly, and any system config changes between runs are minimized.

 

5. VERY CLOSELY inspect for any "wobble" in your worm bushing. I use 359:1 Byers gears. I had to make the bushings for the worms and discovered the bushing has a tiny bit more slop than it should (the clearance is about 0.001 and Byers tells me it should be about 0.00005). I decided to fabricate a "tailstock" out of a small aluminum angle and a brass machine screw. I ground a point on the end of the machine screw and it goes through the bracket and presses into the center ground dimple in the end of the worm. That made a HUGE difference in obtaining repeatable data. I think the problem was the worm's wobble was somewhat random. That, in turn changes the mesh slightly, and that induces PE.... If your worm is on a shaft with bearings/bushings at both ends, you still need to look for this!

 

6. Look at the couplings for the motor to worm. If they are flexible and you are using the motor bearings to stabilize the worm at all (if there is slop in the bushings you are in this category), you need to go to a precision coupling. I bought several commercial ones and found they were slightly out of round!!!! This in itself introduced PE!!! Thats OK though, since the Software will compensate for it.

 

7. Reinitialize the motor/worm positions in between runs to make VERY sure that you know what position corresponds to the 0 position in the guide.dat data I failed to do this a couple of times and got accurate but skewed curves..... You have to remember to turn off PEC and then back on after the shafts are positioned !!!!!!

 

8. Remember the data take will NOT start at zero unless you time it that way. Do not try to get cute and time it, just start it and use your spreadsheet program to cut the four runs of data into separate columns and then move them up/down in the spreadsheet to line up the steps in each run. Then delete the step number columns (all but the far left one). Graph the 4 curves and throw out any that are obvious guiding errors. Then average the rest and you are there!!!

9. Remember after the data file is copied into a file called PEC.dat to reinitialize the shafts to their zero position. I keep forgetting to do this!!!! The system also seems to get lost after a couple of hours of operating.... An occasional reinit of the PEC alignment takes less than 15 sec and helps "clean up" things. I should not have to do this but......

 

I have the sets of curves from my data takes I can send you. I was having the inconsistencies in taking data initially, and then the phase skewing till I stabilized the worms too.... perplexing, but a methodical working on each potential source of PE will find the culprit!!!

 

The performance of the system is simply astounding when all is completed..... I agree with Mel that software timing errors are the least likely culprit. Too many times I wanted to blame the software for problems but Mel has simply done too good of a job!!!!! It was ALWAYS something I did!!!! (don'tcha hate it when that happens!!??) :-)"

 

Updating the PEC data on the fly

 

Much has been done to enhance the generation of periodic error correction on the fly.  The two principal errors affecting guiding accuracy can be fixed at one time: the periodic error of the gear that the stepper connects to, and drift.  The drift may need to be tweaked after pointing to another section of the sky.

There are two methods to choose from: fixup an already generated PEC or generate a PEC from scratch

The PEC in use by scope.exe can be displayed by using the hotkey 'c'.  If you wish to save this PEC to PEC.DAT, answer yes.

To synchronize the PEC with the motors, use the handpaddle to move both motors to their respective synchronization angle, then select 'p' or pec on/off on the keyboard.  PEC is now synchronized with the motors and will remain synchronized unless the motors stall.

To generate PEC from scratch, or to to fixup an already generated PEC, put the hand paddle into guide+save mode, and guide until at least two high beeps and two medium beeps are heard, preferably until a low beep is heard, indicating that the guide array has been filled.  The higher pitched sound indicates each time the altitude motor crosses the synch point.  It must cross twice in order to generate a full motor rotation of data.  A medium pitched sound is used to indicate the azimuth motor's crossing of the synch point.  Multiple rotations of the motor will yield multiple PEC analysis files.  Better results may be obtained by focusing on only one axis, then repeating the entire procedure for the other axis.

If using an equatorial telescope, or using an altazimuth telescope where one axis is moving very slowly (altitude axis when on the meridian for instance), then you will have to either misalign the scope or find another section of the sky where both motors are moving at a nice rate.

Use the 'u' and 'v' hotkeys to inspect the just completed guiding corrections.  If you wish the guiding corrections will be saved to PECALTxx.TXT or PECAZxx.TXT files, where 'xx' starts at '00' and is incremented for each file saved.  This allows you to build several iterations of guiding corrections in order to average them for a more accurate PEC.  In addition, the drift should shrink to zero as it is refined. Use the 'e' and 'f' hotkeys to read in all the PECALTxx.TXT or PECAZxx.TXT files, average them, then display the results graphically, including how the pec will look if the averaged files are added in.

Use the 'L' hotkey to reload PEC.DAT.

Set TestString to "PreloadGuidexx.dat" to preload guidealt.dat and guideaz.dat upon program startup.  This gives an opportunity to analyze and pull out pec data from earlier guiding efforts.

 

 

Improve Local Finding/Tracking Accuracy

 

Slew to a bright known star near the object.

Select new coordinates by using one of the data files, or by calling Guide.bat if available, or by inputing equatorial coordinates manually.

Choose Reset:equat - this will adjust the altazimuth coordinates of the telescope.  Alternatively if you do not wish to change the altazimuth coordinates (for instance, you are using encoders and are positive that the encoders are working properly), choose to re-init #1 or #2 or #3 - this will update the initialization of the scope vs the sky and result in accurate movements near the initialization points.

Select Coord:equat to enter coordinates of new object to view.

Choose Move:equat to slew to object.

This nearby slew, if carefully done, will be accurate to the arcsecond level.

Alternatively, if you know the distance from one object to another, say, object 'x' is 1 degree north of object 'y', then center object 'y', and apply the coord:offset equat menu item then move:equat to make the precise offset movement.

 

 

Improving the initializations - Optimizing Goto and Tracking

 

Most amateur telescopes point haphazardly. Sometimes the object is in the field of view and sometimes it's nowhere to be found. A telescope must be precisely built: axes perpendicular, round altitude bearings, matched rocker side bearing points, flat rocket base, rigid tube assembly, and coincident optical and mechanical axes. The most popular form of telescope, the manually pushed Dobsonian with teflon and formica bearings, does not require this kind of precision construction. Consequently, pointing accuracy generally falls between 1/4 degree and 1 degree. In addition, in a motorized scope, the motors and gear train introduce backlash and periodic errors in pointing and tracking. Consistent pointing to one arcminute is a worthy goal, giving confident centering of objects on small CCD chips and in high power eyepieces. If necessary, offsets accurate to arcseconds are easily obtained by first centering on nearby objects. Blind across the sky arcsecond accuracy enters a new realm. Here a whole barrel of corrective factors must be actively calculated and applied. While necessary for large professional scopes, this level of arcsecond accuracy is not needed by the serious amateur.

 

Errors to either eliminate by better design and construction, or by software compensation in order of importance and in order that they should be tackled:

 

ü       gear backlash

ü       gear periodic error correction (called PEC)

ü       for stepper motors, physical variations in the quarterstep spacings over the sequence of windings (called QSC for QuarterStepCorrection)

ü       drift

ü       atmospheric refraction

ü       axis misalignment (one side of the rocker is higher than the other) (called Z1 or axis misalignment)

ü       discrepancy between the optical and mechanical axis in the horizontal axis (called Z2 or azimuth offset)

ü       discrepancy between the optical and mechanical axis in the vertical axis (called Z3 or altitude offset)

ü       altitude vs. azimuth error correction (dobsonian rocker base levelness) (called ALTAZEC)

ü       altitude vs. altitude error correction (tube droop, altitude bearing unevenness) (called ALTALTEC)

ü       azimuth vs. azimuth error correction (azimuth drive gear eccentricity) (called AZAZEC)

ü       residual errors, captured as pointing model corrections (called PMC)

 

My software compensates for gear backlash. Move the motor in one direction until all backlash is taken up. Note the displayed Current Altitude or Azimuth value. In daylight, sight through the telescope at a distance sharp edged landmark. Carefully and slowly move the motor in the opposite direction until the telescope begins to move. Subtract the updated Current Altitude or Azimuth value in degrees to get the backlash value. Multiply by 60 and enter the resulting value in arcminutes in the configuration file.

 

My software offers extensive periodic error correction, called PEC. See the PEC webpage to learn how to map the periodic error and how to correct for it.

 

Telescope coordinates are translated to celestial coordinates using an alignment model. This model will be very simple in the case of an equatorially aligned telescope where altitude matches declination and azimuth matches hour angle (local sidereal time minus right ascension). For altazimuth telescopes, the modeling is more complex. Lesser used models include algorithms such as matching angular separation, and, more simply, tracking via automated following. More commonly used is a model based on spherical trigonometry formulae. These formula call for entering the latitude and longitude of the observing location, precisely leveling the base, then finding stars using an accurate clock. 

 

I use the model popularized by Taki. He uses a matrix of directional cosines to convert between telescope and celestial coordinates. The telescope pointing values are calculated from the telescope's altitude and azimuth, and time at the moment the object is precisely centered in the field of view. For instructions on how to initialize the telescope to the celestial sphere, see the operate software - equat startup, or, operate software - altaz startup webpages.

 

Drift is caused by pointing errors. Positions to track to, or, velocities to track by, are calculated based on assumptions of how the telescope is aligned to the sky. Inaccuracies in this alignment will cause the object to appear to slowly drift away from the center of the field. Drift can be nulled by setting my software in the guide + drift mode, and following an object for a couple of minutes. Centering the object, then pressing a button on the hand paddle, causes drift to be calculated and automatically adopted. Use drift nulling to precisely track an object for long exposure imaging on CCDs or film. Drift will slowly change as the telescope tracks for hours into a new portion of the sky. Drift should be set to zero before slewing to new object.

 

Refraction is caused by the atmosphere, making objects near the horizon appear higher in the sky than they really are. Don't turn this on unless you have an altazimuth mount that is reasonably level. Also, don't turn this on until backlash compensation is working.

 

One advantage of the Taki routines is that the azimuth need not be precisely set at startup time. That is, one does not have to set zero azimuth precisely north or south. Instead, the routine relies upon the difference between azimuths. So the starting azimuth can be any value since we need only measure the change in azimuth as the telescope moves. Unfortunately, the starting altitude needs to be precisely known. However, by using the idea of matching the angular separation given by the celestial coordinates to the angular separation given by the telescope's coordinates, the correct altitude can be deduced. This means that the starting angle of neither axis need be precisely known at startup time. The altitude offset is typically done once each evening, as soon as the two stars are initialized. It is best to use two stars at about the same altitude with widely differing azimuths. The altitude offset is called Z3 by Taki. By investigating different scenarios, it is clear that deriving the altitude offset from two precise star positions is better than averaging discordant offsets from a group of casually taken star positions.

 

Z2 is the azimuth offset error, or the difference between optical and mechanical axis in the horizontal plane. Z1 is the degree of misalignment between the telescope's two axis. Think of one side of the rocker arms being higher than the other side: the axes are no longer exactly perpendicular. Z1 causes a growing azimuth error as the scope is moved towards the zenith, while Z2 is a constant azimuth error. However, as the scope is aimed further skyward, while Z2 itself stays constant, the affect on the scope's pointing is to make the azimuth error appear to grow. The lines of azimuth shrink as the scope approaches the zenith, so the apparent azimuth error increases. This mimics the Z1 or axis misalignment closely. Not only that, but investigating Taki's coordinate translation matrices shows that Z1 and Z2 are tangled and cannot be separated or solved for independent of each other. Instead, an iterative approach must be adopted, not only in Taki's routines themselves when converting from equatorial to altazimuth coordinates, but also in any routine that attempts to analyze sky positions to deduce the Z1 and Z2 errors.

Consider the following graph. Here I derived Z1 and Z2 errors that result if the scope is centered on a star at 10 degrees elevation, and on a star at 80 degrees elevation. Note that opposite Z2 mimics Z1. The difference between the Z1 and Z2 curves is very subtle, amounting to a handful of arcminutes at a between elevation. The challenge of calculating the proper Z1 Z2 is further compounded when considering that real world Z1 Z2 values are likely 1/4 to 1/2 of those used to generate the graph, that Z1 and Z2 are likely present in some unknown mix, and, that the accuracy of azimuth measurements at high elevations is reduced by the cosine of the elevation. At 80 degrees elevation, measurements will be almost six times less accurate.

 

Measure Z1 and Z2 after the altitude offset and previously mentioned errors have been taken care of. Use a new set of three stars at about the same azimuth with differing altitudes from close to the zenith to the horizon - just the opposite of the best way to go about measuring Z3. Always avoid the equatorial and altazimuth poles for star alignments. These numbers will not change from night to night and can be measured once and stored in the configuration file. Changing the collimation, or moving the mirrors, or doing anything to change the horizontal angle between the optical and mechanical axis will necessitate re-measuring Z1 and consequently Z2. The Z3 - Z1-Z2 cycle can be repeated based upon another round of two and three star initializations.

While it may appear troubling that Z1 Z2 cannot be more assuredly and accurately determined, because the values are so easy to substitute for each other, the predictive ability is best served by using Z1 Z2 values that do result in the lowest rms pointing error.

The Z1Z1Z3 errors, the ALTAZEC errors, the ALTALTEC errors, and the PMC errors all rely on the analysis file.  To view the analysis file, use the menu option graph analysis.  If the analysis file looks OK, you can then proceed to correct for the next error in turn. The errors must be corrected for in order, though you may skip any of the error corrections.

To interactively change Z1, Z2, and Z3 while viewing the results, save a dozen analysis points, then go into the init - graph Z1Z2Z3 menu option.

 

Five graphs are displayed:

1. a graph of altitude and azimuth errors plotted on a 30 degree grid pattern of altitude and azimuth, where green is altitude and blue is azimuth errors; an error bar up or to the right indicates that the scope aimed too high in value, azimuth is plotted left to right from 0 to 360 respectively, and altitude is plotted from top to bottom, +180 to -180 respectively (areas above +90 and below -90 are for German equatorial mounts after they have been flipped across the meridian);

2. just to the right, a vertical graph of altitude vs. altitude errors, where the altitude errors are plotted based on the telescope's altitude;

3. to the far right, a vertical graph of azimuth vs. altitude errors, where the azimuth errors are plotted based on the telescope's altitude;

4. below the main grid, a horizontal graph of altitude vs. azimuth errors, where the altitude errors are plotted based on the telescope's azimuth;

5. at the very bottom, a horizontal graph of azimuth vs. azimuth errors, where the azimuth errors are plotted based on the telescope's azimuth;

 

Here's a plot of Tom Krajci's 16 inch - RMS error is about 3 arcminutes:

 

Looking at the far right graph, Z1 and Z2 can be analyzed. A tilt in this graph indicates that the Z1, mount axis misalignment, might be changed.

Users report that once Z3, Z1, and Z2 are nailed, Goto accuracy across the sky is significantly improved, placing objects in the center of the field at high powers.

After Z1, Z2, and Z3 are set, the ALTAZEC and ATLALTEC and PMC correction curves can be added.  These must be either ignored or added in the following order:

Z1Z2Z3 correction

ALTAZEC correction

ALTALTEC correction

AZAZEC correction

PMC correction

General Pointing Model Corrections, called PMC, can now be analysized and adopted.  Generate a new analysis file by going to the menu option init / purge analysis, then making analysis points in a grid back and forth and up and down the sky, with points about 30 degrees apart.  Go to the menu option init / graph PMC.  Here you will see the errors displayed.  If the errors look common sense, then you may generate the PMC by using the menu option init / AnalysisToPMC.

 

 

Grand Tour

 

By putting the hand paddle in grand tour mode, and loading a data file, the scope can be commanded to move from object to object in the data file, by merely flicking the hand paddle mode switch to the left. This is useful for planned evening observations, and sequences of fields of objects such as galaxy clusters. By flipping the hand paddle mode switch to the right, the scope will return to the previous object.

To create data files for grand touring, you can manually edit your own files, naming them with the *.dat extension. Follow the coordinate layout that you find in bstars.dat and messier.dat.

You can record positions that you visit during an observation run by using the handpad mode 'record equat'. Record a position by flipping the mode switch on the handpad.

You can also record positions if you use certain planetarium programs. Project Pluto's Guide's positions are automatically recorded when running Guide from inside scope.exe. Other programs' output can be run through data converter programs like ngcscope. 

 

Data files

 

A number of data files are available, many of them contributed by amateurs who have built the system.

They include:

BSTARS (24 brightest stars)

MESSIER (messier catalog)

NGC0, NGC1, NGC2, NGC3, NGC4, NGC5, NGC6, NGC7 (ngc catalog)

IC (ic catalog)

5MAGSTAR (all stars 5 magnitude and brighter)

18TO2LOW, 0TO8HIG, 12TO18LOW, 0TO7LOW, 7TO12LOW, 9TO23HIG

A_H_BSC, I_Z_BSC (bright star catalog)

00000XL and 00000L (first file is all stars 6.5 mag and brighter north of -40 dec, the second file consists of stars only with Bayer (Greek) or Flamsteed (Arabic numeral) designations)

HICKSON (hickson galaxies)

PLANETS (run planets.exe to get current planet positions)

ARP (arp peculiar galaxies)

PN19TO23, PN00TO11, PN012TO1, PN17, PN18  (planetary nebulae catalog)

PALGC (palomar globular clusters)

constellation files designed by constellation abbreviation

mutiple star files designed by 'MS....dat'

many more files can be found in the file repository of the scope-drive@yahoogroups.com group

 

 

Scrolling

 

Scroll files are used to move through a series of scrolling, or 'fly-over' motions, and, are used to automate initializations, analyses, and other actions. 

A scrolling flyover motion is a smooth microstepping action. By flipping the mode switch to the left and back to center, the scope will scroll to the next position in the *.scr file, over the number of seconds shown in the *.scr record. If the switch stays in the left position, the scope will automatically move from position to position. This is best used for scans of extended objects or fields such as the Cygnus Loop, and the Andromeda Galaxy.

Scope.exe can start with a scroll file.  Use the syntax:  scope.exe -x <scrollfilename>, ie, scope.exe -x nan.scr

In addition to the handpaddle mode switch, hotkeys can also be used:

'H' to bring up hand paddle modes

'm' to switch to scroll tour

'S' to load a scroll file

'B' to begin a scroll file

'L' to continue onto the next scroll action (simulates the leftkey of the handpaddle)

'<' to simulate the leftkey of the handpaddle

'>' to simulate the rightkey of the handpadle

As of the May 12, 2000 version, it is not required to have two positions initialized before executing a scroll file, and starting a scroll file does not force tracking on anymore.  This has implications for scrolling.  For instance, some scroll actions do not make sense until the program has been initialized, or if the scope is not tracking.

In the scroll file, any line starting with a semi-colon ';' is ignored.

 

Here are the available commands:

  • absolute move to altazimuth coordinates: written as abs_altaz,
  • offset move to altazimuth coordinates: written as off_altaz,
  • absolute move to equatorial coordinates: written as a,
  • offset move in equatorial coordinates: written as o,
  • drift values in altazimuth coordinates; written as drift_altaz,
  • drift values in equatorial coordinates; written as drift_equat,
  • initialize position 1: written as 1,
  • initialize position 2: written as 2,
  • initialize position 3: written as 3,
  • initialize position 1 using input equatorial fields: written as 1i,
  • initialize position 2 using input equatorial fields: written as 2i,
  • initialize position 3 using input equatorial fields: written as 3i,
  • slew to a data file's closest object to current equatorial position: written as f1,
  • slew to a data file's closest object to current equatorial position that is not the same as the current equatorial position: written as f2,
  • slew to a data file's closest object to current equatorial position that has not been visited in the current session: written as f3,
  • turn tracking on: written as trackon,
  • turn tracking off: written as trackoff,
  • turn off pause and sound notification when moving to new scroll entry in auto scroll: written as auto_scroll_alert_off,
  • save a position for analysis: written as analyze,
  • calculate and remove altitude offset: written as alt_offset,
  • turn on auto scrolling: written as auto_scroll,
  • turn off auto scrolling: written as auto_scroll_off,
  • move motors to zero out PEC indeces, written as move_zero_pec,
  • saves current equatorial coordinates, written as save1;
  • retrieves the saved equatorial coordinates, written as restore1;
  • adjust the microstepping speed, written as msarcsecsec,
  • set the handpad mode, written as handpad_mode,
  • move in halfsteps: written as hs,
  • new equatorial coordinates, written as new_equat,
  • new altazimuth coordinates, written as new_altaz,
  • prompts for input equatorial coordinates: written as set_equat,
  • prompts for input altazimuth coordinates: written as set_altaz,
  • resets to input equatorial coordinates: written as reset_equat,
  • resets to input altazimuth coordinates: written as reset_altaz,
  • resets to home coordinates: written as reset_home,
  • prompts for an object in the specified data file: written as data_file,
  • prompts for an object in the specified data file and moves to it: written as move_file,
  • displays a prompt on the screen: written as prompt

 

Here are the commands' syntax:

 

Here's the format for a move to absolute altazimuth coordinates:

abs_altaz   <AltitudeInDecimalDegrees>   <AzimuthInDecimalDegrees>   <TimeForMove> <comment>

ie,

abs_altaz 45 100 0 <comment>

This will move the scope to altitude of 45 degrees, azimuth of 100 degrees.  Since the time is zero seconds, halfstep slewing will be used.  If the time to move allows for microstepping movement, then the scope will smoothly microstep over the allotted time to arrive at the appointed position.

For both absolute and offset altazimuth moves, a value of 9999 means to leave that motor untouched, ie

off_altaz 1 9999 10 <comment>

will move the scope up in altitude 1 degree over 10 seconds, leaving the azimuth motor as is

 

Here's the format for a move to offset altazimuth coordinates:

off_altaz   <OffsetAltitudeInDecimalDegrees>   <OffsetAzimuthInDecimalDegrees>   <TimeForMove> <comment>

ie,

off_altaz 1 1 10 <comment>

This will smoothly move the scope up in altitude 1 degree, over in azimuth 1 degree, over a time of 10 seconds.

 

Here's the format to enter drift values for altazimuth coordinates:

dirft_altaz   <DriftAltitudeInDecimalDegrees>   <DriftAzimuthInDecimalDegrees>   <TimeForDriftInSeconds> <comment>

ie,

drift_altaz 1 0 60 <comment>

This will enter a drift in altitude of 1 degree over a time of 1 minute (60 seconds).

 

Here's the format for a move to absolute equatorial coordinates:

a <RaHr> <RaMin> <RaSec> <DecDeg> <DecMin> <DecSec> <TimeForMove> <comment>

ie,

a 23 0 0 15 10 0 10 <comment>

The A indicates absolute positioning, here, the scope will scroll to 23:0:0, +15:0:0 over 10 seconds. If the telescope cannot microstep to the position over time given, it will immediately halfstep slew to the absolute position.

 

Here's the format for a move to offset equatorial coordinates:

o <RaHr> <RaMin> <RaSec> <DecDeg> <DecMin> <DecSec> <TimeForMove> <comment>

ie,

o 0 0 0 0 10 0 5 <comment>

The 'o' means offset coordinates, that is, the offset position will be added to the current scope position to arrive at the new target position, here 0:0:0, +0:10:0, or 10 arcminutes in declination will be added to the current position, so that over 5 seconds, the scope will scroll northward 10 arcminutes.

Here's an example that slews to a starting absolute position, then scrolls up and down in declination over various times, ending with a slew to the start of the smooth scroll motions:

a 23 0 0 15 10 0 10 AbsMove10sec

o 0 0 0 0 10 0 5 OffMove10'Dec5sec

o 0 0 0 0 10 0 8 OffMove 10'Dec8sec

o 0 0 0 0 -10 0 7 OffMove-10'Dec7sec

o 0 0 0 0 -10 0 0 OffMove-10'DecSlew

 

Here's the format enter drift in equatorial coordinates:

drift_equat <RaHr> <RaMin> <RaSec> <DecDeg> <DecMin> <DecSec> <TimeForDriftInSeconds> <comment>

ie,

drift_equat 0 0 0 1 0 0 3600 <comment>

This will enter declination drift of one degree over an hour (3600 seconds).

 

Here's the format for initializations:

<init #> <RaHr> <RaMin> <RaSec> <DecDeg> <DecMin> <DecSec> <TimeForMove> <comment>

ie,

1 10 8 22 11 58 0 0 <comment>

The '1' means init #1 using current altazimuth coordinates and sidereal time to equatorial coordinates 10:8:22 11:58:0, the 0 seconds time being ignored.

ie,

2 10 8 22 11 58 0 0 <comment>

Here '2' means init #2, with the same format as the above init #1 example

or to initialize #1 or #2 or #3 using whatever coordinates at that moment are in the input equatorial fields, 

1i   <comment>

2i   <comment>

3i   <comment>

after a long slew, some mechanical systems show slippage such that the object may or may not be centered; here's an example of how to center a messier object by first moving to the object's vicinity, then moving to the closest bright star, then after you center the star and init on it, you move back to the messier object

f1 messier.dat

f1 bstars.dat

2i

f1 messier.dat

 

Here's the format to remove altitude offset:

alt_offset   <comment>

Here's an example of a scroll file to automate the initialization process, where the scope is positioned on Regulus before the scroll file is started, then the observer inits #1 on Regulus, waits a minute, then inits #2, turns on tracking, then slews to the neighborhood of Spica, and after centering Spica, inits #2 on Spica, finally ending with calculating and setting the altitude offset to zero:

1 10 8 22 11 58 0 0 init1Regulus

2 10 8 22 11 58 0 0 init2Regulus

trackon turningtrackingon

a 13 25 12 -11 9 43 0 absSpica

2 13 25 12 -11 9 43 0 init2Spica

alt_offset removingaltoffset

 

Here's the format for retrieving objects from data files:

<object retrieval from data file option> <file name>

notice that a comment is not allowed after the file name,

ie,

f1 messier.dat

f2 messier.dat

f3 messier.dat

Here f1 retrieves then slews to the closest object to the current equatorial position from the messier.dat file, f2 retrieves and slews to the closest object as long as it does not match the inputted equatorial fields, and f3 means to retrieve and slew the closest object that is not in the input.dat file, a history of all inputted equatorial values during the session.

 

Here's an example that immediately slews (since the time is 0 seconds) to 18:0:0 -24:0:0 then slews to the closest object in messier.dat, then slews to the closest object that is not currently inputted, then slews to the closest object that does not appear in the input.dat file:

a 18 0 0 -24 0 0 0 <comment>

f1 messier.dat

f2 messier.dat

f3 messier.dat

 

Here's the formats for turning on and off tracking:

trackon   <comment>

trackoff   <comment>

 

Here's the formats for turning off the pause and beep when moving to a new scroll entry while auto scrolling:

auto_scroll_alert_off   <comment>

 

Here's the format for analysis:

analyze   <comment>

Here's an example that builds an analysis file, by offsetting 1 hr in Right Ascension, then finding the closest star in bstars.dat, then analyzing; running this pattern a total of 3 times: 

o 1 0 0 0 0 0 0 <comment>

f1 bstars.dat

analyze

o 1 0 0 0 0 0 0 <comment>

f1 bstars.dat

analyze

o 1 0 0 0 0 0 0 <comment>

f1 bstars.dat

analyze

 

Here's the format to turn on auto scrolling:

auto_scroll   <comment>

 

Here's the format to turn off auto scrolling:

auto_scrol_offl   <comment>

 

Here's the format to move the motors so that the PEC indeces are zeroed out:

move_zero_pec

 

Here's the format to save the current equatorial coordinates:

save1

 

Here's the format to retrieve the saved current equatorial coordinates:

restore1

 

Here's the format to adjust the microstepping speed:

msarcsecsec   <speed>   <comment>

ie,

msarcsecsec   100   <note>

 

Here's the format to set the handpad mode:

handpad_mode   <mode number>   <comment>

ie,

handpad_mode   5   <note>

 

Here's the format for a halfstep slew:

hs   <#of altitude halfsteps>     <# of azimuth halfsteps>     <comment>

 

Here's the format to set to new equatorial coordinates:

new_equat   <RaHr> <RaMin> <RaSec> <DecDeg> <DecMin> <DecSec> <comment>

 

Here's the format to set to new altazimuth coordinates:

new_altaz  <NewAltitudeInDecimalDegrees>   <NewAzimuthInDecimalDegrees>  <comment>

 

Here's the format to input equatorial coordinates:

set_equat  <comment>

 

Here's the format to input altazimuth coordinates:

set_altaz  <comment>

 

Here's the format to reset to input equatorial coordinates:

reset_equat  <comment>

 

Here's the format to reset to input altazimuth coordinates:

reset_altaz  <comment>

 

Here's the format to reset to home coordinates:

reset_home  <comment>

 

Here's the format to select an object from a specified data file:

data_file   <file_name>

 

Here's the format to select an object from a specified data file and move to it:

move_file   <file_name>

 

Here's the format to display a prompt on the screen:

prompt   <prompt_string_to_display>

 

Here's an example to build a ALTAZEC file (altitude vs azimuth, or rocker base levelness error correction file).  Start by aiming the scope at an elevation of about 45 degrees, then do the first scroll action which will move the scope to a 5th magnitude star, then precisely center the star using high powered crosshairs, and do the next scroll action to analyze the pointing.  Next, move the scope to the east about 5 degrees and repeat the scroll actions.  Repeat this pattern of move, grab nearest 5th magnitude star, center it, and analyze it, as many times as desired:

f1 5magstar.dat

analyze

hs 0 6000 <comment>

f1 5magstar.dat

analyze

hs 0 6000 <comment>

f1 5magstar.d