Experiment: Calibrating the Timer
Purpose
Section titled “Purpose”To replace the word “tenth of a second” with a measurement, and to find out at what exposure the instrument stops being able to keep the promise the specification made.
The hypothesis. That the exposure the paper receives equals the exposure the printer commanded, to within a stated tolerance, across the whole range this instrument will be used over — and that below some exposure, which this page finds, it does not.
The control. Three of them, doing three different jobs. A fixed reference interval, commanded repeatedly and measured by a second board that shares no code with the first, so that a change can be attributed to the thing that was varied. An unexposed sheet from the same packet, processed in every batch alongside the working sheets, which fixes base plus fog for that development because every density on this page is measured above it. And a reference strip printed at one fixed setting in every session, exactly as Part IX established, which is what lets a change be attributed to the timer rather than to the developer.
The one variable that changes is the commanded time, and in every arm but one it is the only thing that changes. The exception is arm 5, where the variable is the supply voltage and the commanded time is held fixed — and that inversion is what makes arm 5 a test of the lamp rather than of the timer.
Learning objectives
Section titled “Learning objectives”By the end of this session you should be able to:
- say what the instrument’s time axis actually rests on, name every link in that chain, and say where the chain stops;
- separate the loop’s own offset from the lamp’s, measure each with an instrument that is not the thing being measured, and explain why a routine that times itself can find only some kinds of error;
- compute an effective exposure as the area under a light-against-time curve, and derive from it the single constant the firmware carries;
- find the exposure below which that constant stops being a constant, and say why it stops;
- convert a timing spread into stops, and state at which exposures a given jitter is a real difference and at which it is arithmetic;
- state the shortest exposure your whole system can honestly repeat, with the criterion you used written beside it;
- build an error budget whose terms are in one unit, whose unquantified terms are named as unquantified, and whose total is combined by a rule you can state;
- write an instrument certificate that claims exactly what was measured, and read somebody else’s for the claim it cannot support.
Prerequisites
Section titled “Prerequisites”The switched output, built and tested, with its command-to-light delay, leakage test and thermal check recorded. Calibrating a timer whose channel leaks is arithmetic about a mistake.
Part XVI’s enlarger commissioning, with its certificate to hand — specifically its warm-up rule and its exposure repeatability in stops, both of which this page has to agree with rather than re-derive.
Part II on measurement and uncertainty, which owns how uncertainty travels in this course and rules that terms are combined as a bound rather than statistically. That ruling is used here and not re-argued.
Part XIII’s paper sensitometry, for ISO(R) and what a grade is, and Part XIV’s calibration, for the error-budget method this page follows step for step.
Safety classification
Section titled “Safety classification”Level B, on the rubric’s criterion for high-brightness LED sources and low-voltage electronics builds where a certified power supply provides isolation from the mains. The instrument being measured switches an enlarger head at printing current, repeatedly, for two and a half hours.
What is not a hazard here, and why. No mains conductor is opened, extended or approached: the head, the timer and the probe are all fed from certified enclosed supplies and everything downstream of them is at 5, 12 or 24 V, inside the band HSE describe as the control to reach for first. Nor is there a concentrated-reagent hazard — the three baths are the ordinary print sequence at the dilutions their makers supply them at, and nothing on this page is heated, mixed from solids or brought above room temperature. What is real is ordinary and specific: a head that gets hot on a long series of exposures, and three trays of chemistry in a dark room.
Arm 5 raises one step, under the course’s mixed-level rule. Measuring how a lamp’s output follows its supply means measuring the supply, and if your head is a bought tungsten one on the certified enlarger timer route, the only permitted measurement is at the low-voltage side or with a plug-in meter that is itself a sealed appliance. Nothing is opened. If your only way to see the supply voltage would be to open something, the answer is that you do not make that measurement, and the certificate records the term as unmeasured.
Hazards
Section titled “Hazards”The head is hot. A long series of exposures runs an LED head or a tungsten lamphouse continuously for far longer than printing does. Part XVI’s hands-off rule applies until its own temperature log says otherwise, and a tungsten head is left to cool before the negative carrier is touched.
Bright light in a dark-adapted eye. You will be commanding the head repeatedly with your face near the easel. Work with the lens stopped down and the head at printing current only when the measurement needs it; the focus current is a twentieth of the printing current and is what the alignment work is done at.
Print chemistry, Level A, in the concentrations the developer, the stop bath and the fixer are supplied at. Nitrile gloves, eye protection, tongs, and fixer collected for silver recovery rather than poured away.
A dark room with cables in it. This page adds a probe board and its lead to a bench that already has a foot switch on the floor. Everything is routed, taped and off the floor before the lights go out.
Two and a half hours of concentration in the dark. The commonest error here is not a hazard at all but a mislabelled strip, and the control is procedural: label before you expose, in pencil, on the back, every time.
Required PPE
Section titled “Required PPE”Nitrile gloves for the three baths, changed if torn or contaminated. Eye protection whenever solutions are handled and whenever anything is being cut or stripped. No respiratory protection is among the controls, because nothing here is a powder and nothing is heated.
Ventilation
Section titled “Ventilation”The ordinary print-sequence ventilation, unchanged from Part XVI: air moving through the room, the trays not in an enclosed cupboard, and the door not sealed against a running extractor. It is a control for the processing stages. It is not among the controls for the electrical arms, because a transistor, a photodiode and a stopwatch produce no vapour.
Materials
Section titled “Materials”| Material | Quantity | Notes |
|---|---|---|
| Photographic paper, variable-contrast RC | 10 sheets, 5 × 7 in, one packet for the whole page | The packet’s batch goes on the certificate. Two are controls, one per processing batch |
| A negative you know | 1 | For arm 6 only. Choose one with a long straight tonal run, not a contrasty one |
| Opaque card for the strip | 1 | Larger than the paper, with a straight edge |
| Pencil and adhesive labels | — | Every strip labelled on the back before it is exposed |
Chemicals
Section titled “Chemicals”| Chemical | Quantity | Form |
|---|---|---|
| Metol, hydroquinone, sodium sulfite, sodium carbonate, potassium bromide | 1 L of working strength | As the components of D-72 or of the bought paper developer you print with, at the dilution you always use |
| Acetic acid or citric acid | 1 L of working strength | Stop bath at the supplied dilution |
| Sodium thiosulfate or ammonium thiosulfate | 1 L of working strength | Fixer at the supplied dilution, collected for silver recovery |
Use the developer you print with, at the dilution you use, at the temperature you work at. Every density here is a density in that developer, and a certificate that changed the chemistry to make the measurement tidier would certify an instrument nobody owns.
Equipment
Section titled “Equipment”| Equipment | Why |
|---|---|
The Pure Silver timer, firmware running, test() and selftest() passing |
The instrument under test |
A second Pico running timer_probe.py |
The independent stopwatch. Shares no code with the timer and is the only thing that can measure it from outside |
| The photodiode head and its converter | Light at the easel, against time |
| The densitometer, with its certificate | Reflection density of the printed strips |
| A second timepiece with a seconds display | Arm 2. A phone, a radio-set clock, anything you can start and stop by hand |
| Multimeter | Supply voltage in arm 5, and the head’s current at the fuse |
| Thermometer | Developer temperature at the start and end of every batch |
| Three trays, tongs, timer for the baths | The print sequence |
Estimated cost
Section titled “Estimated cost”Cost band £. Nothing is bought for this page that the previous four did not already ask for; the cost is ten sheets of paper and a litre of each bath. The second Pico is the one item some readers will not have, and it is shared with the firmware page rather than bought again.
The planner carries no electronics line at all, so no price is quoted for the probe board. The paper and chemistry are priced, and they are below.
Estimated consumables cost
Section titled “Estimated consumables cost”| Consumed | This session | Sourced price | Cost this session |
|---|---|---|---|
| Photographic paper, variable-contrast RC, 5 × 7 in | 10 sheets — six strips, two controls, two spare | £16.06 per 25 or £44.71 per 100, dated 5 September 2026, so £0.45–£0.64 a sheet | £4.50–£6.40 |
| Paper developer, working strength | 1 L of 1+9, that is 100 mL of concentrate | £10.52 per 500 mL or £20.03 per 1 L, so £0.020–£0.021 a millilitre | £2.00–£2.10 |
| Stop bath, working strength | 1 L of 1+19, that is 50 mL of concentrate | £10.66–£12.18 per 500 mL | £1.07–£1.22 |
| Fixer, working strength | 1 L of 1+4, that is 200 mL of concentrate | £21.05–£25.98 per 1 L | £4.21–£5.20 |
| Wash water | tens of litres | Not priced by the planner | — |
| Pencil, labels, notebook pages | — | Not priced by the planner | — |
The priced rows give £11.78 to £14.92 for one run of this page. That is a floor and not a total: two rows carry no dated price, nothing on them is free, and the bath figures assume a litre of each is mixed and discarded rather than carried over, which is what a controlled measurement requires.
Equipment is deliberately out of the table. The timer, the probe, the photodiode head, the densitometer, the meter and the dishes are not consumed by a session.
Waste streams
Section titled “Waste streams”Spent fixer, containing dissolved silver complexes, collected in a labelled container for silver recovery and never poured away.
Spent developer, an alkaline solution of oxidised developing agents, collected separately; developer and fixer are not mixed in one container.
Spent stop bath, dilute acid, collected with the developer only if your local guidance says so.
Processed paper, ordinary solid waste once dry — but it is the raw data behind the certificate, so it is kept, dated, in the envelope with it. A number whose sheet has been thrown away cannot be checked.
Preparation
Section titled “Preparation”The day before. Read the head’s certificate and the enlarger’s certificate and copy two things onto the first page of tonight’s notebook: the warm-up rule and the exposure repeatability in stops that page already established. You are going to have to agree with both or explain why not.
Set OFFSET_MS to zero. This is the step that is skipped and it ruins the page. The firmware
carries a constant that corrects for the lamp; you are about to measure that constant; and a run made
with a correction already applied measures the residual and then reports it as the offset. Write the
old value in the notebook, set the constant to zero, and reload.
On the night. Mix a litre of each bath, bring them to the temperature you normally print at, and write the temperature down. Take ten sheets from one packet, label all ten on the back in pencil before the lights go out, and set two aside as controls. Switch the head on and start the warm-up clock; the first measurement is at least as far away as the warm-up rule says.
Wire the probe to GP15 with one ground wire between the two boards, and prove it: run
timer.loopback(3, 1000) with p.watch(3) running, and confirm three pulses arrive. A probe that sees
nothing after an hour of measurements has wasted the hour.
Procedure
Section titled “Procedure”Six arms. The first three are electrical and optical and can be done with the room lit; arms 4 to 6 need the room dark.
Arm 1 — The delivered interval, measured by something that is not the timer
Section titled “Arm 1 — The delivered interval, measured by something that is not the timer”p.watch(20) on the probe, then timer.loopback(20, 1000) on the timer. Repeat at 200 ms, at
5 s and at 20 s, and at whatever the shortest exposure your interface will accept is.
Three numbers come out of each run and all three are recorded: the mean overshoot of the delivered interval over the commanded one, the worst overshoot over twenty runs, and the spread. The firmware page explains why the loop overshoots at all — it can only end on an iteration of a loop that does three things per pass — and predicts that the overshoot will be roughly constant in absolute terms. Test that prediction: the mean overshoot at 20 s and at 200 ms should be similar in milliseconds, and if it is not, something in the loop scales with the interval and wants finding.
Arm 2 — The timebase, against something that is not a Pico at all
Section titled “Arm 2 — The timebase, against something that is not a Pico at all”Two Picos agreeing tells you about the loop. It cannot tell you about the crystal, because both boards carry the same kind of crystal and a common error would move both readings together and cancel invisibly.
And you cannot do it with one long exposure, because the firmware refuses one: its range check
rejects anything above MAX_MS, which the firmware page
sets at ten minutes on the grounds that a request for an hour is a bug in the caller. That refusal is
correct and is not to be worked around.
So use the log instead, which is what it is for. Note a clock at the moment the first exposure of a
long run ends, and again at the moment the last one ends — an hour apart or more; a soak run, an
evening’s printing, anything. Every log line carries ticks_ms, so the difference between the first
line’s tick and the last line’s is the board’s own measure of the same interval. Subtract, convert to
parts per million, and record both readings and the difference. If the subtraction comes out negative
or absurd the counter wrapped between them, which the firmware page’s troubleshooting table covers.
Arm 3 — Light against time at the easel, and the offset it yields
Section titled “Arm 3 — Light against time at the easel, and the offset it yields”Put the photodiode head at the easel, facing the head, at the aperture and height you print at. Log its output continuously through single exposures of 2 s, 1 s, 0.5 s, 0.25 s and the shortest interval your interface offers, and capture the whole trace including a second of darkness before and after.
Write down what the chain can resolve before you look at what it found. The OPT101’s own bandwidth is 14 kHz, which is a response of a few tens of microseconds, and the converter Part XV reads it with runs at 8 to 860 samples a second, so the fastest sample interval available is about 1.2 ms. The detector is therefore not the limit; the sampling rate is, and it is the number that decides whether a curve you plot is a lamp’s shape or a converter’s staircase. The switched-output page makes the same point about the delay; here it decides the shape.
You now have, for each commanded interval, the curve of illuminance against time. What you want from it is one number.
E(t) is the illuminance at the easel at time t, Ess is its steady value while the lamp is fully on, and teff is the length of a perfectly square exposure that would have delivered the same light. In practice you compute the integral as a sum: multiply each sample by the interval between samples and add.
Then find where the constant stops being constant. Plot teff against tcommanded for the five intervals you measured. Over the region where the offset is a constant, that plot is a straight line of slope 1 displaced vertically by the offset. Below some interval it will bend, and the reason it bends is physical: when the commanded interval is not much longer than the rise, the lamp never reaches Ess at all, the equivalent rectangle has no rectangle to be equivalent to, and τrise and τfall are no longer properties of the lamp alone. The exposure at which the line departs from slope 1 is the first of this page’s two floors, and it goes on the certificate.
The same commanded half-second, delivered by two different lamps
- LED head on a constant-current driver
- A lamp with thermal mass, timescale illustrative
Show the numbers behind this plot
| Series | Time from the command, seconds | Illuminance at the easel, as a fraction of the steady value |
|---|---|---|
| LED head on a constant-current driver | -0.05 | 0.00 |
| LED head on a constant-current driver | -0.00 | 0.00 |
| LED head on a constant-current driver | 0.00 | 1.00 |
| LED head on a constant-current driver | 0.50 | 1.00 |
| LED head on a constant-current driver | 0.50 | 0.00 |
| LED head on a constant-current driver | 0.80 | 0.00 |
| A lamp with thermal mass, timescale illustrative | -0.05 | 0.00 |
| A lamp with thermal mass, timescale illustrative | 0.00 | 0.00 |
| A lamp with thermal mass, timescale illustrative | 0.02 | 0.36 |
| A lamp with thermal mass, timescale illustrative | 0.04 | 0.61 |
| A lamp with thermal mass, timescale illustrative | 0.06 | 0.77 |
| A lamp with thermal mass, timescale illustrative | 0.09 | 0.90 |
| A lamp with thermal mass, timescale illustrative | 0.15 | 0.98 |
| A lamp with thermal mass, timescale illustrative | 0.30 | 1.00 |
| A lamp with thermal mass, timescale illustrative | 0.50 | 1.00 |
| A lamp with thermal mass, timescale illustrative | 0.53 | 0.90 |
| A lamp with thermal mass, timescale illustrative | 0.56 | 0.78 |
| A lamp with thermal mass, timescale illustrative | 0.60 | 0.50 |
| A lamp with thermal mass, timescale illustrative | 0.65 | 0.26 |
| A lamp with thermal mass, timescale illustrative | 0.70 | 0.10 |
| A lamp with thermal mass, timescale illustrative | 0.76 | 0.02 |
| A lamp with thermal mass, timescale illustrative | 0.80 | 0.00 |
Arm 4 — Repeatability, ten at a time
Section titled “Arm 4 — Repeatability, ten at a time”timer.soak(10, t) at each of 0.1 s (or the shortest your interface offers), 0.25 s, 0.5 s,
1 s, 5 s and 20 s, with the probe watching all of them.
Record, at each: the mean delivered interval, the standard deviation, and the spread, max minus min. The spread is what the certificate quotes, because Part II’s ruling is that this course states bounds rather than statistics, and because one bad exposure in ten is one ruined sheet in ten and a standard deviation will hide it.
Then sort each column and look at the extremes. A single outlier of tens of milliseconds has a likely cause — a garbage collection that fell inside the exposure — and a testable one, which the firmware page’s soak-test note sets out.
Arm 5 — What the supply does to the lamp
Section titled “Arm 5 — What the supply does to the lamp”On an LED head with a constant-current driver, this arm is short and its result is a negative: the driver holds the current, the flux follows the current, and supply variation inside the driver’s compliance range does not reach the paper. Confirm rather than assume it: log the supply voltage and the easel illuminance together for ten minutes, and show that the second does not follow the first.
On a tungsten head it is the arm that matters most. Log the supply voltage and the easel illuminance together, once a minute, for the length of an evening’s printing — two hours at least — with the lamp switched on and off as it would be in a session.
Arm 6 — The sensitometric check, on paper
Section titled “Arm 6 — The sensitometric check, on paper”The three arms above measure electricity and light. This one measures the thing the print is made of.
Make a five-band, third-stop test strip from a negative you know, using the firmware’s f-stop mode, at a base exposure comfortably inside the range arm 3 says the offset is constant over. Process it with a control sheet. Then make a second strip from the same negative with every band’s time multiplied by four and the aperture closed by two stops, so that every band receives the same exposure by a different route: four times the time at a quarter of the illuminance.
Read both strips on the densitometer. Plot reflection density against band number for each.
What the check predicts, and where the prediction comes from. Equal steps in stops are equal steps in log exposure — a third of a stop is 0.301 ÷ 3 = 0.100 log H — so wherever the paper’s curve is a straight line, the density steps must be equal too. How big each step is depends on the local gradient of your paper in your developer, which is a thing you measure here rather than look up.
Four things the plot can show, and what each means.
| What the plotted strip does | What it means | The test that confirms it |
|---|---|---|
| Equal density steps along a straight run, with the top bands compressing | The paper’s shoulder, working normally | Re-make the strip a stop lighter; the compression moves with the density, not with the band number |
| The short bands closer together than the long ones | Too little exposure at the short end — the lamp’s rise, or the paper’s reciprocity | The second strip: if the compression follows the times, it is the lamp; if it follows the illuminance, it is reciprocity |
| Even spacing, but every band darker or lighter than predicted | An offset in the base exposure, not in the steps | The bands are right and the base is wrong. Nothing about the timer’s stepping is implicated |
| Scatter with no order to it | Jitter, or a strip that moved between bands | Arm 4 has the jitter figure already. If arm 4 is clean, the card moved |
Expected observations
Section titled “Expected observations”Arm 1. The delivered interval consistently longer than the commanded one, by a similar number of milliseconds at 200 ms and at 20 s. If the excess scales with the interval, look for something in the loop that is proportional to the count of iterations rather than fixed per pass.
Arm 2. Agreement between the board’s tick difference and a hand-held clock over an hour, to within the second or so that a pair of hand readings can resolve. A disagreement of minutes is a divisor or a clock-frequency error, and it is the only kind of fault this arm exists to catch.
Arm 3. An LED head that looks like a rectangle at every timescale the detector can resolve, and therefore an offset that is zero within the instrument’s resolution — which is a result, and must be written as “zero within ±x ms” rather than as “no offset”. A lamp with thermal mass that visibly rises and falls, with a fall that looks different from the rise.
Arm 4. A spread in milliseconds that is roughly the same at every commanded interval, and a spread in stops that grows enormously as the interval shortens. Those are the same measurement in two units, and the second is the one that decides anything.
Arm 5. On an LED head, illuminance that does not follow the supply. On a tungsten head, illuminance that follows it, plus a slow settling after each switch-on and a downward drift through the evening as the head warms.
Arm 6. Two strips that agree band for band if nothing on this page has been missed, and disagree at the short end if something has.
What is happening chemically
Section titled “What is happening chemically”The paper integrates. A silver halide crystal does not care how long the shutter was open; it cares how many photons it absorbed, and the number of absorbed photons is the area under the illuminance curve rather than the width of a command. Part IV owns what happens next: absorbed photons free electrons, freed electrons and interstitial silver ions build a latent-image speck, and a speck above a critical size makes the crystal developable. Every discrepancy this page measures comes from the difference between the interval during which a transistor conducted and the integral of the light that resulted.
Reciprocity is a statement about that chemistry, not about optics. Part IV sets out Schwarzschild’s result — that equal blackening comes from I × tp rather than from I × t, with p below one for the plates he tested — and explains the mechanism: at low rates the sub-image specks that form are too small to be stable and decay before the exposure is over, and at very high rates the freed electrons arrive faster than the silver ions can follow. Both ends waste photons, and the waste depends on the rate rather than the total.
That is why the short-exposure question cannot be answered by the timer alone. A timer that delivers exactly the light it was asked to deliver can still produce a print that is too light, because the paper’s efficiency at that rate is lower — and no arithmetic on this page can find that, only the second strip in arm 6 can.
And the additive strip has a second version of the same problem. A band on an additive strip receives its exposure in three or four instalments rather than one, and whether a paper responds identically to the two is the intermittency question. Part IV records Schwarzschild’s own intermittent-exposure comparison; no manufacturer figure for a developing-out paper was found in this course’s corpus, so this too enters the budget as unquantified. Arm 6’s two strips are the test that would show it, and if your additive and single-band strips disagree after the lamp and the jitter have been accounted for, that disagreement is data worth writing down.
Data to record
Section titled “Data to record”| Record | Where it comes from | Why it is needed |
|---|---|---|
| Firmware version and all eight constants as set | The listing on the board | A different DIVISIONS or MIN_MS is a different instrument |
OFFSET_MS before and after |
Preparation, and the analysis | Proves the page was run with the correction removed |
| Mean, worst and spread of the overshoot, at each commanded interval | Arm 1 | The loop’s own contribution |
| The hour check: the two log ticks, the two clock readings, the difference in seconds and in ppm | Arm 2 | The timebase, and the only outside reference on the page |
| τrise, τfall and their difference, per light source | Arm 3 | The offset, and the two numbers it is made of |
| The interval at which teff departs from slope 1 | Arm 3 | The linearity floor |
| Spread in milliseconds and in stops at each interval | Arm 4 | The repeatability floor |
| Supply voltage and easel illuminance, paired, through an evening | Arm 5 | The exponent, if you have a tungsten head, and the drift either way |
| Head warm-up rule, copied from its own certificate, and whether it was applied | Preparation | A measurement made during warm-up has a gradient in time |
| Densities of both strips, band by band, with base plus fog | Arm 6 | The only measurement on the page the print actually cares about |
| Paper packet and batch, developer, dilution, temperature, time, agitation | Preparation | Every density above belongs to these five things |
| Ambient temperature, and the head’s temperature at the start and end | Throughout | Both lamps and both boards care |
Analysis
Section titled “Analysis”Four numbers, then a budget, then a certificate. The order is the same as Part XIV’s because the method is, and this page does not reinvent it.
1. The offset, and what it is a property of
Section titled “1. The offset, and what it is a property of”From arm 3, for each light source: OFFSET_MS = τfall − τrise, with the two constituent numbers recorded beside it. Add the loop’s mean overshoot from arm 1, which acts in the same direction and is corrected by the same constant.
The offset belongs to a lamp and not to a timer, which has a consequence people get wrong: a timer with two heads has two offsets, and a firmware carrying one constant is correct for one of them. Record which head the constant in your firmware is for, in the firmware and on the certificate, and change it when you change heads.
2. Repeatability, in the unit that decides
Section titled “2. Repeatability, in the unit that decides”From arm 4, the spread at each commanded interval, first in milliseconds and then converted.
Δt is the spread in the delivered interval and t the commanded interval, both in the same unit. For small ratios this is very nearly Δt ÷ (t × ln 2), which is 1.44 Δt ÷ t — a useful check that an answer is the right size.
One jitter figure, converted to stops across the working range
- A spread of 12 ms
- A spread of 40 ms
Show the numbers behind this plot
| Series | Commanded exposure, seconds | Spread, in stops |
|---|---|---|
| A spread of 12 ms | 0.10 | 0.16 |
| A spread of 12 ms | 0.15 | 0.11 |
| A spread of 12 ms | 0.20 | 0.08 |
| A spread of 12 ms | 0.30 | 0.06 |
| A spread of 12 ms | 0.50 | 0.03 |
| A spread of 12 ms | 1.00 | 0.02 |
| A spread of 12 ms | 2.00 | 0.01 |
| A spread of 12 ms | 3.00 | 0.01 |
| A spread of 12 ms | 5.00 | 0.00 |
| A spread of 40 ms | 0.10 | 0.49 |
| A spread of 40 ms | 0.15 | 0.34 |
| A spread of 40 ms | 0.20 | 0.26 |
| A spread of 40 ms | 0.30 | 0.18 |
| A spread of 40 ms | 0.50 | 0.11 |
| A spread of 40 ms | 1.00 | 0.06 |
| A spread of 40 ms | 2.00 | 0.03 |
| A spread of 40 ms | 3.00 | 0.02 |
| A spread of 40 ms | 5.00 | 0.01 |
3. The shortest honest exposure, which is three floors and you take the highest
Section titled “3. The shortest honest exposure, which is three floors and you take the highest”This is the number the page exists to produce, and it is not one measurement.
The linearity floor, from arm 3: the commanded interval below which teff stops being a straight line of slope 1 in tcommanded. Below it, a single offset constant is the wrong model and the firmware’s correction is wrong by an amount that changes with the exposure.
The repeatability floor, from arm 4: the commanded interval below which the spread in stops exceeds the criterion you declared.
The reciprocity floor, from arm 6 and from the chemistry section: the interval below which the paper’s own response stops being proportional to the light — which this course cannot compute for you and which your two strips can detect.
Your shortest honest exposure is the largest of the three, and the certificate names which one it was, because the three are fixed by different things and only one of them can be improved by better firmware.
4. The error budget
Section titled “4. The error budget”Every term named, every one sized, the units kept apart, and a stated rule for combining them.
| Term | Axis | How you sized it | Systematic or random | Your figure |
|---|---|---|---|---|
| Timebase | stops | Datasheet arithmetic, ±65 ppm, confirmed by arm 2 | Systematic, and 9.4 × 10⁻⁵ stops: three orders below everything else on this list | |
| Command quantisation | stops | The firmware commands whole milliseconds, so ±0.5 ms | Random across bands | |
| Loop overshoot, mean | stops | Arm 1, and removed by OFFSET_MS | Systematic, and corrected | |
| Loop overshoot, spread | stops | Arm 1 and arm 4, converted at each exposure | Random | |
| Lamp rise and fall | stops | Arm 3, as τfall − τrise, and removed by the same constant | Systematic per lamp, and corrected only above the linearity floor | |
| Lamp warm-up drift | stops | The head’s own certificate; removed by obeying its warm-up rule | Systematic if the rule is broken, absent if it is not | |
| Supply variation | stops | Arm 5. Zero on a constant-current LED head, measured on a tungsten one | Random through a session | |
| Detector chain | stops | The photodiode head’s own certificate and its sampling rate | Systematic, and it bounds what you could see, not what happened | |
| Paper reciprocity below the linearity floor | — | Unquantified. No published figure for a developing-out paper exists in this course’s corpus | Systematic, unbounded | |
| Intermittency, on an additive strip | — | Unquantified, for the same reason | Systematic, unbounded | |
| Processing variation | density | The control sheet’s movement between batches | Random between batches | |
| Densitometer reading floor | density | Its certificate’s repeatability figure at the density you are reading | Random |
Combine the exposure terms by Part II’s rule: in the worst case the relative uncertainties add, and in a logarithmic unit that means the terms simply add. Quote two figures and not one: a corrected figure, which is what remains after the offset and the warm-up rule have been applied and which is the number a print-to-print comparison uses; and an uncorrected figure, which includes the systematic terms and is what somebody else’s instrument would have to match.
The timer certificate
Section titled “The timer certificate”One page. It is what the rest of the course cites whenever it quotes an exposure from this instrument, and it is filed in one envelope with the sensitometer, densitometer and enlarger certificates and with the sheets it came from.
| Field | What goes in it |
|---|---|
| Instrument and serial | The name you gave it and its number, from the build record |
| Date of calibration, by whom, and when the next one is due | And what would trigger one early: a firmware change, a new head, a repair |
| Firmware version and the eight constants as set | Including OFFSET_MS, and which lamp it is for |
| Timebase | “RP2040 crystal, specified at ±65 ppm by datasheet arithmetic; confirmed against a hand-held clock over one hour to about 56 ppm. Not traceable.” |
| Resolution | The commanded interval’s quantum in milliseconds, and the display’s, which are not the same number |
| Offset, per light source | τrise, τfall, their difference, and the head each belongs to |
| Repeatability | The spread in milliseconds and in stops, as a column across the exposures tested, with the number of runs |
| Shortest honest exposure | Per light source, with the criterion you declared and which of the three floors bound it |
| Warm-up rule | Copied from the head’s own certificate, with that certificate’s date, not re-derived |
| Switching device | The transistor, the fuse, the measured command-to-light delay, and the resolution of the instrument that measured it |
| Light source and its state | Which head, at what current, its certificate’s date, and the lamp’s hours if it is a filament |
| Paper and processing | Paper, batch, developer, dilution, temperature, time, agitation. Every density on the certificate belongs to all six |
| Known limitations | Reciprocity below the stated floor, unquantified; intermittency, unquantified; no published acceptance limit; the detector chain’s own resolution |
| Signature and notebook page | So the certificate points back at the raw data |
Troubleshooting
Section titled “Troubleshooting”| What you see | Likely cause | What to do |
|---|---|---|
| The probe reports no pulses | Signal wire on the wrong side of the gate resistor, no shared ground, or ACTIVE_HIGH wrong |
Meter GP15 against the probe’s ground while the timer exposes. One ground wire between the boards is not optional |
| The mean overshoot is milliseconds rather than microseconds | Something inside the exposure loop is blocking — a display write, a print, a sleep | Comment out the metronome and re-run arm 1. The difference is the cost of what you removed |
| teff from arm 3 is longer than commanded on an LED head | Almost certainly the detector, not the lamp: an integration window that starts before the command or ends after the fall | Re-run with the dark interval before and after logged, and integrate only between the pin’s own edges |
| The light curve looks like a staircase | The converter’s sample rate, not the lamp | Read its data rate. At 860 samples a second the steps are 1.2 ms apart, and a curve that rises in 2 ms cannot be resolved by it |
| The hour check disagrees by minutes | A clock-frequency or divisor error, which is what arm 2 exists to catch | Read the board’s actual system clock, and check that nothing overclocks it at boot |
| The hour check disagrees by a second or two | That is the resolution of a pair of hand readings | Nothing is wrong. Record it as a bound rather than a difference |
| The hour check comes out negative | The tick counter wrapped between the two log lines | The firmware page’s troubleshooting table names it. Take a shorter run, or add the wrap period once |
| Repeatability far worse at one particular interval | An interaction between the exposure length and something periodic — the metronome, a display refresh | Re-run that interval with the metronome disabled and compare |
| Both strips in arm 6 disagree with each other everywhere, not just at the short end | Not reciprocity. The aperture change was not exactly two stops, or the two were processed differently | Re-make both in one processing batch, and verify the aperture change by measuring illuminance rather than by counting clicks |
| Densities drift steadily across a strip made in one go | The developer, not the timer | Read the control sheet. That is what it is for, and it belongs to the break/fix page |
Clean-up
Section titled “Clean-up”Trays emptied into their labelled containers, rinsed and dried; tongs rinsed and hung separately, one per bath. The probe board disconnected from GP15 and its lead coiled. The photodiode head returned to its case with its aperture covered. The head switched off and left to cool before anything is dismantled.
Set OFFSET_MS to the value you measured before you leave the bench, and write the new value in the
notebook and on the certificate. The commonest way to waste this evening is to measure the constant and
then not fit it.
Storage
Section titled “Storage”The certificate goes in the notebook and a copy in the calibration records — both, because one will be lost. The strips go in a dated envelope with it; they are the raw data behind every density on it. The captured serial logs, the timer’s and the probe’s and the photodiode head’s, go in a dated folder named after the certificate, because a plot can be re-made from a log and not the other way round.
The instrument goes back on its shelf on the dry side of the room, with its current draw and calibration date written inside the lid.
Disposal considerations
Section titled “Disposal considerations”Spent fixer holds dissolved silver as thiosulfate complexes and is the one stream on this page that must not go to drain: it is collected for silver recovery, and the chemistry of why is that page’s. Spent developer is an alkaline solution of oxidised developing agents with a real oxygen demand. Spent stop bath is a dilute weak acid.
All three are collected separately, labelled with what they are and when they were used, and dealt with by the route your local authority or water undertaking sets out. Local regulation governs, and this course cannot tell you what yours says — check your local regulations, and treat the sentence as an instruction rather than a formality.
Alternative route
Section titled “Alternative route”Without a darkroom. Arms 1 to 5 are bench work and need no dark room at all: they measure electricity and light, not paper. Arm 6 cannot be substituted, because the quantity it measures is a density on a print. What a reader without a dark room should do is run the five arms, write the certificate with arm 6 recorded as not performed, and be precise about what that costs: the electrical and optical floors are established and the reciprocity floor is not, so the shortest honest exposure on that certificate is a lower bound rather than an answer. Part XVI’s room page lists the temporary blackouts that turn “no dark room” into “a dark room for two hours”.
Without a photodiode head. Arm 3 is the arm that suffers, and there is a real substitute: put a camera on a tripod with the lamp and a running clock display in one frame, film at the highest frame rate it offers, and count frames. At 120 frames a second the resolution is 8 ms, which is coarse against an LED head and adequate against a lamp with thermal mass — and the certificate then quotes the resolution beside the number, which is the discipline the whole page is about.
Without a densitometer. Arm 6 becomes a visual comparison: read the strip by eye against a step wedge under a consistent light and record which bands you cannot tell apart rather than a density. “Bands 4 and 5 are indistinguishable” is a real measurement of your eye and your paper together, and the certificate says the sensitometric check was made visually.
Without a second Pico. Arm 1 loses its independent witness and there is no full substitute: the
firmware’s own delivered_ms becomes the only figure, and the certificate must say that the delivered
interval is self-reported. Arm 2 still works, because a hand-held clock is independent of
everything. An audio recording of the switching clicks is a partial substitute at a resolution of one
audio sample, and it measures the driver rather than the pin.
With a bought timer instead of a built one. Every arm applies unchanged, and it is worth saying plainly why: a commercial instrument’s offset, repeatability and short-exposure limit are exactly as unmeasured as a home-built one’s until somebody measures them, and its maker has published none of the three. Only arm 1 changes, to the audio or camera method, because there is no pin to watch.
Questions
Section titled “Questions”- Your timer reports a standard deviation of 12 ms at every commanded interval from 0.1 s to 20 s. Express it in stops at 0.4 s and at 20 s, say at which of the two it could be visible on a print, and explain why the millisecond figure being constant is the reason the question is interesting.
- The same commanded 0.3 s is given on an LED head and on a tungsten head, both set to the same steady illuminance at the easel. Predict the sign of the density difference between the two prints from the areas under the two curves, and name the one measurement that would tell you whether your prediction was right for the wrong reason.
- Arm 3 gives τrise = 40 ms and τfall = 40 ms on a lamp that visibly takes a fifth of a second to come up. State the offset the firmware should carry and explain, in one sentence, why a slow lamp can have none.
- You run arm 2 and the board’s tick difference agrees with the clock to within one second over an hour. State exactly what you have established about the timebase, in parts per million, and state one kind of error this agreement cannot rule out.
- A reader argues that arm 1 is unnecessary because the firmware already reports
delivered_mson every line of the log. Give the strongest form of their case, then say what the probe finds that the firmware cannot, and why. - Your five-band third-stop strip has evenly spaced bands at 8 s and compressed lower bands at 0.5 s. Design the shortest experiment that separates the lamp’s rise from the paper’s reciprocity, and say what each outcome would look like.
- Read this certificate line and name two claims it does not support: “Timer accurate to ±5 ms. Calibrated 3 March. Resolution 0.1 s.”
Further experiments
Section titled “Further experiments”Measure the offset on a third light source. A safelight, a contact printer, a UVA array. Each has its own τrise and τfall, and three offsets side by side turn an abstract constant into a property of lamps you can predict from their physics.
Find the loop’s cost, term by term. Re-run arm 1 with the metronome disabled, then with the display blanked, then with both, and subtract. What comes out is the millisecond price of each feature — the only honest way to argue about whether a feature is worth its cost at short exposures.
Re-run arm 4 after a fresh reset with the largest possible free heap, and compare the extremes of the sorted column against the first run. If the outliers move, the firmware page’s hypothesis about garbage collection inside an exposure is supported, and that is a finding this course would want.
Repeat the whole page in six months and put the two certificates side by side. Nothing will have changed but the lamp’s hours and the room’s temperature, and whether the numbers moved is the only thing that turns a certificate into a habit. It is why the certificate carries a review date.
Check your understanding
Sources for this page
8 cited · checked 2026-09-05
- 01Raspberry Pi Pico Datasheet: An RP2040-based microcontroller boardRaspberry Pi Ltd§ Section 1, key features - a 12-bit 500 ksps analogue-to-digital converter and 26 multi-function 3.3 V GPIO of which 26 to 28 may also be ADC inputsdatasheets.raspberrypi.com/pico/pico-datasheet.pdftier 1, primary2026-09-05
- 02RP2040 Datasheet: A microcontroller by Raspberry PiRaspberry Pi Ltd§ Section 2.16.1.1, recommended crystals - the Abracon ABM8-272-T3 at 12.000 MHz, with a frequency tolerance of plus or minus 30 ppm at 25 C, a stability of plus or minus 30 ppm and ageing of plus or minus 5 ppm in the first yeardatasheets.raspberrypi.com/rp2040/rp2040-datasheet.pdftier 1, primary2026-09-05
- 03OPT101 monolithic photodiode and single-supply transimpedance amplifier, data sheet SBBS002Texas Instruments Incorporated§ Section 6.5, electrical characteristics at 25 C - photodiode current responsivity 0.45 A/W and voltage output 0.45 V per microwatt at 650 nm through the internal 1 megohm feedback resistor, bandwidth 14 kHz, output offset voltage 5 to 10 mV with 7.5 mV typical, dark voltage noise 300 microvolts RMS from 0.1 Hz to 20 kHz; section 6.6 - active area 2.29 by 2.29 mmti.com/lit/ds/symlink/opt101.pdftier 1, primary2026-09-05
- 04ADS111x ultra-small, low-power, I2C-compatible, 860-SPS, 16-bit ADCs with internal reference, oscillator and programmable comparator, data sheet SBAS444Texas Instruments Incorporated, 2024§ Section 5.5, electrical characteristics at a 3.3 V supply - 16 bits with no missing codes and data rates of 8, 16, 32, 64, 128, 250, 475 and 860 samples per second; section 6.1, noise performance - effective and noise-free resolution both a full 16 bits at every data rate up to 128 SPSti.com/lit/ds/symlink/ads1115.pdftier 1, primary2026-09-05
- 05Film Reciprocity Failure Compensation, technical information (version 2)HARMAN technology Limited (ILFORD Photo), 2023§ Low intensity reciprocity failure described as a reduced efficiency in forming stable development centres at lower light levels; the correction given as corrected time equals metered time raised to the power P, with a table of P per film; and the statement that exposure times of one second or less need no compensation. A film document throughout, with no paper figure anywhere in itilfordphoto.com/wp/wp-content/uploads/2024/05/Reciprocity-Failure-Compensation-v2.pdftier 1, primary2026-09-05
- 06MULTIGRADE RC Papers, technical informationHARMAN technology Limited (ILFORD Photo), 2020§ ISO Range (R) - the table of range figures to ISO 6846:1992, in which MULTIGRADE RC DELUXE reads 160, 130, 110, 90, 70, 60 and 50 through filters 00 to 5 and 90 unfiltered; ISO paper speeds of 240 through filters 00 to 3 and 220 through 4 and 5; and the note that these papers are roughly equivalent to a film ISO of 3 to 6ilfordphoto.com/wp/wp-content/uploads/2021/01/MULTIGRADE-RC-Papers-J20.pdftier 1, primary2026-09-05
- 07Electrical safety and you: A brief guide, INDG231(rev1)Health and Safety Executive, 2012§ What are the hazards - normal mains voltage of 230 V AC can kill and the risks are greatest in wet surroundings; Reducing the risk - limit the supply voltage to the lowest needed to get the job donehse.gov.uk/pubns/indg231.pdftier 1, primary2026-09-05
- 08IRLZ44NPbF HEXFET Power MOSFET, data sheet PD-94831International Rectifier, now Infineon Technologies, 2003§ Electrical Characteristics at TJ = 25 C - turn-on delay 11 ns, rise time 84 ns, turn-off delay 26 ns and fall time 15 ns, all measured at VGS = 5.0 V with a 3.4 ohm gate resistor; input capacitance 1700 pFinfineon.com/dgdl/Infineon-IRLZ44N-DataSheet-v01_01-EN.pdftier 1, primary2026-09-05
Formulas, hazard statements, historical dates and process descriptions on this page were checked against the sources above on the date shown. Safety data changes: obtain the current safety data sheet for the product you actually buy before you open it.