One way to find out
I got one of my cheap BLDC pumps and set up a simple "blink" sketch. Value for cycle chose to give a 30 Hz PWM. Pump is marked NC35-1230, 12V, 4.2W. I used a Nano with retrofitted ATmega328PB on a screw shield to run this thing. The MOSFET all soldered up the regular way for controlling a motor (10k between gate and source; 120Ω between pin and gate - a bit low of a value but it's what I happened to have on my desk and is good enough).
#define LED A3
void setup() {
pinMode(LED, OUTPUT);
digitalWrite(LED, LOW);
}
uint32_t onTime = 15000;
uint32_t cycle = 33000;
void loop() {
digitalWrite(LED, HIGH);
delayMicroseconds(onTime);
digitalWrite(LED, LOW);
delayMicroseconds(cycle - onTime);
}
12V pump switched using a IRLB8721 MOSFET. No flow meter attached; I just looked at the flow coming out of the hose that I attached to it, so it's not particularly scientific.
onTime values & results:
2,000: not running.
5,000: running gently with good pressure when you get it started, won't start by itself.
7,000: does start by itself. Similar flow as 5,000.
10,000: running well, much faster flow.
12,500: faster again.
15,000: roughly full speed now (45% duty cycle!)
17,500: not running at all.
20,000: not running at all.
22,500: running about as slow as at 5,000, but does start by itself.
25,000: running a bit faster than at 22,500.
27,500: running a bit faster than at 25,000. Estimate: about half of full speed.
30,000: running at pretty much full speed.
32,500: pretty much full speed.
So, well... doesn't sound like a very good result to me. I'm not too surprised with the pump reaching full speed at low duty cycle (it probably has some good capacitance built in), but I am surprised by it basically switching off again at about 50%, before starting all over again with its speed.