Darkroom Automation Part 7: Checking the Enlarger Lamp Output

I wanted to make sure the computer controlled enlarger lamp would give consistent exposures regardless of the length of the exposure. Some timer manufacturers discuss how 10 one second exposures don't work out the same as one 10 second exposures. Presumably this is because the lamp takes some to time to warm up and cool down.

I decided to test this theory. I built another Arduino machine to measure lux using a calibrated light sensor. I then wrote some simple code suggested by my wife. I would integrate the light readings over the exposure interval for a variety of exposure times and measure the integrated light value in each case. Basically I would take a series of readings in rapid succession and add them up over the exposure interval. This is a good model of what photo paper does.

The code works as follows. It works by waiting for the light to come on. A 2 lux threshold is set and so this assumes complete darkness beforehand. The sensor is continuously sampled until light is detected above the threshold. A time-stamp in milliseconds is then recorded. Then the sensor is repeatedly sampled and this is summed up. When the light drops below the threshold then the summing stops and a final time-stamp is recorded.  Each measurement takes about 13ms. I added a delay in case the integration count got too high. It really wasn't needed and so it is set to the minimum of 1 ms.

Two values are displayed, total Lux integrated over the time and the difference in time-stamps in milliseconds. The whole thing then just waits in a loop forever. The next reading requires the reset switch to be pressed.

The first results are here. The first column is the nominal time, the second as recorded by the integration timestamps (in milliseconds), followed by the integration count and finally a computed log base 2 ratio from one time to the next and the last column relative to the 4 second interval. In all cases the difference in light varies by most .03 stops. I cannot justify any corrections based on this data. I am not sure where these concerns come from. It may be the effect is more pronounced closer to one second expsoures or on different enlargers and light sources.

Nominal Time Real time (ms) Lux Integration Log 2 ratio Log2 ratio
4 3978 5385
8 7957 10994 1.03 1.03
16 15877 21770 0.99 2.02
32 31772 43710 1.01 3.02
64 63508 86101 0.98 4.00
128 127017 174276 1.02 5.02

I re-ran the results at f16 (the above was at f4) with similar results.

4 3870 651
8 7830 1314 1.01 1.01
16 15770 2643 1.01 2.02
32 31665 5304 1.00 3.03
64 63401 10617 1.00 4.03
128 126891 21246 1.00 5.03

Below is the code used to collect the measurements. The data was analyzed in Excel.

void loop() {

unsigned long int integration, start_time, end_time;
  sensors_event_t event;
 /* Get a new sensor event */
   tsl.getEvent(&event);

while (event.light < 2)  //wait for light to come on
  tsl.getEvent(&event);
integration = event.light;

start_time = event.timestamp;

while (event.light > 2) { //sum up the lux values while the light is on.
integration += event.light;
//Serial.println(event.light);
delay(1);   //add provision to wait if counts are to high. 
tsl.getEvent(&event);
}
 end_time = event.timestamp;

  display.setCursor(0,0);
  
  display.setTextSize(2);
  display.setTextColor(WHITE);
   display.print("Int "); display.println(integration);
   display.print("Time "); display.println(end_time-start_time);

   Serial.print("Int "); Serial.println(integration);
    Serial.print("Time "); Serial.println(end_time-start_time);


  display.display();
  while(1);
  delay(500);
  // Clear the buffer.
  display.clearDisplay();
}

Comments