I am looking at two different ways of controlling motor speed and torque of a simple small DC motor. The circuit on the right is the analogue circuit with the current provided by the power bjt. Here, by connecting a very small resistance, we can provide a feedback signal proportional to the current going through the motor.

The circuit on the left uses a PWM signal to control the motor speed. My question is how would you provide the same current feedback in this circuit as was done on the analogue circuit? Would the motor be enough of a low pass filter that you could simply place the small feedback resistor is series with the motor like it was done on the right (but still within the diode)?

Many thanks in advance.



1 Answer 1


Is the motor inductance enough for LPF action?

Your model of the motor is wrong. There should be also a voltage source which presents the induced voltage which in simplest models is considered to be DC which is proportional to RPM. It's not clean DC, it's approximately sine tops which are separated by peaks and oscillations caused by inductance and commutation.

Consider to use this model as a simple approximation:

enter image description here

The thick vertical peaks in the induced voltage Ui curve present noise and oscillations caused by commutation and inductance, actually by inductance La, but no harm, it's summed to the by rotation induced voltage. Nothing guarantees that there's sure clean zone between the noise bursts. If the brushes are worn noise can be continuous. The average of Ui is coarsely proportional with the rotation speed (=RPM).

The noise and systematic waving which exist in Ui can be seen also in motor current. The noise is probably a little reduced because in La induced peaks occur as voltage which brake the changes in the current. But long enough poor contacts surely can be seen.

You need quite effective lowpass filtering to get usable motor current estimate. How much filtering- it must be tested. I guess your PWM frequency is so high that its filtering needs are cured without extra effort. But that's a guess only.

Note: You need an estimate of noiseless Ui to know the rotation speed. It can be calculated in the program or it can be formed with analog circuit which gets the motor input voltage and the current.

Start by measuring the parameters of the motor. To get the proportionality between RPM and Ui you must rotate the motor with known speed. It's also possible to measure reached speeds with different input voltages.

Friction torque makes the motor to eat some current without any external load (that torque is unavailable for external loads). Friction depends strongly on RPM in a complex way, so to get the induction modelled properly without tricky math rotate the motor and use it as a generator.

  • \$\begingroup\$ This is excellent, thanks so much. \$\endgroup\$
    – arry_h
    Apr 4, 2020 at 10:57
  • 1
    \$\begingroup\$ Note that you can get some of these from the motor specs. The stall current Imax at nomintal voltage Vm gives you the motor resistance Ra = Vm / Imax. The rotation induced voltage Ui is roughly linear with rpm, and torque is roughly linear with current. The no-load current Imin and max rpm Nmax can tell you the induced voltage constant Kv which can tell you Ui for a given rpm N where Ui = Kv * N, because Vm = Kv * Nmax + Imin*Ra, so Kv = (Vm - Imin*Ra)/Nmax \$\endgroup\$ Oct 14, 2022 at 4:45

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.