I am working on a project to control different devices with arduino and IR LED so I am testing with this circuit: IR transmitter and receiver So, everything is working fine but I want to increase range of my transmitter. For now its barely giving response at 1 meter distance. I want to increase this to at least 5 meters. I tried to increase receiver sensitivity by giving 5V to TSOP, when I do this the range is satisfactory but the directivity is too much its even responding when I point IR LED in opposite direction(inside a room, maybe the radiaton is bouncing off walls - this is not happening with 3.3V). I Know the transmitter range can be increased by increasing the current flowing through LED like this (please correct me if I am wrong): Range increase with 2N222 transistor The problem is with directivity of emitter, I do not want all the devices in my room to turn on when I try to turn on my TV. The devices are placed up to 1 meter apart and the transmitting range should be at least 5 meters.

  • Also it would be helpful if someone clarifies which part is actually sensitive (the part which looks like LED or the flat backside part - image below) for TSOP i.e. which part receives the pulses, so that I can cover it with tape (so that it receives signal from only one direction) if nothing else works.

    TSOP 1738 Any help is appreciated, thank you.

  • 3
    Why would all the devices turn on ? Different devices and functions have different 'codes'
    – Bra1n
    Feb 27, 2017 at 16:16
  • 2
    I'd start by using a smaller value resistor. You can drive those leds pretty hard, since the are only on for short periods (38000 pulses per second). IR bouncing of walls is normal. Had to prevent this. My TV remote works better if I aim at the ceiling.
    – Gerben
    Feb 27, 2017 at 16:30
  • I am using same NEC code for all devices, this is only a part of the project the devices actually communicate through WiFi, IR is used to select device. It requires the same code to be used. Feb 27, 2017 at 16:34
  • 2
    Not using a resistor is a bad idea. If you want an even lower value, you could use two 100ohm resistors in parallel. By the way, you really should put a resistor between the Arduino pin and the base of the transistor!!!
    – Gerben
    Feb 27, 2017 at 16:48
  • 1
    Even if you try to mask the sensor you're still going to get problems with the IR reflecting off objects and maybe even people, I suggest you need to rethink your control/selection mechanism.
    – Bra1n
    Feb 27, 2017 at 18:59

1 Answer 1


The IR sensors are usually build that way, that they get signal from as wide range as possible, also using walls, ceiling etc. to reflect the signal to receiver - the bussiness logic is simple - user want press buttton and have TV reacting - no trying to hit some particular spot on TV wiht invisible light - it is not shooting game, it is meant as remote switch and if it works regardless actual direction, then the best. To select different devices the transmiter sends different codes - every device in room ideally gets the same input, just the TV "knows" it should react say to range 0xFF0000..0xFF00FF and the radio knows it should react to 0xFF1100..0xFF11FF instead (it is more conplicated and the ranges are not continuous and possibly ovelaps, but it is the principle).

So the best way to difference between your devices is using longer numbers and let the device react just to some selected (specific to that device) and ignore all others.

But if you insist on "shooting it directly to head", then the way is putting both the transmitter diode and the receiver to some kind of tubes (like bore of riffle), so the data could be only send to /get from some small cone of space and communication occures only when those cones are aligned. Anyway it would probabelly react on the reflection from the wall on your back (shooting cone opposite way) as then the cone will get way larger by distance (and so hit more receivers) and also from difraction from particles in the wall (so the wall would light to all directions, not just reflect the cone, as mirror would). And there is nearly nothing to prevent this. (Yes, you can cover the wall with some nonreflective black textile or so, but would you do it?)

As for active part of the receiver, the datasheet say the center of sensiteve area is in the centre of the "diode-like" part, with angle around 80 of sensitivity to both sides vercically and horisontally (with the best sensitivity vaguely straight forward) http://html.alldatasheet.com/html-pdf/26589/VISHAY/TSOP1738/1117/6/TSOP1738.html - but basically it can somehow receive nearly from anywhere on the "diode-like" side.

The back side (flat one) should not be sensitive.

Also you can (and should) use resistor between the pin and transistor base, to limit current from the pin. (transistors have gain like 100 or more, so you need a little current to fully open it).

LEDs are current consumers, not voltage consumers, so you restrict current (not voltage) thru your LED to not burn it and to make it shine more or less. LEDS should use current sources (like providing 20mA, no more or less for normal LED), not voltage sources (which would provide something like 9V, 5V, 3.3V or any other value, no more or less).

But as there are much more easily obtained voltage sources, the resistors are use to limit current thru the LEDs as easy "cheat".

You take the voltage of source (say 9V), substract all known voltages around the path (typically 0.7V for transistors, 1.2V for LEDS and so) and suppose the rest is wasted on the resistor. Knowing maximum alloved current for your LED (typically 20mA for "normal one") you compute value of resistor by dividing voltage (in V) by current (in A) to get resitance (in Ohm).

In your picture: 9V-0.7V-1.2V=7.1V on resistor, 7.1V/0.02A=355 Ohm. You take any resistor equal or larger than that and it would be safe to shine for infinity.

First cheap IR LED I found have typical continuous current 20mA, Absolute Maximum Ratings at Ta=25℃ (room temperature) is current 100mA and Peak Forward Current (1/10 Duty Cycle, 0.1ms Pulse Width) 1A. But those Absolute values are values, where you probabelly will destroy the LED soon, as any temperatue higher (as in summer) moves them down fast. You should read "Absolute Maximum Ratings Values" as "values, which can destroy it randomly any moment, if I get near to them" rather than "manufacturer recomed it for extreme usage". (you cannot make perfect laboratory conditions for any device in normal use).

But if you want to make extra power on the risk of destroying the LED, you can set the resistor as low as 7.1V/0.1A = 71 Ohm or even for short pulses 7.1V/1A=7.1 Ohm, but I would bet, that the LED will burn soon anyway. I myself would risk like 80 Ohm in short pulses, but it does not get as much more light as it get in heat. Consult you datasheet and try only on your own risk.

TLDR: I suggest using unique codes by your Arduino sender for diferent receivers, because you cannot reach you goal other way with good certainlity.

Use your receiver to scan all usual remote controllers you have, then select something totally different for your Arduino receivers.

  • Thank you so much. This cleared many doubts I had. If IR is built like that then is there an alternative that could provide directivity and range like a low powered laser transmitter and receiver which I could use with arduino? Feb 28, 2017 at 2:42
  • Yes, for example laser transmiter and photoresistor like here: instructables.com/id/Arduino-Laser-Tripwire (or basically any photo-something - photo-diode, photo-transistor, photo-resistor, even normal LED can be used as receiver ...). But you would need to develope some "protocol" if you want more than just switch it on while you are shining there. And you have to cope with daylight too, so put the receiver in some kind of hole/bore to be not so much affected by normal light. And you would still need to go to modulated PWM, as to filter out other light sources (like in IR).
    – gilhad
    Feb 28, 2017 at 3:21
  • Just google Ardduino laser :) Or arduino light receiver or arduino transmitter - tons of examples everywhere :)
    – gilhad
    Feb 28, 2017 at 3:25

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.