NarsilM - configurable e-switch firmware for Multi channels, v1.3

That OTR M3 is an awesome light to put Narsil on. I’m hoping that someday we can make a BLF clone of the Olight S-Mini with one of our custom drivers. It’s like the OTR M3 but even smaller, and getting it to run a BLF driver with fancy e-switch firmware would make it one of the best EDC lights ever made.

Yea, the Olight Mini was the light I really wanted to mod to install it on - I got one or two and was able to open it, but can't recall the challenges. Now we have a few guys capable of laying out an OSHPark board, so we have more resources. Of course if we want to go with a custom big run, we would have more options.

The switch mounts usually is what messes up space and real estate, but there's been some real creative modding posted here, and I've learned a lot more possibilities to handle the switch since 1-2 years ago.

Definitely possible.

Yes it’s the clone. If I can finally get the code figured out it will be a three channels with 3 7135s on channel 2 and fet on channel three. The mode sets and max ramp will hopefully be throttled back to about 2.5-3amps while preserving direct drive for the double click to high option. I think max ramp/modes is separate from max double click. Atleast I’m hoping it is:)

It’s been hard to choose what direction to go hardware wise but I think I have all the geometry figured out now. Actuall won’t be that bad but will require some intricate wiring.

Ohh - you want ramping throttled but 2X click still max FET? That's exactly what we are doing in the GT, so the new NarsilM supports it -- hhmm, not yet posted I think.

Just a heads up, the M3 has been updated with built in charging and is called the U16. The head is a little bigger, I assume because of the usb input, then again, the $13 clone (JAXMNVE M3) was able to fit a USB port in the old size body. Maybe this new model host body has more internal room for a good switch?


.

Yes, exactly. If max level is defined separately somewhere it should be doable but if max ramp and max double click are the same define then it’s going to be over my head for sure:)

When this version first came out I really wanted to like it cause I am all about built in charging these days but it always seemed awkward got me. Idk? It should handle heat a little better with the bigger head and defined cooling fins. It may throw a bit better as well.

This m3 with charging is the stuf thiugh. And a custom pcb that works with the stick switch board is very possible. Makes me want to draw one up but I need to stay focused. I can only relearn one skill per month and a basic python script is taking up all the space. :smiley:

I hadn’t read one word of the gt thread til today as I haven’t been interested. So I just followed enough of your posts to catch on the the tweeted Narsil. That nearly exactly what I am looking for. There are some other things in there but the operation of a throttled ramp with db click to max is right on.

So is there now a way to do this without much trouble? Maybe there is a section of the firmware that I can just copy over to my file or is it more complicated than that?

Well, it's an upgraded version - lots of changes in header file organization, etc.

Bout the U16, I got one recently tore it down, I'll post pics in a min. Here they are:

The problem is very tight vertical space - the vertical board i the pill full height, and of course that big switch. I think we'd have to replace the stock driver and I think a lower profile switch could be used, and a vertical board mounted on the edge near the rubber boot. Maybe then a decent pair of boards could be made up on OSHPark. Maybe we could create a custom horiz. OSHPark board that would work with the stock vertical one, not sure.

Cool pics, thanks. I’ll get my U16 in a couple days still.

I also found out this “new” body style is based on the older JETBeam EC-R16. So not completely new.

Narsil would be sweet in one of these even without the charging.

Looks like i was able to make all the right changes to level_calc.py to get it to run on vers 3. The problem was the case sensitivity as tom pointed out.

In order to generate a ramp table with throttled max i will need to modify Level_calc.py to ask for channel max pwm input frpm the user on each channel. as is, it assumes a value of 255. If i am able to change the pwm max of the fet i think it will generate a ramp with user definable pwm ceiling.

TK, could you direct me if this is a simple/doable change?

I'd look at the line of code: chan.pwm_max = 255

A simple search in the source code for 255. She had a prompt for this value, but commented it out, so at one time at least it was considered.

When I use the NarsilM V1.0 3C1S for Manker U11 quad LED.
Forget to set the temperature control first.
Burned one LED. and then below 350mA can not light.
Small flashlight, poor heat dissipation, perhaps need to limit the current?

ok so i readded the comment to ask for max and then commented out the line that defines it as 255. this generated a table that i think will work. i just needed to change the last 7135 value from 0 to 255. Ill have to test it of course but cant see why it wouldnt work

Looks nice! too bad you have to rip into it. Ya, i would think you would need to set the thermal reg pretty aggressive with that set up. I have a u11 kit ready to go. only problem is i dont have a u11 to put it in. :slight_smile:

It should be very difficult to burn up a typical LED when mounted on a copper MCPCB. If they were low Vf LED's like XP-G3 or 219C's, then the risk is higher, but you have other things that can be done easy - use thinner LED wires, don't bypass the spring, use a lower performing cell, etc.

I used thermal grease on the contact points where that pill comes into contact with the housing - think it helps. But quads in a U11? Oh boy, not really made for that kind of heat - that pill design is pretty poor. I got a single XP-L2 NW in mine and love it though - it's my favorite 18650 EDC light.

Sounds like the 7135 is fried maybe...

Well i posted too soon. it works with 2 channels, but not 3.

Did you specify 3 channels in the header? Located the tables at the right place for 3 channels?

You mean the first entry in the string or somewhere in the code?