camera shutter tester

I make pictures with this 1951 press camera (a 4x5 Graflex Speed Graphic) and I wanted a way to check the accuracy of the leaf shutter in the lens as well as the rear curtain shutter.

The only ways I had found to do this are to buy an expensive testing machine, or to pay someone to use that machine they've bought, or the "sound card shutter tester" along with Audacity, which seems pretty kludgy and takes too much human effort.

But with Arduino, I knew I could make something on my own.

So I got an infrared emitter and sensor pair from sparkfun: http://www.sparkfun.com/commerce/product_info.php?products_id=241

I wired them up like this:

And I wrote a simple sketch:

int receiverPin = 12; // input from the ir receiver.

unsigned long duration; // time shutter is open

void setup()
{
  pinMode(receiverPin, INPUT);
  Serial.begin(9600);
}

void loop()
{
  //digitalWrite(ledPin, !digitalRead(receiverPin)) ;
  duration = pulseIn(receiverPin, LOW);
  if(duration != 0 )
  {
    Serial.println(duration);
  }
}

I put the emitter on one side of the lens, the sensor on the other, and trip the shutter. The serial console shows me the open duration in microseconds, which I compare to what it should be.

Now I can see how accurate the shutter is, and I can adjust the exposure if necessary. (Or even send the equipment out for repair or adjustment.)

I couldn't get a good picture of the actual hardware today, but I'll be happy to add one later if anyone wants to see it.

Pictures I've made with the camera are here (along some of me using the camera at the inauguration): http://www.flickr.com/photos/jerrya-net/

Really cleaver Jerrya! How much did you save? :)

Good question! I have no idea, because I knew I wasn't going to buy a commercial system just to test the three lenses in my possession. Since I had all the parts except the ir pair, it only cost me like $2 to do this.

So I can safely say I saved $lots - $2. :D

How accurate have you found the results to be compared to the shutter settings? Do the measurements show repeatable values?

Lefty

Here it is in use:

I had only done preliminary testing until just now at lunch time. For my main lens, here's what I found, using 10 readings at each speed:

| Setting (sec) | Avg. Reading (micro sec) | Std. Dev. | Effective Shutter Speed (sec) | | - | - | - | - | | 1/50 | 19157 | 665.52 | 1/52.2 | | 1/100 | 10427 | 129.89 | 1/95.9 | | 1/200 | 6599 | 49.58 | 1/151.5 | | 1/400 | 5064 | 450.35 | 1/197.5 |

So, it looks like 1/200 s is overexposing by a half stop, and 1/400 is really like 1/200. I haven't really used 1/400 much because it seemed kind of fragile (I can feel it uses a different set of springs which are obviously getting tired. The really slow speeds and bulb setting don't work at all.) The other two speeds are satisfactory.

I have been trying to think of ways I can calibrate my tester. Any ideas? I looked at the data sheet for the sensor, and the rise time and fall time are only 5 micro sec. different, which I could account for but in terms of my camera hardware it's insignificant. The film I use (Tri-X Pan) can be safely exposed +- a full stop.

For testing how about placing the sensors so that something could fall between them like a piece of paper of a known length possibly with 2 coins taped to the bottom corners so that the paper falls pretty much straight down. You can then drop the paper with the bottom edge just above the sensor and then have it time how long it takes for the the paper to pass through the sensor.

Then you can use d = 0.5 * g * t^2 to calculate how long it should take and compare it to the results from the script. For example a 1 meter long piece of paper (which is probably really too long to give good results because of drag). The time to pass would be approx. .452 seconds.

Just an idea, I do not know how realistic or how reliable the results will be.

That is beautiful - simple, useful and elegant. I see you have :

duration = pulseIn(receiverPin, LOW);

So, does that mean the IR detector is normally HIGH and pulls LOW when IR is present? I didn't see that mentioned in the docs.

Hi jerrya.net,

I need to create a 'garbage can' which detects if someone throws something into it. Because of the specs of the project we want/need to create a strip of IR-emitters and IR-receivers (like 10 pairs per garbage can).

I was wondering if you think I could use the parts you've used in your setup? As we need to create 4 garbage cans, we have 40 pairs which need to be checked. Therefore we probably need shift registers.

Roxlu

That is beautiful - simple, useful and elegant. I see you have :
duration = pulseIn(receiverPin, LOW);
So, does that mean the IR detector is normally HIGH and pulls LOW when IR is present?
I didn’t see that mentioned in the docs.

Thanks! I go for simple whenever I can.

Yes, while the shutter is closed (no IR passed), my sensor is HIGH. I’m sure there’s a circuit that would reverse that, but this is a circuit I found in two places so I went with it.

I need to create a 'garbage can' which detects if someone throws something into it. Because of the specs of the project we want/need to create a strip of IR-emitters and IR-receivers (like 10 pairs per garbage can).

I was wondering if you think I could use the parts you've used in your setup? As we need to create 4 garbage cans, we have 40 pairs which need to be checked. Therefore we probably need shift registers.

The IR beam seems to be fairly narrow because of the lens, and it has a limited range. I don't remember if that is described in the datasheet, but you should check. This could be what you need or not, I'm not sure. And for that many sensors, you'll need something else to multiply your inputs. Sounds kind of cool.

jerrya.net - neat project. Some of your pictures of your hardware setup don't work anymore. Any chance you can fix them? Thanks!

Strange, not sure why they don't work now. I can download the image, but it doesn't display on the page. Used to work; must be suffering from bit rot!

Anyway, since I can't edit the old posts, here are new copies on flickr, which should work "forever."

Schematic from first post:

And the two images of it in action from the other post:

I hope this will be useful to you!

That was quick! Thanks! I am hopefully going to make this work detecting my electricity usage. My meter uses IR instead of a spinning wheel.

Neat, I'll look forward to hear how it goes.

Therefore we probably need shift registers.

Not necessarily: if you don't need to know which beam was broken, you can just OR all the detectors together.

Ran

Hello! I am having a bit of trouble with the setup presented here.

I made it to work and I got accurate readings but I can't measure fast speeds. If I power the photocell to 5v I get nothing. If I power it to 3.3v it works.

The thing is that when I power everything up and the photocell is covered or in low light conditions I get a lot of values around 10000 microseconds. They are so many that I can't read the test I've done. If I light it up, the values stop until I turn off the light and than display the desired value among the other 10000 microseconds values.

To partially solve this I've made a small change to the code. Instead of the if(duration != 0 )

I wrote

if(duration > 10000 )

This blocks everything under 10000 microseconds(that's 1/100 for shutter speeds) and I can use the tester for slow speeds with good results but obviously this is useless for faster speeds because it blocks them too. I can't test anything faster than 1/90 on my shutter.

This is my first arduino project, btw. Help would be appreciated. Thank you!

Kind of figured it out. This code does not give accurate readings for high speeds. The higher the speed the greater the error. The OP's values for the 1/400 are proof of that. Keep this in mind when you decide to test your shutters.