Spectroscopy with Array

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:

  1. Image of target taken with guider – to make sure I have a record of what I am imaging.

  2. ArNe calibration frame – taken like a flat as described above.

  3. Reference star spectrum – I usually calibrate the guider also on this star as they are always bright.

  4. Another ArNe calibration frame

  5. 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.


1 Like

To illustrate how well the Voyager precision slew function works, here is an image taken through the guider - the target is on the slit above and to the left of centre - the dark line through the centre should be obvious

And here is a spectrum of a reference star - its a Be star with a prominent emission at the H alpha and H beta lines

And lastly, a processed spectrum of Gaia22bou - hot off the computer


It all looks very impressive. However, I admit, I know very little about spectroscopy, what are your objectives ? or you can point me to a link / webpage.


at the moment I am looking to identify symbiotic stars from their spectra. Symbiotics are binary stars with mass transfer from one to the other. The classical or Z And symbiotic star is a binary comprising a red giant star and a white dwarf. We can distinguish a symbiotic from a normal star or binary star system by its spectrum and it gets much more interesting when the symbiotic is in outburst.

From time to time I also look at transients that are identified by wide field surveys to determine what is the cause of the sudden increase in brightness - the spectrum of a supernova is very different from a nova or symbiotic in outburst. If my spectrum is good enough, I can also reach some conclusions (or more likely contribute data to a professional astronomer) on characteristics of the transient - say identify whether a supernova is a Type Ia or Type II which are very different beasts.

If you are interested in how spectroscopy contributes to our knowledge of the cosmos, you can have a look at this video:


Excellent and thank you very much for taking the time to respond. Something new for me to investigate.

Hi Pav,

Excellent work and thanks for sharing! Turns out I want to do almost the exact same thing, so I appreciate you sharing the process. I’ve been using Voyager for AP, but started buying the gear for spectroscopy and photometry. Was even thinking about the UVEX, as the foucs motor (released soon?) for that should help with automation. The other option is the eShel II, though with amateur telescopes you are severely magnitude limited.

Couple questions:

  1. For the CDK, I assume you removed the corrector to allow greater UV intensity? Would explain the coma.
  2. Are you using a beta version of the UVEX focus motor? Sound like maybe you are not, do you find your spectra looks fine throughout the night as temperature and telescope position change? I’ve been on pins and needles waiting for the UVEX motor.
  3. What refractor are you using for photometry to compliment your spectoscopy with the UVEX? Suppose the refractor doesn’t need to be too big.
  4. Is there a reason you are not using the Alpy Calibration module? It sounds like tweaking the aperture to module to match your F-ratio can make it more reliable. Though maybe some of C. Buil’s experiments make a big enough argument for using a high temperature lamp.


1 Like

Hi Kevin

The UVEX is a great instrument. It gives a huge range and is quite uniform from the UV up to the NIR. As I operate mine remotely, I don’t change the grating angle often, usually when I have a particular target that requires it - mine is set to cover the range from just above H beta to just below H alpha.

The motor unit from Shelyak is some months away. I spoke with Francois Cochard recently - he tells me that the hardware is designed and being finalised and they are tweaking the software. I am very keen to see it in action as it will give me the chance to use a higher resolution grating and take spectra at different intervals to get a better view of areas of interest.

Focus is an interesting issue. The UVEX is a pain to “tune” initially - there are 2 mirrors and a spherical lens to adjust when setting it up and an adjustment to one often impacts on another so you need to switch back and forth when tuning it. Once that is done, the focus is quite solid. I’m keen to have the ability to tweak the focus of the M2 mirror with the motor unit to make some fine adjustments but for the last 6 months I have not had to make any change.

The one issue that I know Shelyak are looking at is thermal stability. For some reason, the calibration shifts with changes in temperature. This doesn’t affect focus as such. Let me explain - its a bit detailed.

When I take an ArNe frame, I have a set of emission line wavelengths listed in a file. I use ISIS for processing. When a single line is selected in the calibration frame and the correct wavelength identified, ISIS finds a solution for all the other lines and this solution is then applied to all subsequent frames. The solution is a polynomial with several elements - the first 2 are critical. The first element (described as A0) sets the wavelength for the first pixel in the image. The next (A1) is the dispersion ie Angstroms per pixel.

What I find with the UVEX is that if there is a change in temperature between taking an ArNe frame and the first frame of the science images, A1 remains the same but A0 shifts. A real life example - I take an ArNe image then spend 10 minutes on the reference star. I then start taking the spectra images for the target. If the ambient temperature has dropped by say 0.5 degrees C, spectra calibrated with the ArNe frame will be out because the starting position for the solution doesn’t match the target - I will have a perfectly formed spectrum but it will be shifted to the red by a few Angstroms.

I overcome this by taking ArNe frames before each set of images. I avoid starting imaging till the equipment has properly cooled down (about an hour). And I use the wavelength calibration tool in ISIS - this addresses the shift in calibration during an imaging session by matching prominent features in each individual frame and adjusting the A0 element in the solution for that frame. Without this last step, you lose resolution as the tight lines in each frame smear out when stacked if they have shifted slightly.

As I said, Shelyak are trying to pin down the cause to address it with hardware. I don’t see it as an issue as it can be addressed with good technique and software.

Importantly, the ability to adjust the focus of the M1 mirror with the motor proposed will not affect this - that only addresses how sharp are the lines in each individual frame. Let me know if that doesn’t make sense.

If I were you and were looking at the UVEX, I don’t think the motor should be a precondition to diving in.

Another point to consider - if you are looking to extend into the near infrared, you will need a blocking filter. Without it, the second order of UV and blue light overlaps with the first order spectrum in the NIR which contaminates your result. This is why Shelyak supply a blocking filter which sits under the slit. This is not viable for me as I won’t drive 6 hours just to change a filter. The solution is to set up a filter wheel ahead of the UVEX and include a blocking filter there. I will be doing this when the motor is available. Let me know if you want details of the filter.

You can see more on this here: http://www.astrosurf.com/buil/download/asw2020.pdf

To your questions:

  1. I didn’t tinker with the CDK - I’ve managed to get down to about 3600A with the current set up - the response of your camera is probably more important than the scope itself. I have read that the CDK is a good match, particularly at f/8. The coma comes from the guider optics. It really isn’t designed for as wide a field as I use. I wanted a wide field to maximise prospects of plate solving and that works fine.

  2. See above. I do know that the motor is included in UVEX4 which is being developed. I have neither the skills nor the patience to involve myself in 3d printing or electronics - I’m a lawyer not an engineer

  3. I have borrowed an old Takahashi Sky90 from the operator of my observatory. That gives me a wide field (over 1 degree) and so plenty of scope to find comparison stars. I don’t use any reducer as I wanted to keep the focal length longer so there is some aberration at the edges of the field - but I’m not taking pictures for display so I don’t fuss with that.

  4. I am using the Alpy calibration unit as well as the Alpy guide unit. If you send me your email address I’ll shoot some pictures to you. I suspect the tweak you refer to is to stop down the reflective plate on the Alpy unit so that the ArNe light presented to the UVEX is closer to the focal length of the scope - the Alpy is optimised for f/5. I understand that this is done by adding some non-reflective black felt to the reflective plate. I had considered this - it would require longer exposures for the ArNe lamp and as these lamps have a finite life, this reduces their usable lifespan. And I’m impatient. In any event, I don’t think it would make that much difference in calibration.

An externally mounted calibration lamp would be better - as C Buil’s work shows. But its too fiddle for my set up at this stage. A remote rig needs to be as simple as possible and its already a jumble of wires and equipment. That said, I do plan to play with SpecInti soon and that opens up a range of other processing options. One method is to use atmospheric lines for calibration eg 5577 - which would mean I don’t need the ArNe lamp at all.

An eShell would be a better solution for a remote system. But to make it really worthwhile, I’d want to use the fibre optic system and then I’d need to buy a wine fridge to keep the instrument thermally stable. And after that I’d need to rig up some way to wriggle the fibres continuously. So with that and the modest size of my scope, its not really a fit for me. I prefer to go for dimmer targets where I can check out transients rather than look in depth at Ha lines in Be stars - I’m a low resolution fan I guess.

If you are looking at an eShell, you might want to look at the NOU_T and chat to Joan Guarro Flo. Its a lower cost option than the Shelyak instrument and seems to produce good results. Details are here:spectro-aras.com • View topic - First starlight for my new echelle

Ping me an email if you have any follow up questions - my email address is peter@oblaw.net.au I’m in Sydney Australia so if you wanted to have a chat by Zoom/Teams we’d need to find a time that works for us both.


1 Like

Hi Pete

Amazing use of Voyager for spectroscopy! I have an Alpy600 and Lhires III. I am currently using another package for spectroscopy as I thought that locating the target would be impossible through a guidescope (not enough stars, distorted field, etc). Are you using targest in or near the milky way? I would guess it might get tricky with sparse fields?

I currently use a finderscope to ensure I am near, but then position in the guider by hand ( I use joystick and arduino combo to to link to the mount movement…). I suppose I just have to try the plate solving in the guider to see…

Also, when using the hand positioning method, I rely on capturing a series of frames continuoslly from the guide camera (SX lodestar). I dont see away to do this in Voyager…

Any thoughts?



Hi Kevin

apologies for the delay in getting back to you - I was overseas when you posted and have been getting over jet lag since returning.

To your questions - yes, I plate solve using the guider. My spectroscope is a UVEX but I use the Alpy guide unit to guide. To maximise my FOV, I bought the ZWO ASI174MM guider - this was before the mini came out but the chip is the same. With my Planewave CDK 12.5, I have a FOV that is 13.5 x 8.5 arc minutes (strangely, the max FOV according to the Alpy manual is slightly smaller). There are aberrations at the edges of the FOV but there is still quite a bit of real estate to play with.

I plate solve without too many issues with this FOV. I have been able to do so with both Pinpoint via Maxim and TSX. In both cases, I needed a bigger catalogue so I am using the Gaia DR2 catalog while with Pinpoint I use the ATLAS catalog. With ATLAS I plate solve using stars down to mag 18. Plate scale is 0.84 arc secs/pixel.

Unfortunately, I can’t use the TSX AllSky option for plate solving - it fails almost every time because it is optimised for a larger FOV. So there are times when I rely on Voyager to slew away from the target and try again.

The key I think is also to have good polar alignment and a good pointing model. My set up is permanent in an observatory and PA is pretty good. I also use a 200 point Point model with PEC and Protrack running in TSX. So I’m in the neighbourhood when I try to plate solve. Using my pointing model, TSX reports RMS of 11.9 arc seconds. In practice its significantly more than that. If I were to use a precision slew, the first slew would be out by 5 - 8 arc minutes. That said, Voyager will get it to less than 1 arc second error with an additional 2 - 3 slews.

I do have problems when I am away from the Milky Way - but rarely these days.

You are right - there is no option in Voyager to continuously capture guider images and tweak the mount. I looked at several other ways to achieve this with other programs without any joy. What makes it hard is using a Paramount mount. There is no way to sync on a star outside TSX. Voyager gets around this by slew - plate solve - determine the nudge required - slew - plate solve etc. I do know of others who use Prism to do what I do but only with mounts that allow the control software to sync after a plate solve. And Voyager can do that too!

I need to do some maintenance on my rig which requires the spectroscope to go back to France for a bit. When its back up and running, I’d be happy to give you a demo - let me know if you are interested


Hi Pete

Many thanks for details… I am using Voyager’s ‘native’ plate solvers so dont know if that would compromise things, but a demo would be great!


I created a dragscript as recommended by Leo that does nothing but loop guider acquisitions for display in the viewer. Assign to some dragscript buttons and its done ( note - could do with more buttons !) .

Sounds useful! is the script archived somewhere handy?