Status Report from Cincinnati, February 2002

Mike Gutzwiller

Progress has been slow but steady here in Cincinnati. I have my acquisition program nearly ready for use by anyone who's willing to run Windows 98 or ME and also willing to live with less than complete code.

The system I've been developing has several advantages that I beleive make it worthwhile.

  1. The system is script driven. Specifically with VBScript now but JScript could be easily added. See below for a description of the scripting language.
  2. The system has the ability to manage tasks in parallel. For example it can expose an image or move the mount while the last image is being saved to disk.
  3. The system can be run remotely using other programs such as Visual Basic, Excel, or even Word.
  4. The system uses the cfitsio library to create files so the images should be quite standard.

All that needs to be done now is to add some dialogs to set the localization items such as latitude, longitude, altitude, site characters, telescope, etc. All these items are already parameterized, I just need to copy the dialogs from an old system so it should be ready by next weekend.

The scripting items run the system at a higher level than Michael's does so it doesn't provide direct support for things like the DAC's those all of those will be programmable through the above mentioned dialogs. The scripting supports the following objects:

DecControl - controls the dec motor and the clamp motor
RAControl - controls the ra motor and provides ra and ha values
ImageControl - controls the CCD, shutters, memory card and file io

Each of these objects have both properties and methods. The properties give you information about the system while the methods control what the system does. Each of the properties and methods are listed below.

RAControl.HA - property giving the current hour angle in degrees
RAControl.RA - property giving the current right ascension in degrees
RAControl.TurnRAOn() - method that turns the ra motor on
RAControl.TurnRAOff() - method that turns the ra motor off
RAControl.FastForward() - method that sets the ra motor in fast forward
RAControl.Rewind() - method that sets the ra motor in rewind
RAControl.MoveToLimit() - method that moves the ra motor to the limit shitch
then turns it off
RAControl.MoveToRA(double ra) - method that moves the mo0unt to a specific
ra if possible
RAControl.MoveToHA(double ha) - method that moves the mo0unt to a specific
ha if possible

DecControl.Dec - property giving the declination angle in degrees
DecControl.IsClamped - true if the dec is clamped
DecControl.MoveToDec(double dec) - unclamps, moves the mount to a specific
dec if possible, then clamps
DecControl.MoveToLimit() - unclamps, moves the mount to the dec limit
switch, then clamps
DecControl.ClampOn() - clamps the dec axis
DecControl.ClampOff() - unclamps the dec axis
DecControl.Park() - moves to the limit switch then down to level
DecControl.Unpark() - moves up from level then down to limit switch

ImageControl.ClearCCD() - clears the ccd
ImageControl.SaveImages() - saves the contents of the memory card to files
ImageControl.ReadCCD() - reads the ccd into the memory card
ImageControl.TakeBiasExposure() - takes a bias exposure
ImageControl.TakeDarkExposure(double exposureLength) - takes a dark exposure
ImageControl.TakeFlatExposure(double exposureLength) - takes a flat exposure
ImageControl.TakeObjectExposure(double exposureLength) - takes an object
exposure

With these controls you can write programs to control the camera for as long as you want.

For example the following vbscript program takes clears the ccd, takes a 10 second dark exposure, reads the dark image into the ccd, takes a 10 second image exposure while the dark image is being saved then reads the object exposure and saves it to disk.

ImageControl.ClearCCD
ImageControl.TakeDarkExposure 10.0
ImageControl.ReadCCD
ImageControl.SaveImages
ImageControl.TakeObjectExposure 10.0
ImageControl.ReadCCD
ImageControl.SaveImages

The program is smart enough to know that the TakeExposure and SaveImages can be run in parallel. In fact the following program does the same thing as the above program.

ImageControl.ClearCCD
ImageControl.TakeDarkExposure 10.0
ImageControl.ReadCCD
ImageControl.TakeObjectExposure 10.0
ImageControl.SaveImages
ImageControl.ReadCCD
ImageControl.SaveImages

Since the program is vbscript you have access to all the flow control. The program below will follow a field across the sky until we reach a limit in the hour angle.

RAControl.MoveToLimit
RAControl.TurnRAOn
ImageControl.ClearCCD
while RAControl.RA < 10.0
	ImageControl.TakeObjectExposure 60.0
	ImageControl.ReadCCD
	ImageControl.SaveImages
wend

Again the program is smart enough to parallel the save images of the n'th pass with the exposure of the n'th + 1 image. This makes it unnecessary to clear the ccd before each exposure since the previous exposure's read already did the task.

I will make the code for all this available by next weekend. Any suggestions, comments, etc. are appreciated.