So, since i'm currently in the process of building a DIY bookscanner from two IXUS 160's, i naturally ran into the problem of the broken subject distance override thing. I dont want to rely on the autofocus to re-focus after each shot and would rather set the focus manually to a fixed value.
I want to share some of my findings which builds on the stuff of the last couple of posts:
Setting a custom focus distance via LUA works with the following call:
call_event_proc("MoveFocusLensWithPosition", a, 100)
Where "a" is a value from around 0 to 1840 indicating the focus position, and 100 being the focussing speed.
Whats very interesting:
a.) Using 1840 moves the minimum focus distance at zoom level 0 inside the front lense as you can see from the almost in focus dirt in pic 1.
b.) It reduces the minimum focussing distance at full zoom to a mere 50 centimeters which gives this nice magnification you see in pic 2.
c.) The reported subject distance that CHDK gets maxes out long before the MoveFocusLensWithPosition command is done moving the lens. It stops at around 1.3 meters reported subject distance (which is also the minimum focussing distance of this camera according to the datasheet).
Now i have no idea if that could damage the camera in the long term, but i think since it's willingly executing those commands they are safe. Anything above a value of 1840 will crash the camera immediately.
I'll be using that for my bookscanner together with aflock. From the few tests i have been running this method looks far more precise and reproducable than using the sd override.
Perhaps the subject distance override function for this particular ixus model (or others that suffer from this peculiar behaviour) could be overwritten to use MoveFocusLensWithPosition instead of MoveFocusLensToDistance?