My Board Design with AL8805 has half the expected drive current

I have been tinkering with a board of my own design, it has AL8805 led drivers like the Sparkfun PicoBuck and FemtoBuck. It seemed like a good choice since I have had good luck with other Diodes Inc parts.

My RPUlux version ^1 layout has less noise on the 0V plane than the first version. The ADC readings from the MCU look right (I sort of figured those were noise related so I ignored that problem).

The problem is I am still getting 160mA with .3 Ohm sense from the LED driver (AL8805). Looking at the Diodes example circuit when the switch is off. I see the current flows through D1 and into C6 mostly (some goes to C3 bypass). The magnetic fields from this current are far from the sense lines.

However when the switch is on the current flow is right under the sense and the magnetic field from that induces a voltage on the sense lines, thus causing the chips sensor input voltage to be different than the sense resistor voltage. It looks to me like the induced voltage works against the voltage on the resistor, so the induced voltage makes the sensed voltage seem less than it is.

This must be how Diodes characterized there part. In order to duplicate there datasheet values guess I would need to run the switched current under the current sense resistor the way they have done. This seems like a questionable way to do the sense for a switch mode power supply.

I designed a 16-channel LED driver board, but used the PT4115 (almost the same chip as the AL8805).
The sense resistor is about 8mm away from the (shielded) inductor.
I don't have the problems you mentioned. LED current with a 0.3ohm resistor is ~333mA (I use 0.2ohm for 500mA).
Layout (without groundplane) of two channels attached. The location of the sense resistor is circled.

The board uses a 16-channel PCA9685 PWM chip, and a WiFi ESP-12 is mounted underneath.
No other connections than (24volt) power and LED wiring.
A single WeMos D1 mini master controls several LED slaveboards, with commands broadcasted via UDP.
Leo..
Two_ch.png
LED_driver.png

Two_ch.png

LED_driver.png

Your board could light the total house (or yard), that is very cool. Do you have it for sale?

The PT4115 almost looks pin compatible. They are not on Mouser or Digikey, I am not sure of a reliable place to get them.

Not for sale. I just made some boards for myself.
This is a new WiFi version of a previous Mega/ethernet controlled board (in use 24/7).
This WiFi board is in the programming/testing phase.

PT4115 chips are $0.10 on ebay. Never had any problems or failures with those chips.
I use CDRH74R inductors (<$0.20 ebay) for LED currents <=500mA.
Leo…

Adding another data point from the PicoBuck.

Can anyone confirm that they provide 330mA to the LED (I am sure it does... but)?

Picobuck with AL8805 switch On current flow (note on the bottom plane it is not easy to know where the current would flow).

Picobuck with the AL8805 switch open (e.g. current flow through the diode).

This setup does not look like the switching current flows between the sense pin inputs, but it is sure suspicious that the LED current flows between the sense pins. There would be a ramp on that current flow and it will induce a voltage on the current sense input. This has the feel of playing darts with a blindfold, and a trampoline in the background, and a turntable for the launching platform.

ron_sutherland:
This setup does not look like the switching current flows between the sense pin inputs

Current flows through sense resistor R1, and the two top pins of the chip are connected to both sides of R1.
R4 can be added across R1 with the solder bridge (if you want 660mA LED current).
The question mark connects to the bottom ground plane.
The whole top copper-colouted plane is V-in (supply).
Leo..

Just to clarify, I guess when saying "switching current" I am thinking about the AC currents. The magnetic fields from DC currents don't do very interesting things like inducing voltages. So what I was getting at was that the LED current flowing under the U1 package (U1 is the AL8805) has a ramp (e.g. some AC current) that may induce voltages between the U1 package sense pins.

I have added more bypass to the AL8805 VIN pin and seen no change. Changing the LED bypass so one side went to ground rather than the LED had no change. I am at a loss so I removed the tombstone hacks and fly wires (so it is back to how it came out of reflow, except the capacitors are now thermal shocked) and changed the sense resistor to 0.15 Ohm. Now I have 330 mA, guess 0.075 Ohm would give 660mA, and 0.1 Ohm 500mA. The ramps on the LED current look OK, the ADC's on the MCU are giving what seems to be good values, so I guess this is how it will work. For reference, this is how my layout looks with the switching currents shown while AL8805 switch is on.

And, the AL8805 switch open.

That's weird. Since 0.3ohm is very low, I put my sense resistor directly on the pins of the chip (no tracks or vias).
I used thickfilm 1206 resistors.
Leo..

@Wawa, does your copper pour go under the sense resistor (i.e. between the pads)?

Two_ch_cu_pour.png

Two_ch_cu_pour.png

ron_sutherland:
@Wawa, does your copper pour go under the sense resistor (i.e. between the pads)?

Yes. And all vias you see, except for the two between '1u' and '0.2' are connected to a big ground plane on the other side of the board.
The via pairs close together connect to a 120mil wide horizontal power trace on the other side.
Leo..

OK, I am going to redo. I think it is important to get it to work like the datasheet. I recall reading something about slop compensation many years back and maybe the connection going under the sense helps to do something like that.

Thank you Leo, I very much appreciate your help.

OK, this is what I am thinking for the AL8805 LED drivers on the next board iteration. The main thing is that when the switch is conducting the current returns to the bypass between the sense pins. I will go over it a few times before I order the board, there is always a few mistakes to find.

Looks good, but why the rounded pads for smd resistors/caps
Leo..

The story has faded from my memory but it started with an IPC paper about 20 years ago I think. Nowadays it tells me that I have looked at that pad and fixed it if needed, I have been burned a few times with pads that I did not check. Anyway it solders nice, the solder wets the corners better, that was what the IPC paper said if memory serves (I think it does).

The AL8805 layout overhaul on my RPUlux^2 board did not change anything.

Diodes Inc has a AL8805EV1 board that I had not looked at whcih seems to show a 0.1uF bypass between the switch and the diode. The bypass connects the the GND pin by going between pin 1 and 5. That is sort of what I had on ^0, but I lacked the ground path between pin 5 and 4.

https://www.diodes.com/diodes-part-files/AC/AL8805/User%20Guides%20and%20EV%20Boards/AL8805EV1%20User%20Guide%20Issue%203.pdf

So I added a .1uF bypass next to the chip, the ground goes under the chip. I think that makes it like the AL8805EV1 board setup. Unfortunately nothing has changed.

I wanted to put this board on Tindie and see if anyone was interested, but I am not willing to do that unless it does what the datasheet says it should, or I understand why it is different.

I doubt that layout is a problem with those short trace lengths.
Did you already test the 0.3ohm resistor (on the board).
Send a known current through it from a lab supply, e.g. 333mA.
And measure voltage (100mV) across the resistor.
Leo..

I don't recall checking that, but it has been checked now (it is a 0.3 Ohm part).

Try replacing the AL8805 with a PT4115E.
They are ~US$0.10 shipped on ebay, and work without problems here (I've used hundreds of them).
Leo..

Found it. The problem was AL8805 CTRL Pin Driven with AVR Weak Pull Up.

During testing, I have been using this SelfTest program, while also looking at bench instruments. It turns out the reason I was seeing 165mA from the AL8805 was that I did not set the AVR pin into a push-pull mode (e.g. pinMode(CH1,OUTPUT) ), as a result when the pin was set HIGH it enables a weak pull-up, which combines an 8.45k Ohm pull down with the AL8805 reference (2.5V) through a 50k Ohm on chip resistance. The result is about 1.2V on the AL8805 CTRL pin which sets the current about half the value I was expecting.

After changing the SelfTest so AVR pins are used in the push-pull mode the LED channels now have the expected current.

Terminal ready
RPUlux Self Test date: Mar 21 2018
avr-gcc --version: 5.4.0
I2C provided address 0x31 from serial bus manager
adc reading for PWR_V: 361
PWR at: 12.883 V
ADC0 GN LED /W SINK on and CS*_EN off: 0.000 V
ADC1 RD LED /W SINK on and CS*_EN off: 0.000 V
ADC2 R1 /W CS*_EN off: 0.000 V
ADC3 R1 /W CS*_EN off: 0.000 V
CS0 curr source on R1: 0.022 A
Green LED fwd V: 2.245 V
CS1 curr source on R1: 0.022 A
Red LED fwd V: 2.128 V
   ADC2 reading used to calculate ref_intern_1v1_uV: 692 A
   calculated ref_intern_1v1_uV: 1088007 uV
REF_EXTERN_AVCC old value was in eeprom: 4948800 uV
REF_INTERN_1V1 old value was in eeprom: 1078310 uV
REF_EXTERN_AVCC saved in eeprom: 4986100 uV
REF_INTERN_1V1 saved in eeprom: 1088007 uV
PWR_I with !CS1_EN use INTERNAL_1V1: 0.013 A
PWR_I with CH1 LED, 1V1, 1sec: 0.121 A
PWR_I with CH1 LED, 1V1, 3sec: 0.120 A
Approximate CH1 curr on a 3.2V LED: 0.343 A
PWR_I with CH2 LED, 1V1, 1sec: 0.119 A
PWR_I with CH2 LED, 1V1, 3sec: 0.118 A
Approximate CH2 curr on a 3.2V LED: 0.336 A
PWR_I with CH3 LED, 1V1, 1sec: 0.116 A
PWR_I with CH3 LED, 1V1, 3sec: 0.116 A
Approximate CH3 curr on a 3.2V LED: 0.330 A
PWR_I with CH4 LED, 1V1, 1sec: 0.118 A
PWR_I with CH4 LED, 1V1, 3sec: 0.118 A
Approximate CH4 curr on a 3.2V LED: 0.335 A
PWR_I with CH5 LED, 1V1, 1sec: 0.117 A
PWR_I with CH5 LED, 1V1, 3sec: 0.116 A
Approximate CH5 curr on a 3.2V LED: 0.331 A
PWR_I with CH6 LED, 1V1, 1sec: 0.121 A
PWR_I with CH6 LED, 1V1, 3sec: 0.120 A
Approximate CH6 curr on a 3.2V LED: 0.344 A
[PASS]