Chocolate Sheikh,
If you are simply trying to "Dim" an LED light, this is best achieved via PWM using a buck or forward converter with a current feedback loop. Depending on the efficiency requirements, power level and voltage source involved there are a number of solutions, but they will all require "ICs", lol.
Generally when people want to use hundreds of LEDs they are making some type of display. I will assume this is your intent.
First, LEDs are interesting devices in that the light output is a non-linear function of the voltage input; that is to say, they are current driven devices. Using Ohm's law we can limit the current in an LED using a series resistor as follows:
LED Vf = 3V to 3.5V
LED Imax = 100mA
If we have a 5V source voltage and want to limit the LED to 50mA our series resistor would be:
Code:
Worst Case:
5V - 3V = 2V
2V = 0.05 * R ==> R=40 Ohms
Best Case:
5V - 3.5V = 1.5V
1.5V = 0.05 * R ==> R = 30 Ohms
In General we would select the first nominal value above 40 Ohms (ie 43 Ohms).
If we have a 48V source voltage and want to limit the LED to 50mA our series resistor would be:
Code:
Worst Case:
48V - 3V = 45V
45V = 0.05 * R ==> R=900 Ohms
Best Case:
48V - 3.5V = 44.5V
1.5V = 0.05 * R ==> R = 890 Ohms
In General we would select the first nominal value above 900 Ohms (ie 910 Ohms).
Sadly, while this very simple circuit achieves the goal (powering the LED), it can be highly inefficient:
Code:
Using:
E = IR
and
P = IE
we get:
P = I^2R
so, in the first case our resistor is dissipating:
(0.05 * 0.05) * 43 = 107.5mW
however, in the second case:
(0.05 * 0.05) * 910 = 2.275W
While the LED itself is dissipating between:
0.05A * 3V = 15mW
0.05A * 3.5V = 17.5mW
As you can see the vast majority of the power is being dissipated in the resistors even if the source voltage is very close to the LED voltage (which has it's own problems).
If you were to power 'hundreds' of LEDs using simple resistors the waste heat produced would become enormous. Powering vast LED arrays has only become feasible in the last decade or two and the technology to achieve it is at the bleeding edge of large scale displays and mass-market LED lighting. The electronics behind driving these seemingly simple devices is actually quite complicated. There are no "short-cuts" or "easy answers".
Modern LED drivers rely on very fast low impedance switches in carefully designed current limited power supplies. On the list of "tricks" employed in displays is "addressing" a single line of LEDs at a time, and within the line being addressed, address each LED in sequence. To get a handle on how this works, imagine a 10x10 array of LEDs, that is 10 "Rows" and 10 "Columns". You might think you need 100 switches to achieve complete control of the array; however, it turns out it can be done with 20. Imagine each "Row" has a switch that connects to the annode of all of the LEDs in that row. Similarly, each Column has a switch connected to the cathode of each LED in its column. To turn on any given LED you simply turn on the Row switch and the Column Switch. To make it "appear" like a pattern or picture you have to cycle through each row and column (in this case 100 "cycles" ) turning each required LED on as needed. If you complete each full cycle (ie address all 100 LEDs in less than 10mS the Human eye will perceive the entire array as being "on at the same time" and will "see the picture or pattern". This implies that each row must be addressed for 1mS, and each column within a row only has 100uS to be addressed. If we expanded the array to 100 x 100, each row would only have 100uS to be addressed and each LED in that column would only be addressed for 1uS.
So far we have assumed we only want each LED to be "fully on" or "fully off" (no regard to "intensity"), obviously this is not ideal. In our 10x10 array we might then decide we wanted to vary the LED intensity between 0 and 10 implying that while it is being addressed it might be on for the Full 100uS or some portion of the 100uS like 40uS. Expanding this model to a 100x100 array would require switches capable of nS range capabilities, a non-trivial requirement even in today's world of ultra fast switches. The answer in most modern large displays is "Arrays of Arrays", but this can get really expensive, and is frequently solved differently. For instance the giant Sony "Jumbo Trons" you see in football games are in reality an array of specially designed flat screen TVs controlled by an array of PCs that act as a single massive VGA card. It turns out that is currently the most cost effective solution, LOL.
I would anticipate in the near future an RGB module that accepts some type of high-speed serial input and translates that to a module sized image. These are already all over the internet:
http://www.ebay.com/itm/5mm-8x8-Mat...205?pt=LH_DefaultDomain_0&hash=item5d43100e2d and I cannot imagine it will be long (if it hasn't already been done) before someone designs/builds a dedicated driver for some number of them in an array. From there it is simply a matter of putting these modules together and controlling them simultaneously (LOL, "simple" ;-) ). So, for a 59" x 39" TV it would only take ~60,000 of these 5mm modules and likely a few thousand DSPs to control it! hehe.
Fish