Pocket camera to be used as an alternative light meter - General Discussion and Assistance - CHDK Forum

Pocket camera to be used as an alternative light meter

  • 7 Replies
  • 4985 Views
Pocket camera to be used as an alternative light meter
« on: 03 / August / 2013, 08:31:36 »
Advertisements
Hi,
first post to this forum, and please do redirect me if this is not the appropriate section  or if other similar threads have been opened yet (I’ve seen very old ones on the same matter).
I’d like to have some advice for the purchase of a pocket camera to use as an alternative light meter for film photography night shooting. I do not need many features, just control on aperture values between f 2.8 and f11, ISO between f64 and f400, slow shutter speeds up to 60 seconds, and a stable version of the software.  My budget is up to 120 Euros: I would prefer to purchase a new and recent model, but I would obviously consider the purchase of a used one. The smaller the camera, the better. 
Thanks for any help!  :)
Bruto

Re: Pocket camera to be used as an alternative light meter
« Reply #1 on: 03 / August / 2013, 09:37:39 »
Any CHDK enabled Canon P&S camera could do the job but I have no idea how to tell how accurate it will be.  Maybe "good enough" is all you need?

In that case,  what you want is probably a Lua script that periodically does a "half-press" and then calculates a set of Tv, Sv, and Av values for the current Bv and displays that on the LCD.

This will give you some idea of how the math works :   http://dougkerr.net/pumpkin/articles/APEX.pdf

The script itself would be fairly simple to write.
Ported :   A1200    SD940   G10    Powershot N    G16

*

Offline srsa_4c

  • ******
  • 4451
Re: Pocket camera to be used as an alternative light meter
« Reply #2 on: 03 / August / 2013, 09:48:11 »
control on aperture values between f 2.8 and f11
The cheapest recent Canon P&S with adjustable aperture is probably the SX150/SX160. Their lens is f/3.5 at wide angle though, and ISO sensitivity starts at 100...

Re: Pocket camera to be used as an alternative light meter
« Reply #3 on: 03 / August / 2013, 12:46:01 »
control on aperture values between f 2.8 and f11
The cheapest recent Canon P&S with adjustable aperture is probably the SX150/SX160. Their lens is f/3.5 at wide angle though, and ISO sensitivity starts at 100...
If he just wants it as a light meter,  the camera does not need to have an aperature to do the required exposure calculations.
Ported :   A1200    SD940   G10    Powershot N    G16

Re: Pocket camera to be used as an alternative light meter
« Reply #4 on: 03 / August / 2013, 16:44:08 »
What I would like to replicate is simply what I've done other times with a DSLR, that is: setting in the DSLR the same ISO and aperture that I was using in my film camera, and getting as a final result the required shutter speed. This is clearly an approximation, it isn't taking into account reciprocity failure for each film, and you very often get different values for each DSLR, depending on the matrix system used by each camera. But it is usable after some tests: you can also take some sample pictures and compare the results with the ones on film, once developed. I would like to do the same process, only.. with a pocket device, easier to handle and to carry around.

Re: Pocket camera to be used as an alternative light meter
« Reply #5 on: 03 / August / 2013, 17:41:07 »
There is a script kicking around somewhere called  "Weston Light Meter.lua" but it doesn't run on my camera and I have not taken any time to debug it.

Here's a simple alternative that does what you want :
Code: [Select]
--[[
Exposure Meter
@title eMeter
@param     i ISO
  @default i 1
  @values  i 80 100 125 160 200 250 320 400 500 640 800 1250 1600
@param a Aperature
  @default a 1
  @values  a 2.0 2.2 2.5 2.8 3.2 3.5 4.0 4.5 5.0 5.6 5.9 6.3 7.1 8.0 9.0 10.0 11.0 13.0 14.0 16.0
--]]

props=require("propcase")
tv_ref = {
     -576, -544, -512, -480, -448, -416, -384, -352, -320, -288,
     -256, -224, -192, -160, -128,  -96,  -64,  -32,    0,   32,
       64,   96,  128,  160,  192,  224,  256,  288,  320,  352,
      384,  416,  448,  480,  512,  544,  576,  608,  640,  672,
      704,  736,  768,  800,  832,  864,  896,  928,  960,  992,
     1021, 1053, 1080 }
av_ref = {176,208,240,272,304,336,368,400,432,464,496,512,528,560,592,624,656,688,720,752}
sv_ref = {378,420,440,462,486,531,576,612,645,678,709,739,772,805}

-- translate user parameter into usable values & names
   sv96 = sv_ref[i]
   av96 = av_ref[a]

function print_tv(val)
    local i = 1
    local tv_str = {
       ">64",
        "64",    "50",    "40",   "32",   "25",   "20",   "16",   "12",    "10",   "8.0",
       "6.0",   "5.0",   "4.0",  "3.2",  "2.5",  "2.0",  "1.6",  "1.3",   "1.0",   "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/320","1/400","1/500","1/640","1/800","1/1000","1/1250",
    "1/1600","1/2000","hi"  }
    while (i <= #tv_ref) and (val > tv_ref[i]-1) do i=i+1 end
    return tv_str[i]
end

function print_av(val)
    local i = 1
    local av_str = {"n/a","2.0","2.2","2.5","2.8","3.2","3.5","4.0","4.5","5.0",
                    "5.6","5.9","6.3","7.1","8.0","9.0","10.0","11.0","13.0","14.0","16.0"}
    while (i <= #av_ref) and (val > av_ref[i]-1) do i=i+1 end
    return av_str[i]
end

function print_sv(val)
    local i = 1
    local sv_str = {"n/a","80","100","125","160","200","250","320","400","500","640","800","1250","1600"}
    while (i <= #sv_ref) and (val > sv_ref[i]-1) do i=i+1 end
    return sv_str[i]
end


--[[ ========================== Main Program ================================= --]]

    set_console_layout(0, 0, 44, 10)
    print("eMeter")

-- switch to shooting mode if necessary
    if ( get_mode() == false ) then
        set_record(1)
        while ( get_mode() == false ) do sleep(100) end
    end

    repeat
        repeat
            press("shoot_half")                          -- get current exposure readings
            repeat  sleep(50)  until get_shooting() == true
            release("shoot_half")
            repeat  sleep(50)  until get_shooting() == false
            bv96=get_bv96()
            tv96needed=sv96+bv96-av96
            print("Tv:"..print_tv(tv96needed).." ISO"..print_sv(sv96).." Av:"..print_av(av96).." Bv:"..bv96)
             -- check for user input
            wait_click(1000)
        until not( is_key("no_key"))
        print("key pressed")
    until ( is_key("menu") )

It would probably be better to use the Lua graphics commands to print the readings on a colored window in the middle of the LCD but for now its just a text console output.
Ported :   A1200    SD940   G10    Powershot N    G16

Re: Pocket camera to be used as an alternative light meter
« Reply #6 on: 03 / August / 2013, 18:10:29 »
And this is a  version that puts a nice colored text box in the middle of the screen showing Tv, Av, Sv and Bv values - all converted to real world units.


Code: [Select]
--[[
Exposure Meter
@title eMeter
@param     i ISO
  @default i 1
  @values  i 80 100 125 160 200 250 320 400 500 640 800 1250 1600
@param a Aperature
  @default a 1
  @values  a 2.0 2.2 2.5 2.8 3.2 3.5 4.0 4.5 5.0 5.6 5.9 6.3 7.1 8.0 9.0 10.0 11.0 13.0 14.0 16.0
--]]

require("drawings")
props=require("propcase")

tv_ref = {
     -576, -544, -512, -480, -448, -416, -384, -352, -320, -288,
     -256, -224, -192, -160, -128,  -96,  -64,  -32,    0,   32,
       64,   96,  128,  160,  192,  224,  256,  288,  320,  352,
      384,  416,  448,  480,  512,  544,  576,  608,  640,  672,
      704,  736,  768,  800,  832,  864,  896,  928,  960,  992,
     1021, 1053, 1080 }
av_ref = {176,208,240,272,304,336,368,400,432,464,496,512,528,560,592,624,656,688,720,752}
sv_ref = {378,420,440,462,486,531,576,612,645,678,709,739,772,805}

-- translate user parameter into usable values & names
   sv96 = sv_ref[i]
   av96 = av_ref[a]

function print_tv(val)
    local i = 1
    local tv_str = {
       ">64",
        "64",    "50",    "40",   "32",   "25",   "20",   "16",   "12",    "10",   "8.0",
       "6.0",   "5.0",   "4.0",  "3.2",  "2.5",  "2.0",  "1.6",  "1.3",   "1.0",   "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/320","1/400","1/500","1/640","1/800","1/1000","1/1250",
    "1/1600","1/2000","hi"  }
    while (i <= #tv_ref) and (val > tv_ref[i]-1) do i=i+1 end
    return tv_str[i]
end

function print_av(val)
    local i = 1
    local av_str = {"n/a","2.0","2.2","2.5","2.8","3.2","3.5","4.0","4.5","5.0",
                    "5.6","5.9","6.3","7.1","8.0","9.0","10.0","11.0","13.0","14.0","16.0"}
    while (i <= #av_ref) and (val > av_ref[i]-1) do i=i+1 end
    return av_str[i]
end

function print_sv(val)
    local i = 1
    local sv_str = {"n/a","80","100","125","160","200","250","320","400","500","640","800","1250","1600"}
    while (i <= #sv_ref) and (val > sv_ref[i]-1) do i=i+1 end
    return sv_str[i]
end

function pline(line, message)     -- print line function
    if      ( line == 1 ) then fg = 271 bg=265
    elseif  ( line == 3 ) then fg = 258 bg=265
    elseif  ( line == 4 ) then fg = 271 bg=265
    else fg = 265 bg=258 end
    draw_string( 24, (line+4)*16, string.sub(message.."                          ",0,34), fg, bg)
end
 
function show_msg_box(msg)
    pline(1,string.format("       Exposure Meter  "))
    pline(2,msg)
    pline(3,string.format("       Press any key to update"))
    pline(4,string.format("         Press MENU to Exit"))
end


 
--[[ ========================== Main Program ================================= --]]

    print("eMeter")

-- switch to shooting mode if necessary
    if ( get_mode() == false ) then
        set_record(1)
        while ( get_mode() == false ) do sleep(100) end
    end
    repeat
        press("shoot_half")                          -- get current exposure readings
        repeat  sleep(50)  until get_shooting() == true
        release("shoot_half")
        repeat  sleep(50)  until get_shooting() == false
        bv96=get_bv96()
        tv96needed=sv96+bv96-av96
        repeat
            show_msg_box("      Tv:"..print_tv(tv96needed).." ISO"..print_sv(sv96).." f"..print_av(av96).." Bv:"..bv96)
            wait_click(50)
        until not( is_key("no_key"))
    until ( is_key("menu") )
 
« Last Edit: 03 / August / 2013, 18:33:02 by waterwingz »
Ported :   A1200    SD940   G10    Powershot N    G16

Re: Pocket camera to be used as an alternative light meter
« Reply #7 on: 04 / August / 2013, 15:00:37 »
Thank you! Much appreciated.
It looks as if I have a fairly steep learning curve, but I will give it a try

 

Related Topics


SimplePortal © 2008-2014, SimplePortal