Electrical – Cant get a grasp on how a full bridge on IR2104 works

arduinodc motorh-bridgemosfet-driver

I'm trying to build a full bridge DC motor driver on two IR2401 using an Arduino Motor Driver Shield as a reference.
Arduino DC motor driver schematic
It is recommended (if i understand right) to drive this kind of circuit as follows: put a HIGH at [!SD] to enable the circuit and PWM at [IN], where PWM duty cycle will set the duty cycle of upper or lower FET in a half-bridge.

Now when I try to combine it to form a full bridge – here comes trouble. If I understand right, there will be a moment in circuit's operation, when the opposite direction FETs will be toggled, so my motor will basically be braking a certain percentage of time.
The bridge is powered by booster circuit, so FETs don't need bootstrapping.
For example, if I want to turn the engine ON to 20% of power I will send a 20% PWM to the upper IR2104 and 80% PWM to the lower, this way it will open corresponding FETs (Q6 and Q7), but at the other PWM's half-period there will be Q5 and Q8 opened, effectively setting the motor to a counter-rotation mode. Is there any logic in this opearation mode for this circuit or I'm misleaded in some way?

Pic 1: Normal operation, simple logic LOW on the "B" side, PWM to control power on the "A" side.

EDIT: Added an explanation of my concern, added a note about the booster circuit

Normal operation

Pic 2: Motor winding short circuit when PWM goes to negative half-period.
Motor winding short-circuit

Best Answer

If you operate the H bridge as you describe then yes, your motor will be reversing. The sensible approach is to use one half of the H bridge for PWM and the other half with logic levels that switch either the top or bottom MOSFET on for the duration of rotation in the direction you wish to go.

In my innocence on this subject of PWM switching I raised this question (a few years ago) that you may find useful to read. If you still want to have full PWM on both halves, you have to consider that the 50% PWM scenario is the "motor-stopped" situation.