I am carrying out a project involving the reading of 16 fans by exploiting the interrupts of an MCU, which unfortunately, are never enough.
I am seriously considering converting the digital tach output of each fan to analogue to eliminate all the processing that MCU has to do to handle all those interrupts.
Is this a viable option in your opinion? My idea would be to exploit a single LM2907 as an IC combined with an analogue multiplexer to read all 16 inputs in one second.
Is this possible?
The tach signal from regular computer fans are 2 pulses per rotation, and if a fan spins at 1000 - 1500 rpm, you get 2000-3000 pulses a minute or 50 pulses a second or so ... with 16 fans, you probably don't have enough time to get into an interrupt , do something with the information, come out the interrupt and so on...
Some other tricks you could do ... look at binary counters... let the tach signal just increase a counter in a chip, read the chip periodically, reset it ... repeat .. if you read every 50ms or so, your pulse count will be unlikely to be above 1000 pulses or so (5000 rpm x 2 pulses per rotation = 10k per minute or 166 pulses per second or 16 every 100 ms, or 8 every 50 ms or so ... even a 8 bit counter would be plenty.
you could use parallel to serial shift registers and pull the values in one shot into your microcontroller, if you don't want to use analogue switches to switch between binary counter chips.
EMC2305 is a solution indeed, but a bit expensive... considering you'd need 4 of them.