Can I drive a 5v LED without a current resistor?


Closed Thread
Results 1 to 32 of 32

Hybrid View

  1. #1
    Join Date
    Jul 2003
    Posts
    2,358


    Did you find this post helpful? Yes | No

    Default

    I have a design in which a PIC drives two seven-segment displays directly. No segment is ON more than 1mS in any 15mS period (allowing all 14 segments and the Decimal Point to be cycled across 15mS). I dispensed with the Common Anode Resistor in each display saving two Resistors on the Basis that having the LED ON for only 6% of the time was an acceptable risk (with the advantage of a brighter display) and the product was unlikely to fail within the warranty period. It wasn't the cost, but the labour in their insertion that was the consideration in a cheap $20 product. 25,000 sales across six years with zero returns - I can live with that.

  2. #2
    Join Date
    Oct 2004
    Posts
    448


    Did you find this post helpful? Yes | No

    Default

    Quote Originally Posted by Melanie View Post
    I dispensed with the Common Anode Resistor in each display saving two Resistors on the Basis that having the LED ON for only 6% of the time was an acceptable risk
    Same technique used in this very versatile project; http://members.cox.net/berniekm/super.html

    I have built this, and been using it for a couple of years with no problems either to the pic, or the display.

    Regards,

    Anand Dhuru

  3. #3
    Join Date
    Feb 2007
    Posts
    55


    Did you find this post helpful? Yes | No

    Default

    I dispensed with the Common Anode Resistor in each display saving two Resistors
    wouldnt having the resistor on the common anode cause you to get different brightness for different digits?
    ie 8 would be dimmer than 1 as the current would be split between 7 segments to display 8, and only 2 segments to display 1.

    i normally put the resistors in series with each segment, and use a transistor on the common pin

  4. #4
    Join Date
    Oct 2004
    Posts
    448


    Did you find this post helpful? Yes | No

    Default

    In theory, yes, but in practice I find no discernible difference displaying a '1' or an '8'. For the purists, the URL I gave for the Superprobe drives *each* segment at a time.

    Anand

  5. #5
    Join Date
    Jul 2003
    Posts
    2,358


    Did you find this post helpful? Yes | No

    Default

    No, you're not thinking this 7-segment thing through...

    Only ONE segment is ON at any instant in time. Assign a letter to each segment, 'a' thru 'g'. Each of those segments is allowed to be ON only for 1mS in any period. Now my period time was 15mS, but let's say for examples sake you have a 7mS Period. The first segment ('a') will illuminate only for the first 1mS of any period. The second segment ('b') will illuminate only during the second mS of the 7mS period. The third segment ('c') is only allowed to illuminate during the third mS of the period... and so on. So each segment gets it's own single mS all to it's-self and is the ONLY segment that is switched ON during that particular mS.

    So in a 7mS cycle divided into 1mS segment periods, a number one (which might have segments 'a' and 'b' illuminated) would have the cycle...

    OnA-OnB-OffC-OffD-OffE-OffF-OffG

    So in that 7mS cycle, only ONE segment is illuminated at any time (and then for only 1mS).

    If you want a Resistor, then a single Common Anode (or Common Kathode) Resistor is fine. It only ever has to cope with ONE segment being illuminated and the brightness is constant.

    Your eye will not distinguish the flicker and the display will appear constantly (and consistantly) illuminted regardless of the number of segments displayed - but if you film the display with a video camera, you will then notice the flicker because the refersh rate of the camera will not the the same as that of your display and you will observe a strobe effect.

    There is a SECOND AND VERY BIG ADVANTAGE to this technique... if you want to display '1' or '8888' the current consumption will be the same (that for ONE segment - say 10mA). Go display '8888' on a quad 7-segment display using the usual amateurish sloppy techniques of switching all the segments ON that you want at the same time and tell me how much current you pull... (7 segments, multipled by the number of digits, multiplied by say 10mA for each segment...). 7 x 4 x 10mA = 280mA... I've had so many laughs at some of the schematics and coding that I've seen for 7-segment displays...

  6. #6
    Join Date
    Feb 2007
    Posts
    55


    Did you find this post helpful? Yes | No

    Default

    Only ONE segment is ON at any instant in time
    I get it now! completly missed the point that only 1 seg is lit.

    Go display '8888' on a quad 7-segment display using the usual amateurish sloppy techniques of switching all the segments ON that you want at the same time and tell me how much current you pull... (7 segments, multipled by the number of digits, multiplied by say 10mA for each segment...). 7 x 4 x 10mA = 280mA... I've had so many laughs at some of the schematics and coding that I've seen for 7-segment displays...
    I must admit ive just built a project that uses 4 x 7seg displays, and have wired in a way that only 1 display is lit at a time for 1ms, but have all the required segments on that 1 display light at the same time. So my circuit drawing around 50mA when measured with a meter.

    Now ive seen the light!
    Last edited by wellyboot; - 14th August 2009 at 13:25.

  7. #7
    Join Date
    Jan 2006
    Location
    Istanbul
    Posts
    1,185


    Did you find this post helpful? Yes | No

    Default

    Quote Originally Posted by Melanie View Post
    No, you're not thinking this 7-segment thing through...

    Only ONE segment is ON at any instant in time. Assign a letter to each segment, 'a' thru 'g'. Each of those segments is allowed to be ON only for 1mS in any period. Now my period time was 15mS, but let's say for examples sake you have a 7mS Period. The first segment ('a') will illuminate only for the first 1mS of any period. The second segment ('b') will illuminate only during the second mS of the 7mS period. The third segment ('c') is only allowed to illuminate during the third mS of the period... and so on. So each segment gets it's own single mS all to it's-self and is the ONLY segment that is switched ON during that particular mS.

    So in a 7mS cycle divided into 1mS segment periods, a number one (which might have segments 'a' and 'b' illuminated) would have the cycle...

    OnA-OnB-OffC-OffD-OffE-OffF-OffG

    So in that 7mS cycle, only ONE segment is illuminated at any time (and then for only 1mS).

    If you want a Resistor, then a single Common Anode (or Common Kathode) Resistor is fine. It only ever has to cope with ONE segment being illuminated and the brightness is constant.

    Your eye will not distinguish the flicker and the display will appear constantly (and consistantly) illuminted regardless of the number of segments displayed - but if you film the display with a video camera, you will then notice the flicker because the refersh rate of the camera will not the the same as that of your display and you will observe a strobe effect.

    There is a SECOND AND VERY BIG ADVANTAGE to this technique... if you want to display '1' or '8888' the current consumption will be the same (that for ONE segment - say 10mA). Go display '8888' on a quad 7-segment display using the usual amateurish sloppy techniques of switching all the segments ON that you want at the same time and tell me how much current you pull... (7 segments, multipled by the number of digits, multiplied by say 10mA for each segment...). 7 x 4 x 10mA = 280mA... I've had so many laughs at some of the schematics and coding that I've seen for 7-segment displays...
    I am trying to understand this technique as a coder using "amateurish sloppy techniques of switching all the segments ON".

    Suppose I have 10 digits and will show 8 on all of them.
    I have to stop at each common pin and scan through all seven segments with a total of 7mS, and jump to the next common pin do it again ...and so on...

    I get a total of 70mS at the end.
    So displaying 8 on all 10 digits will take me 70ms to complete?

    Do I get it right?

    I wanna be a pro !

    ------------------------
    "If the Earth were a single state, Istanbul would be its capital." Napoleon Bonaparte

  8. #8
    Join Date
    Jul 2003
    Posts
    2,358


    Did you find this post helpful? Yes | No

    Default

    I've not tried beyond four digits and a decimal point (ie a typical Clock)... but altogether that accounts for 29 segments at 1mS each. Now I have a personal rule that I must accomplish everything within 30mS otherwise I'm running the risk of introducing a visible flicker on the display and that just about fits inside the specification. For that you need 12 PIC pins (1 pin for each of the 7-segments, 1 for the Decimal Point, and 4 for the Common Anodes). Advantge: Current consumption 10mA. Worst case conventional senario say displaying "00:00" time = 25 segments at 10mA each = 250mA. Your choice - 10mA or 250mA?

    But in your case with 10 digits I'd need a PIC with more pins as I would consider driving the display as three independent sets of digits (two sets of three and one set of four). For that I would need to devote 34 pins from my PIC, but I'd still be able to scan all potential 80 segments (the Decimal Point also being considered a segment) giving each 1mS and all still within 30mS. Advantage: Current Consumption 30mA (maximum of 3 simultaneous segments at 10mA each). Worst case scenario displaying "888888888.8" = 71 segments at 10mA each = 710mA. Your choice 30mA or 710mA?

    OK, you can chose to run 80 segments as one display devoting say 300uS to each rather than 1mS (and needing only 18 pic pins), and to compensate for the lower brightness you can chose a more expensive high-intensity LED. There's lots of work-arounds, but I've just told you the way I would go - doesn't mean to say it's path you would take.

    You're the engineer - which way would you chose? The answer (for most professional engineers) is probably revealed in their pay packet at the end of the month.

  9. #9
    Join Date
    Aug 2005
    Location
    Michigan, USA
    Posts
    224


    Did you find this post helpful? Yes | No

    Default

    Quote Originally Posted by Melanie View Post
    ...
    There is a SECOND AND VERY BIG ADVANTAGE to this technique... if you want to display '1' or '8888' the current consumption will be the same (that for ONE segment - say 10mA). Go display '8888' on a quad 7-segment display using the usual amateurish sloppy techniques of switching all the segments ON that you want at the same time and tell me how much current you pull... (7 segments, multipled by the number of digits, multiplied by say 10mA for each segment...). 7 x 4 x 10mA = 280mA... I've had so many laughs at some of the schematics and coding that I've seen for 7-segment displays...
    Hi Melanie,

    I think your calculations are a bit off. The multiplexed 4-digit display you mention above would only have one digit lighted at a time and so if you were driving each segment at 10-ma while displaying "8888" you would only be drawing 70-ma total current (70-ma while displaying digit 1, 70-ma while displaying digit 2, and so on) and not the 280-ma you mentioned.

    You seem to be ignoring "duty cycle" in your explanations. While the "one-at-a-time" method you mention would provide 10-ma total current draw the average current per LED in a 4-digit (28-segment) display would be only 1/28th of 10-ma or approximately 0.357-ma. By comparison, driving each segment of a multiplexed display at 10-ma at a 1/4th duty cycle would provide 2.5-ma average current per LED. Now as you've pointed out, painting "8888" on a 4-digit multiplexed display would cost 70-ma compared to 10-ma with the "one-at-a-time" method but you forgot to mention that the average current per LED is seven times higher which translates into a much brighter display.

    Suggesting that a "one-segment-at-a-time" method or design is better than a multiplexed design based solely on the total current used is silly but it did provide me and several associates with a few giggles.

    Kind regards, Mike

  10. #10
    Join Date
    Jul 2003
    Posts
    2,358


    Did you find this post helpful? Yes | No

    Default

    I never argue in favour of anything that I haven't tried first Mike... the 10mA was an arbitrary figure, taking a typical LED segment with a current limiting Resistor (a lot of folks drive their LED's at a lot more than that), and I used that 10mA figure to show what would be the typical current draw when you have multiple segments illuminated simultaneously. Without a current limiting Resistor the LED is much brighter, with the actual brightness being dependent on how much time you devote to having the actual segment illuminated and the specifications of your chosen LED. I find that the time slice I devote to having my chosen Kingbright LED illuminated in my design, gives me an adequate brightness per segment for daylight viewing (about 10mA give or take). If you give it less or more time or a different specification of LED, you will have different results. If you do a google search for a CAD-1DS for example, you'll see the technique applied to a real-life product. You may laugh and giggle, but I am doing so all the way to the Bank every day... and since the purpose of Resistors is basically to heat-up the planet, I have an additional spring in my step for giving the world another eco-friendly product...

    Whilst the subject has been reopened, there was also a counter argument (which at the time I didn't bother addressing) that if the PIC hung (for any unexplained reason - and you've also deliberately turned WDT and BOD off in your code) with any given segment illuminated permanently and without a current limiting Resistor it would damage the PIC. If you typically supply the PIC through a 78L05 or similar low current PSU, the excessive current actually crow-bars the PSU, +VDD dives through the floor and the PIC simply restarts. This is like having all your connected LED segments having a dual role and additionally behaving like your personal WDT. Generally, if you are designing a circuit that only requires say 20mA worst-case, wouldn't you design your PSU for not much more than your worst-case scenario rather than waste your money with anything larger?

    Actually, if you want to give it a go, I have published on this forum an 'Electronic Dice' (shortly to be available as a kit of parts for those who may be interested) using the same kind of technique and using a 10F series PIC. Have fun.

Similar Threads

  1. Conway's Game Of Life
    By wellyboot in forum mel PIC BASIC Pro
    Replies: 45
    Last Post: - 28th May 2020, 06:14
  2. Free Project - 245 LED Display
    By T.Jackson in forum Code Examples
    Replies: 221
    Last Post: - 16th August 2009, 04:59
  3. new and need help
    By smeghead in forum mel PIC BASIC Pro
    Replies: 5
    Last Post: - 3rd November 2008, 20:19
  4. Led + resistor ?
    By ruijc in forum General
    Replies: 7
    Last Post: - 10th March 2008, 20:33
  5. LCD will not start
    By btaylor in forum mel PIC BASIC Pro
    Replies: 49
    Last Post: - 24th May 2007, 02:30

Members who have read this thread : 0

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