Optimizing IR range


Closed Thread
Results 1 to 13 of 13
  1. #1
    Join Date
    Oct 2004
    Posts
    448

    Default Optimizing IR range

    Hi,

    I have built am IR remote for my Canon DSLR. Its designed around a 16F676 at 3 volts, and uses Bruce's algorithm on the Rentron site to generate the carrier; the modulated IR signal is output from the same pin (no external gating of carrier and data). It works fine, except the range is a modest 8 feet or so. Assuming I've got the carrier frequency and the other timings right, from a strictly hardware viewpoint, which of the following (or a combination of which points) would help increase the range?

    1) Use a transistor / FET to drive the IR, rather than direct.
    2) Use 5mm IR LED(s) rather than 3mm
    3) Reduce the existing 33 ohms in series with the IR diode.
    4) Use 2 LEDs in series, rather than just one.
    5) Configure more than 1 pic pins to give out the signal, thereby increasing the drive to the IR.

    Although I have experimented with the above ideas, I am unable to determine which combination would finally work the best.

    Any suggestions, guys?

    Anand

  2. #2
    Join Date
    Nov 2003
    Location
    Wellton, U.S.A.
    Posts
    5,924


    Did you find this post helpful? Yes | No

    Default

    I would look at the emitting angle from the diode. Get as narrow as you can. Then consider a lens for focus if you need more range.
    Dave
    Always wear safety glasses while programming.

  3. #3
    Join Date
    Oct 2004
    Posts
    448


    Did you find this post helpful? Yes | No

    Default

    Yes, I realize that. But if I could get at least around 30 feet by incorporating one of the above, without involving optics, I'd be happier. The wide angle you mentioned I could achieve by skewing the 2 LEDs slightly at an angle from each other.

    Anand

  4. #4
    Join Date
    Jul 2003
    Posts
    2,405


    Did you find this post helpful? Yes | No

    Default

    Hi Anand,

    There are a lot of things to consider to increase range of an IR link, but in general just increasing the IR emitters radiant intensity will be enough.

    You can do this by increasing power to the IR LED, or using one with a higher radiant intensity at the same power levels you're driving the one you have now at.

    An FET driving the one you have now with say 14-ohms series resistance may do the trick if your LED can handle the peak-pulsed current.

    2 LEDs in parallel with each having a series limiting resistor may work too.

    A couple of other things to watch out for are;

    1) Match the LED wavelength to the IR modules.
    2) Get the IR carrier as close as possible to the center band-pass frequency of the IR receivers.

    If the IR receivers peak spectral sensitivity is in the 940nm region, then use a 940nm IR LED.

    If the center band-pass frequency of the IR receiver is 38kHz, then get the carrier as close as possible to 38kHz. Those 2 things alone make a huge difference in range.

    And shielding the IR receiver from ambient disturbance sources like direct (or indirect) exposure to sunlight, flourescent lighting, etc, will increase gain of the IR receiver, and help to increase range.

    I've attached an app note from Vishay you might find helpful. If you still need help let me know. I do a lot of work with IR.

    Something like the attached schematic should work for 2 LEDs in parallel.
    Attached Images Attached Images  
    Attached Images Attached Images
    Last edited by Bruce; - 17th July 2010 at 20:46. Reason: schematic
    Regards,

    -Bruce
    tech at rentron.com
    http://www.rentron.com

  5. #5
    Join Date
    Dec 2005
    Posts
    1,073


    Did you find this post helpful? Yes | No

    Default

    Anand,

    When the duty cycle is low, IREDs can withstand very high currents. So, you can reduce the size of the current limiting resistor and reduce the duty cycle.

    A few years back I designed an IR transmitter in a CF card form factor for use with a PDA. I don't recall which IRED it used (Bruce sold them.) but IIRC I used a 10-ohm resistor and a transistor to drive it. With the 3V supply, I was amazed to find that each one (We did 100% testing.) had 100 ± a foot or two range. Of course, it may have been that the TV used as a target had an extra-sensitive receiver.

    I assume you want to use this outdoors where sunlight will be a factor. Choosing a receiver with a narrow bandwidth will help.

  6. #6
    Join Date
    Oct 2004
    Posts
    448


    Did you find this post helpful? Yes | No

    Default

    Okay guys, I now have the information I was sketchy about.

    Bruce, I always thought the LEDs in series would be more effecient, but with a 3 volt supply I see why you suggested them in parallel.

    Unfortunately, I have no way of knowing precisely what the receiver expects as a carrier. I'm just going by emulating a cheap clone I could buy. It has a pretty wimpy range of a maximum of 10 feet, which is why I'm building my own. And while I'm at it perhaps add a feature or two. Also, the receiver is placed in the camera such that the clone works only if it is directly in front of the camera. I'm hoping mine, with its extra punch, would work bouncing off the camera's body extrusions, at least to a certain extent. I'll try playing around with the carrier frequency to determine the best.

    Dave, getting that kind of range with a 3 volt supply does sound like an achievement. Hope I get something close! You mentioned a lower duty cycle; would say 20% be safe enough with a 10 ohm resistor? Am currently using 50%. I'm afraid I didnt convey the right information; the receiver is built in into the camera, I'm not making it. BTW, I've seen most 3V transmitters with a coin battery (as opposed to 2 AA) use a capacitor in parallel wiith the battery. Is it because a coin cell cannot provide high enough currents for the pulse burst? Did your project use a coin?

    Thanks for the inputs, folks, and I'll be back with my findings!

    Regards,

    Anand

  7. #7
    Join Date
    Dec 2005
    Posts
    1,073


    Did you find this post helpful? Yes | No

    Default

    Anand,

    I've used 20-25% duty cycle. In the application I mentioned, my card was powered by the PDA. I've never found a capacitor was necessary but most of my transmitter apps were RF which takes less power. I prefer BR type batteries as they maintain their charge better than most other types. Panasonic has some discharge curves comparing BR to CR. A Google search on "Panasonic BR" will likely find them.

    I understood that the receiver was in the camera. I should have been more clear that I was generalizing. Still, it will help if you can find out (from the manufacturer?) what wavelength IR the receiver is designed for. Since it is intended for outdoor use, it is likely that they've used a narrow bandwidth receiver.

    This might be helpful - although I think its points have been covered here by me and Bruce.

    http://davehouston.org/ir-rf_fundamentals.htm

  8. #8
    Join Date
    Dec 2005
    Posts
    1,073


    Did you find this post helpful? Yes | No

    Default

    Anand,

    I found a page from someone who reverse engineered a Canon remote.

  9. #9
    Join Date
    Oct 2004
    Posts
    448


    Did you find this post helpful? Yes | No

    Default

    Dave, thanks for the link. I had stumbled upon that site, and used the information there to be the basis for my own design. The guy uses an Atmel, which was another incentive for designing my own around a pic. But of course, the detail timings table he's given helped a lot.

    In the page you pointed out, the writer uses a switch to control the Vdd itself; when I tried that my signal burst was not very clean. So my version has Vdd always connected to the battery and 2 separate momentary contact switches for the 2 functions.

    My version is now working very well, functionally, so am now in the process of reducing the current consumption. Shutting off the watchdog, configuring the I/Os and using a nap in the loop has now reduced it to around 40 uA; I guess that means a single CR2032 should last for well over half a year of average use!

    Again, thank you so much for the inputs.

    Regards,

    Anand

  10. #10
    Join Date
    Oct 2004
    Posts
    448


    Did you find this post helpful? Yes | No

    Default

    Quote Originally Posted by ardhuru View Post
    Shutting off the watchdog,
    Sorry, my mistake, that has to be kept on.

  11. #11
    Join Date
    Oct 2004
    Posts
    448


    Did you find this post helpful? Yes | No

    Default

    Okay folks, with all the help from you guys, I have this working pretty well now.

    For the benefit of others designing an IR transmitter powered from a typical coin battery, I would like to share this point. Once you have the basic thing working, probably the one single factor to increase the range significantly would be a large capacitor (100uf plus) across the battery.

    I dont know how this would impact the battery life though.

    Regards,

    Anand

  12. #12
    Join Date
    Feb 2005
    Posts
    130


    Did you find this post helpful? Yes | No

    Default

    Quote Originally Posted by ardhuru View Post
    Dave, thanks for the link. I had stumbled upon that site, and used the information there to be the basis for my own design. The guy uses an Atmel, which was another incentive for designing my own around a pic. But of course, the detail timings table he's given helped a lot.
    Anand, can you post the part of the code where you encode the trigger for the Canon, I would like to add it to the timelapse remote I'm building. Thanks!!

    Pablo

  13. #13
    Join Date
    Oct 2004
    Posts
    448


    Did you find this post helpful? Yes | No

    Default

    Hi Pablo,

    Thats a nice idea; a sort of semi-universal (Pentax/Nikon/Canon) time lapse trigger.

    The Canon trigger is perhaps the simplest to encode. I'm pasting my code, of which you could delete the delayed-trigger related lines. These a re used on the remote to trigger the shutter 2 seconds after the signal is sent.
    Code:
        Main:
        NAP 0                           ; Reduce consumption in standby from 900uA to 116uA (cost of 18ms delay)
        IF SW1 = 0 THEN GOSUB NO_DLAY
        IF SW2 = 0 THEN GOSUB DLAY
        GOTO MAIN
     
        NO_DLAY:
        HIGH LED
        CYCLES = 16                     ; COUNTER HAS TO BE RESET TO DEFAULT!
        Gosub Pulse
        PAUSEUS 7300
        CYCLES = 16                     ; COUNTER HAS TO BE RESET TO DEFAULT!
        GOSUB PULSE
        PAUSE 50                       ; Prevent inadvertant double triggerPAUSE 500
        LOW LED
        PAUSE 500
        RETURN
      
        DLAY:
        HIGH LED
        CYCLES = 16                     ; COUNTER HAS TO BE RESET TO DEFAULT!
        Gosub Pulse
        PAUSEUS 5300
        CYCLES = 16                     ; COUNTER HAS TO BE RESET TO DEFAULT!
        GOSUB PULSE
        PAUSE 50                       ; Prevent inadvertant double triggerPAUSE 500
        LOW LED
        PAUSE 500
        RETURN
        
        Pulse:          ' THIS GENERATES "Cycles" number of 40kHz pulses (if total delays are 25)
                        ' So, for Canon, 16 Cycles of 31 uS (32.6 KHz) => Demodulated pulse of 0.496 mS
    ASM
       bsf IRTX,PIN     ; 1uS, LED=on
       goto $+1         ; + 2uS = 3uS
       goto $+1         ; + 2uS = 5uS
       goto $+1         ; + 2uS = 7uS
       goto $+1         ; + 2uS = 9uS
       goto $+1         ; + 2uS = 11uS
       goto $+1         ; + 2uS = 13uS   
       goto $+1         ; + 2uS = 15uS 
       goto $+1         ; + 2uS = 17uS 
       bcf IRTX,PIN     ; 1uS, LED=off
       goto $+1         ; + 2uS = 3uS
       goto $+1         ; + 2uS = 5uS
       goto $+1         ; + 2uS = 7uS
       goto $+1         ; + 2uS = 9uS
       goto $+1         ; + 2uS = 11uS
       decfsz _Cycles,f ; + 1uS = 12S           ; This decrements in a loop till 0; then goes to next line    
       goto _Pulse      ; + 2uS = 14uS
       return           ; Return to caller    
    ENDASM
      
        END
    Would be nice to have your feedback on the finished product.

    BTW, in your schematic you have a pullup on the switch input; cant you just enable the internal pullup?

    Regards,

    Anand
    Last edited by ScaleRobotics; - 12th January 2011 at 09:20. Reason: added code tags

Members who have read this thread : 1

You do not have permission to view the list of names.

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts