Measuring a handful of random LEDs from the heap produced a dataset that boiled down into a set of curves:

The Y axis (current) is logarithmic, so the traces should be straight lines. They’re loosely color-coded by LED color (black trace = white LED) and that blue trace looks mildly suspicious even to me. You’d want a better graphing program than OpenOffice Calc, but it’s OK for a quick look.
Note that the rated current for 5 mm LEDs is generally 20 mA, so 75 mA really puts the screws to them. That notwithstanding, the curve tracer machinery seems to work well enough.
The numeric values in the dataset have way more precision than the measurements have either accuracy or resolution. If we could put floats
in those printf()
format strings, then I’d be more inclined to prettify the results.
INOM
is the nominal current in mA (and also the loop counter) and ILED
is the measured LED current in μA. All the voltages are in mV, with a resolution of 5 V/1024 steps = 5 mV.
The dataset behind the curves, slightly massaged to weed out some, ah, bogosity that won’t appear with that firmware:
# LED Curve Tracer # Ed Nisley - KE4ZNU - July 2012 # VCC at LED: 4867 mV # Bandgap reference voltage: 1039 mV # Insert LED, press button 1 to start... # INOM ILED VccLED VD VLED VG VS VGS VDS <--- LED 1 0 0 4867 3745 1121 0 0 0 3745 5 4585 4867 3042 1824 1925 48 1877 2994 10 10087 4867 2980 1887 2070 105 1964 2874 15 14672 4867 2951 1916 2142 154 1988 2797 20 20174 4867 2917 1949 2243 211 2031 2705 25 25218 4867 2898 1969 2320 264 2055 2633 30 30262 4867 2879 1988 2392 317 2075 2561 35 34847 4867 2869 1997 2450 365 2084 2503 40 39891 4867 2854 2012 2527 418 2108 2436 45 45393 4867 2840 2026 2604 476 2127 2363 50 49978 4867 2835 2031 2667 524 2142 2310 55 54563 4867 2821 2046 2729 572 2156 2248 60 60066 4867 2816 2050 2806 630 2176 2185 65 65109 4867 2806 2060 2859 683 2176 2123 70 70153 4867 2797 2070 2912 736 2176 2060 75 75197 4867 2792 2075 2989 789 2200 2002 # Insert LED, press button 1 to start... # INOM ILED VccLED VD VLED VG VS VGS VDS <--- LED 2 0 0 4867 3914 953 0 0 0 3914 5 5043 4867 1993 2874 1949 52 1896 1940 10 9628 4867 1863 3004 2070 101 1969 1762 15 14672 4867 1795 3071 2142 154 1988 1641 20 20174 4867 1713 3153 2243 211 2031 1502 25 25218 4867 1646 3220 2315 264 2050 1381 30 30262 4867 1583 3283 2397 317 2079 1266 35 34847 4867 1535 3331 2450 365 2084 1169 40 39891 4867 1482 3384 2532 418 2113 1063 45 44934 4867 1425 3442 2609 471 2137 953 50 50437 4867 1386 3480 2667 529 2137 856 55 54563 4867 1343 3524 2720 572 2147 770 60 60066 4867 1285 3581 2797 630 2166 654 65 64651 4867 1256 3610 2859 678 2180 577 70 69694 4867 1218 3649 2912 731 2180 486 75 74738 4867 1165 3702 2999 784 2214 380 # Insert LED, press button 1 to start... # INOM ILED VccLED VD VLED VG VS VGS VDS <--- LED 3 0 0 4867 3577 1290 0 0 0 3577 5 4585 4867 1997 2869 1945 48 1896 1949 10 10087 4867 1877 2989 2070 105 1964 1771 15 15131 4867 1795 3071 2166 158 2007 1636 20 20174 4867 1738 3129 2238 211 2026 1526 25 25218 4867 1680 3187 2320 264 2055 1415 30 30262 4867 1617 3249 2397 317 2079 1299 35 34847 4867 1574 3293 2450 365 2084 1208 40 39891 4867 1521 3346 2527 418 2108 1102 45 45393 4867 1473 3394 2604 476 2127 996 50 49978 4867 1434 3432 2667 524 2142 909 55 54563 4867 1391 3476 2720 572 2147 818 60 60066 4867 1343 3524 2802 630 2171 712 65 64651 4867 1314 3553 2854 678 2176 635 70 69694 4867 1280 3586 2907 731 2176 548 75 74738 4867 1246 3620 2970 784 2185 462 # Insert LED, press button 1 to start... # INOM ILED VccLED VD VLED VG VS VGS VDS <--- LED 4 0 0 4867 3736 1131 0 0 0 3736 5 5043 4867 1439 3427 1949 52 1896 1386 10 10087 4867 1323 3543 2070 105 1964 1218 15 15131 4867 1227 3639 2166 158 2007 1068 20 19716 4867 1150 3716 2243 207 2036 943 25 25218 4867 1073 3793 2315 264 2050 808 30 30262 4867 1006 3861 2402 317 2084 688 35 34847 4867 953 3914 2450 365 2084 587 40 39891 4867 881 3986 2527 418 2108 462 45 45393 4867 823 4044 2604 476 2127 346 50 50437 4867 760 4106 2676 529 2147 231 55 55022 4867 707 4159 2777 577 2200 129 60 59607 4867 659 4207 3134 625 2508 33 # Insert LED, press button 1 to start... # INOM ILED VccLED VD VLED VG VS VGS VDS <--- LED 5 0 0 4867 3702 1165 0 0 0 3702 5 4585 4867 1713 3153 1959 48 1911 1665 10 10087 4867 1449 3418 2070 105 1964 1343 15 14672 4867 1304 3562 2147 154 1993 1150 20 20174 4867 1116 3750 2243 211 2031 905 25 25218 4867 982 3885 2320 264 2055 717 30 30262 4867 885 3981 2397 317 2079 568 35 35305 4867 770 4097 2469 370 2099 399 40 39891 4867 712 4154 2527 418 2108 293 45 45393 4867 621 4246 2647 476 2171 144 50 49520 4867 582 4284 2797 519 2277 62 # Insert LED, press button 1 to start... # INOM ILED VccLED VD VLED VG VS VGS VDS <--- LED 6 0 0 4867 3687 1179 0 0 0 3687 5 4585 4867 3004 1863 1954 48 1906 2956 10 9628 4867 2965 1901 2041 101 1940 2864 15 14672 4867 2932 1935 2137 154 1983 2777 20 20174 4867 2903 1964 2243 211 2031 2691 25 25218 4867 2888 1978 2315 264 2050 2623 30 30262 4867 2869 1997 2397 317 2079 2551 35 34847 4867 2854 2012 2450 365 2084 2489 40 39891 4867 2840 2026 2527 418 2108 2421 45 45393 4867 2826 2041 2604 476 2127 2349 50 49978 4867 2816 2050 2662 524 2137 2291 55 54563 4867 2806 2060 2720 572 2147 2233 60 60066 4867 2797 2070 2802 630 2171 2166 65 64651 4867 2787 2079 2859 678 2180 2108 70 69694 4867 2777 2089 2917 731 2185 2046 75 74738 4867 2773 2094 2975 784 2190 1988
In my toy-maker days, my department had to test tens of thousands of leds to select the approved vendors. We had an AIM-65 program to step the currents but used a complicated hardware fixture (flat-black and over a foot long, cone shaped) to manually take lumens values. The zif soket for the led under test did not precisely align the led so, we were never sure that the results were meaningful. Would have been nice to automate the whole process, but, never enough time. The goal was to find the best match to the drain current of the micro-controllers so that no limit resistor was necessary.
Battery life was sometimes short and the limit resistors reappeared after an unfavorable review in Consumer Reports “Picks and Pans” on battery life of toys.
Eliminating one cent from the recurring cost of a million toys pays for a lot of engineering time! [grin]
Worked with a guy who designed TVs, back in the day, and he said they spent days in brutal meetings devoted to removing 25 cents from the chassis: if a resistor wasn’t doing two things at once, they merged it with a neighbor! Then, a month later, they’d do it all over again…
The owners had “design” meeting without engineers present, just a technician, and would clip out every 2 lead part to see if they wasn’t really needed or could be replaced with a jumper. 100 million was a typical single component order.
Congratulations! You just got a Larval Engineer’s attention…
I used to work for HP (later Agilent) in a semiconductor division (since shut down and sold off). One of our ICs was a resistor that we sold to a sister division for R-leds for 5 or 12V applications. More expensive than a simple LED, but they were just cost-effective enough to let us sell a bunch. No idea if these are still available; Lumileds got the LED side of the business in 2000 or so.
And it made just enough sense for the customers, too: both sides win!
Hindsight says there might have been better ways to go about it, but (as with so many things) it made perfect sense at the time…
The approach was set by the state of the art (such as it was) for the mid ’70s when the products came out. Silicon wafers were 2″ in that fab at the time (we were late adopters of IC tech, and waay behind the curve) but the LED fabrication was even more primitive. More efficient tech (like National’s 1.5V LED blinker) was too expensive, and small processors were almost non-existent or hideously expensive. Not sure if you could integrate a control on an LED nowadays, or if it would be worth it
The LM3909 sits right up there with the LM741, NE602 and the NE555: as close to perfection as you’ll ever see!
Well, apart from the original 555’s penchant for crowbarring the supply and the 741’s popcorn noise, that is…