Why is my PWM efficiency about 50%?

Why is my PWM efficiency about 50%?

Ask QuestionAsked 3 days agoActive todayViewed 310 times2

I’m using a BTS7960 module with an Arduino to adjust the voltage for my DC motor.

When I check efficiency there is a problem. PWM efficiency is supposedly about 90% but mine is only about 50%.

I have a 7S3P 29V li-ion battery and a 12V DC motor. While I was using it 50% PWM mode, I calculated the efficiency of power consumption and I realized that I almost lost half power in PWM.

How I measured the efficiency:

  • I put a clamp meter between the battery and the BTS7960 and I have check voltage “B +” and “B-” terminals. Voltage is 29V and current is 11 amperes so my battery is giving 320 watts.
  • Then I checked the consumption of the DC motor. I put a clamp meter between the BTS7960 and the DC motor and I measured voltage “M+” to “M-” terminals. Voltage is 13,6 and current is 13,8 amperes so as I understand my DC motor consumes 187 watts.

Either my PWM module efficiency is very bad or I’m doing something wrong.

The BTS7960 module became really hot while testing.

If you ask why I dropped 29 volts to 13 volts and drive the DC motor, it is because I have a 7S3P li-ion battery and I have a 12 volt Dc motor. If I can overcome the problem, I will drive a 24 volt DC motor with a 7S3P battery.

What is the reason for the high power loss?

(edit)Additional information: My clamp meter is Unit UT210E. Also you can reach datahseet this link:

UT210E English Manual

Also I measured current with multi meter(Unit UT39C)

Lastly I made same circuit with dc-dc convertor. The energy loss in the measurement was very low and I saw this as normal aslo With dc-dc converter, the battery and cables was not very hot, but in pwm modulation, the battery, cables and bts7960 integrated was very hot.

enter image description here

arduinopwmpower-electronicsdc-motorShareCiteEditFollowFlagedited Apr 8 at 17:44StainlessSteelRat6,23022 gold badges1313 silver badges2828 bronze badgesasked Apr 8 at 12:22oğuz kaan çomoğlu2144 bronze badges

  • 1Comments are not for extended discussion; this conversation has been moved to chat. – Voltage Spike yesterday
  • “I’m using a BTS7960 module with an Arduino – what PWM frequency is your Arduino producing? “I have a 12 volt Dc motor” – Which motor is it? – Bruce Abbott yesterday
  • “in pwm modulation, the battery, cables and bts7960 integrated was very hot.” – what is the Ah capacity and max amps or ‘C’ rating of your battery, and what gauge is the wire? – Bruce Abbott yesterday

Add a commentStart a bounty

5 Answers


Your multimeter and your clamp meter are both not meant to observe PWM going through an inductive devices.

You need an oscilloscope with a high-bandwidth method of sensing current. I don’t know your PWM frequency, but rule of thumb: estimate how fast the transition from fully on to fully off has to be, take the inverse of that time (yielding a frequency), and take 5, better at least 7 times that frequency as minimum bandwidth if you really want to see what happens on that cable. It’s not DC, by any meaning of that word.

Current measurements can be quite tricky, so you might end up getting a hall effect sensor IC with something like 400 kHz or 1 MHz of bandwidth, and just live with current components that you cut off through that not-really-sufficient bandwidth.ShareCiteEditFollowFlaganswered Apr 8 at 13:15Marcus Müller67.4k44 gold badges100100 silver badges179179 bronze badges

  • 1I check the pwm frequency with oscilloscope and it was 500HZ and duty cycle was %50. I just want know what is my real power consumption ? Or can I say is my real power consumption can measure between the battery and the BTS7960 (29 volt * 11 amper) because there is no modulation on this cable. And lastly how I can measure current after pwm modulation ? – oğuz kaan çomoğlu 2 days ago 
  • 21. 500 Hz sounds very low for a PWM frequency. 2. it’s not about the frequency, but about the bandwidth, which is defined (mostly) by how steep the edges between on and off are. – Marcus Müller 2 days ago
  • 11- Yes I read somewhere about this, it’s making noise and I check my hedge trimmer it’s working with 50KHz pwm(%75 duty cycle). 2- You mean duty cycle ?(I’m sorry I am asking because I do not have enough information. Maybe I can bother you) – oğuz kaan çomoğlu 2 days ago
  • 1no, I don’t mean duty cycle. I mean edge speed (as I said three times now), the time it takes to go from “on” to “off” (and vice versa). – Marcus Müller 2 days ago
  • The arduino uno pwm output library has a default frequency of around 700Hz – Drew yesterday

Add a comment3

You need to increase PWM frequency to at least a few kHz for the motor inductance to smooth out the PWM. Some types of motors have more inductance than others, so the optimum frequency will vary with motor type.

Otherwise you will get large RMS current and corresponding large I^2*R losses in the motor, transistors and connecting wires. The BTS7960 is supposed to be good up to 25kHz, perhaps optimum frequency would be in the 10-15kHz range. Here is some info on changing PWM frequency.

When you have a high enough frequency you may be able to accurately read the motor current with your clamp-on (because it will be relatively smooth), however reading the battery current will not likely be very close to correct.ShareCiteEditFollowFlaganswered 19 hours agoSpehro Pefhany286k1212 gold badges239239 silver badges598598 bronze badgesAdd a comment3

The Arduino’s default PWM frequency is ~490 Hz. At this low frequency the motor probably won’t have sufficient inductance to make the current continuous, so the rms current and voltage will be much higher than the average values that your meters read.

I created a simulation in LTspice representing your situation, adjusting the motor’s internal resistance, inductance, and back-emf to get figures close to your measurements. Here’s the circuit:-


simulate this circuit – Schematic created using CircuitLab

You say that the battery and wiring got hot, so I added resistors R1 and R2 representing possible battery and wiring resistance. With these values LTspice calculated:-

  • Average battery current: 11.2 A
  • rms battery current: 16.7 A
  • Average motor current: 13.6 A
  • rms motor current: 18 A
  • Average motor voltage: 13.5 V

Here’s a plot of the motor current. The motor’s inductance has slowed the current rise and fall a little, but not nearly enough to stop it reaching a peak of ~30 A. This high peak current causes extra loss in the resistances in the circuit.

enter image description here

Then I changed the PWM frequency to 3 kHz, and got this:-

enter image description here

Now the peak current is only 16.8 A, the rms current is 11.5 A, and the average current is 11 A. As well as being more efficient, the higher PWM frequency produces average meter readings closer to the rms values that represent the true power losses in the circuit.ShareCiteEditFollowFlaganswered 17 hours agoBruce Abbott44k11 gold badge3737 silver badges6767 bronze badgesAdd a comment1

I quite sure that is measuring problem because if you loss power of 133W on driver, it totally melt down due to power converted to heat. Only reason for that is measuring tool can not average changing voltage or current to get correct value. I suggest to use RD low pass filter before measuring as shown. Note value for component just for example, you need to caluculate it by your self.


simulate this circuit – Schematic created using CircuitLabShareCiteEditFollowFlaganswered yesterdayM lab61711 silver badge1414 bronze badgesAdd a comment-3Locked. There are disputes about this answer’s content being resolved at this time. It is not currently accepting new interactions.


How come my BTS7960 DC Motor Driver using PWM has efficiency of only 50%?


Well, there are many possible reasons. Perhaps we can do some research to find out the reason.

1. I would suggest to wire up a test rig for testing the motor driver with a DC motor, as shown below.

btn7971n test rig


a. The OP’s BTS7971 driver has been replaced by the newer model BTN7971B. They have very similar characteristics and operation. So I have taken the liberty to test the newer driver. I think the OP can compare and contrast the two devices and modify my suggested test accordingly.

2. Now I am going to test the motor driver, measuring the voltage across the motor coil and the current passing through it.

btn7971 pwm test

3. The OP might have initialized his clamp meter with “VFC”

I googled to find that “VFC” introduces a low pass filter for AC measurements – cutting off above 400 Hz.

VFC might be good for AC measurement of mains frequency of 50Hz/60Hz.

However, if the OP is measuring at V/I values at PWM frequency 400Hz or above, signals should be much attenuated by the VFC low pass filter.

4. PWM Module for inputting to DC Motor Driver BTN7971b

The time has come to use my cheappy US$2 PWM module to test the motor driver. I will first try randomly, a couple of frequencies and duty cycles, to get a feeling how the OP get so low a 50% efficiency. See Refs 3, 4 for more details on how I use the cheapy toy.

BTW, I am also going to use my cheapy, US$300 scope to measure the motor coil voltage and current. This morning I read a EESE Q&A about accuracy between using a scope and a DMM. This Q&A every well refreshes my memory of using a scope. Perhaps the OP and other newbie readers might also find it educational.

Differences between oscilloscope, multimeter, and power supply voltage readings – EESE, Asked 4 days ago, Active yesterday, Viewed 2k times

xy pwm module

5. BTN7971b Dual Half Bridge Module Wiring Explanation

I started learning motor driver with L293 and L293D (with flyback diode) which consists of 4 half bridges. So I learned how to use one half bridge to dirve one DC motor in one direction, then use two half bridge to form one full bridge to driver in two directions (still one coil), then all four coils as two full bridges to drive a bipolar stepper motor with two coils. Later I learned how to use L298N with two full bridges to drive two DC motors or one bipolar stepper motor. Going step by step, from half bridge, to one full bridge, to two full bridges, everything makes sense to me.

However, when first using this dual BTN7971b module with two BTN7971b, each forming one full bridge with two half bridges, I found it confused, because the datasheet is very brief, assuming not to be used by newbies. So I think it is useful for me ninja and newbies alike to go back to the past 1970’s to learn L293, L297, L298 etc which have detailed explanation and often with example app schematics and wiring diagrams I think knowing basic principle is very important, especially for the OP which is driving motors with huge (well, over 10A) current and power, which might be fatal, when things go wrong.

That is why, I have read basic things again, before doing the wiring part of this PWM motor efficiency test. I have included the basic wiring articles in the three L293D references (Refs 6 ~8) below. The tutorial by MakerPro is very newbie friendly and highly recommended.

6. PWM Sigal Waveform

Now I will be using this PWM signal to test the motor driver PWM efficiency.

pwm signal 1

7. The OP’s power connecting wire and motor driver module getting too hot problem

The OP says the motor driver and connecting wires are getting “very hot”. If the connecting wires are hot, the OP might have used wires too thin, and he might consider changing to a heavy duty wire. For me below 1A testing, I start with 500mA, using MIZU AWG #26 wires paralleled, or AWG #22 wires. If I find wires getting hot, I just parallel one more wire, and not bother checking out the AWG vs max current chart.

One the motor driver getting “too hot” problem, we need to do two things: (a) use a temperature sensor to measure the temperature at the IC or heat sink plate, (b) check the datasheet to see if it is within operation limit.

If it is really “too hot”, we can do a couple of things, including: (a) use a bigger heat sink, (b) parallel more drivers to share current load. (Ref 11), (c) check if motor driver is a fake/counterfeit guy, and replace it with a real one.

AWG Wire Gauge and Current Limits (AWG#26 ~= 2A, #22 ~= 7A, #16 ~= 20A) – Power Stream, 2019oct18

To measure the working temperature, I am using an industrial grade sensor (Ref 10) as shown in the following photo:

temp sensor


a. BTN7971B datasheet specifies operating characteristics over a range up to 150°C, and most important of all is that the IC has a built in temperature sensor and automatic thermal shut down/protection. So there is no worry that the IC will meltdown. In other words, talking about worries of “very hot”, or using heat sink etc, is just amateurish. So I won’t talk about it any more, or my reputation would be damaged, though I will use my cheapy CNY16, industrial grade, 0.1°C accuracy sensor to measure the IC heat sink temperature for the OP to compare and contrast, and his peace of mind.

8. Draft proposal on how to find the efficiency of a PWM motor driver

8.1 I have been hearing for years that the classic dual NPN BJT full H-bridge L298N motor driver module is energy inefficient, because of the energy loss of high Vce(sat) junctions of the H-bridge.

8.2 Now I am going to check out the energy efficiency of BJN7971B, a P/N-channel power MOSFET half bridge motor driver. Below is the draft testing plan.

current sense cct

/ to continue, …


(1) UNI-T UT210E Pro Mini Digital Clamp Meter, Auto Ranging TRMS Backlit VFC NCV Meter, AC/DC Current Voltage Frequency Resistance Capacitance Diode Tester

(2) UT210E Mini Cloamp Meters Operation Manual 2018may Rev.2 – UNI-T

(3) PWM Sig Gen Module, 1Hz-150kHz, Frequency, Duty Cycle, Adjustable – US$2

(4) How can Rpi4B python UART talk to XY PWM Signal Generators? – Asked 1 year, 5 months ago, Viewed 605 times

(5) Differences between oscilloscope, multimeter, and power supply voltage readings – EESE, Asked 4 days ago, Active yesterday, Viewed 2k times

(6) L293D and PWM speed control [Solved] Asked today Active today Viewed 41 times

(7) L293x Quadruple Half-H (Bridge) Drivers – TI

(8) All You Need to Know About L293D (Theory, features and specifications) – MakerPro 2018aug13

(9) How to control DC motor speed by motor driver with PWM input? – EESE, Asked 8 months ago Active today Viewed 902 times

(10) Precision Digial Temperature Sensor with Back Light LCD Display – TaoBao CNY16

(11) Anything wrong with connecting L298Ns in parallel? Asked 15 days ago Active 10 days ago Viewed 150 times

(12) AWG Wire Gauge and Current Limits (AWG#26 ~= 2A, #22 ~= 7A, #16 ~= 20A) – Power Stream, 2019oct18


Appendix A – UNI-T UT210E Pro Mini Digital Clamp Meter

clamp meter

vfc mode

ShareCiteEditFlagedited 1 hour agoanswered yesterdaytlfong011,67811 gold badge66 silver badges1212 bronze badges

  • 4The OP’s problem is most likely due to inadequate instrumentation that can not handle PWM. The OP doesn’t need to test with another driver as the one s/he’s got is not burning out so it can’t be dissipating that much heat. – Transistor yesterday
  • 7″Now I am going to test the motor driver …” As explained before, SE is not a blog site. If you think you know why the efficiency calculations are so low then just answer that question. There’s no need for a photo of another board or a schematic. – Transistor yesterday

Comments disabled on deleted / locked posts / reviews

Chat Record

Q: Why is my PWM efficiency about 50%?

oğuz kaan çomoğluI’m using a BTS7960 module with an Arduino to adjust the voltage for my DC motor. When I check efficiency there is a problem. PWM efficiency is supposedly about 90% but mine is only about 50%. I have a 7S3P 29V li-ion battery and a 12V DC motor. While I was using it 50% PWM mode, I calculated t…arduinopwmpower-electronicsdc-motorKartmanYour clamp meter may not like reading pwm and will lie to you. The BTS7960 is expected to get hot if there’s 11Amps flowing. It is not a perfect switch. TransistorDoes your clamp-on meter measure DC amps? Please edit to include the make, model and link to datasheet. oğuz kaan çomoğlu@Kartman Yes, I thought so, but then I measured it with a multimeter. The result turned out to be the same. John BirckheadAgree with @Kartman, you must be making an errant measurement. I can’t think of any scenario where you could be this inefficient. You would have to be dissipating 320-187 or 133 watts in your circuitry. oğuz kaan çomoğlu23@Transistor My clamp meter is “Unit ut 210e”, also I measured current with multimeter(Unit ut39c)@Transistor drive.google.com/file/d/0B4Jyby-tjH5oNnlQQmY1RktSUnc/view datasheet for clamp meter brhansSat 13:55If you were dissipating all of that extra 133W in the driver circuit then it would be hot enough to cook on. It’s far more likely that you clamp meter is not capable of giving accurate current readings on the PWMed motor side. TransistorPlease edit all the information into the question. Don’t sprinkle it through the comments where people have to search for it. oğuz kaan çomoğlu23@JohnBirckhead I want to tell you about a situation I observed, I tried the same circuit with a dc-dc converter. The battery and cables didn’t get too hot but when I used pwm modulation battery and cables became really too hot. So if the measurement was wrong in the first method, wouldn’t the battery be at the same temperature when I used a converter? Marcus Müller@oğuzkaançomoğlu again, please edit your question to include all information you gave here in the comments into your question. Thank you!@oğuzkaançomoğlu no, battery temperature has little to nothing to do with all this. Andrew Morton1) Cables getting hot can be cured by using thicker cables – what gauge wires are you using for the high-current paths? 2) What is the current rating of the DC-DC convertor that you used? Did you check its output voltage during the test? tlfong015524#oğuz kaan çomoğlu, I found your question interesting. I happen to have a BTN79xx driver module and a Rigol DS1054 50MHz scope to display the V-I waveforms. So perhaps I would spend this gloomy lock down Saturday afternoon to do some PWM efficiency evaluation. Now a couple of questions: (1) I read the UT201 clamp meter manual and I am surprised to read that it is for both V-I of AC and DC, as accurate to the order of 1mA. / to continue, …/ continued, …Or please let me know how you calibrate you meters. (2) I only have US$5 cheapy multimeters with the max current range of only 10A. So I will be doing small currents tests under 10A. I wonder if you have already done low current tests OK, and only found problem with bigger currents? Comments and counter suggestions welcome. Cheers.#oğuz kaan çomoğlu, (3) BTN79xx handles huge current, so it is important to sense current for alarm and security, (also for speed feedback control). You might like to skim my answer to the following question, to get a rough idea of how to do hardware fiddling for current sensing. (3a) Anything wrong with connecting L298Ns in parallel? electronics.stackexchange.com/questions/556772/…. (3) Are you OK to do DIY soldering work, like what described in the above question?#oğuz kaan çomoğlu, Your yr2004 7960 is similar to my yr2008 7971b, except a couple of years older. (4) Do you have any reason to prefer one over the other? If not, I would write an generic answer applicable to both drivers. (5) 7971B’s PWM freq is max 25kHz. I usually start off with a very low frequency, say 1kHz. (5) Do you have any particular preference on PWM frequency? If not, I will start with 1kHz, 50% dc. BTW, I for reliability/repeatability, I will us a cheapy manual/uart control digital sq wave sig gen for PWM test. Ah, lock down lunch time. See you later. Cheers.#oğuz kaan çomoğlu, just now I casually googled for more 7971b things that I don’t know that I don’t know. (6) I read that many Infineon devices seem manufactured in ShenZhen, and this might be a problem, because MIC products usually more easily fall off the truck and go to the grey market. I see that 7971b IC prices on TaoBao varies in a big range, sometimes double or higher, so I usually go to a reputable shop for which I have a VIP account. Is your 7960 module from eBay? You might have be a quality assurance problem! 🙂#oğuz kaan çomoğlu, (7) I also read TaoBao shops’ ads saying the my BTN7971B has replaced your BTS7960. So now I wouldn’t care much about 7960 and focus on 79711b. Sorry about that.  8 hours later… tlfong015524Sat 22:05@oğuzkaançomoğlu Your Uni-T UT 210E has a “VFC” feature which is a low pass filter, cutting off at 400Hz. So if you are measuring VI values of PWM frequency above 1kHz, say, signal might be much attenuated, and thus causing wrong reading you got. But I am just guessing, only 20% sure. Anyway, you can (1) Disable VFC mode, or (2) set PWM frequency much below 400Hz.  The last message was posted 2 days ago.


Categories: Uncategorized

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s

This site uses Akismet to reduce spam. Learn how your comment data is processed.