I'm using a stack of Arduino shields DC motor control, firmware at
https://github.com/ezrec/BrundleFab-firmware
It is very big and bloaty, and the DC motor control is very experimental, but the Axis_DCMotor.h class contains all the magic.
I'm working on velocity control at the moment (for accurate multi-axis movements), but it's still a work in progress.
I'm using the Adafruit MotorShield V1 or DC motor control, as they are directy tied to the PWMs, and I can update them with just a port write, as opposed to I2C via the Adafruit Motor Shield V2 devices.