To be clear a tachometer (RPM) and PWM are not the same thing.
PWM:
There are two types of PWM a hardware based and a software based.
Software PWM is controller through the OS scheduler, in this case klipper/linux. Hardware pwm uses a dedicated source like a DMA. Not all devices are designed to tolerate a software PWM especially when timings can vary based on the host controllers load, servos are a good example of not generally being tolerant of software pwm.
If you are looking to change the speed you can do that depending how you are calling out the hotend fan with in your klipper config.
If you label your hotend fan as a [heater_fan my_fan_name] then the best you can do is define fan_speed variable 0.0x to 1.0 to make it a constant speed. The max_power variable in my experience can only be 1.0 or the klipper sanity check stops start up. I am not a config guru.
I can't remember if you must define a heater_fan for your hotend. I know you can do some fancy stuff with klipper like call out a dummy pin and then mirror whatever input/output the dummy pin is getting to a different pin/fan type, my water cooled printer does something similar on it's forked version of klipper, but I haven't investigated that much, no need yet.
TACH:
For a tachometer yes, that is possible I used it (past tense it's borked right now) on my setup. You will need to use one of the spare pins and set it for a pull up or pull down and connect your fan's tachometer (RPM) wire to it.
I have an issue where my tachometer sense wire connected to a pin (PB3) on the EBB36 (I2C port) stopped listening to the tach pulse and back fed voltage spinning the fan even when off Or at least I assume that's what happened). I need to look at the schematic for the EBB again and double check which pins I should be using for the 2 different fans, I might have picked one that is feeding voltage. So YMMV! Maybe someone with electrical engineering experience can tell me what I did wrong. Now I don't get a tach signal showing in mainsail. I haven't revisited this.
When I do revisit this next week I will be using PB8 the sensor pin for the probe port to do the tachometer sensing as it has a 4.7k resistor and is 3.3v...
To use the tachometer you need to attach that fan wire to whatever pin you are going to use and then define it in the klipper config for that fan like below. You might need to define a resistor, and figure out if your pulling up with a ^ or pulling down with a ~ , etc.
tachometer_pin: ^EBBCan: YourPinHere
# Tachometer input pin for monitoring fan speed. A pullup is generally
# required. This parameter is optional.
tachometer_ppr: 2
# When tachometer_pin is specified, this is the number of pulses per
# revolution of the tachometer signal. For a BLDC fan this is
# normally half the number of poles. The default is 2.
tachometer_poll_interval: 0.0015
# When tachometer_pin is specified, this is the polling period of the
# tachometer pin, in seconds. The default is 0.0015, which is fast
# enough for fans below 10000 RPM at 2 PPR. This must be smaller than
# 30/(tachometer_ppr*rpm), with some margin, where rpm is the
# maximum speed (in RPM) of the fan.
Attached is the 1.1/1.2 schematic showing the bltouch, i2c and endstop ports that seemed easiest to tap for a tach. signal.