1
\$\begingroup\$

I am having considerable amplitude of voltage transients in my ~60V stepper driver design. I referenced High-Voltage Stepper Reference Design Using DRV8711 document for building the circuit albeit with the available and suitable parts for my application. The circuit works fine under operation but my debugger usually fails to connect when the motor is connected.

There are 3 power rails (12V, 24V, 60V) present in the PCB and when stepper driver is activated all rails subject to the same transients but with the amplitude scaled to their voltage so 12V rail has around 4Vpp transients while 60V rail goes up to ~25Vpp. This makes me thing that it might be a ground loop or a measurement problem. I am sure that power supply is fine and transients aren't present when measured directly at the PSU output but only at the PCB.

Effect still occurs:

  1. When motor is disconnected but the driver is stepped from MCU.
  2. Changing parameters of the driver and step rate doesn't seem to have any effect.
  3. Placed external FR207 diodes to half bridges.
  4. Increased bulk capacitor / added also a ceramic cap in parallel.
  5. Increased gate resistor to 50Ω, no change.

When I remove C57, effect seems to be amplified to almost 50Vpp.

HSBA0256 Dual N-Ch 100V Fast Switching MOSFETs

EG2132 Dual Gate Driver

Schematic
Schematic

Top Layer
Top Layer

Bottom Layer
Bottom Layer

Transient
Transient 1

Transient Zoomed In
Transient 2

12V Rail when driver is enabled
12V

Original Measurement Method
Scope 1

Modified GND probe
Scope 2

Scope 3

Scope 4

After Inductor addition to 60V Power Rail:

Scope DC Couple DC Couple

Scope AC Couple AC Couple

\$\endgroup\$
6
  • 1
    \$\begingroup\$ Yes, transients on the order of 100ns and below are very much layout-dependent; please show a photograph of how you are testing and probing the circuit. Beware that your (70MHz?) scope may not have sufficient bandwidth to fully resolve this event, either. \$\endgroup\$ Commented Apr 5 at 19:40
  • \$\begingroup\$ @TimWilliams Added my measuring methods. I also tried wrapping an enameled wire instead of the ground alligator clip and the effect seems to be much insignificant. But I'm still not sure why this prevents me to reprogram the MCU while motor is conencted if the issue is in the measurement. Also the scope is hacked to remove the BW limit which I believe can go up to 200Mhz according to tests. \$\endgroup\$
    – Berkays
    Commented Apr 5 at 20:56
  • \$\begingroup\$ @Berkays W.r.t. but my debugger usually fails to connect when the motor is connected which MCU are you using and which type of debugger is in use? Since the question mentions a TI reference design, does Hardware checklist on the TI web page about JTAG connection issues help? \$\endgroup\$ Commented Apr 5 at 23:36
  • 2
    \$\begingroup\$ Your tight probe loop was a good idea, but am not convinced its effect was "insignificant". Ringing changed from 35 MHz to over 50 MHz, and amplitude was halved. Am also unsure if this 'scope can manage a 60V DC offset while set to 2V/div - that's asking a lot. Why not AC-couple CH_1? In any case, these transients might not be significant. I'd suggest looking for ground loop problems. \$\endgroup\$
    – glen_geek
    Commented Apr 6 at 0:05
  • \$\begingroup\$ @ChesterGillon The debugger in question is an Stlink targeting an STM32 MCU using SWD interface. It is connected via a 10 Pin flat ribbon cable. \$\endgroup\$
    – Berkays
    Commented Apr 6 at 9:59

1 Answer 1

1
\$\begingroup\$

It's not clear if you have shoot-through problems, but you have rise-time problems at least.

The switching speed is too fast, launching EM pulses down the motor cables, the reaction of which ("every action has an equal and opposite reaction") causes the board's ground potential (with respect to its surroundings) to kick around. Which in turn imposes a voltage drop / current flow across any cables connecting to it.

This is real electromagnetism in action: the waveform truly is fast enough that propagation and wave effects are relevant. This is mostly in terms of energy conducted along wires, but radiation will even be perceptible even with such mean instrument as the oscilloscope.

I'm guessing your debug cable is plain naked ribbon cable, so the voltage drop imposed across it will be a significant fraction of the incident voltage. That is, if VCM is more than a couple volts (and it definitely is here), the voltage drop across the debugger VDD/GND wires and not the signal wires will corrupt the logic levels (which are merely 3.3V LVCMOS or whatever).

Ferrite beads on the debug cable will help, but far more effect is required than even a handful of ferrites can muster. Needless to say, you're also blowing out any nearby radio services, and might even be corrupting data on nearby cables (maybe you have other unshielded signals in or around the project, or connected to a nearby computer; or shielded cables but the shield connections are flaky, as sometimes happens). The noise must be addressed at the source.

Give these a try:

enter image description here

Light green: scrape away soldermask to expose bare copper.
Bright red: cut trace here.
Light red: component placement.

  1. Yellow circled (1)'s: add 1206 or 1210 ceramic chip capacitors, as large as is available. Probably 2.2uF 100V. Prefer X5R or X7R type.

    This provides bypass at the switch node supply. C57 is far too distant, and not enough by itself, to have adequate effect.

  2. Cut the +60V supply trace and insert an inductor. Not much is required, 100s of nH will even do. Saturation current rated at least the maximum DC supply current; I'm guessing, several amperes.

    If you have some spare magnetic cores, a few turns around an open (E or C) ferrite, or through a powdered iron toroid (typically yellow-white or green-blue colored; solid colors, or bare gray/black, are likely high-mu ferrite that will not work) will do, or a dozen turns of hook-up wire at a 5cm diameter (air core) will do. Keep wires/cables away from the inductor, of course.

  3. Optional, but given that I don't see any other capacitors in this area, it is recommended. Same procedure as (1), add ceramic capacitors at (3).

  4. Add filtering to the motor outputs:

enter image description here

Yellow: these should be large-ish ferrite beads or rings (1-4cm OD if tubular, 2-5cm OD if toroidal), and pass each wire through several passes (more if toroidal).

Ideally this would be done on board, with a few µH inductor (rated for peak motor output / load current), then an R+C snubber to GND at the connector, typically a few nF plus 10Ω or so (typically, \$R = \sqrt{L/C}\$). This filters the switching node, but does increase switching loss (the resistor dissipates whatever charge goes into/out of the snubber capacitor).

You should also increase gate resistors until the switch node risetime increases. Compare gate and drain waveforms to ensure you aren't causing shoot-through.

If increasing gate resistance isn't having much effect on risetime (dV/dt), consider adding an R+C from drain to gate. Not much should be needed; I would suggest starting with a value of 10Ω + 100pF and go from there.

For future improvement:

The switching loop length is large, particularly the ground-return path (through the thin traces to R42/R43), and routing it on both sides ensures ground is cut off between the bridges and drivers/controller (that is, ground-return impedance is high, a circuitous path is taken instead).

The TI reference design is not very easy to read, but is worth studying. Their switching loop is much tighter, and this translates to better switching performance, lower losses and lower emissions. Check against application notes for relevant controllers and drivers as well.

\$\endgroup\$
6
  • \$\begingroup\$ Nice bead graphic. Might it help to twist together A1~A2 and twist together B1~B2 ? If micro-stepping, doing so might be a bad idea. Hard to tell how long these wires are. \$\endgroup\$
    – glen_geek
    Commented Apr 6 at 0:26
  • \$\begingroup\$ Probably not -- with switching so fast, the coincidence of edges matters, and it's probably better to filter each one. At the very least, looping the whole cable multiple times through a large ferrite would be a start though. \$\endgroup\$ Commented Apr 6 at 1:14
  • \$\begingroup\$ @TimWilliams Definetly will try these suggestions. The debug cable is a 10 Pin flat ribbon cable connected to a header at the other end of PCB which is around 15cm further from the motor header. Also note that the transients still occur even if the motor is disconnected. Do you think if adding external schottky diodes will help with the negative transients? Should the Drain-Gate snubber be placed in the high side or low side? Thanks for the detailed answer. \$\endgroup\$
    – Berkays
    Commented Apr 6 at 10:07
  • \$\begingroup\$ Snubbers would be for all transistors. If you can isolate a single phase switching, you can probe that alone and try snubbers on high, low or both, along with different gate resistor values, and see the effect. Transients with the motor disconnected are likely conducted along the supply connection and off the board (towards the power supply), hence the (2) suggestion to quash that path. \$\endgroup\$ Commented Apr 6 at 13:58
  • \$\begingroup\$ @TimWilliams So I added the inductor and now only noise left seems to be the power supply noise. I also tried bunch of 100V SMD 0805 capacitors in the 1 position and they instantly shorted as soon as the PSU is switched on. Also tried 400V couple nF through hole cap which also shorted. I added the measurements after the Inductor in the original post. \$\endgroup\$
    – Berkays
    Commented Apr 16 at 18:31

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.