LED Drivers

One of the “quests” I have been on lately, is to find an optimal solution for driving Light Emitting Diodes. I want a solution that balances three key needs; efficiency, flexibility and cost. Efficiency and cost have a direct linear relationship it seems – the more efficient something is, the more it will cost. Flexibility seems to have an inverse relationship with efficiency – the more flexible a solution is the less efficient.

For example, take these three basic “led driver” prototype circuits:
led driver prototypical schematics

Starting off, the plain ‘ol resistor. The only strength this solution has is cost. It is neither flexible nor efficient. That is not to say an optimally designed solution will not see decent efficiency using a plain resistor, the designer needs to closely match the LEDs forward voltage to that of the supply. Now as long as the supply voltage never changes and the attributes of the LEDs never change, the resistor will do its job, limiting current. However, if the designer has limited control over the supply voltage, the resistor’s efficiency is down the drain. Because a resistor is a passive component, it cannot react at all to any changes – therefore the designer needs to specify a resistor for the maximum anticipated supply voltage, which results in sub-optimal light output during periods when the supply voltage is less than maximum. Low efficiency equates to wasted power and excessive heat. In summary, the plain ‘ol resistor is the easiest ‘driver’ to build, using simple arithmetic, the value and capacity of the resistor can be calculated; R = (Vsupply – Vleds) / Ileds and P = Ileds ^ 2 * R.

Next, we have the humble linear regulator. I chose the LM317, which is widely available and very inexpensive. The strengths of linear regulation are two fold. First, linear regulation provides a wide degree of flexibility. Secondly, linear regulation provides a very low cost. Two out of three is not bad, but the last one is the kicker. Linear regulation is terribly inefficient. A linear regulator configured for constant current mode is going to consume (dissipate) almost as much power as the load it is regulating. This means a 5 watt LED load is going to have the regulator dissipating an additional 5 watts. So using linear regulation in your design, the power source must deliver 10 watts to give yeild 5 watts of power for the lights, and this is an optimistic 50% efficiency – National Semiconductor gives the LM317 something like 43% efficiency! In summary, the linear regulator is marginally more complex than using a simple resistor, and about as easy to design. A single equation gets us the value of Rs, the current sense resistor; Rs = 1.25 / I.

Next we have the compound, pre-made group of devices that I call switchmode drivers. The switchmode driver is a ‘black box’, in its simplest form, offering four leads, two inputs, two outputs. Drivers are available in two primary configurations; step up (boost topology) and step down (buck topology). Both configurations excel in efficiency. While efficiency alone is a good enough reason for some designs, such as battery powered applications, the switchmode drivers also offer a limited degree of flexibility. The negative aspect of a switchmode driver is cost. Prices for switchmode drivers start in the neighborhood of $10 and top out around $60. Flexibility in switchmode drivers is usually in the form of allowable ranges. For example, a step down driver may allow an input range Vout + 2V to 36V. That same driver may also have a range on the output, for example 3V to 28V. The biggest drawback to the switchmode driver is the lack of adjustable drive current. In general, a switchmode driver has to be purchased from the factory with a pre-programmed drive current. While this is fine for most designs, it is not optimal. In summary, the switchmode driver offers excellent efficiency, often times better than 85%, but it offers this efficiency with great cost and limited flexibility. There is no math required to design using a switchmode driver, you just have to pick one that matches your supply voltage and LED current needs.

The last driver I will briefly touch on, saving the details for next time, is the home-brew or DIY switchmode driver. In kit form, this driver satisfies all three of my design goals. Decently low cost (less than $10 in parts), high efficiency (more than 80%) and good flexibility (I control the programming). Of course, there are some drawbacks; some of the parts are hard to find, there is a LOT of math involved and due to high frequencies and currents, careful circuit layout needs to be observed.

Another technology I will mention, but have not researched much (it is truly bleeding edge in the industry) is something called SEPIC. The acronym stands for Single Ended Primary Inductor Converter. It is a technology pioneered by Maxim and combines the abilities of both a step up and step down regulator into a single design. The ‘old fashioned’ buck-boost regulator of yesteryear do their voodoo by internally generating very high voltages, and using the positive rail as a low side reference for the load … that design has some very hard limits and is also rather inefficient. SEPIC hopes to solve these problems with a radically different and more complex design. SEPIC offers a power supply that with ultimate in flexibility – there need be no correlation between input voltage and output voltage. Want to run 15 volts of LEDs off a 3.7 volt lithium battery, no problem. Want to run 11 volts of LEDs off an automotive supply that varies between 11 and 15 volts, no problem.

I have more to write on this subject – my next post on this subject will sum up my experience in designing switchmode power supplies and share some designs the reader may find useful.

Water Filter Controller

As a fan of taking my dihydrogen monoxide in straight, uncut, uncorrupted liquid form, I purchased a six stage reverse osmosis filter some years ago.

My filter is a few years old now, and the super calcium enriched water we have in Michigan has taken its toll. The filter used to shut off when the production tank was full. However, the filter has recently developed a leak in the auto shutoff valve, so it’s constantly consuming water, even if the pressure tank can’t hold any more. This leak started slow, and I could live with it. In a few months, it had sped up to wasting a considerable amount of water. So, rather than replace the auto shutoff valve, which would have been too easy, I decided to add a microcontroller instead. The other problem my filter has, I discharge the brine water out to storage tanks next to my house, which hold the waste water, for watering plants and other uses. Problem is, when the temperature gets too low, the discharge line can freeze, which is very bad for the filter. So my microcontroller solves this problem as well.

The mcu is performing a few simple logic operations, with a few twists. First, it checks to see if the pressure tank reads “high” or “low”, via a pressure sensitive switch. If the tank reads “low”, that is the first “1” in my logic comparison – a simple AND operation. Second, the mcu checks to see if the outdoor ambient is above 38°F. That is my second “1” in the AND operation. If the pressure is low and the temp is good, a flag is set to enable the boost pump and water supply valve. A timer detects this flag and begins a countdown of 30 seconds (roughly). I chose to use a timer to buffer any false readings that may occur for whatever reason. After the 30 seconds has elapsed, the mcu turns on two mosfet switches, controlling the current for a solenoid valve and the boost pump. The mcu continues to monitor the two variables of the AND operation, if either changes, the “make water” flag is cleared, and the mcu turns off the water supply valve and the boost pump.

schematic diagram of water filter controller
(click for super-sized version)

Two N-Channel mosfets control the current for the boost pump and the solenoid valve. The valve is a 24VAC lawn sprinkler valve, but I have tested it and it works well on 12vdc. The boost pump is a 100 gpd, 100 psi diaphragm pump, which delivers slow but steady high pressure water for optimal membrane operation. Pull-down resistors R3 and R7 are provided to prevent mosfet self-destruction should something happen to the microcontroller. The connectors TEMP, PRES and DISABLE are pin headers for connecting to external transducers. For reading temperatures, I chose the Dallas DS18B20 high precision digital thermometer with 1-Wire interface. The pressure switch is a simple normally closed pressure sensitive switch that opens around 45 psi. It is wired to present the PIC with a logical “1” when the pressure is low. The disable connector will be connected to a shut-off switch, allowing me to temporarily halt production. The LEDs are just for indication of various operational conditions and modes. A 7805 regulator provides the pic with 5v from the 12v supply for the pump and valve.

water filter controller assembled top view

Rather than cobble this together on protoboard, I made up some PCBs real quick. Here is a top view of the controller, without any connections, except for the thermometer. When installed, the thermometer will be installed at the end of a ~10ft shielded cable, for sensing the ambient temperature near my water storage tanks.

water filter controller assembled bottom view

Here is the messy solder side of my controller. I haven’t hosed it down with alcohol yet to clean off the flux. I waited till it was good and late before soldering anything, so some of those joints are pretty nasty – I apologize.

water filter controller pcb layout
(click to download full res)

The PCB layout was pretty easy – I had a lot of room to work with, as the enclosure I have selected is pretty big. This image shows the parts layout, along with the bottom copper artwork. The top layer artwork (in red) is for two jumper wires. Clicking on the above layout will get you a 300 DPI monochrome TIFF of the bottom layer artwork. Print this out at 300DPI and you should have a 1:1 scale of the pcb, incase anyone wants to make their own. Hit the contact justDIY link on the side menu if you want the firmware source code – it is written in Proton Plus basic.

Hello Readers

Greetings to Hack A Day and Delicious users.

Thanks for stopping by!

You may have noticed, I haven’t written anything in a while. Well, I’ve got the regular laundry list of excuses, work etc… but in all honesty, I haven’t been doing much with projects lately. I have been reading a LOT about switchmode power supplies, trying to come up with a ‘universal’ or at least flexible high-power LED driver.

I’ve requested a lot of samples from some big name semiconductor suppliers – latest to arrive is some cutting edge high frequency stuff from Linear.

I also recently finished a ‘utility project’, a controller for my water filter – I’ll post about that in a few hours.

Matrices as Sensors

This idea was shared with me on the electro-tech-online forums, and I made up some graphics to help myself and others understand it.

step one
The first step involves choosing your illuminator LED – this diode will provide light for nearby sensors to ‘see’.

step two
The second step is to reverse bias a nearby LED, preparing it to be the sensor. A diode in an adjacent row and column must be selected, to avoid electrical interference from the illuminator.

step three
The third step is reading the voltage present on the cathode terminal of the diode, which indicates the light level the sensor detected.

step four
The controller can then choose another nearby diode to use as a sensor, or move on to another pixel in the array, repeating the entire process.