motor stops moving at higher PWM frequencies


I use Arduino Uno and Arduino Motor Shield R3 to control a 12V 1A motor from a printer. At default PWM frequencies, at slower speeds 90/255 it has quite low torque, but manages to do the job adequately (which is to swing a small bell). But at that PWM frequency it produces quite a lot of whine. So I decided to try increasing the pwm frequency. At 31kHz, it wasnt moving at all, neither at 15kHz. At 7.5kHz it could perform the task again, but that produces that awful whine again. At 15kHz, if I removed the load, I could see it slightly moving left and right. Obviously it lost almost all torque. Is there a way to use higher PWM frequency and keep the motor torque? Could it the be the shield? Maybe the motor?

Thank you for help!

Here is example at default frequency:

I don't think darlington H-bridges do much more than 4kHz efficiently.... MOSFET H-bridges are probably needed for ultrasonic PWM.

According to the datasheet, the L298P chip used in that motor shield has turn-on and turn-off times that are mostly sub-microsecond; so it should be OK at 31kHz. However, there are a couple of other factors that may get in the way:

  1. The motor may have high core losses at higher frequencies.

  2. The motor may have a capacitor connected between its terminals to reduce the interference it generates.

Mosfet H-bridges can certainly switch faster (and have lower voltage drop and hence dissipate less power), but if the main problem is one of the above, then changing to a mosfet-based driver won't help.

A solution is to place a power inductor in series with the motor. Look for a power inductor rated at the highest current you expect to drive the motor with, a resistance no more than about 1 ohm, and an inductance of at least 100uH. Maybe something like this

I read somewhere too that it should be capable up to 40kHz.

Its a Johnson C6419-60058 motor. If I move its axle, it doesn't go smoothly, but by steps (probably strong magnets). I have removed that outer metal layer that was around it and served as magnet neutraliser (I think) to make it fit into wooden holder I made. It doesn't look like it has any kind of capacitor (at least from what I can see from the outside), but I don't know about core losses. Thank you for suggestion, Ill go and buy what you suggested and try again. Oh, and I have to make a correction, even at 7500 it cant perform its task, it manages to move the bell more but not enough to make it strike. Last time I was checking I just quickly turned it on and off and it seemed that it will be able to swing it sufficiently.

Edit: I found out why it was working at 7.5 kHz last time, last time I had it on 90/255, now I have it at 70/255. Looks like the higher the frequency, the higher the lower border for the motor to start moving becomes. But if I make the speed higher, it wont fit the bell anymore :(