# Why do similar DC motors behave completely differently when powering them through a motor driver?

I am powering 4 motors of a rover through 2 motor controllers (Cytron MDDS30.)

I measured the voltage of the motors sending signals of 100%, 80% and 40% of the duty cycle. 100% works always fine, the others don't, and make the rover go sideways. The measurements are erratic, they also change when we send negative signals. When I powered the motors through a power source, they worked properly, RPMs were proportional to voltage but the current consumption changed (0.5 and 0.7 amperes, for details, see the 2nd table.)

Then I changed the installed motors for some old ones that I had. With the old ones, it always worked properly when powering them from the motor controller.

How can that be?

Installed Motors: Bosch CHP F 006 B20 098

Old motors that worked properly: Bosch CDP 0 986 337 250

A difference I noticed in the datasheets is a so-called "interference suppression component capacitor" highlighted in yellow. Also, the old motors didn't have a Hall sensor. (We never used it.)

I would like to hear that I can use these motors so we don't get back to old ones.

 Solution:

• I tried Sabertooth motor controllers in "Microcontroller R/C input" (Dip: 010110). They worked. (PWM signal)
• Then I tried the Cytron Motor Controller through "microcontroller analog/PWM" and they also worked (Dip: 10110000). I measured the performance and with a 100% duty cycle, it had 25V. After sending a duty cycle of 99% it dropped to 16.9V but then for lower duty cycles the drop was linear and the same in each wheel. So it worked.

[End of edit]

I used the motor controllers in serial packetized mode. A Raspberry Pi is sending the signal through USB. Pins in Cytron controllers correspond to this config (11100000) and (11100100).

We ran a series of tests measuring the voltage of each motor (speed was proportional.) I'm using a 25.6V 40 Ah LiFePo4 battery.

Measured voltages using the motor controller with the installed motors:

Then the measures of the RPMs and amperes using a power source. I only changed the voltage:

• Are you using feedback control on the motor speed, or are you just driving the motors open loop? Aug 20, 2021 at 16:15
• What does the supplier say about the advertised “plug n pray” ;). Can you measure coil inductance? Change f? Is it possible you have EMI issues on USB? Try a different control mode Aug 20, 2021 at 16:31
• the new ones have no sensors, I guess everything is open loop Aug 20, 2021 at 16:34
• How well does it work in Analog Mixed Mode, Logarithmic.? Aug 20, 2021 at 16:41
• @TonyStewartEE75 In the edit I added a successful test with the analog mode. Thanks! The supplier compatibility is made for Arduino, the tutorials and the code. I made another code for the raspberry for the serial communication. The most suspicious component for EMI would be a voltage down stepper but it is 5 cm away. Still, I used a phone battery and the problem kept. Yes, every test was in an open loop. Cytron does not allow exponential mode for serial mode. Aug 23, 2021 at 11:00

I measured the voltage of the motors sending signals of 100%, 80% and 40% of the duty cycle. 100% works always fine, the others don't,

Because at 100% DT the voltage coming from H-Bridge is DC, meanwhile at lower DT is pulsed PWM. Capacitance connected on the output of H-Bridge is a no go. Even with VFD and induction motor connected with very long cables cause issues.

You can install additional chokes/inductors on each wire if you would like to keep the motors as they are (without removing the caps). But it would be very trick to determine the correct inductance as you may fall into a resonance.

simulate this circuit – Schematic created using CircuitLab

You could for example use some chokes with known inductance, then use a function generator to make a frequency sweep, you do need an additional shunt resistor and you measure the current with a scope. The resonance frequency has to occur approx. 10x lower than PWM switching frequency. Increasing the inductance you do lower the resonance frequency. The inductors shall be rated for stall current $$\I_{stall}=\dfrac{V_{supply}}{R_a}\$$ or to a max. current you will provide to the motor.

simulate this circuit

I can try to offer some suggestions based on my experience dealing with a wide variety of both brushed and brushless motors.

You mentioned you are using the motor controller in packetized mode and not using any feedback, meaning the controller will just output an open-loop PWM signal.

I suspect the capacitor you pointed out in the "new" motor may be the issue. What is probably happening is that the frequency of the output PWM signal of the controller is high enough that the capacitor absorbs some of the power causing the responses you are observing. I am saying this because I have run into similar problems building the actual controller. In my case, I had a choice of what output frequency to use - conventional wisdom is that you keep the frequency high (above 16 kHz or even over 20 kHz) to minimize the audible noise generated by the motor coils during actuation. In my case, I had motors whose inductance and capacitance were such that at certain frequencies, the motors would barely move unless the duty cycle was over 40%. Lowering the frequency "fixed" that, but during experimentation, I noticed that the motor characteristics (mostly inductance but also capacitance) dominated the low duty cycle response of the motor, to the point where some motors were unusable at certain frequencies.

Another experience that I want to convey is the difference between using "hobby-level" equipment versus more professional grade equipment, and for sure I do not mean that "hobby-level" cannot be used or is inferior. But what you find in more professional equipment is detailed electrical specifications such as frequency of the PWM output signal (sometimes it can also be changed), inductance limits for the motors that can be driven etc. Conversely, I did not see any inductance specs on the motor itself either. In more professional equipment you can ensure that the controller and motors are compatible. Again, I have tried to use relatively high power motors (48V, 60A) with very low inductance and hobby-level motor controllers could just not handle the motors, even though their rated output current was 100A. Low inductance in particular is tricky as it triggers the overcurrent circuits and causes either full shutdown or choppy behavior.

So in summary to your question, it could very well be that the capacitor in the "new" motor, or the new motor's characteristics have shifted into the "incompatible" region with the controller. Unfortunately, without detailed specs, it is hard to tell. If it is possible to remove the capacitor, it may be worth a try as a way to confirm.

Lastly, you may want to look at the terminal waveform of the old motors versus the new ones with a scope - a simple DC meter will not give you additional information, but the scope will show you if the voltage just can't get there as low settings.

• I can do a quick test using another motor driver, hoping that this incompatibility range is the one that causes the failure. I will tell what happens. And yes, it is an open loop. If I close it with the hall sensors I would think that the behavior would be also weird as I can't send a proportional correction signal. I also need to ramp them a bit to protect the mechanical parts so that is also an issue. Aug 21, 2021 at 20:30
• Correct, going closed loop will not address the problem. It will be interesting to hear what you end up doing with it. Aug 23, 2021 at 0:02
• Updated the post with what I made. Unfortunately, I didn't try the combination of the other motor controllers + serial. But still, the results are weird as I would expect the same problem in the output signal of the Cytron regardless of the way I send the input. Aug 23, 2021 at 11:08

The motor cables ought to be at right angles to signal cables and perhaps shielded (STP) or UTP. ( although added pF /m may be an issue)

To further reduce EMI crosstalk a CM choke will raise and balance the impedance of emissions radiated from each wire.

simulate this circuit – Schematic created using CircuitLab