Auto adjusting for sky flats

It would be a good idea to have an option for sky-flats where it adjusts the exposure time based on the target ADU value, and the Average ADU value of the last frame.

The sky decreases / increases in brightness depending on whether you are doing dusk / dawn flats, I Know there is a plugin for Maxim-DL that does this.

I am finding that the vignetting caused by the M54 connectors on my scope are causing vignetting that is not being corrected with a flat panel, but it is better corrected with sky-flats, but sky-flats pose a challenge that you have to manually adjust (and guess) the exposure time to maintain the same ADU value.


I just discovered that N.I.N.A does this already, but what it gains, it looses with the sequencer, their sequencer is far too complex. Flats though do not require a sequence to be created for them to be taken

I have written an external app that takes control of SGP through its api to take sky flats automatically. Right now it only works for dusk flats.

You can download it here:


Hey @mikaelA

I will try this out later. Just a couple of questions, does it require a sequence that contains flats, or does it just use the API to control the camera / filterwheel / exposure time etc?


It doesn’t require a sequence in SGP. Skyflats handles that externally, you can define your list of filters, binning etc. in Skyflats. It should be simple to use, at least that’s the goal.


Thanks, just setting it up ready for tonight, just trying to decide how long after sunset to start the NB Flats, with the order of Ha, SII, OIII, then B, R, G and L

Min Mean ADU 25000, Max Mean ADU 30000

Looks promising, maybe @Ken should consider paying you to write this for SGPro :smiley:

I have a half finished implementation of sky flats. It is functionally complete and works fine when there are no problems, but there are a lot of special cases and exceptions handling to consider… I lost steam there. Perhaps I will pick it up here soon.

The gist of the work we have replaces the current notion of the Flats wizard (not the calibration wizard). In place of this, you are presented with a simple list view where you can add flat events manually if desired, but, more importantly, you can automatically add flat events for all targets in a sequence or individual targets. When you are satisfied with your list, you can make a choice in terms of what you want to do with it. You can either:

  • Add them as a target to the current sequence
  • Run a sky flats routine by clicking a button.

This data is part of the sequence so you don’t have to run it immediately upon creation. Once that worked, I had intent to make the activity sequenceable.

+1 for automatic sky flats. This has become much more important to me recently.

Can you expand on this? What do you mean by “lately”? Just trying to understand needs so we can prioritize things properly.

I moved a large scope to a remote location and I do not have an automatic flip flat device on it, nor do I have a wall mounted panel. So I have to take sky flats and that has proven to be a bit more challenging than anticipated. In all honesty I can make do and there’s probably not a whole lot of people in this same boat, so the priority for this is likely low.

@STAstro The difference is that when Ken or Jared make something it got to work, and work well, while I get away with poor implementation and programming with my free apps. :wink:

@Ken If you want to have an idea of his many people could be interested, my app has had about 50 downloads. However, I’ve only announced it here, not on CN for instance, so I would assume the interest is higher. But it frequently comes up and people suggest Voyager and NINA…

@joelshort I know you wanted to test Skyflats, something you think can be improved to help with the “challenge”?

Skyflats is easy to use and I think you did a great job with it. The problem that I run into has to do with the camera I’m using (QHY11 CCD). The 1x1 image download takes 17-20s and even the 3x3 calibration images take 7s to download and by the time the download is complete the light conditions have changed enough that Skyflats can’t keep up. For my purposes Skyflats needs to be more aggressive in calculating the next exposure ADU. It works, but I can only get 5 flats for each of LRGB on one night after sunset before it gets too dark and star trails start to become an issue.

I will be testing in a couple of hours time, I am using the ASI6200MM Pro, my download speed is pretty good that I should not hit the issue of too much difference between frames.

Any suggestion on how soon after sunset for 3.5nm Ha and SII?

Thank you. That’s helpful.

@STAstro With my Atik460ex and f5 scope I go down to a few tens of ms of exposure time, so I start my narrowband 6nm filters almost 30 min BEFORE sunset. Of course this depends on many factors, I suggest you experiment. If a filter is overexposed, Skyflats will wait 60s and retry, until ADU falls in the range.

I think your order is mostly fine, but I would do RGBL.

@joelshort I see. I’m sure this could be done better, now the algorithm is very simplistic. Its an interesting problem. I will look at it when my obsy is back in operation after more than half a year of modifications, should be mid August.

Noted, always make a point of flats not being lower than 2s, as lower than that I find they don’t correct frames properly anyway

Same for me as I am finding my Pegasus Astro Panel doesn’t work so well on a scope where the light cone at 55m distance from the sensor is much larger than M54 so I am getting quite a bit of vignetting. Until I can utilise the M68 connector on the scope, I am having to result in using sky flats which seem to work on correcting the light frames more effectively


Absolutely loving it!!!

I did find a problem for you though, if I specify a min exposure of 1.5s and a max exposure of 10s, it will go beyond 10s during the current filter if during the process it starts off below 10 and then is required to go above 10. It only seems to check the maximum exposure during the initial calculation for the first frame.

@STAstro Glad you liked it!

Indeed, right now it wont stop the flat sequence once the calibration part has achieved the right conditions. I could enforce this, but it was my idea that people would select files based on the final exposure time, which is shown in the file name. I could include a strict enforcement as an option though, in which case it would stop the current filter and proceed to the next one once the ADU cant be kept in the range with an “allowed” exposure time.

I am always interested in detailed feedback, which I can get from the log file. So dont hesitate to PM me your logfiles, you find them by clicking on this menu item: