Small motions from a brushed DC gear motor? Truly impossible? - Page 1
Forum section: electronics / beginners

author: Infraviolet
author_rank: Super Contributor
timestamp: March 20, 2023, 10:09:12 pm
content: Is there any way to reliably get a geared brushed DC motor to make small angle rotations (of say 1 to 5 degrees)? I always seem to find that if I try a really low PWM proportion no motion occurs until a threshold above which motion is "quite" (20 or 30 percent of the maximum motor speed often) fast immediately. And if I then try to power the motor from a short timed burst of this minimum PWM proportion then either the burst is short enough that no motion occurs at all, until after some length threshold the burst results in a far larger motion than desired.This has been the case for a whole variety of DC motors I've tried, and trying to use an encoder for any sort of feedback control to achieve small motions usually is more likelyto results in oscillating about the desired position than actually making a small angle turn. PID control doesn't seem to help either, it can work for moving a motor over large angles with an ok accuracy, but massively overshoots when you try to command a small angular displacement motion be made.I don't think it can be a matter of the small angle motions being impossible due to the discrete stable positions of the rotor within the motor itelf, because the inbuilt gearboxes have factors of several hundred so 2 or 3 discrete positions divided by multiple hundreds should still be giving discrete positions only a small raction of a degree apart.Is it completely impossible to get small angle precise motions from brushed DC gear motors? Or is there some technique I've missed hearing about? Can the frequency of the PWM signal make much difference? Would feeding the motor from an actually variable voltage rather than PWMing help?Thanks

author: BeBuLamar
author_rank: Super Contributor
timestamp: March 20, 2023, 10:14:18 pm
content: use one with a reduction gear box. Only servo motor can do what you want direct drive.

author: mikeselectricstuff
author_rank: Super Contributor
timestamp: March 20, 2023, 10:20:24 pm
content: Coreless moters may be better as the don't have the magnetic cogging of iron-cored types.If you want small movements without gearing, a microstepped stepper would be the way to do it.

author: Infraviolet
author_rank: Super Contributor
timestamp: March 20, 2023, 10:30:36 pm
content: The motor already has a reduction gearbox, and I could add extra stages, but that would somewhat defat the object.What I'm hoping to do is be able to use the same motor both to make small angluar motions, as I'm asking about here, andalso at other times to be able to run it at its full speed for larger motions. Further reduction would decrease the smallest angle it could move by, but would also mean it couldn't go as fast as wanted at other times.Doesn't a coreless motor type give you very little torque?

author: G-son
author_rank: Regular Contributor
timestamp: March 20, 2023, 11:36:00 pm
content: Seems like a tall order. Once you've applied enough force to overcome the friction holding it still that friction will drop, meaning that once you've got it moving it wants to keep moving, and unlike stepper motors for example there's no spot for it to naturally stop. Perhaps you could calm it down by applying a shorter reverse voltage pulse to help it stop right after the short (probably single) pulse to move it, but I doubt that would be very precise.

author: amyk
author_rank: Super Contributor
timestamp: March 21, 2023, 01:10:16 am
content: Yes, reverse-current braking should work, but be careful not to overheat the motor or overload the control electronics.

author: JustMeHere
author_rank: Frequent Contributor
timestamp: March 21, 2023, 03:17:26 am
content: Maybe a 5:1 Stepper:https://www.amazon.com/STEPPERONLINE-Planetary-Gearbox-Stepper-Printer/dp/B00WATUFIGThen you want a stepper driver:https://www.amazon.com/STEPPERONLINE-1-0-4-2A-20-50VDC-Micro-step-Resolutions/dp/B06Y5VPSFN

author: bidrohini1
author_rank: Contributor
timestamp: March 21, 2023, 06:34:23 am
content: I think stepper motor will be a better choice.

author: jonovid
author_rank: Super Contributor
timestamp: March 21, 2023, 06:58:43 am
content: bubble jet printers use brushed DC motors to cut costs, but must have a feedback loop to prevent inertial overrun.add a high resolution rotary encoder and then need to do some clever PWM coding.also some model train controllers try to make DC motors emulate the mass of full size locomotive / trainswith only the current of the DC motor brush bounce, as a feedback loop. correct me if i'm wrong about this one.

author: Siwastaja
author_rank: Super Contributor
timestamp: March 21, 2023, 09:27:00 am
content: Try half-bridge configuration (two MOSFETs instead of one + diode) first. This way you can run the motor in forced CCM (continuous conduction mode). In other words, regenerative braking.With a diode you can't regenerate: when Vin * D_pwm (PWM duty cycle) < V_bemf (equivalent voltage the motor would generate when rotated at that RPM), motor just freewheels. Without much mechanical load, it won't slow down fast, even if your feedback loop sets PWM to zero.With an active switch instead of diode, the situation is this: given any constant D_pwm, whenever V_bemf < Vin*D_pwm, motor produces positive torque (power is consumed from DC link); whenever V_bemf > Vin*D_pwm, motor produces negative torque (power is put back into DC link). This gives you symmetric control!If you only need the regen for stability against inertia (and there is no one to actually rotate the motor faster than your setpoint), you can dump the energy in the power supply capacitor. Large electrolytic will do. You still should measure the Vin and turn the MOSFETs off and let the motor freewheel if safe supply voltage is exceeded.By setting D_pwm to zero, the result is what others have suggested, DC braking. This is just edge case with infinite boost ratio and zero efficiency. But instead of some if(...) do_dc_braking() type of logic, I suggest just going with half-bridge PWM and then give your control loop a chance. It still needs careful tuning, and I don't recommend a pure PID; definitely consider feedforward + PID, because feedforward alone tends to do the right thing. Basically feedforward is: D_pwm = speed_setpoint * ff_coeff. Then you can off course add PID: D_pwm = speed_setpoint * ff_coeff + (measured_speed-speed_setpoint) * P_coeff and so on for integral and derivative.Measuring motor current and writing an inner PI control loop just for this current, then outer loop which controls the current setpoint, is also highly recommendable. But try first with your simple PWM controller. It could be good enough. It is definitely simpler because in a permanent magnet brushed (or BLDC) motor, PWM duty cycle directly controls speed pretty well; your main problem now is the PWM with a freewheeling diode can only regulate upwards.

author: Doctorandus_P
author_rank: Super Contributor
timestamp: March 21, 2023, 02:16:21 pm
content: My experience with simple brushed DC motors is that they are usually controllable to within half a resolution. An inherent property is that you have to overcome the friction of the brushes, and once you do that the rest of the torque is put into the motor inertia. If you want to fine tune your PID, then adding a static friction for the motor brushes may help a bit. But for a "low pole count" motor there is a ripple on the torque too when the commutator changes and this also makes it more difficult.And I agree with mikeselectricstuff. With a coreless motor you can also get better results. I have a few coreless motors that were designed to drive a capstan of an a video recorder (May even have been betamax), and these motors can run at around 5RPM at a very low voltage, and that is without any feedback.A flywheel can also help. Then you can give the motor a "kick" with a PWM pulse to overcome friction and get it moving, but because of the flywheel, the initial speed will stay low, so you have more time to decide when to stop the motor.And when starting about time...What is the speed of your PID loop? Even at a low motor speed it does not take much time to rotate a few degrees, and you need a few PID iterations, and you need a sensible speed input for your PID for it to work properly.

author: wraper
author_rank: Unknown
timestamp: March 21, 2023, 02:23:30 pm
content: Quote from: jonovid on March 21, 2023, 06:58:43 amIt's different, it does not mean that motor provides precise movement. Nor that it can rotate by small angle. But printhead operation timing can be adjusted according to its actual position.

author: Terry Bites
author_rank: Super Contributor
timestamp: March 21, 2023, 04:24:34 pm
content: There's stiction and friction and inertia in the system- nothing's going to move untill its been overcome.Backlash in the gearbox may contribute to a bad motor day as well.You also have the sector size of the commutator.If you only have a few sectors the angle the motor will turn before switching windings is high.That gives rise to a pulsating torqueSo you either use more reduction gear or belts and pullys and/ or a stepper as mike et al suggest.If you use speed reducing mechanics you'll can boost the torque and resolve very small angles. Win Win.