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