I've connected a DC motor to the PWM signal of an arduino using a MOSFET. The circuit works fine but the scaling of the signal to motor output is driving us nuts.
The PWM duty cycle does not directly correspond to the motor output percentage. The motor doesn't start moving till PWM duty cycle reaches 15% then the motor power jumps from 0 to 30%. And when the PWM signal reaches 100% the motor only gets to 90%. I've tried to scale this using regression methods but still can't eliminate all of the offsets. Regression methods involved recording motor output at certain given duty cycles then finding a mathematical function to relate the input needed to reach a certain output. I want to calibrate the system so that the output follows the input, ie 50% PWM signal corresponds with 50% output.
Am I missing something with how PWM works when controlling motors? I just can't seem to remove the non-linearity from the system.