1) Taken every night, on the sky, at sunset or dawn.
2) Taken for all filters (UBVRI) using an optimal exposure of 2/3 of dynamic range.
The main problem was to find the correct exposure. It was solved taking a test exposure then measuring the average value of the image. Knowing the bias level of the camera, the correct exposure time could be calculated as:
newExpo = currExpo * (TargetADU - biasADU) / (Image.Average - biasADU)
Here is a prototype script were the bias is set at 100 ADU and the target ADU is 40000.
Flats are taken near the zenit switching off the telescope tracking.
Code: Select all
seqDir = "D:\Temp\" sunAltitude = -5.0 nExpo = 3 initExposure = 5.0 targetADU = 40000 biasADU = 100 WaitSun GotoZenith Sequence("u", nExpo) Sequence("b", nExpo) Sequence("v", nExpo) Sequence("r", nExpo) Sequence("i", nExpo) Message("Script ended") end Sub WaitSun while true a = SunAlt cls print "Sun altitude = " + Format(a, "0.000") + "°" if a < sunAltitude then break Pause(2) end while End Sub function SunAlt lon = Observatory.Longitude lat = Observatory.Latitude ra,de = SunRaDec(JD) az,al = EquatToAltaz(ra,de,lon,lat) return al end function Sub GotoZenith lon = Observatory.Longitude lat = Observatory.Latitude ra,de = AltazToEquat(175, 89, lon, lat) print "Moving telescope to zenith ..." Telescope.Goto(ra, de) Telescope.Wait print "Telescope arrived" Telescope.StopTracking End Sub Sub Sequence(filter,images) print "Moving filter wheel to " + filter + " ..." Wheel.Goto(filter) Wheel.Wait print "Test exposure ..." exposure = CalcOptimalExposure print "Optimal exposure for " + filter + " is " + Str(exposure) + " s" for i = 1 to images Camera.Start(exposure, true) Camera.Wait fileName = BuildFileName(filter,i) print fileName Image.Save(seqDir + fileName) if i > 1 then Image.ClosePrevious Next i Image.Close End Sub Function CalcOptimalExposure Camera.Start(initExposure, true) Camera.Wait mult = (TargetADU - biasADU) / (Image.Average - biasADU) Image.Close return Round(initExposure * mult) End Function Function BuildFileName(filter,idx) return "Flat " + filter + " " + Date() + " " + Format(idx,"00") + ".fit" End Function