BBAstroDesigns, Inc.

 

Formed October 2000 by Mel Bartels and Barbara Bajec,

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

aims to serve the amateur telescope making community,

specializing in products for computer operated telescopes.

 

Computer Operated Telescopes

Servo System Software, “ScopeII”

by Mel Bartels

last revised March 11, 2006

 

for use with motor controllers from

Dan Gray http://www.siderealtechnology.com/

Gary Myers http://rxdesignonline.com
JRKerr http://jrkerr.com/

 

Copyright BBAstroDesigns, Inc. 2001-5

 

 

Sidereal Technology

http://www.siderealtechnology.com/


Dual Servo Telescope Controller


Copyright Sidereal Technology 2004

 

 

Table of Contents

 

Safety Guide and Warning. 5

DUAL AXIS SERVO CONTROLLER.. 5

FEATURES: 5

DISCLAIMER: 6

MOUNTING THE UNIT: 6

POWER: 6

SERIAL PORT CONNECTIONS: 6

LED INDICATORS: 7

SETTING UP THE MOTORS: 7

Motor Wiring Caution: 7

Motor wiring: 7

Motor Configuration: 8

ADJUSTING PARAMETERS: 8

TUNING YOUR MOTORS: 9

HAND PAD: 11

TELESCOPE ENCODER WIRING AND SETUP: 12

DRAG AND TRACK MODE: 13

Setting up the Drag and Track mode: 13

Operation of Drag and Track mode: 15

SLEW AND TRACK MODE: 16

PLATFORM MODE: 17

UNDERSTANDING AND USING THE X_BITS AND Y_BITS: 18

ASCII COMMAND SET: 19

BLOCK DIAGRAMS OF SOME POSSIBLE CONFIGURATIONS: 22

SCOPE II THE JAVA VERSION.. 25

What is Scope II, the Java version?. 25

Getting Started. 27

Getting Started on the Mac. 27

Getting Started. 27

The Easy Way, for Beginners. 28

A Word about Serial Ports. 28

More Information and Control with Scope II. 28

Hooking Up The Controller. 29

Configuring the Controller. 30

Configuring Scope II. 31

Controller. 31

Startup. 32

Goto. 35

Remote control across the network. 35

Configuring for ASCOM/ external LX200 control 36

User Interface. 37

External Encoders. 38

LX200 Commands. 39

Interfacing with other programs. 40

The Handpad. 41

Wiring. 44

Configuration. 44

Configuration parameters. 44

servo configuration parameters. 51

Files Used. 52

Command line options. 53

Data Files. 54

German Equatorial Mount Meridian Flip. 55

Grand Tour. 56

Polar alignment routine. 57

Limit Windows. 57

Tuning the PID filters. 58

Command Files: The Command Processor. 59

Setting Backlash Values by Jerry Pinter. 64

Autoguide. 64

Guiding and Periodic Error Correction. 65

PEC notes by Chuck Shaw.. 67

Tracking Accuracy. 68

Improve Local Goto and Tracking. 69

Optimizing Goto Pointing and Subsequent Tracking. 69

Running In Simulator Mode. 72

Trajectory Matching. 73

Telescope Vibration. 78

Drive Gear Ratios. 79

Mechanical Aspects of the Drive. 80

Creating Your Own Gears. 81

Making Your Own Gears by Tom Krajci 82

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

WHY???. 83

WHERE TO START???. 84

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

UPDATE THE ROCKER BOX "SUB-SYSTEM": 84

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

BUILD THE DRIVE ELECTRONICS "SUB-SYSTEM": 85

UPGRADE THE DRIVE ELECTRONICS: 85

Design Details and Fabrication Notes: 85

1. OTA DESIGN AND FABRICATION: 85

Balance: 85

Critical Path to find Balance Point: 85

Reassembly Pins/Templates: 86

Vertical Alignment Hard Stop. 86

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

Field Rotation System.. 87

2. ROCKERBOX DESIGN CONSIDERATIONS: 87

Azimuth and Altitude Trunions and Bearings. 87

Idler Bearings. 89

Drive System Gear Reduction. 90

Motors. 93

Base Board. 93

3. ELECTRICAL SYSTEM DESIGN CONSIDERATIONS: 94

Mounting location on Rockerbox. 94

Connectors (CJ vs DIN vs DB) 94

Cable harnesses/wire sizes/types. 94

Power inputs (110vac vs 12vdc) 94

4. COMPUTER SUPPORT DESIGN CONSIDERATIONS. 95

Laptop vs Microprocessor (Interactive vs Black Box) 95

Where to Mount the Computer?. 95

5. SOFTWARE.. 95

EncoderErrorThresholdDeg. 96

PEC.. 97

Image Plane Derotation System by Chuck Shaw.. 98

Spin Alignment 100

Software History. 102

Software End User License Agreement (EULA) 103

Limited Warranty. 104

 


 

Safety Guide and Warning

 

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

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

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

In particular:

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

 

DUAL AXIS SERVO CONTROLLER

 

FEATURES:

Connects to Mel Bartels SCOPE II Windows/Mac/UNIX software, for ASCOM compliant, incredibly accurate GOTO and Tracking.

 

Finally, a servo telescope control that is affordable!

 

Directly controls two servo motors with PID functions running at nearly 2000 times a second, with high speed shaft encoders for position feedback on each motor.

Connects to two additional high speed encoders for the telescopes altitude and azimuth (or right ascension and declination).  No need to add an additional "box" to connect shaft encoders.

 

Open Collector RS232 Serial port for connecting 2 or more controllers on the same RS232 bus.  Other controller axis's can be used as field de-rotators and/or focusers.

 

Connects to a handpad box for slewing/panning/guiding.

 

Signals from the handpad work immediately, no delay as with some other systems.

 

Can automatically track your telescope in the Drag and Track mode, or the Slew and Track mode without having a personal computer connected.

 

When running in the computerless "Drag and Track" mode, you may connect a computer running just about any planetarium program, and the servo controller will emulate the Tangent Digital Setting Circle protocol.

 

Can control a dual axis tracking platform, with auto stop and rewind, and dual axis correction without having a personal computer connected.

 

Servo Motors have a FASTEST mode of operation, where if the motors can't quite keep up with where it is supposed to be, but it is moving in the proper direction, it will not trip on position error, instead, position error is held at the point of the position error limit.  This feature makes it possible to run your motors near their limit of speed, and you can rest assured, it will not trip on position error if your battery voltage falls a bit, or the wind pushes against the scope.

 

Small size, 2.5" by 4.25" by 1".

 

Power Efficient.

 

Built in flash memory for saving many different parameters.

 

Firmware in the controller is field upgradable to later versions of the firmware, no need to send it back to the factory.

 

This same controller will be able to control 1 stepper motor using 256 micro-steps per step with a future firmware upgrade.

 

Windows Configuration program will be supplied for free about mid summer of 2004.  In the meantime, you can configure it using any terminal program.

 

Specifications:

Input Voltage: 11.5 -28 volts D.C.

Input Current: 4 amps max

Maximum Motor Current:   2.4 amps each, total of 4 amps max.

 

RS232 Protocol:

                1. Extended Pic Servo Emulation

                2. Ascii command set

 

2 Each, Motor Encoder Resolution:  32 bit (+/- 2 billion encoder ticks)

2 Each, Scope  Encoder Resolution: 32 bit (+/- 2 billion encoder ticks)

 

DISCLAIMER:

Sidereal Technology or Dan Gray provide 1 year warranty period for replacement or repairing cost of the controller only.  If the telescope knocks you off the ladder, or the telescope dumps the mirror, Sidereal Technology or Dan Gray will not be responsible!

 

MOUNTING THE UNIT:

A piece of velcro with sticky back is a good way.

 

POWER:

The controller has a power connector/terminal block.  Please provide a regulated supply or battery, 4 amp minimum 12 to 24 volt D.C. Supply.  The 4 amp minimum supply capability is only used during high speed moves.  Normal tracking requires only mA's.

 

Please observe polarity.  The internal protection diode is not wired in series with the power lead as is typical, because the extra .6 volts is crucial to operation of the servo when running at 12 volts.  It is wired in parallel, after the fuse.  If you hook the power up backwards, you will surely blow the fuse, and possibly damage other components.  Please don't be the second person to test this feature!!!!

 

SERIAL PORT CONNECTIONS:

The serial port is an 8 position modular jack.  Please do not confuse this connector with the motor connectors.  It is adjacent to the power connector/terminal block, and on the opposite end of the controller from the motor connectors.  Even if you don't intend to use a laptop to control your telescope, you will need a serial cable to configure the unit.

 

Pin 3 of a laptop or PC is the transmit signal and pin 3 of the controller is the receive signal, so the cable can be wired, pin 1 to pin 1, pin 2 to pin 2, etc.  Only pins 2, 3, and 5 are used on the controller.  Some software uses hardware handshaking.  In addition to pins 2, 3, and 5, if you also wire pins 1, 4, 6, 7, and 8, these will be properly jumpered in the controller, for proper operation of the serial port (Pin 1,4,5 and Pin 7,8).

 

If you would like to connect two or more Dual Servo Controllers on the same RS232 communication bus, simply make up a cable as described above, but parallel another 8 position modular jack in parallel with the existing jack.

 

Note: Mel Bartels Scope II software does not use hardware handshaking, but if your terminal software requires it, you may want to wire all pins.

 

LED INDICATORS:

LED1 normally is the status of the Altitude / DEC motor.  If on steady, all is ok.  If flashing about once per second, it's in manual, because of a manual command or because of an error.

LED2 is the same, except for it represents the Azimuth / RA motor.  When battery voltage gets less than about 11.5, LED2 flashes fast.

In the dragNtrack or slewNtrack mode, the LED's are different.  LED 1 flashes fast when an initialization is happening (IE top right or left button pressed more than 3 or 4 seconds).  LED2 flashes every time there is a new tracking command, every 8 seconds or on let up of slew/pan button.

Finally, the controller will signal ready for an upload file when both LEDs flash in unison.

 

SETTING UP THE MOTORS:

 

Motor Wiring Caution:

Do not confuse the +5vdc for the encoders with the +12-30vdc input for the motors,  Doing so will likely destroy the RS232 interface chip on the controller board, as well as the input data lines into the microprocessor.  The controller can only be replaced as a unit: it is not repairable due to the microsoldering required on the controller and very tight confines of associated parts.

 

Motor wiring:

See the drawing at the end of this document for wiring schematic.

BBAstroDesigns suuplies motor cabling for easy motor attachment, The motor cable consists of a flat 8 wire connector terminated in a RJ45 connector.  This is plugged into a RJ45/DB9 converter.  A DB9 solder cup is supplied for easy soldering.

 

Connections are as follows, including wiring for the popular Pittman servo motors:

 

DB9 pin number

Connection

Pittman motor wire

1

Not used

 

2

Motor -

Motor black

3

Motor -

Motor black

4

Motor +

Motor red

5

Motor +

Motor red

6

Encoder ground

Encoder black

7

Encoder +5vc

Encoder red

8

Encoder B

Encoder yellow

9

Encoder A

Encoder blue

 

The motor encoders are connected using the same 8 position connector as is used for the motor.  For best noise immunity, the motors should be connected using flat cable, and terminated at the controller end with 8 position modular connector.  CAT5 cable will work, but the encoders can pick up electro-magnetic interference from the motor leads if the cables are too long. 

 

If you have a 24 volt or 36 volt motor, and only have 12 volts available, don't worry, it will still work fine, but the top speed of the motor may not be as fast as you like.

 

Motor Configuration:

Once the motors have been wired, double check all wiring, including the power polarity.  Double check that both motors are free to spin at full RPM in either direction, because it may be that the motor wiring moves the motor in the opposite direction that the encoder is expecting.  If this happens, the motor will "run away" at full speed, until the controller determines that the motor is running the wrong way, and shuts the motor off.  There will be no ramping, it will instantaneously be at it's fastest RPM for the supply voltage.

 

Now plug in just the altitude motor, and then power up the unit.  This is where you will find if you are a lucky guy/gal or not.  If the motor takes off in either direction at full speed, don't buy any lottery tickets today.  Your 50% chance worked against you.  You have 3 options.  1. At the motor, swap the motor leads.  2. At the encoder, swap the A and B encoder phases.  3. Set up XBits in the controller to invert bit 0 or bit 1(reverses the motor encoder direction or reverse motor polarity), then save this number in the flash ram (see section on Using and Understanding the X and Y Bits).

 

If the motor didn't take off, you should see that it is stopped, and that it's difficult (or impossible) to turn by hand.  If this is so, the motor is now being controlled by the servo controller.  The motor may be vibrating noisily.  If this is so, the PID parameters need to be "tuned".  See section on "Tuning Your Motors".

 

Repeat the above process for the azimuth motor.

 

ADJUSTING PARAMETERS:

There are several ways to configure the controller.  If you intend to only use Mel Bartels SCOPEII, you will not have to configure the controller, other than the motor directions in relation to the encoder directions.  Here is a screen shot of Mel Bartels ScopeII software when running in the SiTech Configuration mode.

 

 

As of the first release of the dual servo controller, the only configuration program is Mel Bartels SCOPEII using the SiTech Configuration option..  There is a batch file provided on the SCOPEII disk, called SiTech.bat To use Mels software, you will have to have the Java Runtime installed.

 

Another option would be to use any windows terminal program and configure it yourself, by typing in the appropriate commands and values.

 

One more option would be to wait for the free windows configuration program which will be available late summer of 2004.

 

If you decide to use a windows terminal program, you must follow the following procedures to configure your controller.

 

Let's assume at this point that you didn't buy any lottery tickets, because the altitude motor took off in the wrong direction, and you don't want to re-wire it, you want to configure the controller instead.  Before powering up the controller, connect your personal computer to the controller using a serial cable.  Now power up the controller while the motors are disconnected.

 

You may now run the terminal program of your choice.  You may use the built in windows program HyperTerminal.  When using HyperTerminal, be sure that handshaking is set to OFF, specify your comm port (usually COM1) and specify 19200 baud rate, 8 data bits, 1 stop bit and no parity.  Select a terminal emulation that sends a 13 when you hit the ENTER key.

 

Now we need to see if everything is set correctly and the serial cable has been wired correctly.  Type "X<E>", where <E> means the enter key.  The controller should respond with it's X position.  This should be "0", "-1", or "1".  If it doesn't respond at all, be sure your CAPS LOCK IS ON.  THE ASCII MODE ONLY RECOGNIZES ALL CAPS!

If the controller responded with a number, all is well with communication. 

 

It's important to note that commands starting with one 'X' (not two x's) are for the altitude/declination motor, and all commands starting with 'Y' are for the azimuth/right ascension motor.  Some 'X' commands (such as "XW") affect both motors.

 

The next step will be to see what is in the X_Bits.  Type "XB<E>".  The controller should respond "B96".  The factory default is 96 (please see the section on X_BITS).  Since the second bit will reverse the direction of the motor, but not the encoder, we need to set that bit.  Just add 2 to the number that is returned by the XB<E> command, and type the number in after the XB command.  For example, type "XB98<E>".  Now type "XW<E>".  This saves the new X_Bit value to the flash ROM.  Power down the controller, plug in the altitude motor again, and power the unit back up.  If the motor ran away before, it should be controlling now. 

 

Repeat this procedure with the Azimuth motor, using 'Y' instead of 'X' for the commands, but save your parameters with the "XW<E>" command.

 

TUNING YOUR MOTORS:

If your motor(s) are violently moving back and forth, or are making rattling noises, chances are the factory tuning defaults are not going to work on your motor.  The controller controls the position of the motor by comparing the current position with the current setpoint (or desired position).  If they don't agree, the controller applies a PID function to make the motor return to the desired position or setpoint.  PID stands for Proportional, Integral, Derivative.  There is much information on the internet if you are interested in the inner workings of PID control.  What is described here is a simple method of making it work without getting too deep into the theory.

 

Step 1.  Turn the integral all the way to zero.  Do this by issueing the command "XI0<E> (the I is an EYE, not a ONE, and the 0 is a zero, not an oh).  Replace the "X" for "Y" if tuning the azimuth motor.  Turn the Integral Limit down to zero too.  Do this by typing the command "XL0<E>".

 

Step 2. Turn the proportional down to zero.  Do this by issueing the command "XP0<E>" (again, the 0 is a zero).

 

Step 3. Adjust the Derivative. To adjust the derivative, type the command "XDnnn<E>" where nnn is the number.  The range of the number can be anywhere from 0 to 32767.  Typical proper values will be in the 5000 range.  The motor should turn sluggishly but freely now, since only the derivative is working.  Adjust the derivative higher and higher until the motor starts humming or vibrating.  Adjust it back down until it doesn't vibrate, but "resists" you when you move the motor by hand.  Record this ideal number, because you'll be using this number in Mel Bartels "SCOPE II" configuration file too.

 

Step 4. Adjust the Proportional Band.  To adjust the Proportional, type the command "XPnnn<E>".  Now start adjusting the Proportional band up, a few thousand at a time.  As soon as it is over a few hundred, the motor will "want" to return to it's desired position.  Keep adjusting this up until the motor becomes unstable.  Typical values are about 20000.  Now back it down until the motor is stable. Record this ideal number, because you'll be using this number in Mel Bartels "SCOPE II" configuration file too.

 

Step 5. Adjust the Integral Limit.  To adjust the integral limit, type the command "XLnnn<E>".  This number should be about 25000.

 

Step 6. Adjust the Integral.  To adjust the integral, start increasing the number from about 1000, until the motor becomes unstable.  Then back it off until the motor is completely stable.  Typical values are about 5000. Record this ideal number, because you'll be using this number in Mel Bartels "SCOPE II" configuration file too.

 

Step 7. Run the motor at several speeds, and be sure it operates smoothly at all speeds.  If it doesn't, start by working backwards through the steps, first lower the integral, then lower the proportional.  Play around until you're happy with the response of the motor.

 

If the two motors are the same type, the same numbers should work in both motors.  Use the same commands listed above, except substitute 'Y' for 'X'.

 

To test run the motors, you can type commands and the motor should respond accordingly.  The speed can be changed by typing the command "XSnnn<E>" where nnn is the speed.  To make the motor move for 1,000,000 encoder ticks, simply type the command "X1000000<E>".  The motor should ramp up to the speed you selected, and ramp down and stop at exactly location 1,000,000.  You can verify this by typing "X<E>" and the controller will respond with the location of the motor.

 

You may change the destination or speed at any time, even during a move.  Let's say you've typed in "X20000000<E>", and the azimuth is headed for 20,000,000.  At any time you may type "XSnnn<E>" and the motor will ramp up or down to the new speed.  You can issue the command "X-20000000<E>" and the motor will ramp down and head the other direction.

 

You can change the speed and destination using the same command.  Try this:  "X5000000S2000000<E>".  The controller will head for location 5,000,000 at speed 2,000,000.

 

The motor revolutions per minute is calculated by the formula N=E*RPM*.55924053

The motor revolutions per second is calculated by the formula N=E*RPS*33.554432

Where N is the number that is entered into the "XS" parameter, and E is the number of effective encoder ticks per revolution of the motor.

 

If you're not sure what the effective resolution of your motor encoders are, there is an easy way to find out.  Type the command "XM<E>".  This places the Altitude motor in manual, so it is no longer under PID control.  The altitude motor should be free to turn now.  Turn the motor by hand until a mark on the output shaft is pointed as accurately as possible at a mark on the motor housing.  Now type the command "XF0<E>"  (The 0 is a zero).  This forces the current location to zero.  You can verify this by typing the command "X<E>".  The controller should respond with X0.  Now turn the output shaft of the motor 10 turns, and line up the mark on the shaft again.  Now type the command "X<E>" again.  The controller should respond with Xnnnn.  Divide this number by 10, and you have the effective encoder ticks per revolution of the motor.

 

To put the motor back in the Auto mode, type the command "XA<E>".  You can repeat this with the azimuth motor by substituting 'X' with 'Y'.

 

To change the ramp or acceleration value, type the command "XRnnn<E>" where nnn is the acceleration. You can change the ramp or acceleration value during a move, but this may confuse the controller, and it may ramp down, and overshoot, and have to back up again.  This is no problem, but if you notice it, that's the reason why.   Play around with this number until you like what you see.  Typical workable values are about 1000.

 

After you like what you see, type the command "XW<E>".  The controller will write these values to the flash ROM.  It is not necessary to issue a "YW" command, "XW" writes all parameters to flash ROM.

 

You can issue a motion command to the X (altitude) and the Y (azimuth) sequentially, and they will both be moving at the same time.

 

For a complete list of the ASCII command set, see the section labeled "ASCII Command Set".

 

HAND PAD:

The controller is compatible with the old style of BBAstroDesign's hand pad.  If you have a handpad of this type, be sure to put the 3 position jumper near the hand pad connector toward the micro processor (towards center of the board).  If you are using a new handpad type (there is no switch on a new type, there is only push buttons), you need to be sure the jumper is toward the edge of the board.

 

The new handpad design allows the movement of both axis's at once, and also allows upgrading to the wireless handpad.  The Slew/Pan switch on the old handpad is replaced with a push button.  The controller turns the push-button into a "switch" internally, which is used to change between slewing or panning.  There are certain functions in the Drag and Track and in the Platform mode that are not available if you don't have a new handpad type.

 

One of the XBits bits (bit number 6) needs to be set when using the new handpad.  Add 64 to whatever number needs to be in the XBits for proper operation.

 

To test the handpad, set up X_Bits for the 6th bit set (bit 5), and if using a new handpad, with the 7th bit set (bit 6).  Issue the command "XB<E>".  The controller will respond with a number.  If you're not a computer whiz, you may not know which bit is which, and what number is what.  Don't worry, you can use the windows calculator, and under the view menu, select the Scientific calculator.  Now enter the number that was displayed by the XB command.  Now click on the Bin option.  The displayed number will be the binary value.  The 1st bit is the one on the right.  Now enter that same binary number but be sure that the 6th bit is a one (1), and if you are using a new handpad, be sure the 7th bit is a one (1).  Make sure all other bits are the same as before.  Now click on the Dec option.  The displayed number will be the decimal equivilent.  Enter this displayed number in the X_Bits command.  Enter "XBnn<E>".

 

Now you must set up your telescope slew and pan rates. This is accomplished with the extend command set.  First, you need to know what numbers to enter. 

The number used in the slew or pan speed command can be calculated by the formula N=E*RPM*.55924053

The number used in the slew or pan  speed command can also be calculated by the formula N=E*RPS*33.554432

Where N is the number that is entered into the parameter, and E is the number of effective encoder ticks per revolution of the motor.

 

To set up the altitude slew rate, figure what RPM or RPS you want, then enter the number into the parameter using your terminal software by entering the command "XXAnnnn<E>" where nnnn is the number you figured from the formula above.  You may enter a negative number, and it will respond with opposite directions.  To read what this number is, enter the command "XXA<E>" without a number parameter.  The controller will respond with the altitude slew rate.

 

To set up the azimuth slew rate, figure what RPM or RPS you want, then enter the number into the parameter using your terminal software by entering the command "XXBnnnn<E>" where nnnn is the number you figured from the formula above.  You may enter a negative number, and it will respond with opposite directions.  To read what this number is, enter the command "XXB<E>" without a number parameter.  The controller will respond with the azimuth slew rate.

 

To set up the altitude pan Rate, figure what RPM or RPS you want, then enter the number into the parameter using your terminal software by entering the command "XXCnnnn<E>" where nnnn is the number you figured from the formula above.  You may enter a negative number, and it will respond with opposite directions.  To read what this number is, enter the command "XXC<E>" without a number parameter.  The controller will respond with the altitude pan rate.

 

To set up the azimuth pan Rate, figure what RPM or RPS you want, then enter the number into the parameter using your terminal software by entering the command "XXDnnnn<E>" where nnnn is the number you figured from the formula above.  You may enter a negative number, and it will respond with opposite directions.  To read what this number is, enter the command "XXD<E>" without a number parameter.  The controller will respond with the azimuth pan rate.

 

Now write the parameters using the command "XW<E>".

 

Now if your motors are working properly, you can slew or pan using the 4 direction switches.  If you are using the old handpad, the switch will change you from the slew or pan mode.  If you are using the new hand paddle, pressing the center button for about ¼ of a second will switch between the slew and pan modes.

 

If you are using an old hand paddle, you can't use all of the possible direction modes together, (including altitude and azimuth together).  If you are using a new hand paddle, you may use all modes of directions, including altitude and azimuth at the same time.

 

TELESCOPE ENCODER WIRING AND SETUP:

Study the connection drawing at the end of this document, and you will see that you need to make a Y cable for the telescope encoders.  A 6 position modular jack is used on one end of a flat cable.  The cable must be fabricated so it branches off to both telescope encoders.  The 5 volts and ground must appear at both encoders.  Once you have your encoders wired properly, connect your computer to the controller with the serial cable again, run your terminal software again, and you can test them out.  Type the command "XZ<E>".  The controller responds with a number that is the value of the altitude encoder.  Turn the encoder one revolution.  Type the command again.  It should have changed the effective encoder ticks per revolution of your encoder.  If you have a 1024 resolution encoder, there should be a 4096 (or somewhere close) difference. 

 

Now let's have some fun.  Before your encoder is mounted on your telescope, clamp a small arm on the shaft of the encoder.  Turn the arm until it is lined up perfectly with something on the body of the encoder.  Now let's force the encoder ticks to be zero by entering the command "XZ0<E>" (again the 0 is a zero).  You can verify the location by typing the command "XZ<E>".  It should respond with 0.  Now hold the encoder and swing the arm around as fast as you can, and count the turns.  Now swing back to the starting point, and line up the arm to the orginal position, and type the command "XZ<E>" again.  The difference between the starting number and this number should fall within the pointing accuracy of your alignment.  This is a true high speed encoder interface.

 

You can substitute 'Y' for 'X' to test out the azimuth encoder.

 

DRAG AND TRACK MODE:

The Drag and Track mode is used if you would like to push your telescope by hand, or slew with the handpad, but don't need super-accurate tracking, or goto capabilities, but would like accurate tracking, the Drag and Track or Slew and Track mode may be a nice feature to use.  If you have a telescope of aperature 16 inches or more, it may be more cost effective, and there are many other advantages to use the dual servo controller and the Drag and Track mode instead of a tracking platform.

 

To use the drag and track mode, your Alt/Az telescope must have the following features:

1. A pair of servo motors to drive the telescope in altitude and azimuth

2. Clutches on both altitude and azimuth connected between the motors and the telescope, so you can "drag" the telescope anywhere in the sky, without damaging the servo motors.

3. A pair of encoders mounted to your telescopes' altitude and azimuth axis's.

4. (Optional) A handpad.

5. A 12 -24 volt power supply.

 

A computer is not required for operation, only to configure your servo controller.

 

Setting up the Drag and Track mode:

 

For the drag and track mode to work properly, the controller must "know" several things. 

1. The number of telescope encoder ticks for a complete revolution of the telescope in both the altitude and the azimuth

2. The number of motor encoder ticks for a complete revolution of the telescope in both the altitude and the azimuth

3. How fast the slew setting should be

4. How fast the pan speed should be

5. (Optional) Latitude of the observing session

 

When you calculate the encoder ticks, it's important to understand the resolution of your encoders.  Generally speaking, the effective number of ticks is 4 times the resolution of the encoder.  This document uses the effective encoder ticks unless otherwise stated.

 

To enter the Drag and Track mode, you must set the 4th bit in the X_Bits parameter.  To read the X_Bits, from your terminal software, type the command "XB<E>".  To set up for Drag and Track mode, whatever number is returned, type in "XBnn<E>", where nn is the number, with an 8 added to it.

 

To set up the number of altitude telescope encoder ticks, from terminal software, enter the command "XXTnnn<E>" where <E> is the Enter Key, and nnn is a decimal number.  As an example, if you have an 8192 effective resolution encoder, and it is hooked up directly to the telescope altitude axis, enter the command "XXT8192<E>".  To read what is programmed into the altitude encoder ticks, enter the command "XXT<E>" with no number parameter.  The controller will respond with the number of encoder ticks for a full revolution of the altitude axis.

 

To set up the number of azimuth telescope encoder ticks, from terminal software, enter the command "XXZnnn<E>" where <E> is the Enter Key, and nnn is a decimal number.  As an example, if you have an 8192 effective resolution encoder, and it is hooked up directly to the telescope altitude axis, enter the command "XXZ8192<E>" To read what is programmed into the azimuth encoder ticks, enter the command "XXZ<E>" with no number parameter.  The controller will respond with the number of encoder ticks for a full revolution of the azimuth axis.

 

To set up the number of altitude motor encoder ticks, from terminal software, enter the command "XXUnnnn<E>" where nnnn is the number of motor encoder ticks for one full revolution of the altitude.  As an example, if you have an effective 2000 resolution encoder, a 5.9:1 reducer on the motor, and 1000:1 on the telescope gear ratio, this would be 11,800,000 encoder ticks.  Enter the command "XXU11800000<E>". To read what is programmed into the altitude encoder ticks, enter the command "XXU<E>" with no number parameter.  The controller will respond with the number of encoder ticks for a full revolution of the altitude axis.

 

To set up the number of azimuth motor encoder ticks, from terminal software, enter the command "XXVnnnn<E>" where nnnn is the number of motor encoder ticks for one full revolution of the azimuth.  As an example, if you have a 2000 effective resolution encoder, a 5.9:1 reducer on the motor, and 1000:1 on the telescope gear ratio, this would be 11,800,000 encoder ticks.  Enter the command "XXV11800000<E>". To read what is programmed into the azimuth encoder ticks, enter the command "XXV<E>" with no number parameter.  The controller will respond with the number of encoder ticks for a full revolution of the azimuth axis.

 

It would be good, but not absolutely necessary to enter the latitude of your observing site.  This is done by entering the command "XXLnnnn<E>" where nnnn is your latitude times 100.  As an example, if your latitude is 45 degrees north, enter "XXL4500<E>".

 

Next we need to set up the slew speed for the altitude.  This is done using terminal software, and entering the command "XXAnnnn<E>" where nnnn is the speed of the motor. 

 

The number to program into the controller is calculated by the formula N=E*RPM*.55924053

You can also calculate it using RPS instead of RPM by the formula N=E*RPS*33.554432

Where N is the number that is entered into the Slew or Pan parameters, and E is the number of effective encoder ticks per revolution of the motor.

 

A velocity calculator is included with the SiTech configuration program option of Scope II.

 

To set up the altitude slew rate, figure what RPM or RPS you want, then enter the number into the parameter using your terminal software by entering the command "XXAnnnn<E>" where nnnn is the number you figured from the formula above.  To read what this number is, enter the command "XXA<E>" without a number parameter.  The controller will respond with the altitude slew rate.

 

To set up the azimuth slew rate, figure what RPM or RPS you want, then enter the number into the parameter using your terminal software by entering the command "XXBnnnn<E>" where nnnn is the number you figured from the formula above.  To read what this number is, enter the command "XXB<E>" without a number parameter.  The controller will respond with the azimuth slew rate.

 

To set up the altitude pan Rate, figure what RPM or RPS you want, then enter the number into the parameter using your terminal software by entering the command "XXCnnnn<E>" where nnnn is the number you figured from the formula above.  To read what this number is, enter the command "XXC<E>" without a number parameter.  The controller will respond with the altitude pan rate.

 

To set up the azimuth pan Rate, figure what RPM or RPS you want, then enter the number into the parameter using your terminal software by entering the command "XXDnnnn<E>" where nnnn is the number you figured from the formula above.  To read what this number is, enter the command "XXD<E>" without a number parameter.  The controller will respond with the azimuth pan rate.

 

 

It's important to note that the UP handpad key needs to move the telescope up in altitude, and the RIGHT key move the telescope azimuth in a clockwise direction.  It would be easy to put a negative number into the slew and pan rates, and the controller would respond with the opposite direction, but the trigonometry would still be wrong, and the controller wouldn't track in the proper direction.  You must change the direction of the motor by changing the X_Bits, and/or Y_Bits (See section on changing X_Bits), until proper direction is observed with the push buttons.

 

It's also important to note that when the telescope is moving clockwise, the azimuth encoder should be increasing, and when the telescope is moving up, the altitude encoder should be moving up.  If these move backwards, then the direction needs to be changed by changing the 3rd bit of X_Bits (altitude) or Y_Bits (azimuth) (See section on changing X_Bits).

 

To save all this information to the flash ROM, type "XW<E>".

 

Operation of Drag and Track mode:

 

If you want the scope to start tracking without initialization, point the telescope at the celestial pole, and then turn the power on the controller.  At this point, if you've already set up and saved your latitude, the system will be initialized.  It will immediately start tracking.  No further initialization is required.

 

If your latitude isn't initialized and saved to flash rom, you will have to initialze at the scope zenith and the celestial pole.  To initialize the Altitude, move the scope (by hand or with the handpaddle) up to the scope zenith.  It could be convenient to have a stop mounted on your scope, so it is easy to find this location.  Press and hold the top right key for more than 4 seconds.  At this point, the controller adjusts your altitude so it reads 90 degrees.

 

To initialize the azimuth, move the scope to the celestial pole.  Now press and hold the top left key for more than 4 seconds. At this point, the controller initializes the azimuth, and if you haven't initialized the altitude, it initializes the altitude to your saved latitude, otherwise it initializes the latitude.

 

If you have initialized both the altitude and azimuth, you may save the new latitude value by pressing and holding both top keys for more than 10 seconds.  This saves the latitude to the flash ROM, so next time you can simply initialize the scope on the celestial pole, and press the left hand key for more than 4 seconds.

 

To perform photography, it may be necessary to enter the guide mode.  This is done by holding down the top right key, then pressing the right key.  Now the speed changes by adding or subtracting the guide rate from the current tracking rates.  To revert back to the normal mode, hold down the top right key, and press the right key again.  This feature only works with the new handpad.

 

You may slew the telescope with the handpad, or move the telescope by hand, and when done slewing or moving, the telescope will immediately start tracking again, at the new drive rates based on the telescopes altitude, azimuth and the latitude.  To stop tracking, press the top right key.  To start tracking again, press it again.


 

Review of Initialization options:

 

It may be confusing, because there are several ways to initialize the telescope.  The user has three choices.

 

 

Choice 1:

Step 1. Before turning on power to the controller, position the telescope to the celestial pole.  Turn on power.

The controller initializes the azimuth, and initializes the altitude to the same value as the last saved latitude.  Using Choice 1 means you don't even have to use the hand paddle, although you must have previously saved your latitude.

 

Choice 2:

  Step 1. Move the scope to the telescope zenith and hold down the right hand bottom button for 4 seconds

              The controller initializes the altitude position at 90 degrees.

  Step 2. Move scope to celestial pole, and hold down the left hand bottom button for 4 seconds

              The controller initializes the azimuth, and initializes the latitude.

 

Choice 3:

  Step 1. Move scope to celestial pole, and hold down the left hand bottom button for 4 seconds

              The controller initializes the azimuth, and initializes the altitude at the same value as the last saved latitude.

 

Before a user can use choice 1 or choice 3, the latitude needs to be set up.

If a user used choice 2, they may want to save the latitude, so next time they don't have to initialize at the zenith.  This is done by holding down both the left and the right hand bottom buttons for more than 10 seconds.  This action will save the latitude into the flash ROM, thereby making it possible that next time the telescope is set up (assuming the base is reasonably level, and you are near the same latitude), the user will not have to use choice 2, but only choice 1 or choice 3.

 

While the controller is in the Drag and Track mode, the serial port can be connected to a laptop running almost any planetarium software.  Set your software to connect to a "Tangent" encoder interface box, and you will be able to surf the sky using the planetarium software!  When setting up your planetarium software, set up both encoder resolutions to 18000.  Also, do not use the option that your telescope is on a tracking platform.  Think of it like a telescope without a platform where you have this little guy pushing it all the time, exactly keeping up with the stars.  That's what your planetarium program will "think".

 

Also, set the baud rate of your planetarium software to 19200, no parity, 8 data bits, and 1 stop bit. 

 

SLEW AND TRACK MODE:

 

This mode is similar to the drag and track mode, but is used if you don't have clutches on your servo motors, and/or don't have shaft encoders on the altitude and azimuth of the telescope.  You must have a handpad.

To use the Slew and Track mode, your Alt/Az telescope must have the following features:

1. A pair of servo motors to drive the telescope in altitude and azimuth

2. A handpad.

3. A 12 -24 volt power supply.

 

This mode uses the servo motor encoders as the telescope position.  You must use the handpad to slew the telescope.  You must set up the Y_Bits with the 4th bit set.  If you have any other Y_Bits set up for proper operation of the motors, you must add the number 8 to whatever number is the correct number for Y_Bits.  To read the Y_Bits, from your terminal software, type the command "YB<E>".  To set up for Slew and Track mode, whatever number is returned, type in "YBnn<E>", where nn is the number, with an 8 added to it.  Normally this will be 8.  You must also add 8 as described above to the X_Bits (Drag and Track mode)

 

You must also set up the number of telescope encoder ticks to be the same number as the number of motor encoder ticks, in other words, the XXT command should use the same number as the XXV command, and the XXZ command should use the same number as the XXU command (see section on Setting Up the Drag and Track Mode).

 

For the SlewNTrack mode to work, you need to set both the slewNtrack and the dragNtrack bits.

 

When you power up the controller, it assumes you're at the saved latitude, and you're pointed at the celestial pole.  It will be tracking, although since the pole doesn't move, you won't detect any movement until you actually slew the telescope.  You don't have to use the keys on the handpad to initialize the slew and track mode or the drag and track mode if you point at the CP before powering up and you've saved your latitude.  If you didn't point to the CP before powering up, and if you've already saved your latitude, simply slew to

the CP, then hold the top left button for about 4 seconds.

 

PLATFORM MODE:

 

Setting up the platform mode:

To enter the platform mode, bit number 4 of XBits must be set.  Type XB16<E>

If using the New handpaddle design, the 7th bit must also be set.  Type XB80<E>

When in the platform mode, the handpaddle is automatically enabled, this sets bit number 5, so a read of XBits after entering XB16 will return  B48.  After XB96, it will return B112

From terminal, type "XXEnnn<E>" for the rate the controller will automatically run when in the platform mode.

From terminal, type "XXFnnn<E>" for the rate adder/subtractor for fine tuning the rate.

From terminal, type "XXGnnn<E>" for the final position the servo motor will stop tracking.  If the motor turns the wrong way, enter a negative number here.

For the hand pad to work correctly, we need to move the X axis (the altitude) at it's slowest rate.  Enter the command "XS1<E>".

You may want to adjust the acceleration for a smooth return while rewinding. 

Adjust this by typing "YRNNN<E>".  A typical number would be about 1000.  Lower numbers accelerate slower, while higher numbers accelerate faster.

If you are using the altitude motor, you can also set up it's velocity for smooth operation.  Substitute 'X' for the 'Y' in above command.

 

You can set up all of the hand paddle rates too.  See setting up the hand paddle rates!!!!.

 

To save all this information to the flash ROM, type "XW<E>".

 

Operation of tracking platform mode:

Before powering up the controller, be sure the platform is fully rewound.  This will be it's home position.

Upon power up, or upon rewind, the Right Ascension motor will turn at the configured speed, until it reaches the configured goal.

To rewind, press both top switches.  This is possible at anytime.  The servo motor will return to the same location it was when power was turned on; at it's programmed slew speed rate.

To Cancel rewind, press any direction key.

To stop tracking at any time, press the top right button.

To start tracking again, press the top right button again.

Only the new handpad will allow fine tuning the tracking speed.

To raise the tracking speed, press the top left key, and while holding it down (think of it as an ALT key) press the up direction.

To lower the tracking speed, press the top left key, and while holding it down (think of it as an ALT key) press the down direction.

To perform photography, it may be necessary to enter the guide mode.  This is done by holding down the top right key, then pressing the right key.  Now the speed changes by adding or subtracting the guide rate from the current rates.  To revert back to the normal mode, hold down the top right key, and press the right key again.  This feature only works with the new handpad.

 

Challenging Idea:  If you have or have access to, a very large aperture telescope, 28 inches or larger, you may be able to see the crab pulsar blink.  Here's how.  Obtain a servo motor with encoder that is able to run at least 1,800 RPM, you could connect this motor to the servo controller, and put an interrupter on the shaft (a circle with a pie shape cut out of it), balance it, and hold this interrupter between the secondary mirror and the eyepiece, while running at somewhat less than 1800 RPM.  You may be able to see the pulsar wink in and out!  To test this out, you may use one of the LED's.  It winks at the same frequency of the crab pulsar while in the platform mode!  You can configure the platform mode to automatically run this motor at the proper speed.

 

UNDERSTANDING AND USING THE X_BITS AND Y_BITS:

 

The controller has two bytes that are used to change various options.  One byte is dedicated to the X axis (altitude), the other is dedicated to the Y axis (azimuth).  Some of the bits in the X bits are common to both motors.

 

A byte is a group of 8 bits.  The first bit, bit 0, has a "weight" of 1.  The second bit, bit 1, has a "weight" of two.  The 3rd bit, bit 2, has a weight of 4, and so on until the eighth bit, bit 7, has a "weight" of 128.

 

Bit 0:  Weight of 1:               Altitude Motor Encoder Direction

Bit 1:  Weight of 2:               Altitude Motor polarity

Bit 2:  Weight of 4:               Altitude Scope Encoder Direction

Bit 3:  Weight of 8:               A '1' here, puts the controller in the Drag and Track or Slew and Track Mode (X Only)

Bit 3:  Weight of 8:               A '1' here, puts the controller in the Slew and Track Mode (Y Only)

Bit 4:  Weight of 16:             A '1' here, puts the controller in the Platform mode (X Only).

Bit 5:  Weight of 32:             A '1' here, enables the handpad to control the motors.  You must also set up the Slew and Pan rates (X Only).

Bit 6:  Weight of 64              A '1' here, tells the controller you're using a "new" handpad, one with only push buttons, no switch (X Only).

Bit 7:  Weight of 128:           A '1' here, tells the controller it's in the "guide" mode (X Only).  In the guide mode, when a direction button is pushed, the guide value is added or subtracted from the current speed.  You must also set up the Guide rates.

 

To figure out what number to program into the X or Y bits, figure out the modes you want, then add up all the "weights" of the bits that are a '1', and that is the number you use.

 

As an example, lets say you want to use the drag and track mode, you're using a new handpad, you're altitude motor needs to be reversed and the altitude telescope encoder needs to be reversed.

 

Bit 1 = 2, reverse the motor polarity

Bit 2 = 4, reverse the scope encoder

Bit 3 = 8, Drag and Track mode

Bit 5 = 32, Enable the handpad

Bit 6 = 64, Using a new handpad.

 

This adds up to 110.  Issue the command "XB110<E>".  Now read back the value, "XB<E>", the controller responds with "B110".  Now save this to flash by issueing the command "XW<E>".

 

Substitute 'Y' for 'X' for the azimuth motor.

 

Here is a description of the bits:

Bit 0:  If this bit is a '0', the motor encoder is incremented normally.  If this bit is a '1', then it is reversed.

Bit 1:  If this bit is a '0', the motor moves one direction for a given number.  If it is a 1, it moves the opposite direction.

This being said about bit 0 and bit 1, it is important to understand the implications of changing these bits.  Lets say that the controller has just been powered up.  In this state, before you've pressed a handpad button, or given the motor a command to move, the controller is trying very hard to keep the motor at position zero.  If the position moves to 1, 2, or 3, the controller responds by putting an output to the motor to move it the opposite direction, and it will move back, 3, 2, 1, 0.  If the motor starts moving in the other direction, -1, -2, -3, the controller responds by putting an output to the motor to move it back to zero, the opposite polarity as in the first example.  Now try to think what would happen if the position moved to 1, 2, or 3, but the controller responded by moving the motor to even higher numbers.  This would create positive feedback, and the motor will "run away" out of control.  More Error would create more wrong voltage, which would create more error, etc, until maximum output voltage is reached.

 

Bit 0 and bit 1 of X_Bits and Y_Bits give you control over which direction the motor turns, and which way the encoder counts. 

 

Bit 0 and bit 1 rules:

                1. If the motor runs away, you can invert either one of the bits, bit zero or bit 1.  The motor will now run properly.

                2. If the motor runs properly, but in the wrong direction, you must invert both bits.

 

Bit 2:       If this bit is a '0', the telescope encoder is incremented normally.  If this bit is a '1', then it is reversed. 

 

ASCII COMMAND SET:

 

List of ASCII commands (all get terminated with an  <E> (13) ).  Be sure to use upper case.

For the Y servo, use 'Y' instead of 'X'  The # symbol means there is a number required.

The X servo is the Altitude or Declination.  The Y servo is the Azimuth or Right Ascension.

 

X#   Move Servo (-2147483648 to +2147483647)  You can tag a speed command at the end.  Example X-2345S1000000<E>

X    Returns the X position of the servo

XF#  Forces the X position to be equal to the number (-2147483648 to +2147483647) (This stops the controller if moving)

XS#  Velocity of X Servo (0-2147483647)

XR#  Ramping speed or Acceleration of X servo (0-2147483647)

XP#  Proportional Band of X servo (0-32767)

XI#  X Integral (0-32767)

XD#  X Derivative (0-32767)

XE#  Maximum position error limit before servo turns off (0-32767)

XE   Returns the position error of the servo

XEL# sets maximum position error limit

XO#  X Output limit (0-255)

XO   Returns the PWM output of the servo (0-255)

XC#  X Current Limit (0-240 = 0-2.40 amps)

XC   Returns the X motor current * 100 (240 MAX)

XM#  X to manual mode, the number is the PWM value, 0-255.

XA   X to Auto mode.

XN   X Normal Stop     (ramps down, then stops.  Automatically clears when new position is given)

XNT stops all motors, then resumes tracking when velocity drops below 524,287.

XG   X Emergency stop   (stops immediately, may damage equipment if large inertial load on it)

XL#  Set Integral Limit (0-32767)

XL   Returns Integral Limit

XB   Returns servo bits like specific errors, modes, etc.

XB#  Number sets the servo bits like direction, etc.  (0-255)

XZ#  Forces the scope encoder position to be equal to the number (-2147483648 to +2147483647)

XZ   Returns the scope shaft encoder position

      The rest of the commands don't have a 'Y' command, only X.

      They affect both servo's

XK   Returns the keypad info in Decimal.

XH   Returns the temperature of the cpu chip (in degrees F)

XV   Returns the firmware version * 10.

XJ   Returns the motor power supply voltage * 10 (please divide returned number by 10)

XQ   Resets the servo system (both)

XU   Programs factory defaults into the flash rom.

XW   Writes the configuration of both the x and y parameters to flash rom.

XT   Reads the configuration from the Flash Rom.

UFN   upgrades flash now

 

All of the following XX extended commands have a corresponding read command as an example, if you type "XXL<E>" it responds with the latitude.

 

XXL# Store the latitude to the controller (4500 = 45 degrees north, -4500 = 45 degrees south)

 

XXZ# Store the azimuth encoder ticks per full circle.

XXT# Store the altitude encoder ticks per full circle.

 

XXU# Store the number of encoder ticks for the Altitude Motor Encoder to the controller

XXV# Store the number of encoder ticks for the Azimuth Motor Encoder to the controller

 

XXA# Stores the Altitude Slew Rate to the controller

XXB# Stores the Azimuth Slew Rate to the controller

XXC# Stores the Altitude Pan Rate to the controller

XXD# Stores the Azimuth Pan Rate to the controller

XXE# Stores the Platform tracking rate to the controller

XXF# Stores the Platform up/down adjuster to the controller

XXG# Stores the Platform Goal to the controller

XXH# Stores the Altitude Guide Rate to the controller

XXI# Stores the Azimuth Guide Rate to the controller

 

AD#  Program the Address of module.  This can be 1,3 or 5 (No X or Y command)

      (Be sure to only have one module listening!!!)

 

0AAh Puts the servo into the PicServo Emulate mode (no CR required)

 

Proportional, Integral, Derivative, Output limit, Current Limit, Maximum ServoError,

Ramp speed, Velocity, Integral Limit, Servo Bits and Address are stored from ram to the Flash

Rom when the XW command is received.

All of the extended commands (XXx) are saved too.

 

The flash ram values are loaded from the flash Rom to Ram on reset.

Both the X and Y parameters are stored to the flash rom.

 

Use X and Y for module address 1. 

If the module address is 3, use 'T' and 'U', for address 5, it's 'V' and 'W'.

 

Description of the bits for the X_BITS and Y_BITS:

0    if 1, the motor encoder is incremented the other direction

1    if 1, the motor polarity is reversed

2    if 1, the azimuth (or altitude) encoder is reversed

3    if 1, (x only) we're in the computerless drag and track mode

3    if 1, (y only) we're in the computerless slew and track mode  (no clutches, must use handpad to slew)

     (must be in drag and track too)

4    if 1, (x only) we're in the tracking platform mode

5    if 1, (x only) we enable the hand paddle

6    if 1, (x only) hand paddle is compatible with New Hand Paddle (allows slewing in two directions, and guiding)

7    if 1, (x only) we're in the guide mode. The pan rate is added or subtracted from the current tracking rate.

 

Here's the definition of the X and Y bits.   

* N_BITS  00000000b*

           ||||||||

          |||||||Inverts the servo encoder

          ||||||Inverts the motor direction

          |||||Inverts the scope encoder

          ||||Drag and Track mode(X only) Slew and Track mode (Y only)

          |||Tracking Platform Mode (X only)

          ||Enable the Hand Paddle for slewing/panning (X only)

          |New Hand Paddle Type (allows slew in both alt and az at once (X only)

          Guide Mode (X only)


 

 

BLOCK DIAGRAMS OF SOME POSSIBLE CONFIGURATIONS:

 

 


 

SCOPE II THE JAVA VERSION

 

What is Scope II, the Java version?

 

 

Scope II is a telescope control application written in Java.  Scope II builds on the success and popularity of scope.exe, a DOS based stepper motor control application.

 

Scope II can run on many operating systems, including Windows, Linux, and Mac.  While perhaps 85% of users run Windows, a significant and not to be overlooked number run Linux and Mac.  Java enables the same code to be run on many platforms, a great plus.  The disadvantage is that Windows users will need to install Java.

 

Scope II works in conjunction with Sidereal Technology servo motor controllers, and with controllers from JRKerr and RXDesignOnline.  Scope II also supports a number of external encoder boxes.  Communications is via serial or USB to serial converter.  Scope II can control up to 4 motors.

 

Scope II works with many encoder controllers.

 

Scope II is a precision goto, tracking, guiding, command sequencer, analysis, and logging application.

 

Scope II comes with an extensive object library covering over 55,000 quality objects; many objects with positions corrected by fellow amateur astronomers.

 

Scope II comes with 23 defined mounting types and 8 specific mounting characteristics.

 

Scope II includes limit motion windows which can be defined in both local site horizon and elevation values and in telescope coordinates.

 

Error correcting includes:

ü       backlash

ü       refraction

ü       unlimited number of simultaneous periodic error corrections, which can be based on any desired periods or gear ratios: includes auto-synchronization capability with suitable hardware

ü       drift corrections in equatorial and altazimuth axes

ü       guiding corrections, including rotation of guide axes over time

ü       the 3 mount axis errors

ü       axis to axis corrections, including altitude vs altitude, azimuth vs azimuth, and altitude vs azimuth

ü       pointing model corrections using weighted corrective values

ü       coordinate precession

ü       coordinate nutation

ü       coordinate annual aberration.

 

Scope II contains a command sequencer that accepts commands from:

ü       the user interface

ü       scroll files

ü       a local file where commands can be saved to

ü       LX200 styled commands from either serial (USB), UDP, or TCP sources

ü       Scope II specific commands from either serial (USB), UDP, or TCP sources

ü       commands from file interaction with Project Pluto Guide

ü       ASCOM compatible via the LX200 generic driver.

 

Scope II is network aware and can be run across the LAN.  Scope II is very much a middleware server application, accepting commands across the LAN, transmitting them to the controller via any one of the multiple channel options, analyzing the controller status, and returning the results across the LAN.

 

Scope II can write real-time status web pages.

 

Scope II can act as its own simulator.

 

Scope II can relay communications from one type of channel to another, ie, serial to TCP.

 

Scope II includes extensive analysis and logging.

 

There are nine styles of tracking, the default being proportional velocity tracking. Some involve trajectory matching formulae that I developed. See the test option 'track' for a complete listing.

 

Scope II includes 80 test functions to verify accuracy and fitness.

 

Scope II requirements:

1. Java runtime 1.4 installed; Windows: 2000 or XP (though Sun does not support Java on Win9x because of operating system resource issues, ScopeII does runs satisfactorily on my old P166 laptop with 80 meg memory running Win95); Linux/Mac: OS capable of handling Java 1.4.  For more see http://java.sun.com/ .

2. RXTX communications package.  RXTX is included with the Scope II distribution files. Originated by Trent Jarvi, RXTX is a versatile serial communications package that runs on a variety of platforms, including  XP, Windows 2000, NT*, Windows 9*, WinCE, Solaris 2.x x86 and sparc, Linux, FreeBSD 3.x 4.x, Mac OS X, HP-UX 10.x, SCO OpenServer 5.x, UnixWare, Digital/UNIX.   Since Scope II requires RXTX, the ultimate limit is the number of platforms that RXTX will run on.  For more see http://rxtx.org/ .

 


 

Getting Started

 

1. Install Java 1.4 runtime.  If not available on the CD, then download JRE (Java Runtime Environment) from http://java.sun.com/j2se/1.4.2/download.html .  You only need install  J2SE v 1.4.2_04  JRE, the J2SE Java Runtime Environment.  Note the directory where Java is installed.

 

2. Copy the files as found on the CD to a directory of your choosing.

 

3. Verify that the Java install has added the java\bin location to the path.  For XP, check My Computer | Properties | Advanced | Environmental Variables | User variables | path.  If not present, the exact directory path to Java can be added here, ie, c:\j2sdk1.4.2_02\bin .  If the path is not present and you don’t wish to add it here, then edit scope.bat to include the exact path, ie, c:\Program Files\j2sdk1.4.2_02\bin\java ...

 

4. Make a shortcut on your desktop that points to scope.bat.  Do this by right-clicking on scope.bat, and selecting 'send to desktop (create shortcut)'.  Checking the properties of the newly created shortcut, the shortcut's target will point to the location of the scope.bat file: in my case, 'C:\mel\cot\SERVO\JAVA\scope.bat', and 'start in' will reflect the same location: in my case, 'C:\mel\cot\SERVO\JAVA'.

 

5. Double click on the shortcut and verify that scope fires up successfully by presenting you with a user interface.  You can also open a command window (click on Start|Run...|type in 'cmd' and hit return), go to the directory where scope.bat is located, then type in scope and hit return.

 

Congratulations: you've successfully installed Java and Scope II !

 

 

Getting Started on the Mac

 

This section contributed by Dave Sopchak.
 

The MacDob project page is at http://home.comcast.net/~d.sopchak/macdobs/MacDob.html .

 

Scope II, as a pure Java application, is perfectly capable of being run on a Macintosh computer running OS X. However, Scope II sometimes relies on being launched from a command line using some special arguments in order to access some of its features. It also uses an open-source library called RXTXcomm to access the serial port. Because of this, one must be prepared to handle Scope II in slightly different ways than a typical Macintosh application, and in slightly different ways than Mel's instructions specify for other platforms. Note: These instructions are for a Mac running OS X 10.3.x

(Panther) and Java 1.4.2, but should also work under OS X 10.2.x (Jaguar) running earlier versions of Java (1.x)

 

Getting Started

 

Most Macs that run OS X do not have serial ports. If this describes your setup, you must first purchase a USB to serial adapter, such as those sold by Keyspan, and install the drivers for the adapter. This is a fairly simple process. If you have one already, with a suitable serial cable, great!

 

Next, install the RXTXcomm Java serial libraries. You can download the OS X Installer package here. For the curious, this package installs two libraries in the /Library/Java/Extensions folder on your computer: RXTXcomm.jar and librxtxSerial.jnilib.

 

Once that's done, you're ready for:


 

The Easy Way, for Beginners

 

Unzip the Scope II Mac.zip file and place the "scope" Java application into a folder with all the other support files. Double clicking the scope app's icon should launch Scope II. If the necessary support files are not found by scope, it will automatically create essential support files in the folder it resides.

 

A Word about Serial Ports

 

Scope II requires the full path name of serial ports to be specified for it to operate properly. The default serial port can be specified in the scope.cfg file, or accessed by one of the popup menus in the Controller pane of Scope II. Mac OS X lists its available serial ports, along with a lot of other stuff, in the /dev folder, which can be accessed by launching the Terminal application, usually located in the /Applications/Utilities folder. After it launches, type in the window:

 

cd /dev

hit the return key

and then

ls

and hit the return key

 

you will get a bunch of strange names. Scroll up and down the window and look for one that looks like the name of your serial port:

Typically, a Keyspan USB-serial adapter will have a name such as tty.USA19813P1.1

 

There will also be names starting with "cu.", such as cu.USA19813P1.1

 

DON'T use the names starting with "cu." in the scope.cfg file or choose this option from the popup menu. Scope II won't open up the serial port if you do.  If you want to enter the name of your serial port into the scope.cfg file, you must put in the whole path name, so it should look something like /dev/tty.USA19813P1.1

 

Since USB is a dynamic, hub based system, you will probably get a different name for your USB-serial adapter if plug it into a different port between uses. This is normal, but it might confuse you if you aren't aware of it!

 

More Information and Control with Scope II

 

If you would like to see and do more, "behind the scenes" information when running Scope II, you can launch it from Apple's Terminal application. There are a couple of ways of doing this:

 

1. Launching Terminal and Scope II from the Finder:

 

Control-click on the scope app's icon. This will bring up a contextual menu. Choose "Show Package Contents". Go into Contents>MacOS. There you will find a dark grey icon labeled "scope". Double-clicking on this will launch the Terminal app and through it, Scope II. The Terminal will then show all the command-line information being generated as Scope II executes.

 

2. Launch Terminal, then launch Scope II from Terminal:

 

Launch the Terminal app, then move to the folder that the scope app is in by typing, at the prompt, for example:

 

Locate the folder where the scope app is in the Finder, and drag and drop the "scope" icon onto the Terminal window after first typing "cd " (without the quotes, but with that space after the cd) in the terminal window. Then hit the return key.The prompt should now change to reflect that you are in the scope.app folder:

 

[dave's computer]:~/Desktop/scopeII/scope.app] dave%

 

dig down a little more by typing

cd Contents/MacOS

and hit the return key again

 

again, the prompt will change to reflect that you've changed folders:

[dave's computer:scope.app/Contents/MacOS] dave%

 

Alternately, you can move to the folder that the scope app is in the old fashioned way, by typing the path name at the prompt:

[dave's computer:~] dave% cd ~/Desktop/scopeII/scope.app/Contents/MacOS

 

Once you're in the right folder in the Terminal, type in

../scope

 

and Scope II should launch!

 

Having access to the command line allows you to launch Scope II with various arguments, as mentioned in the manual, so typing

../scope -h

 

would show the command line options available

 

The look and feel setting in scope.cfg should be set to ‘CrossPlatformLookAndFeelClassName’.

 

 

Hooking Up The Controller

 

 

1. Plug the controller's serial cable into a comm port on the PC, or into a USB to serial converter.  A basic USB converter will work fine.  At last check, these converters can be had for $20 and up.

 

2. Note for Linux users:  it may be necessary to add yourself to uucp and lock groups.  You may also have to change permissions on the comm port, eg, /dev/ttyS0, or /dev/ttyS1.

 

3. Power up the controller.

 

4. Launch Scope II.

 

5. Select the 'Controller' tab, then select 'SiTech' from the 'Motors' combo box drop down list in the 'Set Controller Types' panel.  Click on the 'reset' toggle button and check in the terminal window that a series of 'set...' commands occurred with 'OK' status returns.

 

6. Click on the 'file save cfg' toggle button in the upper left of the main title panel display.

 

Congratulations: you've successfully hooked up the controller to Scope II !

 

 

Configuring the Controller

 

It may be necessary to configure controller specific values.  Consult the controller manual’s configuration section.  You can use a serial communication terminal program such as Windows HyperTerminal to talk to the controller.  A Java configuration program has been created for your convenience.  To run it, double click on SiTech.bat, or enter SiTech at a DOS command line prompt in a DOS window inside of Windows. To launch a DOS window, click Start | Run | enter ‘cmd’ | press return.   It may be necessary to edit the file in the same manner as scope.bat.

 

 

Start by selecting the proper comm port, then clicking on the connect toggle button.  The comm status should turn green.  If it turns red, then there was a problem opening the comm port.  Specific comm port settings are read from the Scope II configuration file, scope.cfg, in the servo section.

Many values can be read or written at a single stroke.   These are indicated by the blue toggles.  Success of the ‘get all blue’ command is indicated by the color of the adjacent label.

Relevant variables can be saved directly to Scope II’s configuration file by clicking on the ‘save to Scope II cfg’ toggle button in the upper left corner.

 


 

Configuring Scope II

 

An overview of configuration:

 

1. Step through the numbered panels in the two tabbed panes 'Controller' and 'Startup' to configure the basic parameters: controller types, counts per revolution, direction of movement, site location, mounting type, and starting coordinates. 

 

2. For more involved configuration such as error corrections and external control options like ASCOM interfacing, edit the scope.cfg file while studying the file:\\\parms.html  webpage.

 

3. Advanced configurations like limit windows and certain error corrections require the creation and editing of additional files.  See the file:\\\filesUsed.html  page and instructions later on.

 

Basic configuration is divided into two sections: 'Controller' and 'Startup'.

 

Controller

 

Use the 'Controller' tabbed pane to set the motor controller and servo controller types, the motor and encoder counts per revolution, and the motor and encoder directions. 

 

Scope II will work with servo motor controllers from Sidereal Technology and from JRKerr (RXDesignOnline uses JRKerr controllers).  Communication is RS232 serial at 19,200 bits per second.  For laptops with no serial ports, a simple USB to serial converter will work fine.  When you install the converter, an additional comm port will be added to your machine.  You do not have to configure the USB's comm port settings as scope II uses its own parameters.

 

For remote operation, there are several options.  See the sections on remote operation and external commands.

 

Scope II will work with most encoder controllers.  The Sidereal Technology motor controller combines an external encoder controller, so a separate purchase of an encoder box is not needed.  These controllers use RS232 communications.  As with the motor controller, it is possible to communicate with the encoder controller over a LAN.

 

Motor and encoder counts measure the complete rotation of the telescope's axis.  This can be calculated from known gear ratios.  For instance, if the servo motor's encoder is rated at 512 pulses per revolution, the servo motor uses a gearhead of 5.9:1, and the main drive gear has 359 teeth and a single turn worm, then the calculation is as follows: 512 pulses / motor revolution * 4 quadrature decoded counts / motor encoder pulse * 5.9 gearhead ratio * 359 main gear ratio = 4337869 counts per telescope axis revolution.  To determine the number of counts per arcsecond, divide the counts per telescope axis revolution by 1,296,000, the number of arcseconds in 360 degrees.  Here, 4337869 / 1296000 = 3.347 counts per arcsecond.  Safe values range from 3 counts per arcsecond upward.  However, too many counts per arcsecond limits the high speed slew rate.  Otherwise, counts per axis revolution will have to be determined from rotating the telescope axis by using the motor, and noting the number of counts moved by inspecting the motor's status window in Scope II's display.  If the axis cannot be fully rotated, then use a precision level and a precision 90 degree angle, moving the axis from level to vertical, and noting the counts moved.  Multiply by 4 to arrive at the counts for a full 360 degree revolution of the axis.  Roller drives often slip, so after carefully balancing the telescope to prevent preferential slippage in one direction, move the telescope axis by motor control back and forth several times, taking the average.  Obtain the counts per revolution accurate to at least four digits.  This translates to a one arcminute error when moving from horizon to horizon.

 

The final step under controller setup is to set the direction of motion for both motors and encoders.  Move the telescope axis upward or clockwise.  To determine clockwise direction, imagine placing your body along the axis, with your head aimed at the axis' pole.  For equatorial mounts, your head will be aimed at the celestial pole.   For altazimuth mounts, your head will be aimed at the zenith.  Now imagine yourself in the middle of a clock.  Clockwise motion will be the same direction as the clock's hands move.

 

Click on the file save cfg after this last procedure is finished, to save your work.

 

Startup

 

Use the 'Startup' tabbed pane to set site, mounting type, and starting coordinates.

 

Site is used for determining refraction, as refraction is based on the object's elevation above the horizon.  Site can also be used for telescope alignment.  If an altazimuth telescope is precisely leveled, and the 0 degree azimuth set to true north (regardless of hemisphere), then an altazimuth alignment can be adopted for the initialization.  Goto and tracking will be as accurate as the scope is level, site values are correct, and the computer's time is accurate.  Similarly, for an equatorial telescope, if the site values and computer's time is accurate, then a synchronization to a star is not required.

 

Two dozen telescope mounting types are supported, each distinguished by the parameters: canMoveToPole, canMoveThruPole, primaryAxisFullyRotates, meridianFlipPossible, meridianFlipRequired, autoMeridianFlip, and autoMeridianFlipFuzzDeg.  CanMoveToPole means that the telescope can reach the pole of the primary (azimuth, or Right Ascension) axis.  Certain mount types such as the equatorial yoke cannot.  Some mounting types such as the equatorial fork can swing through the pole, denoted by canMoveThruPole.  Some mounts do not allow the primary axis to fully rotate, such as the equatorial horseshoe and equatorial splitring, denoted by primaryAxisFullyRotates.  Finally, meridian flips are possible in some mounting types, and required in still others.  The meridian flip can be made to occur automatically by setting the autoMeridianFlip.  The distance that the telescope is allowed to traverse past the meridian before flipping is configured by the autoMeridianFlipFuzzDeg.  Besides the telescope mounting types already configured, a custom mounting type can be defined by unique combinations of these parameters.

 

Supported mounting types:

 

mountTypeCustom: user configured

 

mountTypeEquatorial: plain old equatorial mount where primary axis that rotates 360 deg aimed at pole

 

mountTypeAltazimuth: plain old altazimuth mount where primary axis that rotates 360 deg aimed at local zenith

 

mountTypeAltAlt: altazimuth mount where where primary axis that rotates 360 deg aimed at horizon

 

mountTypeHorseshoe: can swing to pole but cannot swing past pole

 

mountTypeEquatorialFork: can swing to and past pole into sub-polar region

 

mountTypeEquatorialYoke: cannot swing near pole

 

mountTypeCrossAxisEnglish: can track well past meridian when aimed toward celestial equator, but cannot cross meridian while aimed at sub-polar region due to poleward support post

 

mountTypeSplitRing: can swing through pole, cannot rotate primary axis full circle in RA

 

mountTypeGermanEquatorialMount: requires meridian flip

 

mountTypeExtendedGerman: no meridian flip, no pole support to impede crossing meridian while pointing underneath pole

 

mountTypeOffAxisTorqueTube: configured same as extended german

 

mountTypeWeightStressCompensated: per famous Zeiss example: dec and ota pivot on top of RA axis, counterweights held by bars that are placed outside ota and hang down past pivot

 

mountTypeInvertedFork: top of RA axis is split into fork that moves in dec, ota held by outside inverted fork that fits over the RA fork, this outside fork also holds the counterweights for the ota

 

mountTypeSiderostat: means stationary star, tube horizontal pointed at pole, flat is mounted equatorially

mountTypePolarSiderostat: means stationary star, tube parallel to polar axis looking down into flat, flat is mounted equatorially

 

mountTypeUranostat: tube horizontal pointed at pole, flat is mounted altazimuthly

 

mountTypeHeliostat: same as siderostat but looks at the Sun, only one axis of movement

 

mountTypePolarHeliostat: same as heliostat but tube aimed up at polar axis

 

mountTypeCoelostat: developed from siderostat; means stationary sky, siderostat mirror fixed parallel to polar axis, tube moves in dec; plane mirror mounted facing the celestial equator on axis pointing to celestial pole, when driven around axis the reflected beam remains stationary and does not alter its orientation; sometimes a 2nd mirror used to reflect the light into the telescope

 

mountTypeCoude: 2 mirrors, the upper rotates in Dec, the lower rotates in RA

 

mountTypeSpringfield: 2 diagonals produce stationary eyepiece, needs meridian flip

 

The final stage in the Startup tabbed pane is to set the starting coordinate.  You should also synchronize the telescope coordinates as calculated from motor positions and external encoders.  If using an altazimuth mount, azimuth can be any value, and altitude need only be accurate to 30 degrees.  The initialization option to calculate correct altitude will be used later to improve the altitude value.

 

Initializations

 

All tracking and goto telescopes must align themselves with the celestial sphere.  Telescope coordinates must be translated to the celestial sphere's coordinates.  Two initialization points are needed to accomplish this.  Each initialization consists of the star's celestial coordinates, the telescope's coordinates when pointed at the star, and the sidereal time of the initialization.  Since the celestial sphere appears to move across the sky at the sidereal rate, the observation's time must be recorded.  A single initialization establishes an axis.  The second initialization establishes the second axis.

 

Initializations come in several flavors. 

 

If the scope is equatorially aligned, and the local sidereal time known, then no subsequent initializations are needed: the polar alignment provides one initialization and the local sidereal time giving the right ascension at the meridian or hour angle offset providing the second initialization.  Equatorial mounts are actually four axis mountings, with the altazimuth mount typically of very limited extent and only used to polar align the scope's primary axis.

 

For an altazimuth scope, if the site's latitude and longitude are accurately known, the local sidereal time accurately known, the scope is accurately leveled, the scope's azimuth with respect to the equatorial pole known, and the scope's altitude reading is accurate, the two initialiations can be calculated from standard spherical trigometric equations.

 

Otherwise, two initializations or observations must be made.  Curiously, starting sidereal time need not be accurately known, only the difference in sidereal time between the two observations.  Similarly, the scope's starting azimuth need not be known, as again, the difference in azimuth between the two observations counts.  Finally, the scope;s starting altitude need not be known accurately, as it is possible to deduce the correct starting altitude after the two initializations have been made.  This is done by comparing the angular separation in celestial coordinates to the angular separation in telescope coordinates.  Only one particular value of altitude will give the correct angular separation.

 

Consequently, there are several methods to initialize the telescope depending on the mount's alignment and what coordinates are known. 

 

1. Previously initialized and scope not moved since software shutdown and local sidereal time accurately known: goto and tracking can resume as if the software was never shutdown.

 

2. Previously initialized but scope moved after software shutdown or local sidereal time not known: set the computer date/time as accurately as possible, center on a star, then perform a reset to current equatorial coordinates.  This will result in resetting the telescope's coordinates.

 

3. Scope is equatorially aligned: adopt an equatorial alignment at software startup, center a star and perform a reset to current equatorial coordinates.  This will result in resetting the telescope's coordinates.

 

4. Scope is altazimuthly aligned and leveled with respect to the ground, site latitude and longitude accurately known, azimuth of zero is set to the north, and local sidereal time is known: adopt altazimuth alignment at software startup.

 

5. The instant eyeball initialization which is good enough for visual tracking: set altitude as accurately as possible, set azimuth of zero to the north, adopt an altazimuth alignment at software startup, center a star, then perform a reset to equatorial coordinates.

 

6. Tracking initialization: set altitude as accurately as possible, center a star or planet or even a crater on the Moon, perform an initialization #1, follow the object with the handpaddle for a couple of minutes, then perform an initialization #2.  The object should 'freeze' in the eyepiece or camera, though some slow drift will be noticed over time, and, goto to other sectors of the sky will not be accurate.

 

7. Traditional two star initialization: center a star, perform initialization #1, center a second star, perform initialization #2.

 

Performing initializations.

 

There are several ways to set up the initialization equatorial coordinates.

 

1. At program startup, go into the Initialization tabbed pane and select NoAlignment.  Two suggested alignment stars along with instructions will be displayed.  An initialization's equatorial coordinates can be changed by clicking the 'change' toggle button to the right of the initialization equatorial coordinates display.  Then handpad will be placed in handpadModeAutoInit12.  Use the handpad to center the first star, then press either the left or right mode key.  Use the handpad to center the second star, then once again, press either the left or right mode key.

 

2. On the main at-a-glance panel, click on the set any coordinate toggle button.  Select init#1 or init#2 and proceed to choose an object's coordinates from the object library, from an individual datafile, or by manually entering the equatorial coordinates.

 

3. Go to the CmdFiles tabbed pane, click on the select telescope command combobox, and choose cmd_scope_init1 or cmd_scope_init2.  Manually edit the line, adding the desired coordinates.

 

For options #2 and #3, place the handpad in handpadModeInit#1, use the handpad to center the star, then press the left or right mode key.  Repeat for the second star, after placing the handapd in handpadModeInit#2.

 

4. Use a scroll file built ahead of time to feed the initialization equatorial coordinates to Scope II. Such a file might consist of:

 

prompt starting initialization command file

init1 [RaHr] [RaMin] [RaSec] [decDeg] [DecMin] [DecSec] <- edit and replace with desired equatorial coordinates of star #1

init2 [RaHr] [RaMin] [RaSec] [decDeg] [DecMin] [DecSec] <- edit and replace with desired equatorial coordinates of star #2

prompt ending initialization command file

 

now run by going into the tabbed pane CmdFiles, clicking on select command file, and finding the file that you've built.  When the first star is centered, press either the left or right mode keys on the handpad.  Move on to the second star, and when it is centered, repeat the handpad left or right mode key button press. 

 

Check the initialization status display in the lower right hand side of the program display to verify that all went according to plan.  For an equatorial telescope, the latitude should read 90 degrees, and for an altazimuth telescope, the latitude should agree closely with your site's latitude.  The hour angle offset should be very small.

 

Goto

 

Select target coordinates by either clicking on the at-a-glance panel's new toggle button next to the target coordinates, or, select the set any coordinate toggle button and after the Get Coordinate window appears, from the combo box's dropdown list, choose new target.  Now, select an object from the library, or from a datafile, or by manually entering the equatorial coordinates.  The scope will slew to the object and track on it when the Ok toggle button is clicked.

 

Remote control across the network

 

Remote control can be divided into two categories: LAN, and WAN.  LAN communications, as can be found in a home observatory network, sit inside a firewall and have fast reliable communication.  WAN communications go out over the internet, where response time is variable.

 

Scope II can act as a piece of middleware, receiving commands from across the LAN or WAN, and communicating with the motor and encoder controllers via a serial or USB link.  Scope II can also communicate with the controllers over a LAN, the WAN being too variable to use for this segment.

 

Commands to and from Scope II can take the following forms: shared file with ASCII commands, serial com/USB ports, UDP, TCPclient, TCPserver, and TCP (tries client, then switches to server if no server found). 

 

Commands between Scope II and the motor and encoder controllers need to be fast and reliable.  Commands need to be received by the controllers as soon as they are issued, and the controllers' statuses need to be returned to Scope II as fast as possible.

 

The serial link to the controllers can be wireless.  See products such as AirCable’s wireless serial link and DigiInternational’s Wavespeed/S.  These substitute a wireless link for the serial cable.  USB can be sent wireless with such products as DigiInternational’s AnywhereUSB.  An USB to RS232 serial converter is needed to attach the controllers to the USB port.

 

Scope II can act as a relay, taking commands from the LAN (UDP, TCP) and relaying them onto a serial link.  To run Scope II in relay mode, use the relay.bat file which adds a '-relay' command line argument to scope.jar, or, run test.bat and select the test item 'ioRelay'.  Enter the configuration information for both channels that you wish to connect together.  For instance, configure the remote copy of Scope II running on a machine in your living room to talk to the motor controller on UDP port 1000, configure the ioRelay copy of Scope II running on a machine in the observatory next to the motor controller to connect UDP port 1000 to COM3, and plug in the controller to COM3 of the ioRelay machine.  Now, the remote copy of Scope II can communicate to the motor controller via UDP across the LAN.

 

Alternatively, use a serial to network converter such as a Lantronix unit.  Attach the Lantronix unit to the motor controller.  Configure Scope II for TCP communications with the Lantronix unit, by setting scope.cfg's servoIOType, servoRemoteIPName, and servoRemoteIPPort settings to match the Lantronix unit's values. 

 

To conclude, for Scope II to controller communications, best is a serial link, though if needed, commands can be networked over the LAN and translated to serial commands by either Scope II acting as a relay, or by a hardware device such as a Lantronix unit.

 

Commands between controlling or scheduling programs and Scope II can be more relaxed.  Security may be an issue across the WAN.

 

For an external control approach with LX200 styled commands: run a planetarium or software planning/scheduling program that supports LX200 commands either natively or through the ASCOM drivers.  Commercial products such as Virtual Serial Port Kit connect applications through the creation of virtual comm ports.  For instance, Com8 and Com9 might be created and tied together.  Configure the controlling application to use Com8 and ScopeII to use Com9.  For a freeware alternative, use HW_VirtualSerialPort software running on the remote machine to relay generic LX200 driver serial commands to a TCP channel.  Configure Scope II running on a machine local to the motor controller to receive LX200 styled commands from the TCP channel by setting the LX200IOType to TCPServer, LX200RemoteIPName, and LX200RemoteIPPort parameters in scope.cfg.

 

When considering ASCOM hubs and similar multi-application environments, treat Scope II as a telescope driver, specifically as a Meade LX200 generic driver.  See the instructions on how to configure Scope II to communicate with LX200 outputted commands.

 

For both LAN and WAN, the most straightforward approach is to use remote control software, such as XP's Remote Desktop Connection, PcAnywhere, VNC variants, and so forth.

 

Configuring for ASCOM/ external LX200 control

 

Use Meade generic LX200 driver via a com port:

 

  1. Connect to a second PC/laptop running controlling planetarium program via a serial null modem cable,
  2. As above, but use serial to TCP converter like a Lantronix unit and configure Scope II's LX200 ioPort for TCP,
  3. If wishing to run Scope II on same PC/laptop as controlling planetarium program, then use software that creates virtual com ports, ie, the free HW Virtual port manager or similar such as VSP, and VSPK: search web: 'virtual com port';

 

 For HW Virtual port manager, configure as follows:

HW config:

  1. Set ip to local machine ip (eg 10.146.98.32, if unknown, at command prompt, type 'ipconfig/all')
  2. Select a port (eg 1000)
  3. Select a new virtual com port name (eg com5)
  4. Select server port (same port number as above, eg 1000)
  5. Settings tab: NVT | Keep connection -> check on

 

Scope II config in the scope.cfg file:

  1. Turn on LX200 control (eg LX200Control true)
  2. lLcate the LX200 input protocol section and set IOType to TCPServer (eg LX200IOType TCPServer)
  3. Set both IPPorts to the same port number as in the HW config (eg LX200homeIPPort and LX200RemoteIPPort 1000)

 

example config:

[*** LX200 input protocol section ***]

LX200Control               true

LX200IOType                TCPServer

LX200homeIPPort            1000

LX200remoteIPName          10.146.98.32

LX200RemoteIPPort          1000

 

Controlling software, ie, planetarium program config:

  1. Select ASCOM generic Meade LX200 driver
  2. Configure com port to match HW config's com port (eg com5)

 

Verify that all works:

  1. Fire up HW Virtual port manager and turn on logging: you will see traffic as it occurs
  2. Fire up Scope II: you should see msg at startup:

 

TCP local server socket connection set on port 1000

...waiting to receive TCP packets...

 

3. fire up planetarium control program and attempt to connect: you should obtain a successful connection,  and see traffic in HW Virtual port manager log window;

 

    see in Scope II terminal window:

 

    client has closed TCP connection

    closed TCP server listening on port 1000

    TCP serverThread ending

    TCP local server socket connection set on port 1000

    ...waiting to receive TCP packets...;

 

    and in Scope II LX200 status with auto update turned on, the various LC200 commands flowing into Scope II;

 

    and finally in the controlling planetarium program, after turning on any necessary 'display telescope' or  'track telescope' options, see the scope's position in real-time.

 

 

User Interface

 

The user has control over the appearance of the user interface.

 

Valid configuration file UILookAndFeel values are:

          (an empty value)

metouia (metouia look and feel, GNU LGPL license, written by Taoufik Romdhane, http://mlf.sourceforge.net/index.php?home )

systemLookAndFeel

crossPlatformLookAndFeel

com.sun.java.swing.plaf.motif.MotifLookAndFeel

com.sun.java.swing.plaf.windows.WindowsLookAndFeel

com.sun.java.swing.plaf.gtk.GTKLookAndFeel

javax.swing.plaf.metal.MetalLookAndFeel

javax.swing.plaf.basic.BasicLookAndFeel (appears to be same as metal look and feel)

apple.laf.AquaLookAndFeel (Mac only)

 

usePanelColors turns on/off the panel colorization as defined by the subsequent lightPanel, mediumPanel, and darkPanel color values (a row of 3 numbers from 0 to 255, red green blue)

 

stopToggle and goToggle are designed for red and green appearance.  The user can change these values if desired.

 

radioButton and comboBox colors can also be changed by the user.

 

 

External Encoders

 

External encoders are the optional encoders placed directly on the telescope’s axes as an independent external position reporting device.  If the telescope axis slips, either accidently (say, roller drive and the altitude axis is severely unbalanced), or purposefully (hand pushing the scope using a clutched drive), then some sort of external position sensor is needed.  Otherwise, the user must issue a reset or synchronize command after centering an object in order to orient Scope II

 

Scope II supports a variety of external encoders.  They include:

encoderNone (no external encoders present)

encoderDaveEk (Dave Ek interface box)

encoderBSeg (Bob Segrest interface box)

encoderSkyCommander (Sky Commander box)

encoderTangentNoReset (Tangent box without reset capability)

encoderTangentResetViaR (Tangent box that resets with ‘R’ command)

encoderTangentResetViaZ (Tangent box that resets with ‘Z’ command)

encoderSiTech (Sidereal Technology controller with integrated encoder interface)

 

If in doubt as to encoder type, consult the encoder interface box manufacturer.  The box’s manual often states the reset protocol.  The user can also launch the encoder terminal window from the Scope II: Controller tabbed pane: 1. Set Controller Types panel.  Enter a reset command and watch for the encoder box’s return.  If successful, you will see something along the lines of +1234 +5678.

 

The user can choose how the telescope behaves when a discrepancy arrises between the external encoders and the motors position as reported by the motor controller.

 

Scope II will not take any action until the discrepancy exceeds the user configured parameter: encoderErrorThresholdDeg. 

The user is advised to characterize the true accuracy of their external encoder system, and consequently not to lower the error detection threshold below this amount.  A common way is to move the telescope in the daytime between a high stop and a low stop.  Note the variation in the encoder readings, as shown in the Scope II Startup tabbed pane: 3. Set Coordinates panel.  Assuming the drive or clutch is not slipping, the user can also monitor the encoder resets during operation by inspecting the scope.encoders.reset.log.  This is a log of encoder to scope and scope to encoder resets.  Typically the user will wish to set the threshold so as to at least guarantee centering of the object.  If using a digital camera with a small CCD, the threshold may be set very tight.   If purely visual use, then the threshold may be set relatively coarse, such as 0.1 deg.  If using the Sidereal Technology integrated encoder interface, and using strongly geared encoders, it’s possible to set the threshold extremely tight, down into the arcseconds range.

 

If Scope II detects an unacceptable error threshold, then the resulting behaviors will be controlled by the following user configured parameters:

 

resetScopeToEncodersTrackOffResetTarget: if encoder vs current position exceeds error threshold when tracking is off, then reset the target coordinates.  The default is true, as most users, when tracking is off, will wish the scope to set the target positioning to the current position as determined by the external encoders.  This ensures accurate tracking rates when tracking is started or a slew is begun.

 

resetScopeToEncodersTrackingResetTarget: if encoder vs current position exceeds error threshold when tracking, then reset the target coordinates.  The default is false, as most users will wish Scope II to ensure that the scope continues to be centered on the target position.  Typical uses include star parties, where guests may accidently bump the telescope off-target, or windy conditions, where a strong wind gust might most the scope around.  However, if you wish to push the telescope a great deal by hand, and you do not care to use the handpad’s tracking on/off mode to cycle tracking off when hand moving the scope, then you will want to set this value to true.  This will cause a reset of the target position to wherever the scope finds itself when the user has finished hand positioned the telescope.

 

resetScopeToEncodersSlewingResetTarget: if encoder vs current position exceeds error threshold when slewing to a target position, then reset the target coordinates.  This is a reset during slewing: contrast this with the above parameter which is a reset during tracking.  The default is false, since it is likely that the user will desire Scope II to complete a slew to position, avoiding target coordinate resets, even if the external encoders trigger a motor or axis position reset. 

A slew is defined as any commanded move that results in a distance to move of greater than one arcminute.  If the scope’s drives have a tendency to slip, slewing to position will be problematic without this behavior, as any slippage will result in a target reset to current position, effectively ending the slew.  If this value is false, the slew completes to the external encoder position as Scope II adopts this externally set position during every threshold-exceeded reset. 

With a value of false, used in combination with resetScopeToEncodersTrackingResetTarget = true, the user can command slews to complete yet hand push the scope as desired after reaching target.

 

 

 LX200 Commands

 

Scope II reads custom LX200 commands, including ability to read any Scope II cmd_scope… command by prepending the custom ‘XZ’.

 

Cartes du Ciel’s advanced plugin supports these commands.  The CDC software is available from http://renato.bonosoft.it/scope/

 

XAM gets ASCOM mounting type, format single digit of 0, 1, or 2

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

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

XP getPierSide, format single digit 0 (east side facing west) or 1 (west side facing east)

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

XZ<cmd_scope...># used to encapsulate a cmd_scope command


 

 

Here is the list of recognized LX200 commands, including the custom commands:

 

Standard commands:

 

ack

alignAltaz

alignLand

alignPolar

reticle

distance

focusOut

focusIn

focusQuit

focusSetFast

focusSetSlow

getRa

getDec

getAlt

getAz

getSidT

getLocalT24

getLocalT12

getSiteName

getMinQualityFind

getDate

getClockStatus

getLat

getLongitude

getTz

getField

timeQuartz

LI

setNGCLibrary

setStarLibrary

nudgeGuideNorth

nudgeGuideSouth

nudgeGuideEast

nudgeGuideWest

moveDirRateNorth

moveDirRateSouth

moveDirRateEast

moveDirRateWest

startSlew

stopSlew

stopMotionNorth

stopMotionSouth

stopMotionEast

stopMotionWest

setMotionRateGuide

setMotionRateCenter

setMotionRateFind

setMotionRateSlew

setRate1 (Rates 2-9 not supported)

setRa

setDec

setField

setCurrentHigherLimit

setSidT

setLocalT

setDate

setGMTOffset

setSiteNumber_S

setLat

setLongitude

setBrightMagLimitFind

setFaintMagLimitFind

largeSizeLimitFind

smallSizeLimitFind nextMinQualityFind

setTypeStringForFind

swCommand

sync

setSiteNumber_W

toggleLongFormat

getFirmwareIDString

getFirmwareDate

getProductName

 

 

Custom commands:

 

getASCOMmountType

getFocusFastDegSec

getFocusSlowArcsecSec

getFocusPos

setFocusFastDegSec

setFocusSlowArcsecSec

getGuideArcsecSec

setGuideArcsecSec

setHandpadMode

handpadLeftKey

handpadRightKey

setInit1

setInit2

setInit3

sendFieldR

setObjectName

getPierSide

clearDisplay

stringCommand

 

 

Interfacing with other programs

 

Scope II acts as a generic Meade LX200 telescope, so any program that is compliant with ASCOM, or, includes a LX200 telescope driver, can interact with Scope II.  To configure, see the section  Configuring for ASCOM/ external LX200 control.

 

Scope II interfaces with Guide, a planetarium program by Project Pluto (Bill Gray) by reading and writing interfacing files.

Configure Guide by going to Settings, then Scope Control. Select an unused comm port, and pick 'altaz'.  This is a special driver option for Scope II and the DOS stepper version scope.exe.  You will see a new drop down menu option appear, "Scope Pad".  Select it.  Configure Scope II by editing the following lines in scope.cfg:

[*** external program interface section ***]

ProjectPlutoGuidePath      C:\GUIDE8\

ProjectPlutoGuideExec      guide8.exe

 

To send coordinates from Guide to Scope II, select 'slew scope' on the scope pad menu.  To receive coordinates into Guide  from Scope II, select 'slew guide'.   All actions in Scope II are automatic: nothing need be done by the user.

 

The interfacing files are located typically in the controlling planetarium program subdirectory, pointed to by scope.cfg’s ProjectPlutoGuidePath variable, ie, c:\guide8\

The file that is used to read in coordinates from the controlling planetarium program is called slew.dat and has two lines with the following format:

 R     <Ra degrees>

 D     <Dec degrees>

The file that is used to write coordinates to the controlling planetarium program is called slew_out.dat and has one line with the following format:

R          <Ra degrees>     <Dec degrees>

Any controlling program can thus add a little software to communicate with ScopeII in this manner.

 

Status Pages Across the WAN

 

Browsable status pages are viewable across the LAN, and WAN if security permits.  To turn on the display, set updateHTMLFreqSec in scope.cfg to an appropriate update value, typically 1-5 seconds.  Or, use cmd_scope html_update_freq 1.  Browse to status.html and servoStatus.html in the local directory that Scope II is running within.

 

The Handpad

 

 

The handpad is used extensively for advanced operations that are best executed at the eyepiece or in front of the imaging device’s control computer.

 

Several handpad designs are supported.  These are:

 

handpadDesignStandard: the standard design as originated in scope.exe, with 4 direction buttons, a speed switch, and 2 mode keys.  The four momentary-on buttons move the scope in altitude and azimuth. The center switch selects between fast slewing and slow 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.

handpadDesignDirectionOnly: handpad contains only 4 direction buttons, but the telescope can be commanded to move in two axes at once, unlike the standard design.

handpadDesignSiTech: uses handpads designed by Sidereal Technology, including wireless.  Here, the middle switch, the speed setting, is replaced with a push button.  Momentarily press the button to toggle the speed setting.  Unlike the handpadDesignStandard design, the telescope can be commanded to move in two axes at once.  The handpad jumper setting on the Sidereal Technology controller board needs to be set towards the outer edge.  This is the jumper’s normal location.

The get keypad button on the SiTech configuration screen reports the handpad’s state.  The keypad return reports logical values.  To see the state of the raw input ports, use the main ScopeII motor status windows.  Look for limit1 and input displays.

 

 

SiTech keypad return values for handpad button presses:

Button pressed

Fast speed toggled

Slow speed toggled

Logical value

None

128

144

16

Down

132

148

4

Up

136

152

8

Counterclockwise

130

146

2

Clockwise

129

145

1

Left mode

192

208

64

Right mode

160

176

32

 

The handpad can be placed into a number of operational modes.  These are:

 

handpadModeOff: no special mode.


handpadModeAutoInit12: works with Scope II’s auto-init method, where Scope II selects the two best stars to initialize with, then gives instructions in the Initialization tabbed pane.  The scope is maneuvered by the handpad’s 4 direction buttons, and when the first star is centered, either left or right mode key is pressed, causing the initialization.   Repeat for star #2.

handpadModeAutoInit123: each press of the left or right mode key initializing the next position.  It is up to the user to position the scope using the handpad’s direction buttons, and enter the initialization’s equatorial coordinates via the Get Coordinates window or via a scroll file.

handpadModeInit1: a press of the left or right mode key initializes position #1.  It is up to the user to position the scope using the handpad’s direction buttons, and enter the initialization’s equatorial coordinates via the Get Coordinates window or via a scroll file.

handpadModeInit2: a press of the left or right mode key initializes position #2.  It is up to the user to position the scope using the handpad’s direction buttons, and enter the initialization’s equatorial coordinates via the Get Coordinates window or via a scroll file.

handpadModeInit3: a press of the left or right mode key initializes position #3.  It is up to the user to position the scope using the handpad’s direction buttons, and enter the initialization’s equatorial coordinates via the Get Coordinates window or via a scroll file.

 

handpadModePolarAlign: step through the polar align sequence; for more on this, see the polar alignment sequence instructions
handpadModeAnalyze: a press of the left or right mode key analyzes the current object’s position.  After performing a goto to the object, center the object in the handpad, then analyze the results.  The movement required to center the object after the goto is recorded as a positioning error that can be used for mount analysis and to generate error correcting files.

handpadModeGuide: press of the left mode key places the scope into guiding mode.  If the scope is already in guiding mode, which can occur from an external command channel, then the press of the left mode key begins the recording of guiding actions for later analysis and conversion into PEC files.  Press of the right mode key ends the recording of guiding actions.  A subsequent press of the right mode key ends guiding mode.  Drift values are calculated and adopted.  At the end of the guiding mode, the scope is returned to the position at the start of guiding.

handpadModeGuideStay: as above, but at the cessation of guiding mode, the guide star is kept centered.

handpadModeGuideStayRotate: as above, with the 4 direction buttons gradually rotated per the field rotation angle.

handpadModeGuideStayDrag: drift or drag values from the scope.cfg file are added to the current drift when the left mode button is pressed, and subtracted from the current drift values when the right mode switch is pressed; this is for knife edge autoguiders that rely on the guide star being constantly dragged back across the knife edge.

 

handpadModeGuideSiTech: press of the left mode key places the application in guide mode and the Sidereal Technology controller into its guide mode.  Here, guiding corrections are sensed through the controller’s handpad input port, and applied directly by the controller within a couple of milliseconds as +- velocity changes to the current tracking rate without the application’s mediation.  The eliminates servo lag.  The application passively deduces the controller’s guiding corrections, while continuing to pass to the controller all the available error correction such as periodic errors, mounting alignment errors, and pointing model corrections.  Press of the right mode key takes the application out of guide mode and returns the Sidereal Technology controller to normal operating mode.

handpadModeGrandTour: mode keys are used to move forward or backwards through an already loaded grand tour file: left key advances and right key slews back to previous object.

handpadModeScrollTour: with an already loaded scroll tour file, left key moves onto next command (which can be a command to turn on autoscrolling), right key returns to previous command.

 

handpadModeScrollTourAuto: with an already loaded scroll tour file, left key turns on autoscrolling and right key ends autoscrolling.

handpadModeRecordEquat: a mode key press will write the current scope equatorial coordinates to the scope.equat file: either left or right mode key can be used.

handpadModeRecordAltaz: a mode key press will write the current scope altazimuth coordinates to the scope.altaz file: either left or right mode key can be used.

handpadModeToggleTrack: left mode key turns on tracking, right mode key turns off tracking.

handpadModeFRFocus: left mode key press turns on field rotation/focus control via the 4 direction buttons, and right mode key press ends the 4 direction button control of field rotation and focus.  The Up/down direction buttons operate the field rotation motor while the clockwise/counterclockwise buttons operate the focus motor.

handpadModeSpiralSearch: left mode key begins spiral search, right mode key ends search.


 

 

Wiring

(Copyright Sidereal Technology)

 

 

Configuration

 

If scope cannot find a configuration file, it will generate a default configuration file. To generate a default configuration file, start, then exit the program. You can also generate a default configuration by running java scope in test mode, and selecting test option 'cfg'. 

 

Here are all the configuration options

 

Configuration parameters

Configuration parameters

siteName

geographic location's name

latitudeDeg

geographic location's latitude in decimal degrees

longitudeDeg

geographic location's longitude in decimal degrees; positive values indicates west of Greenwich

mountType

mounting type, options are:
mountTypeNone
mountTypeCustom
mountTypeEquatorial
mountTypeAltazimuth
mountTypeAltAlt
mountTypeHorseshoe
mountTypeEquatorialFork
mountTypeEquatorialYoke
mountTypeCrossAxisEnglish
mountTypeSplitRing
mountTypeGermanEquatorialMount
mountTypeExtendedGerman
mountTypeOffAxisTorqueTube
mountTypeWeightStressCompensated
mountTypeInvertedFork
mountTypeSiderostat
mountTypePolarSiderostat
mountTypeUranostat
mountTypeHeliostat
mountTypePolarHeliostat
mountTypeCoelostat
mountTypeCoude
mountTypeSpringfield

descriptions:
mountTypeCustom: user configured
mountTypeEquatorial: plain old equatorial mount where primary axis that rotates 360 deg aimed at pole
mountTypeAltazimuth: plain old altazimuth mount where primary axis that rotates 360 deg aimed at local zenith
mountTypeAltAlt: altazimuth mount where where primary axis that rotates 360 deg aimed at horizon
mountTypeHorseshoe: can swing to pole but cannot swing past pole
mountTypeEquatorialFork: can swing to and past pole into sub-polar region
mountTypeEquatorialYoke: cannot swing near pole
mountTypeCrossAxisEnglish: can track well past meridian when aimed toward celestial equator, but cannot cross meridian while aimed at sub-polar region due to poleward support post
mountTypeSplitRing: can swing through pole, cannot rotate primary axis full circle in RA
mountTypeGermanEquatorialMount: requires meridian flip
mountTypeExtendedGerman: no meridian flip, no pole support to impede crossing meridian while pointing underneath pole
mountTypeOffAxisTorqueTube: configured same as extended german
mountTypeWeightStressCompensated: per famous Zeiss example: dec and ota pivot on top of RA axis, counterweights held by bars that are placed outside ota and hang down past pivot
mountTypeInvertedFork: top of RA axis is split into fork that moves in dec, ota held by outside inverted fork that fits over the RA fork, this outside fork also holds the counterweights for the ota
mountTypeSiderostat: means stationary star, tube horizontal pointed at pole, flat is mounted equatorially
mountTypePolarSiderostat: means stationary star, tube parallel to polar axis looking down into flat, flat is mounted equatorially
mountTypeUranostat: tube horizontal pointed at pole, flat is mounted altazimuthly
mountTypeHeliostat: same as siderostat but looks at the Sun, only one axis of movementmountTypePolarHeliostat: same as heliostat but tube aimed up at polar axis
mountTypeCoelostat: developed from siderostat; means stationary sky, siderostat mirror fixed parallel to polar axis, tube moves in dec; plane mirror mounted facing the celestial equator on axis pointing to celestial pole, when driven around axis the reflected beam remains stationary and does not alter its orientation; sometimes a 2nd mirror used to reflect the light into the telescope
mountTypeCoude: 2 mirrors, the upper rotates in Dec, the lower rotates in RA
mountTypeSpringfield: 2 diagonals produce stationary eyepiece, needs meridian flip

canMoveToPole

if the telescope can point at the pole, then set this value to 'true', else 'false'

canMoveThruPole

if the telescope can swing through the pole into the sub-polar region, then set this value to 'true', else 'false'

primaryAxisFullyRotates

if the mount's primary axis can rotate through a full circle, then set this value to 'true', else 'false'

meridianFlipPossible

if a meridian flip is possible, then set this value to 'true', else 'false'

meridianFlipRequired

if a flip is required when the telescope crosses the meridian, then set this value to 'true', else 'false'

autoMeridianFlip

automatically flip the telescope if crossing the meridian; true/false

autoMeridianFlipFuzzDeg

distance that scope can track past the meridian before engaging the meridian flip, in decimal degrees

eyepieceFocus

an eyepiece's name and focus position

handpadPresent

if handpad is connected to the PIC servo control boards, then 'true' else 'false'

handpadMode

starting handpad mode, options are:
handpadModeOff
handpadModeAutoInit12
handpadModeAutoInit123
handpadModeInit1
handpadModeInit2
handpadModeInit3
handpadModePolarAlign
handpadModeAnalyze
handpadModeGuide
handpadModeGuideStay
handpadModeGuideStayRotate
handpadModeGuideStayDrag

handpadModeGuideSiTech
handpadModeGrandTour
handpadModeScrollTour
handpadModeScrollTourAuto
handpadModeRecordEquat
handpadModeRecordAltaz
handpadModeToggleTrack
handpadModeFRFocus
handpadModeSpiralSearch

handpadDesign

starting handpad direction button meaning, options are:
handpadDesignStandard
handpadDesignDirectionOnly
handpadDesignSiTech

handpadFlipUpDown

reverse the up/down handpad buttons

handpadFollowMeridianFlip

flip handpad's up/down buttons if meridian flipped since declination direction inverted when meridian flipped

SiTechRampDownDelaySec

ramp down delay after releasing a handpad direction button: prevents the scope from back tracking

spiralSearchRadiusDeg

spiral search pattern's radius, or, the distance between spiral sweeps

spiralSearchSpeedDegSec

speed at which to traverse the spiral search pattern

initState

starting initialization state, options are:
EquatorialAlignment
AltazimuthAlignment
AltAltAlignment
ConfigFileAlignment
NoAlignment

initOne

let the program enter these values; initialization one coordinate values, ie, '0.0 90.0 44.0 0.0 0.0'

initTwo

let the program enter these values; initialization two coordinate values, ie, '0.0 90.0 44.0 0.0 0.0'

initThree

let the program enter these values; initialization three coordinate values, ie, '0.0 90.0 44.0 0.0 0.0'

z1Deg

axis misalignment error in decimal degrees

z2Deg

azimuth offset error in decimal degrees

z3Deg

altitude offset error in decimal degrees

dataFileCoordYear

coordinate year for the data files

precessionNutationAberration

turn on/off precession, nutation, and annual aberration corrections, particularly when reading the data files

refractAlign

mount alignment to use to calculate refraction, options are:
none
altaz
equat

backlashActive

'true' if backlash correction active, otherwise 'false'

useAltAzEC

'true' if using altitude vs azimuth axis error correction, otherwise 'false'

useAltAltEC

'true' if using altitude vs altitude axis error correction, otherwise 'false'

useAzAzEC

'true' if using azimuth vs azimuth axis error correction, otherwise 'false'

usePMC

'true' if using pointing model error correction, otherwise 'false'

buildPEC

how to build PEC file, format: servoID description motorStepsPerPECArray PECSize guidingCycles Rotation PECIxOffset

guideDragRaArcsecPerMin

Right Ascension drag in arcseconds per minute of time so that guiding corrections occur in one direction when handpadMode is handpadModeGuideStayDrag

guideDragDecArcsecPerMin

Declination drag in arcseconds per minute of time so that guiding corrections occur in one direction when handpadMode is handpadModeGuideStayDrag

handpadUpdateDrift

if 'true', then adopt drift values as calculated from guiding efforts, else 'false'

driftRaDegPerHr

drift in Right Ascension in degrees per hour

driftDecDegPerHr

drift in Declination in degrees per hour

encoderType

encoder interface box type, options are:
encoderNone
encoder
DaveEk
encoderBSeg
encoderSkyCommander
encoderTangentNoReset
encoderTangentResetViaR
encoderTangentResetViaZ
encoderSiTech

encoderIOType

what type of IO method to use for the encoders, options are:
ioNone
ioFile
ioSerial
ioUDP
ioTCPserver
ioTCPclient
ioTCP

encoderSerialPortName

serial port to use for the encoders, ie, 'COM1' if Windows, '/dev/ttyS0' if Linux'

encoderBaudRate

serial port baud rate for encoders

encoderHomeIPPort

if using UDP method for the encoders, then the home port# to use

encoderRemoteIPName

if using UDP or TCP method for the encoders, then the remote machine's IP address

encoderRemoteIPPort

if using UDP or TCP method for the encoders, then the remote machine's port#

encoderFileLocation

if using files to transmit/receive, then location of the files

encoderTrace

record all communications to trace file

encoderAltDecCountsPerRev

altitude axis encoder counts per shaft revolution

encoderAzRaCountsPerRev

azimith axis encoder counts per shaft revolution

encoderAltDecDir

direction that altitude axis encoder counts increment, options are:
no
CW
CCW
biDir

encoderAzRaDir

di