your problem is not too far away from the one we had while flying a Sd1100 up to the stratosphere.
With another camera, the ideal solution would be to use Tv mode (aka Shutter priority, if you are not familiar with it see
http://en.wikipedia.org/wiki/Shutter_speed_priority )
But, the SD1100 does not have an iris to adjust the aperture, therefore it does not have a Tv move (or Av mode either)
The sd1100 has a ND filter (
http://en.wikipedia.org/wiki/ND_filter ) that automatically switches in when there's a lot of light. The camera "lies" to you and says it's changing aperture from 2.8 to 7.1, but in effects it's just switching the filter in, with a decrease in luminosity that is equivalent to the decrease in luminosity you would have changing the aperture from 2.8 to 7.1.
What I have done in case of our balloon is:
A) forced to camera to keep the ND filter out of the way
To do this, in the main CHDK menu go under "Extra photo operations" and leave all the settings to their defaults, apart:
- ND filter state: Out (do not confuse it with "Off"!!)
- Clear override values on sta: Unchecked (do not confuse the menu item with the "Clear on start" that you find under "Zoom Override". This is one of the last items in the menu
This will activate a red alert on the display "ND FILTER: OUT". It's ok, it must be there. It's an alert because now (because of the ND filter always being out) if you shoot "normally" you might end up having badly over-exposed photos)
B) implement a sort-of shutter priority mode, where you set the shutter time and the camera (being unable to change aperture to get more/less light) changes ISO in order to be more/less sensible to light. This is made via a LUA script that I wrote
See this thread for dcshrum's original post:
http://chdk.setepontos.com/index.php/topic,2376.msg21970.htmlI then joined the team (working on the the camera programming), and here:
http://icbnn.wordpress.com/you can see more info about the very succesful launch they made in Florida
In this thread I presented the results:
http://chdk.setepontos.com/index.php/topic,2877.0.htmlparticularly, give a look to thist post:
http://chdk.setepontos.com/index.php/topic,2877.msg27218.html#msg27218where I give more details on the approach and the snippets of code you might need
Basically, all you need to do is have a loop that repeatedly calls my fast_tv shoot() function, with a small delay if you don't want to shoot too many photos.
If you aren't familiar with Lua scripting, this is an UNTESTED version of the script (I don't have the camera with me now).
Save this block as "test.lua" and run it
-- read current bv from scene
function read_bv96()
press("shoot_half")
while get_prop(115)==0 do
sleep(100)
end
bv=get_bv96()
release("shoot_half")
return bv
end
-- Possible values of max_sv
-- 320 = ISO 50
-- 388 = ISO 80
-- 418 = ISO 100
-- 514 = ISO 200
-- 611 = ISO 400
-- 707 = ISO 800
-- 803 = ISO 1600
-- Ixus 80 has fixed aperture
av = 285 + offset
dbg("FAST TV")
dbg("bv " .. bv)
if bv==-1 then
bv=read_bv96()
dbg("metered bv " .. bv)
-- offset measured brightness
end
--if we shoot at fast_tv,
tv=fast_tv
-- resulting sv would be
sv = av + fast_tv - bv
dbg("tv " .. tv)
dbg("sv " .. sv)
-- let's check if it's not too high
if sv>max_sv then
-- how much must we reduce sv?
reduce = sv-max_sv
-- same reduction must be added to tv
tv=tv-reduce
sv=max_sv
dbg("Reduced: ")
dbg("tv " .. tv)
dbg("sv " .. sv)
end
-- it might also happen than sv goes too low
-- arbitrary limit of 322 sv (abt ISO 50)
if sv<322 then
reduce = sv-322
tv=tv-reduce
sv=322
dbg("INCREASED: ")
dbg("tv " .. tv)
dbg("sv " .. sv)
end
-- at last moment, set our parameters
-- set shutter time
set_tv96_direct(tv)
sleep(100)
-- set ISO
set_sv96(sv)
sleep(100)
shoot()
writelog("FTV", "Shoot " .. get_exp_count() .. " ".. bv .. " " .. tv .. " " .. sv .. " " .. av)
repeat
sleep(100)
until get_prop(206)==0
end
function timestamp()
h=get_time("h")
m=get_time("m")
s=get_time("s")
return ( h .. ":" .. m .. ":" .. s)
end
function dbg(msg)
-- uncomment for extra info il log file
--print(msg)
end
function writelog(prefix, msg)
ts=timestamp()
print('###' .. prefix .. ' ' .. ts .. ' ' .. ' ' .. msg)
end
while true do
-- min shutter 1/2000, max iso 200
fast_tv_shoot(-1, 1053, 514, 32)
sleep(1000)
end
experiment by changing the very last lines of the script: sleep(1000) is a delay of 1 second between each shot while the parameters in fast_tv_shoot change the way the camera exposes. You might want to try slower values such as
-- min shutter 1/1000, max iso 100
fast_tv_shoot(-1, 957, 418, 24)
hope this helps!