Torque Control of DC fan using Arduino
This is a 2W DC fan that internally uses Hall sensors to commutate the 2 pole winding  drivers as a BLDC motor.  Above stall speed, I have found that the motor current is roughly  proportional to voltage up to its rated voltage so you could say it appears  like a resistor with a capacitive load that with rapid supply increases demands more current until the fan reaches its steady-state RPM producing a Back EMF to reduce the current. The fan air loading applied creates air pressure which will increases the current slightly and then reduces the RPM and air flow velocity.
What you need is an adjustable linear current driver and linear current sensor. You can define your target torque (current) and make a linear transfer function and avoid the hassles I have found with LC PWM causing ripple and interfering with motor BLDC operation with acoustic noise.
It might look something like this. (Always start with design specs)
SPECS

Current regulate a 24V 2W (~&lt;90mA) fan  with &lt;2% error.
estimated stall/start voltage where stall voltage might be around 20%  (TBD)
design control current method with input from 0 to 3V with a linear voltage controlled current
design sense current from an amplified small R current shunt with 50mV drop at max (100mA) and differential amplifier that senses near 0V.
design driver circuit to be a voltage-controlled current sink with an error Op Amp to match load current to control voltage.
choose a control slope like Vctl=3V for 100mA  (with 10% headroom to 3.3V) or k=30mV/mA

or plan B (Change design spec)

Scale Analog control voltage for current down to match R Current sensor voltage = 500mV max.
Use comparator or Op Amp to drive Nch logic level FET (&lt;1 Ohm) for low side current control with sensing near 0V, single supply.
Model Fan load then simulate
Feel free to change my specs to yours.  Here's 1 of many ways to do this with a FET &lt; 1 Ohm