Steff Shield
#1
Posted 25 February 2012 - 03:43 AM
The Design and Creation of a STupidly EFFecient Led Driver Shield
Hi everyone
I am going to have my first shot at making a netduino shield.
I will open source the final design, and as much as possible I will open source the design descision making too.
So if you feel you have an idea or especially if you spot an error somewhere, please throw it into the mix.
The general goal is a shield that could control bright lighting, near the level of room lighting, and could also enable colour mixing.
The idea of making it stupidly efficient is to minimise heat creation, and save energy.
User Requirements:
Must drive 2-3-4 channels of HBLED strings at around 1 amp.
Each channel must give enough light to be the equivalent and 11 watt compact flourescent.
Must be Stupidly Efficient. By this I mean that I want only the tiniest compromises on parts and design when it comes to driving the leds efficiently.
Each channel individually dimmable to zero.
There is now way that the above requirements would could be fufilled using the the netduinos normal power inputs, so we need to power the shield separately, probably at 24 volts.
Make sure there is no way the user can plug anything wrongly that would damage anything.
Must be safe so it cannot produce dangerous voltages and must not be able to cause a fire.
Must not create loads of em noise either.
Things I would also like to include, but are not requirements:
Up to 4 shields could be stacked together. Without noticible performance effects. ( this would need i2c or spi)
We should be able to provide power from the shields to the Netduino, so that we don't need two power supplies.
The shield works with the Arduino as well.
Shield needs to look cool. So people want to buy it.
Low cost.
ps. The name Steff Shield has nothing to do with our esteemed moderator. Though he is welcome to contribute.
When I get the chance I will pencil in some design descisions.
#2
Posted 25 February 2012 - 05:04 AM
#3
Posted 25 February 2012 - 11:47 AM
Thanks for the interest, you may know that the genesis of this project came from talking to McInnes so much about aquarium lighting.
Yes other hardware will have to be brought in. I do have some ideas for the design of the actual light drivers themselves but I wanted to keep those out of the way until I had set down some user requirements for the project as a whole.- I'd suggest to consider to provide each led terminal by a low-cost mcu, such as an AVR or an ST8L. That should be lot easier matching the expectations, even keeping the price lower.
You are right this could be hard, so I am not going to attempt any form of colour accuracy, the users could do this themselves in software. I do want to give three channels though so people could have a go at making all colours.- I've noticed that the brightness of the led isn't linear throughout the current flowing into it. So, when I try to mix the colors of an RGB led, I just need even a low current and the resulting blend is white-ish. In other words, perhaps isn't worthwhile having lot of steps for dimming the RGB.
50v dc in Aus but I will stay under 30.- 24V is okay. Don't choose higher, otherwise you might have legal problems. The voltages must be lower than a safety level, I guess it's 30V.
I see your point but I want to make a shield, and I thought if I could make it stack nicely some people could use it if they wanted more channels, in close proximity. Eg. Party lights or Christmas lights or lots of things. So in short I am planning on just running two wires to the light carrying only power.- If I were using 1+ of that shield, I'd like to place pretty far each other. It makes no sense at all having two lights close to the Netduino. Thus, my suggestion is considering to use a simple wire pair to supply both the power, and the commands.
Would you prefer to run just the leds supply instead? More wiring, and lot of EMI (electromagnetic emissions)
The design problems I see with stackable boards are Heat, Interference, control/communication, power between the boards.
#4
Posted 25 February 2012 - 12:04 PM
- Input power management
- Control
- Led Driver Section
- Gather requirements.
- Design of Input power management ( I am thinking of trying to power the whole stack off a single power supply, and probably 24-28v, plugs/sockets)
- Design of Control (SPI, I2C GPIO addressing and configuration)
- Design of Led Driver Section (what extra hardware , how many channels plugs/sockets)
- Build Prototype
- Write some code
- Test Prototype
- PCB layout
- Manufacture
- Write some good code
- Testing
- Somehow get somebody to buy it.
#5
Posted 29 February 2012 - 02:11 AM
Attached Files
#6
Posted 29 February 2012 - 04:25 AM
#7
Posted 29 February 2012 - 07:46 AM
#8
Posted 01 March 2012 - 11:53 AM
Mario: I put the chip on the list to check when I do the output driver stage. I haven't noticed Austrian Microsystems before but yesterday I came across them twice.
This is a good idea and I will implement it, say 2-3 choices for each channel if room allows. I will have to possibly put resistors inline to prevent the users shorting channels, or is this not a problem.Also I might take some ideas from here.Rugged CircuitsIn my opinion with shields, I often find it a little annoying that the control pins are fixed, so it may be a nice idea to consider allowing for jumper configurable selection of the control pins. Have the arduino style stackable headers, then 2 rows of male header pins to choose the cs pin if using spi, the com port if serial etc.
I
It is hard to know how much a problem EM noise will be, one of the requirements is low EM noise, I would like the noise to be sufficiently low to be able to run long cables. CAT 5/6 cables might be good because they are twisted pair.In terms of distance of leds, surely you can just have long power cables going to your leds, that way you can keep your power supply next to your netduino.
FYI they do have the internet in Malaysia.(kidding)
#9
Posted 02 March 2012 - 01:20 PM
Method #1: Shorting I/O Pins to Ground
Method #2: Shorting I/O Pins to Each Other
Method #3: Apply Overvoltage to I/O Pins
Method #4: Apply External Vin Power Backwards
Method #5: Apply >5V to the 5V Connector Pin
Method #6: Apply >3.3V to the 3.3V Connector Pin
Method #7: Short Vin to GND
Method #8: Apply 5V External Power with Vin Load
Method #9: Apply >13V to Reset Pin
Method #10: Exceed Total Microcontroller Current
This is what we will do to make sure that doesn't happen.
1.Series 470R on each IO pin used. (3.3/8mA must be less than our resistor.)
2 Series 470R on each IO pin used.
3 Not applicable as we are not applying voltage
4 Mechanically make board only plug in correctly
5 Not applicable we are not connecting to this pin
6 Not applicable we are not connecting to this pin
7 Mechanically make board only plug in correctly
8 Not applicable we are not connecting to this pin
9 Not applicable we are not connecting to this pin
10 We wont draw enough current to do this
As far as the input power section goes, I am look at these chips. 24 Volts or higher in down to about 7 volts and then a linear regulator down to 5v
At least 1 amp, preferably more so it is running easily.
A8447
LM25011
If somebody knows a better chip then let me know.
I also noticed Seeeduino does a really cheap special on manufacturing 10 x 5 cm 2 layer boards. 10 boards for $20 + postage.
This would be a strange shape for a shield but it should give room for 4 channels + the other stuff
I have started work in Kicad, it seems to be heaps better than Eagle.
I have only really done the layout of the protection resistors and the configurable channels.
#10
Posted 16 March 2012 - 10:39 AM
The only trouble is digikey doesn't like my credit card. So I might have to use the A8499 which is similar but not as good. Attached is a schematic of the shield without the actual led drivers.
I haven't decided on a chip for the Led Driver, I have been looking at hysteretic control, which is turned on and off by PWM at speeds in the kilohertz.
Hysteretic control is basically measuring the current through the inductor and turning on when it is lower than the low threshold and turning off when the current is higher than the high threshold. It's very efficient because it minimises the switching rate.
This seemed perfect until I realised that this would still be noisy in the top end of the hearing range. I really want the converter to operate in continuous mode to reduce noise. Wheres the LM3401 goes into and out of continuous mode at 20khz.
I have plenty of options but no obviously good ones.
- adjust the thresholds rather than the enable.
- use a different chip with a different control method.
- go back to a home brew style circuit.
Attached Files
#11
Posted 18 March 2012 - 11:04 AM
#12
Posted 26 March 2012 - 11:59 AM
I would be happy to send you something for trial. Sorry it's taken so long to reply.
It seems I can't easily avoid the hysteresis style dimming, but I am just a bit worried about em noise.
Still there are things you can do about it. I will look into that later once it is built.
Basically I want to use a buck topology, this is a step down only converter and as such is slightly more efficient than a step up or a step up/down converter. Have a look in Wikipedia if you need more background.
The only slight difference with the led driver circuit from a normal buck converter is that we pulse modulate to set our desired current, where most converters pwm to set the voltage as long as the current is not above some limit.
We will choose the non synchronous version because it is a lot simpler and only has slightly higher inefficiencies.
To make a Led driver Stupidly efficient we have to work out where our losses will be.
From Wikipedia. Sorry if I don't elaborate every point.
Conduction losses that depend on load:
Switching losses:
- Resistance when the transistor or MOSFET switch is conducting. (we will choose a fet with this as low as possible. we need to drive fet at high enough joltage to minimize this.)
- Diode forward voltage drop. (we will choose a diode with Vf as low as possible.)
- Inductor winding resistance. (we will choose an inductor with R as low as possible. This is where most drivers skimp.)
- Capacitor equivalent series resistance. (we will choose capacitors with R as low as possible.)
- Voltage-Ampere overlap loss. (we will minimize switching through our hysteris method and make sure that we control the fets gate fast. Also Totem pole should not go into heavy saturation.)
- Frequencyswitch*CV2 loss. (choose fet with small gate capacitance)
- Reverse latence loss. ( I think this is about the diode and it being a fast recovery type.)
- Losses due driving MOSFET gate and controller consumption. ( make sure that the driving transistors are biased properly, otherwise minimise as best you can.)
- Transistor leakage current losses, and controller standby consumption. (shouldn't apply to fets)
If you want to know a very good app. note on driving fets see this one by Laszlo Balogh .
I have decided on the NCL30160 from On Semi and because it seems the most efficient, even though the driver chip has an internal fet. The internal fet should simplify things.
The NCL30160 has a very low Rds on( resistance in ohms between drain and source when the fet is turned on.) , compared to its peers, so it was the clear winner.
In the data sheet is has a circuit diagram, I have lifted it straight into SteffShield.
We still have to select component values though, I will make a prototype and see what I can get out of it.
Attached Files
#13
Posted 28 March 2012 - 09:18 PM
#14
Posted 03 April 2012 - 01:16 PM
I also got the ICs.
I am hoping that most of my efficiency will come from
- using the hysteresis mode to limit the amount of switching,
- the high quality inductors
- and the low rds on of the led drivers.
I am fairly sure that if the cable run is short to the leds from the driver the noise wont be an issue.It really seems to be coming along! Have you had any more thoughts in terms of the drivers themselves in terms of noise constraints?
The some applications may have longer runs, I am hoping by using twisted pair cables this wont be an issue. Cat 5/6 I think would work well.
I plan to drive the Led Driver with it's maximum pwm input frequency which is 20khz..
Whatever noise is present will be in harmonics of those 20khz. This may give electro-magnetic noise in the 20khz to 200khz region. I am not sure what equipment will be effected by this, if anybody knows please say so.
The other option was to use a non hysteretic mode and keep the buck converter in continuous mode all the time.
This would have less noise, possibly less efficiency and would take larger inductance. I think switching at around 200-500 khz would give near the best efficiency. I haven't found a great solution here, but I am sure there is one. Probably two external fets and a half bridge driver to give a Synchronous buck converter.
I will post an image of the pcb soon.
#15
Posted 08 April 2012 - 11:51 PM
Attached Files
#16
Posted 06 May 2012 - 07:48 AM
Attached Files
#17
Posted 25 May 2012 - 01:46 AM
#18
Posted 29 May 2012 - 06:46 PM
My Steff shield is working, three channels, in a light fitting
My had some MCPCBs (660) made in china a they just came back, then I reflowed some Warm White XTE leds onto them,
I connected them up to the Steffshield last night and all was good but I only can run it at about 250mA per channel at the moment because my sense resistor calculations didn't work out, I used 0.5 ohm. Which only seems to give me 250mA max.
So I have 3 channels each running a 7 led string straight off either a Netduino Plus or an Arduino.
So it works out that I have 24volts and 0.7 amps total input power = 16.8 watts. It makes a very warm light like an old 40 W incandescent. Very nice in a house full of fluorescent tubes.
the dimming gets a bit wobbly at very low values, but i think I could fix this by using pulse frequency modulation at the low duty cycle end. Just a few changes in code.
Best of all everything is running very cool, ie efficiently.
I want to crank up the power to about double and then measure the system.
Would love to see some updated pics and videos of this setup (perhaps even a BOM and PCB layout? :-). I have been thinking about building something similar for a green house project. I am going to provide artificial lighting augmentation to try to get things to grow during the winter. The main difference is that i'll be using a strait mix of 17 red to 3 blue LEDs and will only be switching them on and off.
Thanks!
http://jarrodsinclair.wordpress.com//
#19
Posted 30 May 2012 - 03:44 AM
Sure I will post something soon.Would love to see some updated pics and videos of this setup (perhaps even a BOM and PCB layout? :-). I have been thinking about building something similar for a green house project. I am going to provide artificial lighting augmentation to try to get things to grow during the winter. The main difference is that i'll be using a strait mix of 17 red to 3 blue LEDs and will only be switching them on and off.
Thanks!
ps. I only have 550 mcpcbs, the calculator in my head wasn't working.
Here is a link to my Domestic Lighting Project, it is more EE than Netduino stuff so I put it on another forum.
Domestic Led Lighting Project It is not so much about the shield but the myriad of other aspects of the project.
I will post the BOM and PCB layout within the week.
I think I posted a schematic? I will check anyway.
#20
Posted 30 May 2012 - 07:21 AM
Congratulations on that!My Steff shield is working, three channels, in a light fitting
Did you manage to the reflow at home, how did you do that?My had some MCPCBs (660) made in china a they just came back, then I reflowed some Warm White XTE leds onto them,
0 user(s) are reading this topic
0 members, 0 guests, 0 anonymous users