So, fast-forward 2.5 months. Has it really only been such a short time?
Yesterday I got some firmware-flashing tools working, and I wrote my first attiny13a firmware. Today I remembered that I never much cared for the modes on my modded Convoy S7-219B. You can probably guess what happened next.
I had a hell of a time trying to get the old driver out of the pill to flash it. It seems to have been soldered somehow from the inside. No clue how they did that, unless it involved solder paste and some fancy heating tools. So, I ended up destroying the old driver in the process of getting it out. Drove a big drywall screw right through the center and yanked it out, and even then just barely.
Fortunately, I had a brand new qlite driver laying around with no specific purpose in mind so I replaced the old driver with that. But instead of 4x350mA chips (1400mA total), I configured it for 5x380mA (1900mA total). That’s about 36% more power than the old driver. I’ll definitely have to treat the highest level as a “turbo” now instead of just “high”. The maximum mode has increased from about 255 lumens to 342 lumens.
I also flashed some custom firmware (based on JonnyC’s “STAR” on-time firmware) I just put together today, and then re-flashed a few times as I tweaked the moon level. The new modes are:
- Moon: 0.14 lumens
- Low: 7.3 lm
- Med: 42.4 lm
- High: 155 lm
- Turbo: 342 lm (and it drops pretty quickly, probably due to heat)
- Moon-low flasher: Using “moon” as a baseline level, it will flash up to the “low” level about once per second, in four very quick pulses. So, it’s like moon with a 1Hz mini-strobe at one brightness level higher.
- Low-med flasher: Same, but with brighter levels.
- Med-high flasher.
- High-turbo flasher.
- Heartbeat strobe: Blinks twice quickly at “turbo” for just 1ms, then goes dark. Repeats about once per second, to mimic a 60bpm heartbeat.
- 10Hz strobe: Blinks for 1ms on “turbo” at a rate of ten times per second. Can be disorienting, but it’s more fun for just making people feel like they’re walking around in a bad horror movie. With the light only on for 1ms at a time, people see a series of still frames with no apparent motion.
- Variable strobe: Ramps continuously back and forth between about a 6Hz strobe and about 60Hz. The entire cycle takes about 5-6 seconds to loop. Each flash is only 1ms, so it appears to freeze motion. Point it at a spinning fan and it’ll make the fan appear to stop, change directions, slow down, stop, change directions, etc.
That’s a total of 12 modes, but I don’t have to cycle through them all. It uses short-cycle memory, so it basically acts like it doesn’t have mode memory at all. As long as the light has been on for more than one second, the next tap will always take it back to moon mode. Tap twice (with no more than a second between taps) and it’ll go to low. Tap three times for medium. And so on. To reach the last mode, the user must tap twelve times, so it’s not generally going to happen by accident. The most useful modes are at the beginning in low to high order, and there is no need to ever go through the other modes unless the user wants to.
Low-voltage detection and step-down is also implemented, but I haven’t actually tested it yet. I configured it to drop the output by half each time the voltage gets low, then shut itself off (lowest-power standby) if it was already at the lowest mode. I’m pretty sure it won’t “do the right thing” if it was in a flashing or strobe mode when it went low-voltage though, so I should probably fix that if I can find a few more bytes to fit extra code.
It seems like the reflector rides a bit high above the emitter, and I suspect that’s why I’m getting 342 lumens instead of 450. However, the reflector is designed so it can’t really go any lower — it has a ring around the outer edge which pushes directly against the pill. I at least got it to hold the emitter star down with a XM-L butterfly spacer, which puts a paper-thin gap between the reflector and where it wants to rest on the pill. But for more output it really should be lower.
As for the moon mode, I tried a few different PWM values… a value of 8 produced 3.26 lumens, 7 produced 1.14 lumens, and a value of 6 gave me 0.14 lumens. I was hoping for something closer to 0.3, but I think 0.14 will work better than 1.14. So, that’s where I left it.
If anyone wants the firmware, I’d be happy to share the source and/or compiled .hex file. I might add it to my firmware repository too, for reference.
Overall, I like this Convoy S7-219B a lot better now. It had awkward modes before, mode memory, a mode-group blink on “low”, and PWM slow enough for me to see (4.5 kHz). But now it has better modes, no visible PWM, and no need to cycle through extra modes to get to the level I want. And some fun extras after the primary modes.