Aperture control + test script

  • 27 Replies
  • 1142 Views
*

Offline reyalp

  • ******
  • 11496
Re: Aperture control + test script
« Reply #20 on: 14 / September / 2018, 02:04:57 »
Advertisements
Updated first post to fix logged non-APEX aperture values.
Don't forget what the H stands for.

Re: Aperture control + test script
« Reply #21 on: 14 / September / 2018, 03:44:08 »
Presumably someone didn't want to figure out how to do it in integer-only hostlua.
Is it possible to use the CHDK C implementation in hostlua (like a library call)?

If the error has a repeatable component it would be relatively easy to come up with a correction table and apply the difference in Tv.

The value will not be constant at the aperture. I have already measured this at constant aperture in the past.

With a time lapse, I would change the aperture in one direction only. If, for example, you reach the maximum exposure time with a time-lapse, then I would continue to open the aperture. If it gets brighter again, then I would shorten the exposure time (with a hysteresis like the ND filter).

A better way to measure error might be to take several shots at a fixed value, and then compare subsequent to the average. In the current script, the accuracy of the previous shot can significantly affect the error reported.

Yes of course, but a certain systematics can be seen in meter96.

As next step, I will also create a time lapse with variable aperture. For moving objects, of course, it would be an advantage if the script ran at a fixed interval.

Re: Aperture control + test script
« Reply #22 on: 17 / September / 2018, 13:27:55 »
I did another test run with the M3 (cont mode).
25 pictures with AV96 = 560 and 25 pictures with AV96 = 576. As you can see well, only larger errors occur (at index 25) when the aperture is changed. At constant aperture, the m96_err is only + -1.

In another run (30 pictures) I fixed the aperture in which I twisted the lens after dimming (Canon Lens Twist trick). For the script to work like this I had to delete Set TV. Here you can see very well that no more error arises. So my light source does not seem to flicker.

Re: Aperture control + test script
« Reply #23 on: 17 / September / 2018, 14:15:17 »
Interestingly, your error does not appear to be random: The 4th, 7th, 10th and 11th all have high error, but across runs are within 2 units.

I think I know the cause now. I have now used as a increment 1. I suspect that the aperture really changed only every 12 steps, so not like the G7x at every step.


Re: Aperture control + test script
« Reply #24 on: 20 / September / 2018, 13:12:14 »
Another run with the EF 50mm from AV96=160 to 210 and with EFM 15-45 from 480 to 530.
Actually, I always see jumps to 12 APEX96 with the exception of the EF 50mm between AV96 = 160 and 192. Here the aperture seems to change by 1/3 EV.

But why does the aperture only change every 12 APEX96 values?
8, 16 or 32 I could understand yes ....

Re: Aperture control + test script
« Reply #25 on: 20 / September / 2018, 14:53:20 »
My first test video with M3 and EF 50mm from f1.8 until f16. 1/8 EV steps a still small enough to get smooth aperture ramping. I used deflicker CS in VirtualDub.

Really great stuff and great work from reyalp :)


Update:
Download link:
https://drive.google.com/file/d/1vKuuqLesvFZ6tEPQIFqqWypD4GDGmYT-/view?usp=sharing
« Last Edit: 21 / September / 2018, 08:11:12 by c_joerg »

*

Offline reyalp

  • ******
  • 11496
Re: Aperture control + test script
« Reply #26 on: 22 / September / 2018, 22:21:32 »
My first test video with M3 and EF 50mm from f1.8 until f16. 1/8 EV steps a still small enough to get smooth aperture ramping. I used deflicker CS in VirtualDub.

Really great stuff and great work from reyalp :)
Nice work and thanks for all the test reports. It doesn't surprise me that the EOS M cameras are different, or that some work in 1/8th stop (12 unit) steps.

It would be nice for CHDK to be able to know which stops are valid.

There are quite a few iris related eventprocs that seem to be specific to the M cameras. Some I noticed
MoveIrisWithAvNotSupportAbsFNo
IsIrisSlowCtrlAvailable
EFLensCom.GetFNo
EFLensCom.GetFNoRange
EFLensCom.MoveIris_FNo
EFLensCom.MoveIris

edit:
Quote
Get_min_av96 returns a nil value on M3 so I set values from 200 to 600 (may be max as well).

Looking a bit more, this surprises me. The functions are found and appear to be real code that is used elsewhere in the firmware.


Edit:
Never mind, I see you are using CHDK build 4928. The min / max Av functions were added in 4998. The error you get is that the function itself is nil.
« Last Edit: 22 / September / 2018, 23:26:28 by reyalp »
Don't forget what the H stands for.

Re: Aperture control + test script
« Reply #27 on: Yesterday at 07:41:46 »
or that some work in 1/8th stop (12 unit) steps.
Looks like my entire lens has 12 unit step (with the exception of the beginning).
Here is another run with step size 1 with
EF 24mm f/2.8 IS USM
EF-S 55-250mm f/4-5.6 IS STM  at 55mm
EF-S 10-18mm/f4.5-5.6 EF-S IS STM at 10mm

It would be nice for CHDK to be able to know which stops are valid.

Yes of course…

Edit:
Never mind, I see you are using CHDK build 4928. The min / max Av functions were added in 4998. The error you get is that the function itself is nil.

Ups, still used a test version from lapser ;) . Update done…

I tested my entire lens with the following Script:

Code: [Select]
press'shoot_half'
repeat sleep(10) until get_shooting()
  local AV96=get_prop(props.AV)
release'shoot_half'
   
print_screen(get_day_seconds()/10)
local dof=get_dofinfo()
print("AV Values")
print('    FL=',dof.focal_length)
print('    AV96=',AV96,',f',fmt_av(AV96))
print('Min AV96=',get_min_av96(),',f',fmt_av(get_min_av96()))
print('Max AV96=',get_max_av96(),',f',fmt_av(get_max_av96()))


On some lenses I got smaller AV96 values with get_prop(props.AV) as with get_min_av96 like:

EF 24mm f/2.8 AV96=288 (what I expect) and Min AV96=300
or
EF-S 55-250mm f/4-5.6 IS STM at 55mm AV96= 384 (what I expect) and Min AV96= 396

Interesting on both lens:
Min AV96 on this lens is exactly 12 stops before the first real aperture change.

Here are complete results:

Code: [Select]
EF 24mm f/2.8 IS USM
    AV96= 288 ,f 2.82
Min AV96= 300 ,f 2.95
Max AV96= 876 ,f 23.62

EF 50mm f1.8 USM
    AV96= 168 ,f 1.83
Min AV96= 168 ,f 1.83
Max AV96= 864 ,f 22.62

EF-M 15-45mm f3.5-6.3 IS STM at 15mm
    AV96= 348 ,f 3.51
Min AV96= 348 ,f 3.51
Max AV96= 864 ,f 22.62
EF-M 15-45mm f3.5-6.3 IS STM at 45mm
    AV96= 516 ,f 6.44
Min AV96= 516 ,f 6.44
Max AV96= 1032 ,f -24.-3

EF-S 55-250mm f/4-5.6 IS STM at 55mm
    AV96= 384 ,f 4.00
Min AV96= 396 ,f 4.17
Max AV96= 876 ,f 23.62
EF-S 55-250mm f/4-5.6 IS STM at 250mm
    AV96= 480 ,f 5.65
Min AV96= 492 ,f 5.90
Max AV96= 972 ,f -32.-11

EF-S 10-18mm/f4.5-5.6 EF-S IS STM at 10mm
    AV96= 420 ,f 4.55
Min AV96= 420 ,f 4.55
Max AV96= 864 ,f 22.62
EF-S 10-18mm/f4.5-5.6 EF-S IS STM at 18mm
    AV96= 480 ,f 5.65
Min AV96= 480 ,f 5.65
Max AV96= 924 ,f 28.10


The CHDK C implementation should be correct, and should work for anything over f/1.0. We should probably support f/1.0 and below now that we have ILC cameras...

Looks like av96_to_aperture has problem with high AV96 values like 972. If I understand shooting_get_aperture_from_av96 correct, then the function returns an unsigned short and this is limited to +32.767.
972 deliver 33417.



 

Related Topics