0
\$\begingroup\$

I need to drive a brushed DC motor (inside a linear actuator) with an electronics circuit. The cable feeding the actuator has, in addition to supply_A and supply_B wires, two wires for feedback signals (hall effect), and supply and ground for Hall-effect sensors.

I have so far used an off-the-shelf DC motor driver from DFRobot (DFR0601), which takes a logic PWM signal as input and spits out a high-power PWM signal which is fed directly to the motor.

This drives the motor fine, but the square-wave PWM signal creates severe crosstalk with the Hall feedback signals and completely messes the position monitoring, which I need to rely on (I am using two actuators and they need to operate without one getting ahead of the other).

I therefore need to address the crosstalk issue. As a temporary solution, I am adding an RLC filter between the driver module and the motor(s). This means filtering a high-power signal, which is not ideal. Here is a screenshot of the filter circuit.

enter image description here

This is only a temporary solution, as it is too bulky and too expensive for my actual application. Simulation yielded currents as high as 7 A through L and C. Parts I ended selecting are:

I will receive the parts in about a week, so I have not tested it yet, but as mentioned, this is only a short term patch.

I am looking at a more space efficient and power efficient way to address the crosstalk issue. Options I can think of are:

  1. Find a more efficient way to filter the PWM signal at the output of the DFR0601 module
  2. Find another driver module which outputs a non-PWM signal (must fit within 50mm × 50mm x 12.5mm)
  3. Ditch the DFR0601 and design my own driver, which would output a non-PWM signal (available real estate is approx 50 mm x 50 mm x 22 mm)
  4. ??

I searched for alternate modules, but most are bigger than the real estate I have available.

Separating the motor power wires from the low-power Hall signals could have been an option, but it introduces other complications which I would prefer avoiding. Besides, the motor power signals do run through my main PCB, close to where the Hall signals enter my microcontroller, so there would still be a risk of crosstalk there even if I separated the wires.

Can anyone advise on ways to address this issue? If I filter the "logic" PWM signal, what could be used to drive the motor(s)? Would it be advisable to use op-amps?

Other information:
Main supply: 28 VDC

Actuator specs:
Max voltage: 24 VDC
Motor resistance in stall mode: 3.3 Ω
Motor resistance under typical load/speed: 15 - 30 Ω
Cable run is approx. 12 feet Hall pulse rate is in the vicinity of 110 Hz The Hall supply line is fed from the 3.3v out of the RPi Pico

Microcontroller: RPi Pico
Max PWM freq: 62.5 MHz (currently set to 60 kHz due to DFR0601 limitation)
Plenty of pins available on the Pico if necessary (GPIOs, PWM, UART, SPI, I2C)
Need to drive two channels, both in forward and reverse modes.
Motor speed accuracy is not important, as long as both actuator units operate in sync (think of sit-stand desk as the application).
Actuators are operated for 5 to 10 seconds continuously, then are not operated for a period which can span 1 to several minutes.

Here is a screenshot of the current PCB layout (region of interest only). You can see MOT_1_A and MOT_1_B being the high-power PWM signals going to the DC motor, and HALL_1_A and HALL_1_B being the Hall signals going to RPI Pico inputs.

enter image description here

Here is a snapshot of signal measured at one of the signal GPIOs (RPi Pico), with the hall signal being disconnected at the motor end, so whatever appears on the scope is only high-power PWM interference being picked up through the cable run and possibly to some extent by the PCB traces. enter image description here

\$\endgroup\$
15
  • \$\begingroup\$ Is the module as close as possible to the motor? \$\endgroup\$ Commented Jan 22 at 18:34
  • \$\begingroup\$ Can you consider to build your own motor driver? If yes, it's probably easier to slow down the switching times directly on the MOSFET gate and let it take some more losses each switching to lower the rise and fall times. How does your Hall effect sensor situation look? Long cables? No decoupling? Integal part of the motor? \$\endgroup\$
    – winny
    Commented Jan 22 at 18:35
  • 1
    \$\begingroup\$ Consider filtering the Hall-effect sensor output. Way easier to filter small signals than high motor current. Also, you probably want to have a separated ground for the sensor that is NOT common with the motor. \$\endgroup\$
    – MOSFET
    Commented Jan 22 at 18:52
  • \$\begingroup\$ @user253751 The cable run between the motor and the driver is approximately 12 feet. \$\endgroup\$
    – MAX
    Commented Jan 22 at 20:31
  • \$\begingroup\$ Try to separate the ground for motor drive and Hall sensor. Try a ceramic capacitor straight across the motor terminals. \$\endgroup\$
    – winny
    Commented Jan 22 at 22:20

1 Answer 1

1
\$\begingroup\$

Can you put a hall sensor amplifier near the sensor itself? I presume so, since you say that there are independent sensor ground and power lines available at the sensor end.

My recommendation is to reduce the impedance to ground at both ends of the hall output data line, and buffer the signal (with an an emitter follower, for instance), to drive sufficient current along it:

schematic

simulate this circuit – Schematic created using CircuitLab

It's much harder for capacitively coupled noise to influence such a low impedance line. Magnetically induced currents (due to, say, a motor right next door) will also have a hard time competing with the 20mA or so that must flow around that data/ground loop, to register a "high" at the receiver end.

Don't forget the supply decoupling capacitor at the sensor end; sharp signal transitions will cause serious dips in power supply voltage there, due to those long, inductive power lines.

I'm not sure if you need R3. If the hall sensor has a push-pull output then you can omit R3. If it's an open collector output type, then you'll need R3.

The scope trace shows noise with strong components at 50kHz and higher, but not much below that. I imagine your hall sensor output is below a kilohertz, so you could filter away a lot of that noise quite effectively, with a simple RC filter at the receiver end:

schematic

simulate this circuit

R4 and C2 form a low pass filter with cut-off at around 10kHz.

\$\endgroup\$
3
  • \$\begingroup\$ Thank you for the detailed suggestion. Adding C1 would require complete disassembly of the lifting column (not even knowing if access is possible), which I am not too found of. I have asked the manufacturer to provide details/diagrams of Hall sensor circuitry. I will see what they respond. Amping/buffing at the output of Hall sensor would not be my first choice, as I would need to add circuitry within the column, but in lack of better option, I'll do it. \$\endgroup\$
    – MAX
    Commented Jan 23 at 19:16
  • \$\begingroup\$ [continued] The only "pull" I have on my Hall input is the RPi Pico on-chip pull-up/down, which I believe is 50-60kOhms. Adding a pull-down on the receiver side is an easy thing and will try as soon as I receive current rating specs from the column manufacturer, just so I don't fry the internals. Spectral content & filtering: You are correct, DC, 50 kHz, and higher frequency components. Typical Hall pulse rate is 110 Hz, with 60us rise/fall times, so pretty much all its spectral content is contained between DC and 1Khz to 2 kHz. I was thinking of going with 860 Ohm and 0.1uF for RC. \$\endgroup\$
    – MAX
    Commented Jan 23 at 19:35
  • \$\begingroup\$ Feel free to let me know your thoughts on the above. \$\endgroup\$
    – MAX
    Commented Jan 23 at 19:35

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