Analog Circuitry Lets You Blow This LED Out

LED candles are neat, but they’re very suboptimal for wish-making: you can’t blow them out. Unless you take the circuit from [Andrea Console]’s latest project that lets you do just that, using only analog electronics— no microcontroller in sight.

He’s using the known temperature-voltage behaviour of the LED for control here– sort of like the project we saw in last year’s Component Abuse Challenge that let you illuminate the LED with a butane lighter. Here it’s a bit less dramatic, relying only on the small cooling effect your breath has on the LED.

There are two parts to the circuit, really– a latching section to turn the thing on from a single button press, and breath-detecting section. The breath-detecting section relies on an op-amp acting as a comparator, comparing the voltage across the LED’s current-limiting resistor, and a reference stored in a 100 µF capacitor. Blowing on the candle spikes the voltage on the LED, and thus the current-limiting resistor too fast for the capacitor’s voltage to change, so the comparator flips, triggering a reset of the latching circuit. Could you do it with an Arduino? No doubt, but the fact is you don’t have to and this is a more elegant solution than just another microcontroller.Check it out in action with the video embedded below.

It reminds us of the sort of circuit we’d have found in a project book, back in the day. [Andrea] seems to have a knack for that sort of thing, as seen with the half crystal/half regenerative radio we saw previously.

11 thoughts on “Analog Circuitry Lets You Blow This LED Out

  1. It’s cool that you can do this with a simple analog circuit, and the requisite knowledge / skill is very impressive to someone like me (no education or training).

    That being said, I hope she isn’t making this to replace birthday candles. Childhood has already become far to sterile and ‘safe’. Let kids get burned, how else are they going to learn.

    I imagine someone with creativity could make a cool escape room / secret door using this circuit

    1. Thank you for your kind words!
      By the way, it’s he/him; Andrea is a male name in Italy (and actually, it means “manly” in greek).
      To address your concerns regarding candles, be reassured that I keep it on my nightstand, where a real candle would be a significant safety concern ;)

  2. Could you do it with an Arduino? No doubt

    The question is, is the ADC in the Arduino sensitive enough to detect the small difference?

    The circuit at TP is estimated to be at 3.074 Volts, so the ADC reference needs to be greater than that. Let’s assume AREF is set at 3.3 Volts, so we can actually measure the voltage. The let’s suppose this is an Arduino Uno measuring at 10 bits, that means 3.3 Volts / 1024 = 3.22 mV smallest measurable difference.

    If we assume some typical PN junction temperature dependence of -1.8 mV/°C the Arduino needs a swing of 1.8 degrees to see a single bit flip in the ADC. Now the question becomes, what’s the real ENOB of the ADC? Is the last bit going to be just random noise? How much do we need to average to actually measure the temperature change, and is it enough to reliably detect you blowing on the diode?

    Turns out it’s not actually trivial to get it working. Maybe on a better Arduino?

    Bonus points: there is a programmable comparator in the ATMEGA328p between AIN0 and AIN1, which in theory could let you do the exact same trick.

    1. Some arduinos have 14bit adc’s. Like you said though the ENOB isn’t that. You would probably want to run the thing on batteries but even then I wouldn’t be surprised if supply noise was a real problem at anything over 12 bits.

      It’s what though 16 samples to get 2 more bits at something like 400Hz? So even if a 10 bit Arduino had an 9bit ENOB you could probably pull it off with 11bits.

      I think at this point though I would resort to an amplifier stage after trimming a DC offset. That’s probably because I lack actual skills in electronics.

      Comparator is a good idea.

      1. You can do this entirely with a basic Atmega328 Arduino. One that was featured here a short while back: https://hackaday.com/2018/08/21/an-led-you-can-blow-out-with-no-added-sensor/

        I built a 10-led “candelabra” where individual LEDs can be blown out using just two Aliexpress Arduino Pro Minis, the LEDs and associated resistors based on the above. 5 ADC channels per m328.

        https://photos.app.goo.gl/KrWJd7uRy2KoJkVh9

        The trick is lots of oversampling.

        1. The trick is lots of oversampling.

          Ironically, that trick doesn’t work if you don’t have a noisy ADC or other error source, when the difference you’re trying to measure is smaller than your LSB. I mean, what’s the average of 1, 1, 1, … , 1? It’s 1.

          The trick is that the value you’re trying to measure is going to bias the probability of a random bit flip, and you’re measuring the distribution of bit flips to see whether the statistical value was closer to 0 or 1. Oversampling doesn’t automatically improve resolution, and can sometimes lead to false conclusions when the error source isn’t random.

        1. Interesting thanks for sharing. Characterizing adc’s is a lot of work, glad to see people sharing their results.

          We still haven’t covered linearity! But the plot on that site does, so that is good.

Leave a Reply

Please be kind and respectful to help make the comments section excellent. (Comment Policy)

This site uses Akismet to reduce spam. Learn how your comment data is processed.