I am using Pololu G2 18v15 to drive a maxon motor. The motor is supposed to drive a load in a sinusoidal trajectory against gravity with maximum torque of 0.0634 NM with max speed of 5 rpm. I am using arduino to do trajectory control (using PID controller) and pwm commands are sent to pololu controller through i2c communication. When I use lower pwm frequency (1.13/2.50/3.21kHz) on pololu motor controller, the motor is smoothly able to track the desired sinusoidal trajectory. But there is high pitch sound generated by the motor. When I use higher pwm frequency (22.5kHz) on pololu controller, there is no sound produced by the motor but, the motor is not able to track the desired trajectory smoothly even after multiple attempts of tuning the PID gains on arduino. There are always some jitters when motor is lifting the load against gravity. One thing I have noticed is that the motor pulls around 0.11 amps of current when pwm frequency is 22.5 kHz where as it pulls around 0.23 amps of current when pwm frequency is 1.13kHz to achieve the same maximum speed while following the same trajectory. This makes me suspect that, the motor is not getting enough torque at high pwm frequency to smoothly lift the load.

Is there a way to reduce the high pitch sound at lower pwm frequency (without increasing the frequency) or is there a way to torque of motor at higher pwm frequency

  • $\begingroup$ I assume that at low frequency your motor is in stall current state, which explains the high current, (low rotational velocity, torque load too big), which might be harmful for your motor. For your question I don't have a specific answer, but I would try a PI version of the PID, in order to reduce the noise you input to your system. $\endgroup$
    – nionios
    Aug 29, 2019 at 6:57
  • $\begingroup$ Are you using integer or floating point calculations in your PID loop? Have you had a look at the raw position values being fed into your algorithm, do you see any aliasing in the data (especially jumps in velocity) when you switch to the higher frequency control? $\endgroup$
    – Mark Booth
    Aug 30, 2019 at 16:38
  • $\begingroup$ @MarkBooth Im using floating point calculations in PID loop. When u say "aliasing in the data" u mean jumps in velocity even when the motor is stationary? $\endgroup$
    – vacky
    Sep 4, 2019 at 15:47
  • $\begingroup$ I've mostly seen this sort of problem (worse control at higher frequency) when the Derivative term is too aggressive and velocity is low enough to cause the velocity to jump between 0 and it's lowest value, so that's unlikely to be the case if you are using a floating point PID. That doesn't mean that this isn't still a tuning issue though. $\endgroup$
    – Mark Booth
    Sep 5, 2019 at 10:23
  • $\begingroup$ @MarkBooth I will go through my PID calculations again, Please let me know, if you think there is anything else that might be causing this issue. Thanks $\endgroup$
    – vacky
    Sep 5, 2019 at 14:51


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge that you have read and understand our privacy policy and code of conduct.

Browse other questions tagged or ask your own question.