I have a cooling system that uses an external temperature sensor to turn on two HDF4020L-12HHB 12VDC fans and I need to use the locked rotor sensor outputs from the fans as inputs to a MCU (5V logic) to be able to detect when each fan fails. The problem is that when the fans are operating normally the sensor outputs are triggering making it difficult to distinguish between a locked rotor condition and normal operation.
The fan datasheet doesn't specify the type of sensor output but I am assuming it's an open collector output like most other fan alarm signals. I am also assuming that I will need to provide an external pull-up resistor.
Here is my updated circuit:
I built this circuit on a breadboard to test my design and I am having trouble interpreting the results. When the fans are switched on both sensor outputs drop to about half the supply voltage (6V) and, when either one of the fans are kept from spinning (locked rotor condition) the signal oscillates between 12V and GND. I don't have an oscilloscope to accurately measure the waveform on the fans sensor output but it appears to be oscillating at a 2/3 duty cycle where the signal is high for 2 seconds and low for 1 second.
The research I have found shows the sensor output going high and not oscillating except when using a "thermal speed controlled fan or a two-speed fan" which I am not using.
Output waveform from Sanyo Denki
Output Waveform from ADDA AD0412UB-C72GP(P) datasheet
What is causing the fan sensor output to swing from 12V to GND? Answered in comments below.
Why is the output voltage approximately half of the supply voltage when the fan is operating normally and is there a way to pull this signal high or low to prevent unpredictable behavior on the MCU input pin?
I updated the circuit to fix a mistake that I made by trying to source current from the open collector output on the fan. The updated circuit now sinks current when the open collector of the fan is activated which turns on the optocoupler and causes a state change on the MCU GPIO pin.
I also changed the value of the series resistor on the input of both optocouplers from 1k to 2.4k in order to limit the current through the transistor on the fan. I measured this current and noticed that the open collector is sinking about 2.4mA of current through the optocoupler when the rotor is not locked and 0.0mA/5.0mA (0V/12V respectively, as described above) when the rotor is locked.
I believe this is what is causing a false negative signal on the MCU. My guess is that the internal circuitry of the fan is switching the transistor on and off rapidly creating an averaging effect that is not visible on a miltimeter. Is this a reasonable explanation for this phenomenon? How can I mitigate this effect?