rawopint.lua: Fast, accurate intervalometer with raw exposure metering

  • 74 Replies
  • 10616 Views
Advertisements
I have been using this script for fast action time lapse while kayaking. The camera is a Powershot A 470 and can shoot at about 2 shots/s.

I would ideally like to restrict the longest shutter speed to 1/20 or less. But there are two problems.

One is that the method for setting the maximum exposure is by 1/1000 s by steps of 1. Why not just have a list of regular exposure times to click through. As it is clicking from the default value of 1000 down to 50 is a bit of a pain. I don't know much about scripting in lua, but surely there must be a way of defining an array, e.g. in pseudo code:
shutter_speeds = [16 13 10 8 6 5 4 3.2 2.5 2 1.6 1.3 1 0.8 0.6 0.5 0.4 0.3 1/4 1/5 1/6 1/8 1/10 1/13 1/15 1/20 1/25 1/30 1/40 1/50 1/60 1/80 1/100 1/125 1/160 1/200 1/250 1/300 1/400 1/500 1/600 1/800 1/1000 1/1250 1/1600 1/2000]
in which case it would only take about 20 clicks from either end to reach the desired value.

The other problem is that setting the limit at 50/1000 s (= 1/20) doesn't seem to take effect (shots were taken at 1/5 s, which was far too slow to be of much use). Is there anything I am missing here?

I include the log file. The series where the limit was ignored was taken on June 20, 2017.

*

Offline reyalp

  • ******
  • 11440
One is that the method for setting the maximum exposure is by 1/1000 s by steps of 1.
On most CHDK ports, you can change the "multiplier" using the zoom lever. On cameras without a zoom lever, the disp button should cycle through them. The A470 has neither, but according to the wiki, you can set it to use the power button (!) in alt mode as a substitute http://chdk.wikia.com/wiki/A470

Quote
Why not just have a list of regular exposure times to click through. As it is clicking from the default value of 1000 down to 50 is a bit of a pain.  I don't know much about scripting in lua, but surely there must be a way of defining an array, e.g. in pseudo code
I use that approach for some of the other settings, but supporting the full range of exposure one might want to use takes a lot of values, which would be less convenient to scroll through on cameras with a working multiplier key.

The best solution would be to specifically have an "shutter" script parameter type that uses the same interface as overrides.

Quote
The other problem is that setting the limit at 50/1000 s (= 1/20) doesn't seem to take effect (shots were taken at 1/5 s, which was far too slow to be of much use). Is there anything I am missing here?
Thanks for reporting that, it looks like a bug in the script. I haven't debugged it in detail, but I suspect it is due to having "ISO adj TV Sec/1000" set to longer value than "Max Tv Sec/1000".  Try setting that to a shorter or equal value. I'd definitely suggest doing a quick test run to verify that before you take it on a trip.
Don't forget what the H stands for.

I had just a quick look into it… plot looks really funny…

Thanks for reporting that, it looks like a bug in the script.

My first estimation was a wrong propcase in the A470…

but I suspect it is due to having "ISO adj TV Sec/1000" set to longer value than "Max Tv Sec/1000". 

Could be….
This parameter sometimes driving me nuts  ;). Whenever I change Max  Tv, I must also change this value. Sometimes I forget that then. We had already other user with the problem with this parameter have..

My suggestion would be to remove this parameter
"ISO adj TV Sec/1000" = "Max Tv Sec/1000"
or if you think  it is necessary do it with an offset
"ISO adj TV Sec/1000" = "Max Tv Sec/1000" + "ISO adj TV offset"
The default offset should be 0

Not sure if interval=0 would be a problem…

I'd definitely suggest doing a quick test run to verify that before you take it on a trip.

I would do a quick test with default parameter (may be 50 shoots) under constant light condition. 

*

Offline hwntw

  • ***
  • 158
Can the raw exposure metering section of this script be coded into CHDK firmware, as in LUA2C? Best of both worlds
Ixus 300HS S100


Windows 10


*

Offline reyalp

  • ******
  • 11440
Can the raw exposure metering section of this script be coded into CHDK firmware, as in LUA2C? Best of both worlds
The CPU intensive parts of raw meter are already done in C code, so IMHO it's already the best of both worlds.
Don't forget what the H stands for.

*

Offline hwntw

  • ***
  • 158
Where do I find raw metering in the CHDK menus?
Ixus 300HS S100


Windows 10

*

Offline reyalp

  • ******
  • 11440
Where do I find raw metering in the CHDK menus?
Raw metering just means the ability to measure values in the in the raw buffer. It is a building block that can be used for things like the rawopint script. Putting in the menu wouldn't make any sense, it's only useful if you do something with the measured value.

If you want to request a feature, please start a new thread, and describe what you are actually asking for.

Don't forget what the H stands for.

*

Offline reyalp

  • ******
  • 11440
Re: rawopint.lua: Fast, accurate intervalometer with raw exposure metering
« Reply #37 on: 07 / August / 2017, 01:35:24 »
New version uploaded, see first post or wiki. The bug SkepticaLee reported with Tv limit being ignored should be fixed. This was triggered when the  "ISO Adj Tv" was set longer than "Max Tv". In the new version, the script will just act as if  "ISO Adj Tv" is set to "Max Tv" in the case, meaning ISO adjustment will start when shutter adjustment ends. If you don't want any ISO adjustment at all, set "Target ISO" and "Max ISO" to the same value.

I also added battery temp to the log at  c_joerg's request.

I'm hoping to do some more serious work in this script again soon.
Don't forget what the H stands for.


Re: rawopint.lua: Fast, accurate intervalometer with raw exposure metering
« Reply #38 on: 07 / August / 2017, 06:00:10 »
I also added battery temp to the log at  c_joerg's request.

Thanks  :)

I'm hoping to do some more serious work in this script again soon.

Great!  :)

The biggest point on my wish list is to reduce the oscillation. I think that would be not only for me a big improvement of the script. I think it’s not a big think. What I descript here works very well (Reply #259).
https://chdk.setepontos.com/index.php?topic=11081.msg124334#msg124334
 
or

I noticed those small oscillations in brightness and fixed them in the script. Basically, I don't adjust exposure until it's around 5 ev96 off. I gradually increase the amount of each adjustment from 0 to 3 ev96 until I'm 48 ev96 off, then adjust to 48 off after that. It's like driving a car. You turn the wheel more and more towards the center of the road as you near the edge. Then you turn the wheel as much as needed to keep from going off the road.


*

Offline reyalp

  • ******
  • 11440
Re: rawopint.lua: Fast, accurate intervalometer with raw exposure metering
« Reply #39 on: 28 / August / 2017, 00:32:25 »
I uploaded version 0.23.

This adds ND filter control for cameras that have both and adjustable aperture and ND filter. I also added a hysteresis option for the ND filter control, to reduce the risk of "flapping" around the the ND threshold.

Note I haven't done much real world testing with this, so I'd encourage you to test before going out to take a real timelapse.

Unfortunately, some CHDK limitations make ND control more complicated than I would have liked, so there are two new ND confusing options that may need to be used for best results:

1) ND value.

This is the APEX96 value of the ND filter. Unfortunately, this cannot be determined by the script on cameras that have both an ND and adjustable aperture, and can only be determined on other cameras if the Canon firmware used the ND on the first shot. The value is always around 3 stops, but varies enough between cameras that using 3 will cause a noticeable jump in exposure. In my experience, if the correct value is used, ND transitions are virtually undetectable.

Known values
* Ixus 140 / Elph 130 276
* D10 283
* G7 X 293

Finding the correct value
* On cameras with only an ND filter (most ixus/elph/SD, many A series) subtract the value of the MIN_AV propcase from the value of the AV propcase after half pressing in a scene were the Canon firmware would use the ND. You can also get it from the with / without ND values of the AV table in platform/shooting.c, if they are set up correctly.
* On cameras with an ND filter exposed in the Canon UI (many G and S series), there are one or more currently unnamed (not defined in propsetN.h) propcases that gives the value. This can be detected by comparing propcases values with / without the ND filter enabled and looking for one that changes by ~3 stops. On G7 X, propcases 85, 93 and 94 contain the value. 85 is associated with the string GetDeltaNDResu and 93 is associated with PCH_DELTAND_MEASU
* For cameras with a "hidden" ND (see description in the following option), I don't know if the value can be obtained from propcases. You could compare raw meter values with/without under stable lighting. It's possible there are propcases that expose these values, but I don't have a camera like this to test.


2) Force initial ND.

On cameras like sx260 which have a "hidden" ND filter (adjustable aperture + an ND filter which is NOT controllable using the Canon UI), CHDK script cannot determine the initial state of the filter. That means that if the canon firmware initially had the ND filter in, ND control will not work. The "Force initial ND" option can be used to set the ND to a known state, however, the initial Canon auto exposure does not account CHDK overrides, so if the Canon firmware chose a different ND state than the force option, the initial exposure will be off by ~3 stops. The script should settle down to normal exposure values after a few tens of shots.

I will start a separate thread in the development forum about addressing some of these issues in CHDK code.
Don't forget what the H stands for.

 

Related Topics