Electronic – Why does a DC motor doesn´t move with low OCR values

atmegadcmicrocontrollermotorpwm

I'm using a 6V DC motor for the first time and I've set up a timer on an atmega328p to create the PWM signal that then goes to the H-bridge (L293D).
My question is why, for example, using a 8 bit timer with a prescaler of 256, if I set the OCR below 80 the motor can't start moving but if I use a power supply, directly connected to the motor, it works perfectly to any voltage?

In other words: (80/256)*100% = 31% duty cicle —> 6V *31% = 1.86V

When I use the power supply with 1.86V all the way down to 0V the motor moves.

What's the reason for this to happen and how can I make the motor to move at slower speeds if I can't use low values? I'm trying to make PID control to control the motor position, I haven't started programming the PID but I am sure that it will need small PWM signal.

The motor has a gearbox with a ratio of 10:1

Motor Datasheet: Micro DC-Motor Modellspezifikationen

Best Answer

Although it may seem counter-intuitive, running a DC brush motor efficiently at a low PWM ratio requires that the motor switch between being connected to the supply and being shorted (not open-circuit). It will be necessary to use an H-bridge driver that can switch quickly, with judge enough "dead" time to prevent accidentally shorting the supply itself.

Motors have a certain amount of inductance, so it takes a little while for current to start flowing, and once current is flowing it will take awhile to stop. If you try to drive a motor at e.g. 25% duty cycle then during the first quarter of each cycle, the motor will have supply voltage across it so current will increase as energy flows from the supply into the motor. During the second quarter, the clamp diodes on the H-bridge will clamp the motor at a voltage equal to the supply voltage, but opposite in sign, so the current will decrease as energy flows from the motor back to the supply. During the third and fourth quarters of the cycle, there won't be any energy so the motor will sit with zero voltage and zero current. The average current in the motor will thus be about 1/4 of the level to which the current managed to climb in 1/4 of a cycle--not very much.

If instead of making the motor open-circuit, one made it short-circuit during the off part of each wave, then during the first 1/4 of the first cycle, motor current would increase as above, but during the remainder of each cycle it would decrease only slowly (the rate at which current will decrease depends upon the voltage across the motor inductance, and that would be kept very lower). Then during the first 1/4 of the second cycle, the current would increase a bit more, then drop only a little bit during the next 3/4 cycle, etc. Once the motor starts moving, the back EMF that generates will increase the rate at which current drops during the "off" cycle [energy will be transferred from the inductance to the mechanical load in that scenario]. If there is minimal mechanical loading, the equilibrium current will be achieved when the motor speed is about 1/4 of the motor's full-supply zero-load speed.

Note that when using this technique, it's important that the PWM rate be fast enough that the current doesn't have time to get to zero during each cycle. If the current does get to zero and the motor is turning, the inductor will take rotational energy and use it to build up torque in the direction opposite rotation. If the motor spends half its time producing forward torque and half producing reverse torque, much of the energy directed toward it will get converted into heat.