If somewhat more than minimum cost is acceptable you could implement a buck converter per LED. These could be very crude and low component count and not a vast price. Each converter would be able to set a current that was proportional to a PWM or analog input.
Probably under $1 per channel.
Your 3 x Power supplies plus resistors idea is acceptable BUT can be improved in performance (with increased cost) by making it 3 x power supplies plus constant current sources. The constant current sources are not much different from the buck converters above but with no inductor.
Example. Imagine that your lowest Vf LED (probably red) has a Vf range of 2.0 to 2.5V.
You will need at least 2.5V supply plus headroom. Say 2.7 V.
Minimum efficincy will be when Vf = 2V = 2/2.7 = 74% BUT this is worst case Vf and in many cases the Vf range is lower.
eg say VF = 2.2 - 2.4. Vsupply = 2.6. Zmin = 2.2/2.6 = 85%.
Boost supply to 2.8V for more headroom. Zmin = 2.2/2.8 = 78%
Again, this is worst case, so acceptable.
A buck converter will improve on the above.
One solution of zillions.
Rsc not needed.
Rather than sensing output voltage, LED current is sensed. This C had Vref = 1.25V = far too hight. It can be reduced to 0.6V effective using a diode but still too high. More modern ICs has a lower Vref OR a 1/4 IC section can be used per channel. PWM per channel then becomes 1 x SOIC MC34063 + 1/4 LM324 + a few resistors and a catch diode per channel. May be cheaper than more modern IC.
This circuit, from sound.westhost.com may be suitable.
I independently arrived at a similar version - works reasonably well.
This is voltage feedback. Can be made current feedback. Vsense here = Vbe of Q1. This can be reducued with care.
![enter image description here](https://i.stack.imgur.com/vQcse.gif)
You stated your battery is 12V 7Ah battery.
LED (actually the bar light uses 4) is 12-14V (that's the drop), and they say can use up to 10W. Let's do the math:
$$
I = \frac{P}{E} = \frac{10W}{12V} = 833 mA \\
$$
No sense in calculating at 14V, you're limited to 12V.
$$
3 \cdot 0.833A = 2.499A
$$
So, BEST case, 2.8 hours. But you really need to see the curve for your specific battery, and it's derating for thermal, etc, to see if it can realistically output 7Ah-- manufacturers (for marketing purposes) usually put the 'best case' information on the battery, but only the datasheet for it will provide the truth.
I'd expect 2 hours and change. If you put an ammeter on it when you get it, and see how much current it's actually drawing, that will let you get a better idea.
Best Answer
The data sheet states that with the LED dissipating 2.63 watts, its forward voltage, Vf, will be 3.5 V, which corresponds to a forward current, If, of 751 mA.
With the LED dissipating 3.38 watts, its Vf will be 4.5V and its If also 751 mA.
That says that with 751 mA through the LED its Vf can lie anywhere between 3.5 and 4.5 volts, a caveat being that the LED's absolute maximum If is 750 mA.
Since the LEDs are going to be used as aquarium lights, there's probably no reason to blind the fish and run the LEDs on the hairy edge of their own demise.
The If VS Vf graph on Ebay, for the LED, shows that with an If of about 400 mA, Vf will be about 3.5 V, allowing the LEDs to dissipate a much more comfortable 1.4 watts each.
Going that way means that you can wire three LEDs in series for a total of 10.5 volts across the string, and drop the remaining 1.5 volts from the 12 volt supply with a 3.75 ohm resistor in series with the string. The resistor will dissipate 0.6 watts, so a 1 or two watt resistor would be a good choice.
A nice metal oxide 3.6 ohm 2 watt unit is readily available, and would up the current through the LEDs a little, but would be fine for the application.
So, since you can't get 4 LEDs in series to be properly driven by 12 volts, the array changes from 4 X 5 to 3 X 6 with two LEDs left over.
If the 3 X 6 array would work for you, then the supply would have to put out 2.4 amps at 12 volts, which is about 29 watts, well within its capabilities.
If you absolutely have to use all 20 LEDs, then you could connect the last two in series with a 12.5 ohm 3 watt resistor and wire that string in parallel with all the others, increasing the load on your supply to about 34 watts.