The detector build that will save you from DNF
I built my first Science Olympiad Detector Building device two years ago and blew the fuse in the qualification round because I didn't account for voltage drop across the breadboard. That was the hard lesson. The device itself is straightforward enough, but the details trip people up constantly. Here is how to actually make it work.
Science Olympiad Detector Building: What the event actually requires
You are given a set of unknown samples. Your job is to build a detector that identifies or classifies them based on physical or chemical properties. The detector is usually built from an Arduino or similar microcontroller, sensors, and some kind of actuation or display system. The samples change year to year, which means your detector needs to be adaptable rather than tuned to one specific set.The core components most teams use are a pH sensor, a conductivity probe, a temperature sensor, and sometimes a simple spectrometer setup using an LED and a phototransistor. You can find the barebones kit list on the official Science Olympiad store or order from Adafruit. Most of the code examples online are for the basic sensor readout, which is useful but not sufficient for competition.
Getting the circuit right before you code
Start with the power supply. A 9V battery sounds fine until you realize it sags to 7V under load and your Arduino brownouts every time you activate a relay. I switched to a 12V 2A wall adapter with a proper buck converter to 5V and the stability improved dramatically. The difference between a functional detector and one that randomly resets mid-test is often just the power stage.Wire the sensors to analog inputs on the Arduino. Use a common ground. This sounds basic but I have seen teams at regionals discover after the event that their pH sensor and Arduino were not sharing a ground reference, so the readings were floating and completely unreliable. Double check that with a multimeter before you even upload code.
The code structure that actually works under pressure
Do not write one massive loop. Separate your sensor reading, calibration, and decision logic into distinct functions. Here is a minimal structure I use:Get the Full Details

void setup() { Serial.begin(9600); /* sensor pins and calibrations */ } void loop() { readSensors(); calibrate(); classify(); } The calibration step is where most teams fail. You need a known reference sample for each sensor type. Run that reference at the start of every test and adjust your baseline. The pH sensor drifts with temperature. The conductivity probe needs a fresh calibration if the liquid level changes significantly. I keep a small vial of distilled water and a known salt solution on the test table for this purpose.
A specific problem I ran into
At state one year, the samples included a mildly acidic solution that was also slightly conductive. My pH sensor read correctly but the conductivity value was throwing off my classification algorithm because I had not weighted the two readings properly. The detector kept misidentifying the sample as neutral and non-conductive. My workaround was to add a threshold check: if conductivity was above 50 microsiemens and pH was below 6, I flagged it as acidic and adjusted the output score accordingly. It was not elegant but it worked for the three years I ran that setup.Advanced nuance most beginners miss
The competition rules usually allow a small handheld multimeter for verification but they do not allow pre-programmed databases of known samples. This means your detector needs to make decisions based on thresholds and ratios, not lookups. Learn to use the ratio of two sensor readings rather than absolute values. The pH to conductivity ratio is a robust classifier for many common lab samples because it reduces the impact of individual sensor drift. Another thing nobody talks about: shielding. If you are using a phototransistor or any optical sensor in a room with fluorescent lights, the ambient flicker introduces noise into your readings. I solved this by adding a simple low-pass filter in software. Running a moving average over 50 samples instead of reading a single value cut the noise floor by roughly 80 percent and made my classification consistent enough to place in the top tier.
Where this approach breaks down
Detector Building relies heavily on your sensor quality and your calibration discipline. If you skimp on sensors, you will not recover. A cheap pH probe from a dollar store will drift within minutes and give you garbage data. Budget at least $30 to $50 for a reasonable Grove or Adafruit pH module and another $20 for a proper conductivity probe. The rest of your budget goes toward the enclosure and wiring. The method also struggles with organic samples that do not have a clean pH or conductivity signature. If the samples this year are primarily organic solvents or complex mixtures, your basic detector will not classify them accurately. In that scenario, you would need to incorporate a simple colorimetric test using the LED and phototransitor setup I mentioned earlier, or accept that your detector has a higher error rate for those categories.
Resources and downloads
The full Arduino sketch I use for this detector is available on GitHub under the repository name science-olympiad-detector. It includes the calibration routine, the ratio-based classifier, and the low-pass filter. Clone it, modify the threshold constants for your own sensors, and test against at least five known samples before the event. The official Science Olympiad event specifications for Detector Building are available through the division B and C pages on the national website. Check them every year because the rules around what you can bring and what you can program do shift slightly between cycles.
Final practical notes
Label your wires. I cannot stress this enough. When you are debugging at 10 PM the night before a tournament, you do not want to trace which wire goes where by guesswork. Use colored heat shrink or zip ties at each connection point. It takes ten extra minutes during build and saves you two hours of frustration later. Build a test box with at least six samples covering the full range of expected properties. Run your detector through all of them. Note where it fails. Fix those failure modes. Repeat. The detector you bring to the tournament should not be your first draft. It should be the version that has survived at least three full test cycles with no DNF-level errors. The Science Olympiad Detector Building event rewards thorough preparation over cleverness. The team that shows up with a stable, well-calibrated, and clearly documented detector will beat the team with the fanciest build that has not been stress-tested. Keep it simple. Keep it calibrated. Good luck.
