jhu-cisst / QLA

Design files for Quad Linear Amplifier (QLA) board
1 stars 3 forks source link

U28 LT4356 does not get out of overcurrent fault loop when charging the amp input capacitors #1

Closed keshuaixu closed 6 years ago

keshuaixu commented 6 years ago

Symptom

Some QLA fails to enable power with 48V power supply and dVRK Setup Joints (QLA+dSIB+SUJ). When the FPGA turns on PWR-EN, V-MOTOR only rises to about 3V. Q14 surge protection MOSFET gets hot.

Conditions

The symptom seems to be related to the number of SUJ plugged into the dSIB. Plugging in any one of the SUJ does not cause the problem except for PSM1. Plugging two or more SUJ always cause the problem,

Loading the V-MOTOR after the protection MOSFET with a 20 ohm power resistor to GND always reproduce the issue without dSIB/SUJ.

I could not reproduce the problem with an adjustable power supply with 2A current limit. The input voltage dips at powerup. After the dip, the output voltage rises normally. The problem only exists when the QLA is powered by a high-current (>10A) 48V power supply.

"Normal" powerup behavior

I captured the waveforms below from a QLA powered by a high-current 48V power supply at power enable. No load is attached to the QLA.

normal

CH1 V-MOTOR. CH2 48V input. CH3 Q14 MOSFET gate. CH4 U28 SNS current sense (AC coupled).

When U28 gets power enable signal, it turns on Q14 and starts to charge the amp input capacitors. The inrush current triggers the current regulation, then after the time set by C10 elapsed, triggers the shutdown. After a cooldown period set by C10, it turns back on the MOSFET and continues the loop until the capacitors are charged.

Not included in the screenshot is the /MV-FLT signal. During ramping up, U28 spends most of its time keeping the MOSFET off while waiting for the fault timer to reset.

Broken behavior

The following waveforms were captured with QLA connected to dSIB and two SUJ.

broken

CH1 V-MOTOR. CH2 48V input. CH3 Q14 MOSFET gate. CH4 U28 SNS current sense (AC coupled).

When the capacitors drain faster than they charge, they never get fully charged. U28 loops between charging the capacitors and waiting for fault timer to reset.

Solution

The problem is caused by Q14 MOSFET turning off too early and waiting too long before turning back on. Increasing C10 increases the time between starting the current regulation and turning off the MOSFET, but also increases the cooldown time between turing off the MOSFET and turning it back on. If load capacitors do not get fully charged before the MOSFET turning off, there is risk of the capacitor discharging more than it charged during cooldown. To guarantee normal powerup behavior, C10 must be sufficiently large to allow linear operation of the MOSFET for as long as the rise time of V-MOTOR at the maximum allowed current, but not exceed the heat dissipation capacity of the MOSFET.

Replacing C10 (0.01uF) with 2.2uF seems to solve the problem. The value is roughly estimated based on the timing diagram in the LT4356 datasheet. Capacitor ESR and MOSFET thermal properties must be considered to obtain a final value for the replacement.

With the replaced capacitor, the previously-not-working-with-SUJ QLA functions normally with dSIB+4SUJ.

The following waveforms were captured with the fixed QLA connected to dSIB and two SUJ.

ds1z_quickprint21

CH1 V-MOTOR

The motor voltage rises smoothly without causing the MOSFET to shutdown. The MOSFET does not seem to overheat for the duration of linear operation.

The cause of dSIB+SUJ draining V-MOTOR is still under investigation.

keshuaixu commented 6 years ago

Increasing C10 too much fries the MOSFET.

C10 must be small enough that it will turn off the MOSFET before the MOSFET falls out of the safe operating area and be big enough to fully charge the capacitors. What's an appropriate value?

I used another QLA (v1.2) because I fried the original one.

QLA without modification (C10 = 0.01 uF)

No load connected.

ds1z_quickprint24

CH1 48V input. CH2 V-MOTOR. CH3 C10.

QLA with C10 = 0.11 uF

No load connected.

ds1z_quickprint34

CH1 48V input. CH2 V-MOTOR. CH3 C10.

Rise time estimation

Using QLA with C10 = 0.11 uF. No load connected.

ds1z_quickprint39 ds1z_quickprint40 ds1z_quickprint41

The total rise time is about 3 ms. Should be much shorter if the capacitors don't discharge between rises.

Current estimation with no load

I measured the slope of V-MOTOR to estimate the current.

Using QLA with C10 = 0.11 uF. No load connected.

Charging current

ds1z_quickprint35

The slope is very consistent (about 17 - 18 kV/s) throughout the entire 0-48V range.

I = v_dot * C
I_charge = 17.3 kV/s * 1200 uF = 20.8 A

This is 30% higher than the set current limit.

Discharging current

ds1z_quickprint36

I_discharge = (-4.6 V / 39.1 ms) * 1200 uF = -0.141 A

Current estimation with dSIB+3SUJ attached

The behavior is not consistent. I observed three types of behavior:

  1. A more-struggle version of the no-load behavior. V-MOTOR takes more tries to rise to 48V.

ds1z_quickprint42

  1. Distorted version of 1. See two figures below.

ds1z_quickprint45 ds1z_quickprint47

  1. Rises to 48V without hiccuping. See two figures below.

ds1z_quickprint49 ds1z_quickprint50

Notice that the C10 did not get charged when current is at 19 A. Maybe I made a cold solder joint? but it charged slower than other measurements.

During the test, I observed 1 and 2 first. Then I started to notice that when enable, the indicator lights for the amp axes that have SUJ plugged fast blink a couple times then turn off (indicating fault). The amp status light on the axis without SUJ stayed on.

After a couple on/off cycles, the behavior switched to 3 and stayed that way. Power cycling did not change the behavior.

Unplugging the QLA from dSIB changed the behavior back to 1.

Charging - not much difference.

ds1z_quickprint43

Discharging - 0.179 A. About 40 mA higher than no load.

ds1z_quickprint44

Simulation

To better estimate the rise time, I modeled the system as following.

Which translates to this matlab ode function.

I assume the system ESR is 50 milliohms (power supply, connectors, resistors, mosfets).

Red is the current flowing through the MOSFET in Amps. Blue is V-MOTOR in Volts. X axis is time in seconds.

Current limit at 15A

v_in = 48;
i_lim = 15;
r_esr = 0.05;
c_out = 1200e-6;
r_leak = inf;

about 4 ms rise time.

Current limit at 20A

v_in = 48;
i_lim = 20;
r_esr = 0.05;
c_out = 1200e-6;
r_leak = inf;

about 3 ms rise time.. closer to what we see in real measurement.

Effect of leakage

v_in = 48;
i_lim = 15;
r_esr = 0.05;
c_out = 1200e-6;
r_leak = 10;

Even with a 10 Ohm resistor draining the V-MOTOR, the rise time is still under 5 ms.

keshuaixu commented 6 years ago

Strange behavior when dSIB+SUJ are attached

The amps did enable 40 ms after the power enable. Not enabling the amps stopped the behavior 2 and I consistently get behavior 1.

(amps enabled 40ms after the power. measuring the current when amps are enabled) ds1z_quickprint54

The caps discharged at 1.4 A when the amps are enabled because the current loop was not calibrated. Confirmed by measuring the voltage across a 10 Ohm resistive load. The QLA drives about 400 mA on one of the axes.

We can increase the 40ms delay between power enable and amp enable to mitigate this issue.

Enabling the amps after the capacitors get fully charged fixed the amp fault problem in the last post.

(measuring the current when amps are powered down) ds1z_quickprint53

0.21 A

Current limit is too high

I used an uncalibrated tektronix ps280 and an uncalibrated Fluke 87V in hi res mode.

2.00 A tektronix ps280 ±(0.5% of rdg + 2 digits)
6.08 mV fluke 87v ±(0.05% + 1)

3.03 mOhm (min 2.99 mOhm if all instruments are in spec)
keshuaixu commented 6 years ago

Are the non-disabled amps drawing too much current?

(no modification. one side of the amp always on. the other side always off.) ds1z_quickprint60

(shorted the floating (pulled high) enable pins to ground. both side of amps always off.) ds1z_quickprint61

The non-disabled amps contribute perceivable current draw. Something else also leaks current.

keshuaixu commented 6 years ago

SNS pin. AC coupled

ds1z_quickprint63

It drops a lot because the 48V supply drops a lot. Don't have a good way to measure the differential voltage at high common mode offset.

keshuaixu commented 6 years ago

Solution: turn on the power supply when the QLA enables power

The designer suggested that we should turn on the power supply when the QLA enables power.

I took a new QLA without any modification and connected it to dSIB+3SUJ. 48V power always on. As expected, the V-MOTOR could not rise to full voltage.

ds1z_quickprint78 (Enable QLA power after the power supply is fully on. V-MOTOR does not rise to full voltage.)

I connected the remote on/off of the power supply to the safety relay on QLA so the power supply turns on when the safety relay closes. The power supply takes a bit of time to reach full voltage, which limited the slew rate of V-MOTOR and inheriently the capacitor charging current. This does not trigger the overcurrent protection.

power supply datasheet

ds1z_quickprint77 (Turn on the power supply the same time as the QLA motor power. Rise time ~25 ms.)

I also tried plugging in the power supply after enabling the QLA motor power. The power supply probably needs more time to charge the input caps, which slowed down the rise time to ~27 ms.

ds1z_quickprint79 (Plug in the power supply after enabling the QLA motor power. )

Recommendations

  1. We can circumvent the overcurrent problem by turning on the power supplies the same time as we enable the motor power on QLA. The power supply in the dSIB box has the remote on/off capability, but unfortunately the logic is inverted (input energized=power off). We need a relay to convert the enable signal (on=12V/off=floating) from the safety chain to a open/close switch state. If we find an alternative power supply with a non-inverted logic, we can simplify the wiring.

  2. We can increase the timing capacitor C10 slightly in the next build so the QLA can fully power on without triggering the overcurrent protection at lower voltage (24V).

  3. We can increase the delay between MV-GOOD and amp enable to about 200 ms to accomodate both bench power supply (<200ms) and high-current power supply (30ms).

keshuaixu commented 6 years ago

How long to wait between power-off and power-on?

The 48V power supply takes about 2.5s to drain from 48V to 0V.

ds1z_quickprint85 (CH1: V-MOTOR. CH2: 48V power supply output)

But we don't have to wait for the 48V to fully drain. 1.3 second seems to be approximately the threshold between working and broken.

ds1z_quickprint92 (broken)

ds1z_quickprint90 (working)

To be safe, I recommend waiting for 2s between power-off and power-on.