Sunday, August 31, 2014

Olight S20 clone with MELD

I wanted to try putting MELD into an 18650 light, so I looked around and found this: the Solarstorm SC02, which is a clone of the Olight S20. It's a pretty good buy at $15, better machining than I expected at that price. The firmware is awful, as is the norm, so I promptly gutted it:

 I kept the original PCB and stripped off all components except the tantalum input capacitor. This build wouldn't make sense to use MELD hardware in since it will never run on a primary cell, and it should have a higher current on white than the 1.5A that MELD3 is capable of. This one would be run only on secondary cells so I used linear regulators controlled by a PIC16F1825 running the linear version of MELD 2.13 firmware.
The LED board was made using the two-layer method I came up with on my Blackshadow mod, so that the white XP-L gets better thermal performance.

 I glued the PIC upside-down onto the stripped PCB and started wiring. The PIC needs 7 connections: 4 outputs, power, ground, and the switch input.
I then started stacking up the AMC7135 regulators. Here's the four that run the color components. They have a pair of wires that ground them together, and individual output wires that will run up to the LEDs.

 After those 4 were wired to the PIC, I started on the 6 that will be paralleled to run the white emitter (at 2.1 amps). I made them in two groups of 3 to share the current load between two sets of wires, and to make them physically more flexible for when everything has to be fit into the pill.

Here are all the regulators wired up, insulated with kapton, and the wiring bundled into two groups to pass through the holes.
The driver fit fine, but I was just about at the limit of how much could be fit into the cavity. Here's the LED board going on, with thermal grease under it.

 And here's the result of wiring in the individual LEDs.
To get the spacing just right, I cut the original plastic insulator so it had room for the extra LEDs, and then used it under the reflector.
Finished product!
Here's a video that goes over the latest firmare:
And here's the config menu:

Saturday, August 2, 2014

MELDv3 in Fenix HL50 & Sunwayman C10R

MELDv3 boards came in! This version brings big improvements to the SEPIC converter on the white channel, mostly in the area of thermal performance. It also makes an electrical change that allows the SEPIC to run well at much lower battery levels if the light is running on primary cells.

  The inductors are much bigger to better handle high current, so to avoid increasing the stack height I rearranged the daughter board so that they are both on the top side.

I did two projects right away with the new boards, one of which is to upgrade my new Fenix HL50 headlamp. I was very excited when this headlamp was released because single-CR123 headlamps are rare and I don't like any other battery setups, but of course the UI is terrible and needed an upgrade.

As soon as I got it, I opened it up to see how much room there was. The construction is pretty good. Here you can see the stock driver with a daughter board that sits vertically:

I was able to fit MELDv3 by removing the inductors and free wiring them up in the vertical space.

My standard MELD LED board with XB-H and XQ parts fit with one edge filed down. I also had to drill out the reflector slightly to get it around the LEDs. Here's the LED board installed and wired up:

And the finished result, the perfect headlamp:

And here's the second project with MELDv3, a Sunwayman C10R. I really like the construction on the C10R. It has a nice big reflector so I was able to fit an XP-size LED board in it with an XP-L as the white emitter. MELDv3 went in pretty easily by epoxying a momentary switch onto the main board:

Here it is with wires attached, going into the head of the light. Not shown here is a grounding ring needed to make contact with the body (this difficult grounding is my only complaint about the design of the C10R). Also shown is the MELD XP LED board with all LEDs installed and notches cut to fit the wires:

And all wired up:

Nitecore EX11 with MELD.EX

In continuing my trend of putting RGBWUV and my MELD UI in every light possible, I got a hold of the discontinued Nitecore EX11, which uses piston drive (which I love and have worked with before). I wanted to fit the full MELD2 driver into it, but there is just not enough room in the pill with the piston drive mechanism. I ended up designing a custom board stack that gets rid of all the inductive converters and just uses AMC7135 regulators (1 per color channel, 3 for white). This means the light is restricted to rechargeable cells, unfortunately.

The daughter board actually came so close to the wall of the pill that I had to notch it out to pass wires through from the main board. The entire thing is run by the same PIC16F1825 as regular MELD boards, and it runs the same firmware (with a compile option for linear lights, which makes a few slight changes).

Here's the schematic for the main board:

And the daughter:

Four connections go between main and daughter board. The main board has the positive battery contact and the contact ring for the piston. Since my total available height was very small, I intentionally aligned the regulator on the bottom of the daughter to sit above the PIC, which is shorter than the regulators on the main board. This lets them stack together into a pretty short assembly:

Here's the pill completed, and an XML color wired up for electrical test:

The other challenge with this light is that the reflector opening wasn't big enough to fit a MELD LED board. I didn't want to ruin it by drilling it out, so I went back to a crazy technique I've used before of mounting the color LEDs around the reflector in individual holes. This process started with wiring them up in mid-air:

I then drilled four holes evenly spaced around the reflector, about midway up. Then to reduce the depth to get the LEDs farther out, I filed down around the holes until the wall was about a millimeter thick. I carefully arranged the LEDs and the wires to get the LEDs centered in the holes, and glued them down with thermal epoxy. This was a painstaking process because I had to hold the LEDs in place while the epoxy cured, and I had to do it four separate times so that the epoxy was facing up and wouldn't drip down. 

Here's the result:

And the back of the driver:

It all turned out great, although the color beam patterns are terrible, as expected. The white beam is perfect, and isn't noticeably affected by the color emitters. 

Thursday, June 19, 2014

Blackshadow flashlight mod

Now that my MELD drivers are up and running, I've decided it's unacceptable to have anything less than full functionality on every light, so I've been going through and modding everything to have RGBWUV. The Blackshadow Queen is one of my favorite hosts for its size/form factor and the reflector that throws better than anything else in my collection.

This mod uses MELD firmware so the UI matches my other lights, but because it runs on rechargeable cells only I used linear regulators instead of the full MELD driver. This also allows me to run much higher current on the white LED. 

To fit all the LEDs in the reflector aperture, I have my MELD LED boards, including this XP variant. They are FR4 though, so it wasn't going to have good enough thermal conductivity for my main emitter. To solve this, I came up with this PCB sandwich arrangement. 

The first step was to slice the PCB to make it thinner. The epoxy that holds the fiberglass layers together weakens when it's hot, so I set up the heat gun to get this bare PCB really hot and then sliced the top layer off with a blade. 

Next I cut out the space for the white XP-sized part until it fit perfectly over an XP-L. After the hole was cut, I reflowed the red, green, blue, and UV emitters on to their pads. 

I then reflowed an XP-L onto a star (this happened to be a weird star that included spots for other components, I only chose it because I wanted a thicker-than-standard star). The thin PCB holding the colors was then epoxied down around the XP-L using Arctic Silver. This picture is during the electrical test after epoxy.

On to the host: I disassembled everything, including punching the brass ring out and separating it from the stock driver. 

I reuse the the daughter board that holds 6 AMC7135 regulators for my white LED. For connections and mechanics, I reuse the main PCB, but all the components need to be stripped off first. The only one I left was the tantalum input capacitor.

I wired up the LED board using 30AWG for colors and 24AWG for the white. All the solder connections need to be made as low-profile as possible, and then they are covered in kapton tape to prevent shorting against the reflector.

I then put the LED board into the head using thermal grease. There's enough trimmed off of the star to allow it to move around a bit to get perfect centering. 

Here's what it looks like after the reflector and lens are assembled. It was a bit tough to center--I had to push on the back of the star through one of the wiring holes to hold it in place as I tightened down the reflector. After a few attempts I hit the center.

On to the driver. The board in the center of this picture is cut out of a PCB I salvaged from the scrap bin--the only thing it holds is the microcontroller (PIC16F1825) and a decoupling capacitor. The only reason I used it was to save me from making connections directly to the QFN-16 part. Ideally I'd use a SOIC part for this, but I didn't have any on hand at the time. The part on the right side is a 6-pin 50mil pitch female connector, which is used for programming and so is connected to the ICSP points on the microcontroller.

The stock daughter board holds 6 regulators and is used to drive the white LED. Branching off of that I have 4 more AMC7135s for each of the colors, wired independently. These are wired free-form, but they have their grounds soldered to a fairly thick ground wire which keeps them mechanically stable.

At this point I programmed the microcontroller so I could do full hardware tests as soon as the LEDs were wired. This required a simple harness to adapt the 1x5 0.1 header on the PICkit3 to the 2x3 0.05 header in the driver. The female connector is epoxied flush in a hole cut into the main PCB.

Here's a picture of all the electronics wired up, undergoing final electrical test. Before I stuffed everything into the cavity, I wrapped all the exposed parts in kapton tape to prevent shorts.

Here's what the head looks like after the board is pressed in. The programming connector came out pretty clean, and it does't interfere with the batteries since they only contact the outer ring.

Here's a final shot of all the emitters turned on at minimum. The UV isn't on; it appears green because of a neat refraction effect in the XP-L dome. This light runs the same firmware as my MELD2 drivers, but with a few options that optimize it for linear drivers. There's a full video and description of the user interface in my post about the most recent MELD firmware update

Wednesday, June 18, 2014

MELD firmware update

Here's a video demonstrating version 2.9 of my MELD flashlight software. A lot of improvements and features were added since the last video I put up. Below is a complete description of the UI and features.

·         All modes:
o    Turn on and off by short click
o    Mode memory in all cases (restore last mode after turning off and on)
o    Ramping by holding switch while on
o    Ramping reverses direction when initiated if it has been less than 3 seconds since the last ramp
o    Smart momentary from off (short click latches on, long press is momentary)
o    Shortcut to primary level from on by double click
§  If UV is enabled, a repeated double click will shortcut to UV. From UV, a double click will go back to primary
§  In UV mode, press and hold will make the UV strobe while held. May help to make fluorescing objects stand out
o    Shortcut to max by click-press
§  If level is currently max, shortcut to min instead
§  If primary level is set to max, shortcut to min instead
§  If held down for an extended time after click press, only do momentary maximum (restore previous brightness (or strobe/color mode) once switch is released)
§  Available from off as well (double click from off to latch on in max, click press from off to go to max in momentary mode)
o    If inactivity timer is enabled, jump to a low white level after 15 minutes of inactivity
§  Any press while in the timeout state restores the previous state
§  Works from any mode (including colors and strobes) except the two red safety flashers, the three color beacons, and any white strobes slower than 4Hz (since these modes are likely to be used long-term without user interaction)
o    State of light is stored in EEPROM and restored upon power up, enabling use in lights that have both a momentary switch and a power switch
·         White mode:
o    Ramping adjusts brightness on logarithmic profile
o    If dim to red is enabled, minimum level is replaced by dim red
o    Ramping pauses on min and max before reversing
·         Strobe mode:
o    Accessed by triple click
o    Ramping adjusts strobe speed continuously, ranging from 0.25-60Hz
o    Triple click while in strobe is a shortcut to stunner mode
·         Color mode:
o    Accessed by click-click-press
o    Continuous color mix:
§  Ramping gradually fades between colors so that any color on the spectrum can be chosen
§  Pauses on solid red, green, and blue to help select them
o    Low red: low brightness solid red output. Only available if dim to red is disabled
o    Stunner: randomized strobe that uses all colors
o    Auto fade: continuously fades through all possible color mixes
o    Flasher: triple-blink safety flasher using red
o    Flasher 2: higher-visibility safety flasher pattern using red
o    Red flash, green flash, blue flash: simple 0.5Hz beacons in three colors
o    Police: alternating blue and white to mimic police lights
o    Fire: simulates flickering firelight by calculating randomized output levels for a mix of red, green, and white
o    All low: turns on all four colors at minimum brightness so the LED can be observed directly
o    Lava lamp: a smooth-fading randomized output mode that provides interesting background lighting
o    Lightning: simulates lightning strikes using a mix of blue and white, with randomized time between strikes and randomized duration and brightness of strikes
·         Flourish mode:
o    A special color mode not included in the normal set
o    Activated by entering the color command (click-click-press) while already in a color mode
o    Performs a fun-looking sweep through colors that lasts about 2 seconds and returns to standby
o    Light is stuck in this mode once activated, exited by double click or click-press (shortcuts to white modes)
·         Configuration menu:
o    Accessed by quadruple-click
o    Set up options for light behavior. Click to cycle to next option, hold switch until green LED flashes to activate item
o    If all items are cycled through, the menu exits and returns to normal without taking any action
o    Item 1: beacon
§  Indicated by single short red blink
§  Enables or disables the locator beacon (flashes red every 4 seconds while in standby to help find the light in the dark)
o    Item 2: tactical
§  Indicated by single long blink
§  When activated, puts light into a momentary-only mode using whatever output (including strobes and color) was active before entering the config menu
§  Can only be disabled by power cycling the light
o    Item 3: lockout
§  Indicated by quick fade from bright to dim
§  When activated, the next time the light is turned off, it will be locked out. The light can then only be turned on by triple-clicking the switch.
§  Used to avoid accidental activation when the light is not in use but may have the switch bumped inadvertently
o    Item 4: auto dim
§  Indicated by white med > white low if currently disabled
§  Indicated by white low > white med if currently enabled (the light is showing what will happen if the menu item is activated—getting dimmer if you are about to turn on the feature, getting brighter if you are about to turn it off)
§  If enabled, the light will drop to a low white level after 15 minutes of inactivity
o    Item 5: set primary
§  Indicated by quick double blink on white (looks like the double click associated with the primary level)
§  When activated, the primary level is changed to the brightness level that was active before entering the config menu
§  Primary level is stored in EEPROM permanently until changed in config menu again
§  Primary can only be set to a white brightness, not color or strobe modes
o    Item 6: loaner mode
§  Indicated by a high-med-high-med-high pattern
§  When activated, the light is locked in its current mode and brightness (including colors and strobes), but smart momentary and latching on still function
§  Simplifies the UI to a single mode, useful for when the light needs to be lent to another user who doesn’t need other modes and doesn’t know how to use them
§  Disabled by power cycling
o    Item 7: dim to red
§  Indicated by a quick fading pattern from bright white down to low red
§  Enables or disables the dim to red feature
§  If dim to red is enabled, the low red color mode will be removed from the list
o    Item 8: powerup
§  Indicated by a quick fading pattern from dim to bright white
§  Enables or disables the feature to restore last mode upon power up
§  Should be enabled in lights with both a momentary switch and a power switch, but may be disabled in lights with momentary only if inadvertent power interruptions are expected
o    Item 9: set momentary max
§  Indicated by short blink then long blink on white (looks like the click-press associated with maximum)
§  When activated, any use of momentary (holding switch from off) will output maximum brightness instead of the last-used brightness or mode. Previous brightness or mode is still remembered
o    Item 10: burst mode
§  Indicated by high > medium-high > medium if currently disabled
§  Indicated by medium > medium-high > high if currently enabled (the light is showing what will happen if the menu item is activated—getting dimmer if you are about to turn on the feature, getting brighter if you are about to turn it off)
§  If activated, any time the light is turned on in white at a power level above 66% current, the output will gradually reduce output until it reaches 66% over the course of 10 seconds. This helps save power and is usually not noticeable to the user.
§  Does not affect use in momentary mode, only when latched on
o    Item 11: enable UV
§  Indicated by blue med > blue low if currently enabled
§  Indicated by blue low > blue med if currently disabled (the light is showing what will happen if the menu item is activated—getting dimmer if you are about to turn off the feature, getting brighter if you are about to turn it on)
§  Simply enables the UV mode. Included in the menu so that MELD can be used easily in lights without UV hardware by disabling the feature
o    Item 12: enable colors
§  Indicated by red > green > blue pattern
§  Enables or disables all color modes
§  If color modes are disabled, locator beacon and battery check mode will use only the white output
o    Item 13: high CRI
§  Indicated by turning on white, red, green, and blue together
§  An experimental operating mode that mixes in a small amount of red, green, and blue into the normal white operating mode. May improve color rendering
§  Only works well in lights with excellent color mixing
·         Battery check:
o    Accessed by click-click-click-press
o    Stays active and continuously updates measurement as long as switch is held
o    Measures battery voltage and reports it in blinks – blue blink for values and a long green blink for the decimal place
o    Examples:
§  Battery is 3.2V
§  Blue flashes three times
§  Green long flashes once
§  Blue flashes two times
§  2 second wait before repeating
§  Battery is 4.0V
§  Blue flashes four times
§  Green long flashes once

§  2 second wait before repeating