BBAstroDesigns, Inc.
Formed October 2000
by
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
last revised
Copyright BBAstroDesigns, Inc. 2001-4
|
|
Table of Contents
Configuring the Stepper Software
Setting the altitude axis and azimuth axis
fullstep size in the config.dat file
Setting the slew (halfstep) speed
Setting the microstepping parameters
Coordinates' display on the screen
Your First Equatorial Initialization and Goto
Run
Your First Altazimuth Initialization and
Goto Run
German Equatorial Mount Meridian Flip
Updating the PEC data on the fly
Improve Local Finding/Tracking Accuracy
Improving the initializations - Optimizing
Goto and Tracking
Setting Backlash Values by Jerry Pinter
Interfacing with other programs
PCB Testing Prior to Motor + Computer
Hookup
PCB voltage diagnostic as reference to
ground
Hooking up the stepper windings, by Chuck
Shaw
Mechanical Aspects of the Drive
Making Your Own Drive Gears by Tom Krajci
ALT/AZ Conversion Lessons, by Chuck Shaw
UPDATE THE OTA (Optical Tube Assembly)
"SUB-SYSTEM":
UPDATE THE ROCKER BOX
"SUB-SYSTEM":
BUILD A NEW GROUND BOARD
"SUB-SYSTEM":
BUILD THE DRIVE ELECTRONICS
"SUB-SYSTEM":
UPGRADE THE DRIVE ELECTRONICS:
Design Details and Fabrication Notes:
1. OTA DESIGN AND FABRICATION:
Critical Path to find Balance Point:
Spin Alignment Technique…(Optical and
Mechanical Axis alignment)
2. ROCKERBOX DESIGN CONSIDERATIONS:
Azimuth and Altitude Trunions and Bearings
3. ELECTRICAL SYSTEM DESIGN CONSIDERATIONS:
Board Layout (additional FR circuitry)
Mounting location on Rockerbox
Cable harnesses/wire sizes/types
Power inputs (110vac vs 12vdc)
4. COMPUTER SUPPORT DESIGN CONSIDERATIONS
Laptop vs Microprocessor (Interactive vs
Black Box)
AltFullStepSizeArcsec (and
AzFullStepSizeArcSec)
Image Plane Derotation System by Chuck Shaw
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:
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:
|
|
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
|
|
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:
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:
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:
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:
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:
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:
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
+---------
Scope Control Program compiled
¦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:
¦Dec:
-13:44:45 -
+------------------------------------------------------------------------------¦
¦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:
¦ 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.
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 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 |
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.
'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
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.”
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
the instant eyeball initialization - good
enough for visual tracking
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):
tracking initialization
traditional 2 star initialization
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 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:
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.
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
(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
In detail, the sequence of
events for each bios clock tick (which occurs about 18.2 times a second) is:
German
Equatorial
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:
To do the flip manually:
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:
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.
"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
In the scroll file, any line
starting with a semi-colon ';' is ignored.
Here are the available
commands:
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