If anyone is wondering whether its possible to automate a spectroscopy system with Voyager, the answer is definitely yes. There are some interesting challenges which Voyager Array manages to overcome quite easily.
I have my equipment at the iTelescope Facility at Siding Springs Observatory, Australia. This is a commercial operation with a roll off roof that is controlled by iTelescope. I have a PC in a cabinet at the foot of my mount which I access from home in Sydney – about 6 hours drive from the observatory. It is possible to run a remote set up if it is controlled manually – however, the nights can be long and I wanted to be able to automate my system to run while I slept. This is the holy grail for amateur spectroscopists – there are a few people doing this, some using Prism and others custom-written Python and Windows scripts. But its not easy.
I have a Paramount MX mount which I control with The SkyX. My main scope is a Planewave CDK12.5. Attached to it is a UVEX, a slit-based spectroscope manufactured by Shelyak Instruments. I have a science camera (ZWO ASI183MM) attached to the spectroscope and a guider (ZWO ASI174MM). I also do photometry with a piggybacked refractor – focuser is a Robofocuser, a filter wheel (ZWO again) and camera (Atik 460EX). That is a lot of hardware to manage.
I confronted 3 challenges with my set up – precision slewing, calibration and weather control.
Slewing– my UVEX has a slit mirror. Light from a target passes through a narrow slit (23 microns wide) etched on a mirror. The slit allows the light from a target to be isolated for imaging. The mirror is angled so all light not passing through the slit is reflected to the guider. It is not so different from an OAG. The scope is focused on the mirror and the image taken by the guider is used to focus the scope as well as to plate solve the FOV. So the main camera takes images and nothing else while the guider manages focus, plate solving and guiding. Most astro software assumes that the main camera is used to focus, plate solve and image and all the guider does is guide. Voyager also makes this assumption and it can’t switch camera allocations mid-imaging run.
I use Array to overcome this. I run 2 instances of Voyager – a master and a slave. The master controls the mount and looks after pointing and guiding. The slave simply manages focus and imaging. I have the guider connected in the master instance as both imager and guider. I use the ASCOM connection with Maxim DL which allows 2 connections of the same camera. Provided I am not trying to image and guide at the same time, there is no conflict.
So I use the master instance to slew to the target using the precision slew function and then focus the scope with the guider used as main camera. If I want a picture of the target FOV, I use the guider as main camera as well. Voyager then calibrates the guider and starts guiding. The spectroscope camera starts taking spectra and I’m away.
Another challenge is that the precision required for spectroscopy is higher than for AP. My slit is 4 pixels wide in my guider and ideally the target should be centred on the middle 2 pixels. My plate scale is 0.84 arcseconds per pixel so I have a margin for error of 1.6 arcseconds. With a good TPoint model and polar alignment, I am able to slew consistently within 2 arcseconds of the target and often within 1 arcsecond. I really need to get within 1.5 arcseconds for a good SNR. Leonardo is tweaking the Voyager system to permit sub arcsecond maximum slew errors so I can set 1.5 arcseconds as my max error for precision slewing. If I don’t hit the target, its due to hysteresis in the mount not Voyager.
Calibration– before taking a spectrum, I need to take an image of an Argon Neon lamp to calibrate the instrument. I have a relay box that I control through a webserver and a short script (that a mate wrote) which turns the lamp on and off. I then set up a flat plan in Voyager. In my DragScript, I call the script to turn on the lamp, take my images as if they were flats using a manually controlled flat panel, then call the script again to turn off the lamp.
If I had a compatible webswitch I’d use Viking to control the lamp which would be easier – the principle however is the same.
Weather– I take the feed from the observatory Boltwood and use that to stop and restart imaging with Voyager.
To flux calibrate my data, I take concurrent photometry of my target. This requires a third instance of Voyager to control that scope’s camera, FW and focuser. So my set up with Array is:
Master – guider used for plate solving, focussing and guiding
Slave 1 – spectroscope camera
Slave 2 – photometry camera for focussing and imaging
I break up my observations into blocks with discrete functions. For spectroscopy I need to take an image of a star with a known spectral class near my target so I can determine both the instrument response and effects of the atmosphere around the time of my target. So a block would usually comprise the following:
Image of target taken with guider – to make sure I have a record of what I am imaging.
ArNe calibration frame – taken like a flat as described above.
Reference star spectrum – I usually calibrate the guider also on this star as they are always bright.
Another ArNe calibration frame
Target spectrum and photometry – guided by the master.
Once this is done, I move on to the next block.
The sequence editor in Array allows for differential focusing. I focus the main scope with the master and the refractor with Slave 2 – I can’t focus with the spectroscope so focusing is disabled for Slave 1. Focusing with Array is easier as it allows for offsets for filters – so I can focus with the V filter and be satisfied that Voyager will adjust the focus by the required offset for the B, R and I filters.
Another issue is that my slit is not in the centre of my guider FOV. Also, my spectroscope is only at peak focus across a small subset of the slit. There is an ideal slit position – a single x,y pixel position – that I aim for when positioning my target. I’ve written a simple Python script to determine the RA and Dec necessary to place a target on that precise location. It relies on position angle and separation determined from a plate solved reference image. It works very well but the solved offset RA and Dec is only good for one side of the meridian. So I break up my sequences into East and West sequences and use the Constraints feature in Array Sequence to make sure that I only take spectra using the East-based RA and Dec before the target crosses the meridian.
From what I can see, all the other key features of Voyager are available in Array. Most I don’t use (eg dithering is definitely not helpful).
Voyager does not have a native guiding routine for slit spectroscopy so I don’t guide on the slit if I can avoid it. My guide optics has significant coma resulting in odd-shaped stars at the periphery. I mange that by setting Voyager to exclude any potential guide star in the danger zone.
There remain challenges – taking spectra of faint targets requires more precision which I am working on. Guiding can be a bit hit and miss but that is a feature of my equipment rather than Voyager.
The key message is that automated spectroscopy can be done with Voyager Array – reliably and efficiently.
Feel free to shoot me any questions – either on the forum or DM. If anyone wants to play with my Python script, just let me know. Its quite rudimentary (after all I’m a lawyer by day not a programmer) but it works.