I have a Noctua 4-pin PWM fan (PWM datasheet) from which I'm attempting to calculate RPM using the open collector tachometer output. I'm producing the PWM waveform using a Raspberry Pi Pico.
I don't have a proper oscilloscope, but given it's <100Hz my Bitscope should be sufficient.
Here's a tachometer waveform at 70% duty cycle. Looks alright to me. Similar at 80% and 90%.
At 60% or so, it becomes irregular, some high levels are 2 or more pulses long:
Here's 50% duty cycle overlaid with the PWM input:
An identical model fan exhibits the same issue. A different fan I had on hand (a Ryzen CPU cooler) seems to work fine at 50% duty cycle:
I get similar results if I pull up to 5V instead of 3V3, or if I connect the tachometer to a GPIO pin and pull up using the internal resistor.
The datasheet recommends Vtacho be 5V. It specifies a maximum of 13V but no minimum. It also says the PWM voltage should be 5V. With the fan powered but the other pins disconnected, I measure 3.2V between Tach and GND. The PWM spec does not define behavior below 20% duty cycle but 60% should be fine.
Based on another answer I also tried raising the PWM signal using a 2N2222 transistor which did not really help:
Would the likely problem be:
- a flaw with the fan
- a problem with my measurement or circuit
- some additional circuitry I need to compensate for something?