Netduino home hardware projects downloads community

Jump to content


The Netduino forums have been replaced by new forums at community.wildernesslabs.co. This site has been preserved for archival purposes only and the ability to make new accounts or posts has been turned off.
Photo

Steff Shield


  • Please log in to reply
30 replies to this topic

#1 Magpie

Magpie

    Advanced Member

  • Members
  • PipPipPip
  • 279 posts
  • LocationAustralia (south island)

Posted 25 February 2012 - 03:43 AM

Steff Shield

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.
STEFF Shield High Powered Led Driver shield.

#2 Mario Vernari

Mario Vernari

    Advanced Member

  • Members
  • PipPipPip
  • 1768 posts
  • LocationVenezia, Italia

Posted 25 February 2012 - 05:04 AM

Hello Magpie. Your idea is valuable, and I encourage you. Here are some suggestion on how to design the shield. - 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) - 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'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. - 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. Hope it helps. Cheers
Biggest fault of Netduino? It runs by electricity.

#3 Magpie

Magpie

    Advanced Member

  • Members
  • PipPipPip
  • 279 posts
  • LocationAustralia (south island)

Posted 25 February 2012 - 11:47 AM

Hi Mario
Thanks for the interest, you may know that the genesis of this project came from talking to McInnes so much about aquarium lighting.

- 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.

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'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.

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.

- 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.

50v dc in Aus but I will stay under 30.

- 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)

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.
The design problems I see with stackable boards are Heat, Interference, control/communication, power between the boards.
STEFF Shield High Powered Led Driver shield.

#4 Magpie

Magpie

    Advanced Member

  • Members
  • PipPipPip
  • 279 posts
  • LocationAustralia (south island)

Posted 25 February 2012 - 12:04 PM

I'll break the shield up into its functional blocks.
  • Input power management
  • Control
  • Led Driver Section
To break the project up into its tasks.
  • 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.

STEFF Shield High Powered Led Driver shield.

#5 Magpie

Magpie

    Advanced Member

  • Members
  • PipPipPip
  • 279 posts
  • LocationAustralia (south island)

Posted 29 February 2012 - 02:11 AM

The way I see it these are the Design Descisions that need to be made: 1. Are the shields stackable? 2. What voltages are provided to and from the netduino main board and the shield? 3. What power protection is there between boards and to and from the 24volt supply? 4. Control via gpio, spi or i2c? 5. How to make the control configurable? 6. Arduino compatible? Here are my preferences They are based on the "smallest useful deliverable" philosophy ( which I just made up). 1. So no stackable shields. 2. For the sake of clarity. It would be good to run off the main netduino power supply so Vin from Netduino to shield if present. And 7.5v from shield to Netduino if not. 3. Probably just a blocking diode on the 24 volt supply 4. Control via gpio. 5. Use header pins to make the control configurable? (Not possible to short Netduino pins though) 6. Make it Arduino compatible, I don't think there will be any problems here, just a bit of level shifting. If anybody has any suggestions, especially a potential end user then let me know.

Attached Files


STEFF Shield High Powered Led Driver shield.

#6 Mario Vernari

Mario Vernari

    Advanced Member

  • Members
  • PipPipPip
  • 1768 posts
  • LocationVenezia, Italia

Posted 29 February 2012 - 04:25 AM

Have a look at this one:
http://www.austriami...iver-ICs/AS3691

Cheers
Biggest fault of Netduino? It runs by electricity.

#7 mcinnes01

mcinnes01

    Advanced Member

  • Members
  • PipPipPip
  • 325 posts
  • LocationManchester UK

Posted 29 February 2012 - 07:46 AM

Hi magpie/ mario, Here is my 2 cents... In terms of the suggestion mario, a nice idea lots of channels but not near enough current and pretty inefficient I would guess? When you splash out on some high lux/ high efficiency cree's or similar, you want to drive them at their full potential, many people even "over clock" them with even higher currents from what I read, using good thermal management of course, so at least 1 amp makes sense to me. Stackable is a good idea, although I guess it wouldn't be too difficult to produce 2 form factors, and perhaps eventually more channel options like single or 10. If people were to have many channels like I will for my aquarium, they may wish to enclose these seperately to the netduino and may not want them to be stachable . In terms of power, I think your right in terms of 24v as standard, as you say its a good choice for efficiency, you should be able to provide enough current and and voltage to supply multiple boards this way. Perhaps having a regulator with a higher rating would allow for this, then provide guidelines on supplies for the number of channels/ leds. You could make a simple calculator number of leds, current drop, voltage drop, number of boards. In 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. 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. Also another idea, it may be worth creating a power board that is really efficient (using buck principles again), you throw what ever size power supply (within limits) at it, and it provides power outs to your led driver boards, and maybe a 12, 5v and 3.3v rail to power other functions. You could then have some connectors that you connect to your LEd driver boards to power them. Good luck with the project, I'm very eager to test it but I'm of to malaysia the end of this week so I may be quiet for a while. Andy

#8 Magpie

Magpie

    Advanced Member

  • Members
  • PipPipPip
  • 279 posts
  • LocationAustralia (south island)

Posted 01 March 2012 - 11:53 AM

Thanks for the input Mario and Andrew.

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.

In 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.

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 Circuits

I

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.

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.

FYI they do have the internet in Malaysia.(kidding)
STEFF Shield High Powered Led Driver shield.

#9 Magpie

Magpie

    Advanced Member

  • Members
  • PipPipPip
  • 279 posts
  • LocationAustralia (south island)

Posted 02 March 2012 - 01:20 PM

Here are the 10 most common ways to destroy an Arduino.

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.
STEFF Shield High Powered Led Driver shield.

#10 Magpie

Magpie

    Advanced Member

  • Members
  • PipPipPip
  • 279 posts
  • LocationAustralia (south island)

Posted 16 March 2012 - 10:39 AM

I am going for the A8447 from Allegro for the step down Vin buck converter.
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


STEFF Shield High Powered Led Driver shield.

#11 Ralim

Ralim

    Member

  • Members
  • PipPip
  • 13 posts

Posted 18 March 2012 - 11:04 AM

Hey, just to throw in my opinion, I would definitely be interested with this idea for controlling RGB led strips for my wall. I like the idea of the LM3401, it "appears" to be suitable :) Also, am i correct in thinking you live in Australia? if so keep me in contact for testing boards :) Thanks, Ralim

#12 Magpie

Magpie

    Advanced Member

  • Members
  • PipPipPip
  • 279 posts
  • LocationAustralia (south island)

Posted 26 March 2012 - 11:59 AM

Sure Ralim
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:

  • 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.)
Switching losses:
  • 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


STEFF Shield High Powered Led Driver shield.

#13 mcinnes01

mcinnes01

    Advanced Member

  • Members
  • PipPipPip
  • 325 posts
  • LocationManchester UK

Posted 28 March 2012 - 09:18 PM

Good work Magpie! It really seems to be coming along! Have you had any more thoughts in terms of the drivers themselves in terms of noise constraints? I kind of see the argument for keeping the distance between driver and LED a short as possible, but in reality what is the worse case scenario in terms of the effects of the noise? And am I right in saying the inductor primarily acts a filter for a lot of this noise, or does that only filter up to a certain frequency? If this is the case could those higher frequences not be caught be using another inductor or some other component to catch the higher frequencies? Just throwing some ideas out (I don't have the technical background to back it up with anything useful unfortunately :unsure:) Cheers, Andy

#14 Magpie

Magpie

    Advanced Member

  • Members
  • PipPipPip
  • 279 posts
  • LocationAustralia (south island)

Posted 03 April 2012 - 01:16 PM

I sorted out my credit card I just got some nice fat toroidal inductors delivered, I hope they are up to the job frequency wise.
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.

It really seems to be coming along! Have you had any more thoughts in terms of the drivers themselves in terms of noise constraints?

I am fairly sure that if the cable run is short to the leds from the driver the noise wont be an issue.

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.
STEFF Shield High Powered Led Driver shield.

#15 Magpie

Magpie

    Advanced Member

  • Members
  • PipPipPip
  • 279 posts
  • LocationAustralia (south island)

Posted 08 April 2012 - 11:51 PM

It looks like my shield's architecture has already been superseded, and I haven't even got the board back from olimex yet. I have prototyped with the NCL30160 and it works as expected and no obvious signs of noise with the pwm running at 500hz. I used 10 leds is series with about 5m of cable running off 29 or so volts. The only trouble is that I have fried 4/5 chips already, 2 from static (my fault) 1 from incorrect wiring (my fault) 1 from switching on suddenly ?? this is a real worry it is supposed to be 40 volt max. (I really don't know why this happened, maybe my input capacitor was not making good contact.) This chip had been working happily for 2 hours. This must be the first time I have ever burnt more than 1 chip on a project in my life, and I have burnt 4. I must get an anti static mat. I only have one chip left, it's wired in and going fine but I am scared to turn it on suddenly, I will contact the manufacturer and see what they say. Unfortunately I am going to stop development on this project now, at least for a while. My main project is actually domestic low voltage lighting, and I think that the attiny might be more suited, and more robust. I may pick it up again one day, with the Go architecture, we will see. [Picture now attached.]

Attached Files


STEFF Shield High Powered Led Driver shield.

#16 Magpie

Magpie

    Advanced Member

  • Members
  • PipPipPip
  • 279 posts
  • LocationAustralia (south island)

Posted 06 May 2012 - 07:48 AM

Finally my boards arrived from Olimex. ( The boards are of excellent quality, I can tell as I have extensively reworked some of the through hole pins.) I have soldered one of them up and got it working. 3 channels + power to the netduino from a 24 supply, and it works on three channels with Netduino and Arduino. I have a host of changes that I would make in any re-spin, including a major mistake on the schematic, where I connected the sense resistor to the 5volts instead of ground. The worst part was I had to cut one track. I am using a 500mOhm sense resistor which is giving me 229mA output current. I had expected it to be 400mA. Currently I can only use one channel at a time because I haven't enough high powered leds. So for one channel My power input currently is 215mA @ 23.8 volts = 5.12 Watts. My average output power is approx ( not RMS) 229mA @ 17.17 volts = 3.93 watts. giving me an efficiency of 77%. or without the Netduino consumption, 81%. Though nothing is the slightest bit hot which is a good sign. I am sure I will get better results with 3 channels and at full power. ps. The shield has also survived burn in and short circuit test and pulsing the power supply. I have a TVS diode in now, which gives it a fighting chance.

Attached Files


STEFF Shield High Powered Led Driver shield.

#17 Magpie

Magpie

    Advanced Member

  • Members
  • PipPipPip
  • 279 posts
  • LocationAustralia (south island)

Posted 25 May 2012 - 01:46 AM

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.
STEFF Shield High Powered Led Driver shield.

#18 Jarrod Sinclair

Jarrod Sinclair

    Advanced Member

  • Members
  • PipPipPip
  • 50 posts
  • LocationSF Bay Area, CA

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!

#19 Magpie

Magpie

    Advanced Member

  • Members
  • PipPipPip
  • 279 posts
  • LocationAustralia (south island)

Posted 30 May 2012 - 03:44 AM

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!

Sure I will post something soon.
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.
STEFF Shield High Powered Led Driver shield.

#20 hanzibal

hanzibal

    Advanced Member

  • Members
  • PipPipPip
  • 1287 posts
  • LocationSweden

Posted 30 May 2012 - 07:21 AM

My Steff shield is working, three channels, in a light fitting

Congratulations on that!

My had some MCPCBs (660) made in china a they just came back, then I reflowed some Warm White XTE leds onto them,

Did you manage to the reflow at home, how did you do that?




0 user(s) are reading this topic

0 members, 0 guests, 0 anonymous users

home    hardware    projects    downloads    community    where to buy    contact Copyright © 2016 Wilderness Labs Inc.  |  Legal   |   CC BY-SA
This webpage is licensed under a Creative Commons Attribution-ShareAlike License.