Attached is an example of what I was getting at for PWM using a comparator. A rough example made in haste but an example. Keep in mind, this is likely how I would approach it sans just buying equipment.
What we are doing in the attached is simulating an input from a triangle waveform generator into a comparator. The red trace simulates the triangular waveform. It is labeled as V2 in the schematic. It is about a 500 Hz. triangular waveform. For real PWM we would likely go higher in frequency. That signal goes into the - (Inverting) input of the comparator.
Next we have a potentiometer labeled U2. This pot simulates the output of the RH sensor. However, no, it is not scaled and signal conditioned. Just as an example. This would be the V Reference fed into the + (Non Inverting) input of the comparator. That voltage level will vary based on RH.
When the level of the triangle wave is below the value of RH the comparator output the comparator output goes High turning on transistor Q1. That places the collector of Q1 at just about 0 volts. When Q1 is off the collector is high and when Q1 is on the collector is low. This can be seen on the Vpwm signal.
A typical 12 VDC computer fan draws <200 mA as I recall. The 2N2222 can handle about 800 mA so as shown the 2N2222 could likely drive 3 fans with a heat sink on it. Resistor R4 is just there to simulate a fan.
Again, short of using a costly RH controller I would likely go along these lines. Not to say this is the best way to do it, just how I would approach doing it. If any other members have suggestions I would love to hear them.
Earlier I posted a link to a comparator website. You should see a connection between those pages and what we have here.
Ron