2016-10-16

Extreme power TV-B-Gone

Purpose

Almost every electronic hobbyist knows about the TV-b-gone project. For those who don't know, it's a nice little device which iterates over many TV ON/OFF remote codes and sends them to an IR led to turn off many TV (appreciable in noisy places or just to have fun).

I wondered if it was possible to build a really high-power one, to shut TVs in the neighborhood or across the street, so I ran a few experiments and finally built one such device. One point which started to make me think about it was after noticing that vegetation (such as tree leaves) appear white under infrared light, so they reflect infrared very well. I thought that if I could send a strong signal to trees, they could reflect it all around.

Example of photos of trees and grass in infrared

Selecting hardware

Not having a TV myself, I wanted the device to be portable for obvious reasons, and will have to be battery-powered. I found some code capable of running on ATTINY85 devices so I used one of my Digispark boards (17x20 mm) :

I made some experiments to drive high power LEDs from an ATTINY85 GPIO. After quite a numebr of tests and fried transistors, I came up with this design which works pretty well and provides clean square signals up to a few hundred kilohertz :

I needed some high-power IR LEDs. The highest power/price ratio I could find using 940nm LEDs (most common wavelength used by TVs) is found when buying packs of 10-20 3W LEDs. These ones need to be soldered on a plate and to use a lens to focus the beam. I found some aluminium PCBs for high power LEDs featuring 20 and 50 places. The 20-LED one was both cheap and small enough to be hand-held so I picked one, with 20 3W LEDs and as many 15° lenses.

Realising the driver

I'm a bit old-school when it comes to realizing PCBs, not even having a printer doesn't make it easy. So I picked the components, placed them like on the schematic, then draw the PCB with a pencil and etched it.

  

Installing the software

A working TV-B-Gone software can be found in Adafruit's Github repository. I performed a few changes such as setting the default region to EU instead of US, and looping forever between the two regions instead of doing a single round. I also changed the LEDs assignment so that the debug LED connected to PB1 can be used to monitor the activity. Then I flashed the device using my Bus Pirate board in order not to depend on any boot loader and have it boot fast. The modifications are available here. The original device uses a 8 MHz ceramic resonator because the internal RC oscillator is supposedly not accurate enough. But I think that receivers are not accurate either and it's not that much of a problem. So I went with the simpler solution consisting in using the internal RC oscillator only.

Assembly

I stuck the boards on the back of the aluminium plate using some double-sided tape, placed an ON/OFF switch, a capacitor and 4 Li-ion batteries providing 14.8V. The aluminium plate is very convenient as it serves as a LED support, a PCB support and as a heat spreader. The most painful part was to solder the LEDs because the solder cools down very quickly and you don't want to put too much of it otherwise there's no more room for the lenses.



Initial tests

I made a small IR detector based on an IR receptor and a green LED. When powering the tv-b-gone on, the receiver immediately receives the beam and blinks, showing the emitted signal. I found that it was possible to catch the signal in any room in my home provided the doors are not completely closed. This proves that the IR signal is powerful enough to be reflected multiple times on the walls.

I started to make some measurements. For this I soldered a 0.05 ohm resistor in series with the LEDs and connected my oscilloscope on it. I noticed that the signal was full of noise on the input, because the capacitor wasn't strong enough to withstand the high current pulse and easily falls by 2 volts when the LEDs emit a pulse. And indeed, this 4700 µF capacitor was warm... I also noticed that the current coming from the batteries is very low, a few hundreds of milliamps on average. The initial lenses had a 45° beam which I found was too large, so I replaced them with a 15° beam.

Modifications

I replaced the capacitor with two low-ESR 3300 µF capacitors. These ones now stand the load much better. The voltage across the 0.05 ohm resistor shows 0.7 volt during pulses. That's 11 amps under 13V, it's 143 Watts! IR LEDs generally support very high power pulses. Here there's 60W of LEDs (20x 3W) arranged in 4 parallel blocks of 5 LEDs. But under 13V  the current raises to around 2.7A, or more than twice the rated current.

I hesitated to add an extra battery but I didn't want to fry the ATTINY module's regulator, supposed to be limited to 16V. So instead I got rid of all these heavy batteries and replaced them with a DC-DC boost regulator calibrated to 15.7V. That's lighter and it provides even more power. Now the LEDs take 14A under 15V, that's 210 watts, or 3.5 times the ratedpower, and 3.5A flowing through each LED! It's interesting to note that the aluminium plate now warms a little bit after one minute.


New tests

I wondered how far the beam could be received. I ran a small test. I placed the device on one window, facing the trees in the garden, and picked my detector. I could receive the signal anywhere else in the house whenever it faces the garden, while there's no direct visibility between the windows, so it was clear that the signal was reflected on the trees :


I brought it to the office where we have a TV in the meeting room. I could turn it on and off from the corridor. But my best surprise was when I went downstairs and found another one turned on! It got the signal after multiple reflections on the walls across one stair! I could run another test with the device placed in my coat's pocket and facing the opposite direction relative to the TV. The TV would turn on again, so the signal was powerful enough so that my opaque coat would let a little bit of it escape and be detected by the TV.

I tested with my brother and could turn on and off his TV from the street (about 50m away).

I noticed that some TVs do not react at all. I don't know if it's because they use a different wavelength (like 850 nm) or because the signal is too faint or no code works. I replaced 4 LEDs with 850nm ones just to see if it makes a difference but have no successful reports for now (it's hard to find TVs in line of sight, and shops don't use them anymore for advertisement). One important point to note is that at this power level, the 850nm LEDs emit some pretty visible faint red flashes. It's normal, their spectrum curve is not perfectly straight and when you drive them to 10W, you can expect to see one milliwatt in the visible spectrum.

Future improvements

I thought about trying a much smaller design using an IR laser diode. I bought a 850nm 1W laser diode. By using a detuned, slightly divergent beam, one could expect having a few centimeters wide "spot" at a few tens/hundred meters. The problem is that IR not being visible, it's very hard to aim, so by having a larger spot it should help. But in practice a camera or smartphone sensitive enough to IR is required to aim the spot because it's very hard to aim with a few centimeters precision at a few tens of meters. So for now I don't think it's that good an idea in the end.

Some 100W 940nm LEDs can be found on the net nowadays. But they're still very expensive ($100) and operate at a high voltage making the circuit harder to design (>30V). Also it's important to consider that we want to overdrive them, this means something like 40-50V pulses, so it's really not a good idea. It seems for now that the 3W LEDs are the best fit. Additionally, many so-called 100W LEDs are only rated for half of this power, so that become quite expensive for something possibly less powerful than the current design.

Maybe this device could be installed in a torch. The electronic parts are quite small, and if someone were to do it from scratch, the ATTINY could be directly soldered on the driver board.

A test could be run with an external ceramic oscillator to see if it provides better results than the internal RC oscillator.

Last words

It's totally useless but was fun to build. It's small enough to put in a pocket and to carry in one's hand. However if you get caught outside or in a shop with this, you'll have a difficult moment trying to explain what it is :-)

8 comments:

  1. I just noticed that on the signal amplifier diagram, I made a mistake and confused two of my experiments. The upper second transistor is not a PNP but an NPN, the same BC547 as the first one.

    ReplyDelete
  2. I don't you post a list of components of the final circuit? It will very helpful for those who want to replicate it.

    ReplyDelete
    Replies
    1. I think everything is on the schematics and complemented a little bit by the text. Basically you have : 1xBC547, 1xBC557, 1xIRLR3715, 1x100uF, 1x10uF, 1x1nF, 2x1K, 1x10K, 1x1N4148, 2x3300uF, 1xDigispark board, 1xDC-DC boost converter, a power switch, 20 IR LEDs and a power connector.

      Hoping this helps!

      Delete
  3. Hey Willy, cool project.
    Is there something that limits the current going to the leds? Say, in case that due to software error the output is always enabled?

    Regards
    Ash

    ReplyDelete
    Replies
    1. There's no current limitation, however there is a DC blocking mechanism in the capacitor installed in series with the MOSFET's gate: an ON state will not last longer than a few tens of milliseconds, so this is actually what protects the LEDs. And you're right to ask, because this happened multiple times to me: when batteries start to be depleted, turning the LEDs on can cause a brown out of the microcontroller and keep the output turned on for a while. With this at least they don't fry :-)

      Delete
    2. Thank you for the clarification. :-)

      Delete
  4. Another question, if I may...
    On the schematics the 100uF capacitor is connected between the +10-20V line and ground. On the pcb it seems to be connected in parallel to the >10uF capacitor. The resistor values on the pcb don't match the ones on the schematics either. Am I missing something?

    Regards
    Ash

    ReplyDelete
  5. No, the "100uF" one is the very large one on the photo, connected between +V and GND. The ">10uF" one here on the PCB was made of two small 4.7uF in parallel. By the way, as you can see on the last photo, I replaced the 100uF one by two large 3300uF low ESR. The previous ones were getting hot due to the intense current spikes!

    Regarding the resistor values they are not important, everything is working in digital mode, 1 or 0, so you just want it to be fully turned on or fully turned off. All my components were salvaged from a few circuits, hence the reason why they were approximate. But initial tests leading to this circuit design were made using the values on the schematic.

    ReplyDelete