BLF driver programming key v3.2 launched on Oshpark

It’s not always easy to fit these things. Like with a QFN-20 chip, things work a bit differently. As much as I want there to be a standard connector, I think it’ll be pretty difficult to make that happen.

Yeah a standard will be hard.

But at least the new ATTiny line makes it easier as you need only GND, VCC and Reset for programming.

Otherwise, ranked from top to bottom, I would prefer

  • An existing connector (like this one)
  • 100mil spacing pads / pads
  • Documented layout of pads (incl. their position on the driver)
  • Just some pads, unaligned, undocumented

@zeroflow
Nice work! 1+2+5 AMC7135 triple channel driver with dedicated moon? Yummy :slight_smile:

Only… Lexel’s connector wouldn’t work on your driver.
The connection points are inverted. The pinout (viewed from top) is:

Lexel key
SCK MISO MOSI
RES VCC GND
Z125M (green side)
MOSI MISO SCK
GND VCC RES

With Lexel’s pinout you’d have to use the key from the MCU side (orange side), which of course won’t work when the MCU is soldered on.
EDIT: But your layout looks fine. Hmmmm…

Anyway, don’t get me wrong, I’m far from insinuating that my 4+2 idea is best. I just wanted to show that there are reasons for a more flexible approach.

.

Yup… hear you.

There must be a reason that the keys you can find on the net have different pinouts, although 3+3 is quite common. But Lexel came up with even another distribution of the signals within the 3+3, simply what suited him.

Sure thing, a common standard would be nice. Makes it foolproof for users and for Lexel and his more commercial approach this is perfectly understandable. I’m very grateful he shared his thoughts on this, as he effectively introduced it to me as well.

Of course I’m in the comfortable position of making my own drivers and will make a ProgKey for my needs. This enthusiast approach is less foolproof, but more flexible. My idea is a key with 4+4 pogo pins and 8 pin strip connectors. This would allow for many different layouts (including a 3+3) on a very small footprint:

oooo      oooo      oooo       ooo
 oo       o  o       ooo       ooo 

The spacing that Lexel used is perfect in my eyes (0.4mm vias, 1.3mm/1.5mm spacing). This is for a 0.8mm pcb and the 0.68mm pogo pins. At least that can serve as ‘common ground’.

About the ‘inverted’ thing

@Lexel, do you really want to run with this key version?
Is it meant to be used on the MCU side of the driver? (this would very much limit the use)
Or shall it be used from below, then your markings are quite off
because
SCK MISO MOSI
RES VCC GND
is the top layout of the Attinys (with VCC pulled down center)

while the layout that @zeroflow used comes quite naturally for a 3+3 design on a smaller driver, when you access the programming pads from the non-MCU side, which would of course need mirrored pins

.

Yeah, the 1+2+5 is planned for my Emisar D4 mod with Nichia Optisolis LEDs where I don't need a FET.

Also, I'm still thinking about changing the anduril ramping code a bit so that there is a maximum number of "non-pwm" levels.

Currently, non-pwm levels are just 1x7135, 3x7135 and full 8x7135.

If I find enough time, my goal would be to have stepped ramping with the non-pwm 7135 levels 1, 2, 3, 5, 6, 7, 8.

Maybe I'll leave out 6 and 7 as those maybe have too little change in brightness.

Also: Thanks, i usually spend a big part of the time making my layout look nice and "flowing" instead of crossing traces everywhere.

Even tho the Moonlight channel is not regulated as it is just a series resistor to a MCU Pad, it should work just fine.

Yeah, I noticed that after ordering my PCBs. Typical error where I didn't check good enough

If you do that, instead of 1+2+5, I’d suggest doing 1+1+2+4 — with PWM only on the first 1x7135 channel. It lets you do a no-PWM level every 350mA. As an added bonus, instead of using 24 bits per ramp level, the ramp data can be condensed to about 11 bits per level, or 8 bits per level (plus 8 bytes and a couple extra lines of code).

      1   1   2   4
0-1  PWM  0   0   0
1-2  PWM  1   0   0
2-3  PWM  0   1   0
3-4  PWM  1   1   0
4-5  PWM  0   0   1
5-6  PWM  1   0   1
6-7  PWM  0   1   1
7-8  PWM  1   1   1

That sounds like a good idea, but the boards are already ordered and shipped.

1+2+5+M was a compromise as I could reuse the existing triple-channel ramping code and just add a extra switch for the moon mode where one pin is set to low if the level is 0 and else is set to High-Impedance.

1+1+2+4 looks good if you have enough pins, but light and human eyes don’t really work in a simplistic linear fashion, so I think it is a bit of a waste obsessing about the lowest levels and ultra-fine precision (i.e. the 1+1 end.

I suspect you will be fine with 1+2+5, and a bit of PWMing on two of the lower channels. Which might fit with smaller MCUs that have limited timer-counters.

With the moon pin you can actually set two levels of moon. One high level using the pin pulled up hard (20 mA or more) via an external resistor to set a reasonable current, the other value using the internal MCU pullup resistor, plus anything external. This has been demonstrated and worked.

Except it seems better to pull the pins down, rather than up, to match the way that the main current to the LED is usually arranged. Never tried it myself.

Then there is the FET to deal with, which still seems to be expected.

The linear fashion was sorta the reason why I went with 1+2+5+M. This way I can have 1x7135 after connecting power, 2x7135 as the ramp ceiling and 5x 7135 as a turbo mode.

Regarding the two levels, I think you mixed up aux leds and the main LED. Aux LEDs (connected to GND and the MCU) can have high (pin set to high) and "low" (pin set to pullup)

But the main LED is constantly connected to VBat and the GND side is switched/regulated. In that case, I can only have one moon mode set by the series resistor.

I agree about the 1+1+2+4+8+16 (etc) approach being overkill, and not incredibly useful. I think it’s a pretty slick method though, and wanted to mention it since what you have is so close.

I’m generally happy with FET+1 or FET+N+1, or more generally, putting power channels about an order of magnitude apart. I haven’t found it very useful to maximize the number of no-PWM levels. And on ramping designs, swapping channels around has a tendency to create mismatched joints in the ramp, so I try to avoid that.

yeah just see I made the mistake not taking into account that the design program has vottom side mirrored
so the 10 pin connectors does not work 1:1, reverse 4 soldered leads should be no problem

atm in customs with C8F 21700, MF04S, prototype D1S, D4, D4S, MF01 aux LED boards

And yesterday is… today :smiley:

It’s really that good.

The picture shows a 4+4 key and the driver I was working on at the time I ordered the key. The DD+1 driver is 17mm and just there for size comparison.
The key-pcb is 10mm x 27mm, at the pogo-pins the pcb is only 5.6mm, that will fit about anywhere. When you only use 3x3, you can file the key even narrower.
Pcb width is 0.8mm. Pogo-pins are 0.68mm diameter, 16mm long. Via drills on the driver are 16mil (0.4064mm). Distances are 1.3mm between left and right vias and 1.5mm between up and down vias.

Just programmed a driver and it’s a hoot.

.

The size of the key is perfectly fine, can be put between thumb and middle finger with the index finger on top, gently pushing the springs of the pogo pins down. With 6 vias, aligning is of course a breeze.

Refined the key a bit, not much really. I’ll make at least two versions:

- A neutral one marked from A to H, where up to 4+4 can be used. With connectors any combination can be plugged on the fly

  • A key marked with the pin numbers of the Attinys in my preferred layout

.

EDIT: I shared them here

I also got my final revision 3.2 also launched now,

too bad I got made 120 boards here where the 10 pin header wont work and solder connection markings do not fit if want flash driver from bottom side
the pins are mirrored because I made an mistake looking in my program on drivers bottom which auto mirrors

Order in 2OZ for 0.8mm board thickness from Oshpark!

https://oshpark.com/shared_projects/o1pUPNqt

I got some that cant use the header as they were produced mirrored

applying solder paste one side
soldering pins to it and applying thermal glue for 2. side reflow

Both sides soldered, fine alignment of the pind with soldering iron carefully after that picture

Are you selling the assembled keys?

Yes, I have one.
But not jet soldered the cable on it.
Pogo-Pins are ready applied by lexel.

I see, how much for an assembled key shipped to the US?

for the mirrored key its 3.5$ shipped

I got ones that now also fit the socket 1:1 but need to assemble a few then running out of pogo pins

So the new ones can just plug right into the usbasp correct? I will wait for those then I will most likely buy 2 to play with.

HarleyQuin and Lexel, do you have pinout and pcb layout recommendation for the programming pin connector? I think it make sense to standardize something for easy use on many drivers types.

the only one for pinout and pad pattern I see so far is loneoceans pogoprog here: pogoProg - Small AVR microcontroller pogo-pin Header but it look like everyone using slightly different spacing and pinout?

Yes, a standard pinout and via pattern would be good.

Lexel, do you have a diptrace pattern for the via pattern you use? Thinking about adding this to the GT4 driver.