Friday, September 25, 2009

IR Repeater: Part 1


Our Tivo, satellite receiver, and DVD player are on a shelf at the front of the living room, partially obscured by a sofa making it difficult to control them with remotes. I could go and buy an infrared (IR) remote extender (aka IR repeater), but what fun is that when I could build one? Plus, I want to use IR signaling for robotic communications so here's a perfect learning opportunity.

Requirements: The repeater will have to allow for very reliable control of these three devices, it should be aesthetically pleasing or at least unobtrusive, fairly small, and run for months off a pair of AA batteries.

How Infrared Remote Works

The oscilloscope trace at the right shows the digital signal from the remote. There are multiple coding schemes for remote control like pulse, space, and phase encoding.

Some systems represent binary data in long and short pulses, or pulse coding. Others represent binary data as long and short spaces between fixed length pulses, or space coding. Phase coding represents data by way of signal transitions. The beauty of this IR repeater is that it doesn't really care what coding scheme is used; it simply passes the signal along*.

To avoid interference with ambient light, IR remote controls modulate the light signal at somewhere in the vicinity of 38kHz. That way the receiver isn't fooled into thinking some random flash of light is coming from the remote.

So we need a way to detect pulsed 38kHz IR light and convert that into logic pulses then repeat the signal as pulses of 38kHz modulated infrared light. Detecting IR remote signals and converting them to logic signals is exactly what IR detection modules are for, like the Vishay TSOP32138. An astable multivibrator and an infrared LED handle the rebroadcast.

The Circuit

After searching the web, I settled on a circuit from this website as a starting point. After some tweaking and experimenting I arrived at this:

The circuit, as you can imagine, breaks down into three sections, the receiver, the transmitter and, not pictured above, the power supply.

The receiver consists of an IR receiver module with an active low signal. This signal is inverted by a simple small signal BJT (bipolar junction transistor) as an input signal to trigger the transmitter.

The transmitter section consists of, no surprise, an IR LED, which is driven by another transistor. The LED is pulsed on and off at approximately 40kHz by a pulse generator circuit with a 555 timer IC at its heart. I'll fine tune the modulation in the near future.

The power supply will eventually consist of 2 AA batteries, for their compact size and energy density, and a voltage regulator to provide 5V to the parts that need it. For now I am using a 9V battery and a good old-fashioned 7805 linear regulator. I'll address power reduction in a later article.

The good news is the prototype circuit (see pic at the beginning of this post) works pretty well with our DVD player and satellite receiver. But we also have a TiVo and the TiVo is not happy.

TiVo Problems

When in operation, the repeater renders the TiVo remote utterly non-functional. I found an explanation at this website by Edwin Olson.

*Apparently the IR module is distorting the signal, so it isn't truly repeating the signal verbatim as I had originally hoped. After dragging out my trusty, massive Hitachi V1050F oscilloscope and after fiddling with knobs awhile, I finally duplicated Mr. Olson's results.

You can clearly see that the module is adding extra delay on the falling edge of the signal and virtually none on the rising edge. Hm, well, this is a bit of a problem. Stay tuned to see how I end up solving it. I can't wait to find out! :)


  1. I have the same problem. I have built and changedd an IR repeater on my breadboard, but cannot get it to work on the Tivo. I had one of my friends take the remote home and look at it on his oscilloscope. He said that he did not see a carrier frequency....I am confused....have you gotten anywhere else on this issue??? Great work BTW!!!

  2. Unfortunately I'm still working on this. Not sure why your friend isn't seeing a carrier. That's odd! I do see that, at least. :)

    A little sneak preview: I've put together an analog circuit that "should" solve the timing problem, but haven't had a chance to play with it very much. But first I need to find some higher power, wider angle IR LEDs...

    Stay tuned, hopefully I can figure this out. If you find anything let me know please. :)