Odd behavior with Osepp Motor Driver MTD-01 Board, having deadband output Vltg

I am currently trying to control a 24V DC motor with this board. As per every example, I am pulsing the ENA pin with a PWM signal from 0-5V as well as sending a TTL high and low signal to the IN1/IN2 pins to get the motor spinning. My issue is here:

I can send it a PWM value of 100% Duty (outputs a confirmed ~5V) and I'm seeing Out 1 and Out 2 outputting a 24V as expected. I send it a PWM value of 0, and see Out1/2 = 0. When I try and send it a 50% Duty Cycle, I'm outputting 20V. Which is incorrect...it should be outputting 12V.

When I try a much lower value such as 20% Duty Cycle, I'm hovering around 13V. It appears that this PWM only scales (non-linearly) between 12-24V when I want my full scale value to be between 0-24V.

I have tested it with a spare MTD-01 board as well with the same issue. I have debugged and checked outputs of every pin and ensuring nothing has been short circuited.

Have anyone seen anything like this before?

My current wiring setup is:

  • Power + => VCC on the Driver board
  • Power Grnd => GND on the Driver Board
  • Arduino 5V => 5V on the Driver Board
  • Arduino Gnd => Gnd Pin on Driver Board
  • Arduino Pin 3 => ENA [Be sure it is ENA, and nothing on ENB. [I know we tie the 5V to ENA&ENB for stepper motors, but this is for a single DC motor]
  • Arduino Pin 8 => IN1
  • Arduino Pin 9 => IN2

The product link is here: http://osepp.com/products/breakout-board/motor-driver-module/

Thanks in advance!

You are making the incorrect assumption that the output voltage is a square wave - it isn't, its affected
very strongly by the inductance of the motor and its rotational back-EMF.