Before going further in testing, those first test results with EF 24mmf/1.4 L II USM/5Dm3 @f/1.4 near target for short DOF.
5 shots in sequence (1 step of step-size=1 (=7 sub-steps) apart from each other) :
1st shot =7401 = focused (max contrast) on target
https://www.dropbox.com/s/57zfc2u6sf4qodk/_GOR7401_CROPPED.jpg?dl=0;
2d shot = 7402 = one step behind
https://www.dropbox.com/s/qtajrgs8flcfk78/_GOR7402_CROPPED.jpg?dl=0;
3d = 7403 = one step to the front (should be focused again on target)
https://www.dropbox.com/s/ypny9jp5c3cw0ca/_GOR7403_CROPPED.jpg?dl=0 ;
4th = 7404 = one step to the front
https://www.dropbox.com/s/a3ubgfu2k4jklzs/_GOR7404_CROPPED.jpg?dl=0;
5th = 7405 = one step behind (should be focused again on target too)
https://www.dropbox.com/s/mpm5hyiomf1jzab/_GOR7405_CROPPED.jpg?dl=0.
The log file gives the value of lens.focus_pos before/after moving and shooting : for that lens at least, the counter is incremented and decremented correctly even if the focus distance gets incorrect.
https://www.dropbox.com/s/ps7kfdmze97tc0o/7401_7405.log?dl=0 Seems the move from 7403 to 7404 did not move correctly. The error propagates to 7405.
This confirms A1ex thinking.
The following is speculative:
At least with step-size=1 and with this lens, the counter should not allow to close the focus loop. In the lens scans I had made with step-size=1, the counter returned results too good (all steps were 7 sub-steps) to be true.
Below are some results on scanning lenses with different step-sizes.
I wanted to share them but I was waiting till I had more experimental results on the actual motor move.
Take them with a grain of salt:
In sub-steps Stepsize=1 Stepsize=2 Stepsize=3 Total range
EF 24mm f/1.4 L Constant Constant Quasi constant
USM (ring) 7 (630 steps) (1) 30 (147 steps) (2) (4) From 208 to 207 (2) 4 413
EF 35mm f/2 IS Constant Small variation Small variation
USM (ring) 10 (824 steps) (1) From 42 to 39 (2) From 286 to 276 (2) 8 243
EF 50mm f/1.8 II Variation unavailable unavailable Problem
(not ring) From 2 to 6 with limits (3)
EF 100mm (4416 steps) (4) (396 steps)
limit = lens.focus( numsteps, stepsize)
(1)
- For lenses with ring ultrasonic motors (ring USM), the length of the steps in domain 1 (of step-size=1) seems to be pretty constant.
- This is even true with large values of « numsteps », even though when a move of numsteps>>1 is actually commanded, it is executed one step at a time (one can hear the friction surfaces separation and coming back in contact).
- I wonder whether the domain 1 is not simply done with a « count » of the number of sub-steps. Maybe the move is very/too small to be easily detected ?
- The EF 50mm f/1.8 II doesn’t have a ring USM (lens intended to be cheaper): in that case, the length in domain 1 is very changing. Nevertheless, the targeted focusing precision of such a lens could be achieved, even in such a case, if the lens has a higher number of (maybe varying) steps.
(2)
- There may be a small variation which seems at first sight to be « random ». See for the EF 35mm.
- IMHO, there seems to be a trend which is more evident with step-size 3 : the mean step is longer at both ends.
- For the EF 24mm it is more easy to try to go to the exact target position in sub-steps as the step length in domain 2 (30 sub-steps) is not a multiple of the length in domain 1 (7 sub-steps).
- For EF 35mm the length of one step in domain 2 (near 40) is near a multiple of domain 1 (10).
- In theory, the mean error when using domain 1 steps should be a fraction of a step. This can be very good when there are many small steps.
- This raises a question about the usefulness of fiddling with sub-steps in regard to the precision already achievable with one lens in domain 1.
(3)
- With the EF 50mm lens I used, the lens.focus command did not return false at the infinity end. My script kept sending move commands (infinite loop).
(4)
The EF 100mm macro has a very high number of steps : it takes a very long time to scan as one has to wait enough (around 500ms) at each step for correct data to be available. The total duration is above 30 min and Lv can switch off. The scans were done before the lens_pos counter was available.