My goal is to monitor the speed of two centrifugal fans (G3G140-AW05-12 from ebm-papst). The prototype I designed already allows me to set the desired speed to both motors.Now, I need to be able to automatically eliminate any possible speed shift between them, increase the power in the event of clogged filters, or trigger an alarm if necessary. The motors provide their actual speed via a tachometer output, but the electrical characteristics of the signal provided (see oscilloscope display) cannot be captured as it by my Arduino Uno. What circuit would be required to obtain a 0/5 V conversion of this output?
The fan's tachometer output is an open collector output from an opto-isolator.
You need to either connect a load resistor between +5V and the pin, or use pinMode( ) to set the Arduino pin to INPUT_PULLUP.
I believe that what you are seeing on the oscilloscope trace are short bursts of 50Hz/60Hz noise picked up when the opto -isolator is not conducting. If you had a pullup resistor connected the output would be pulled high during those periods.
Example connection for a 5V Arduino Uno. Make sure that the tach and Arduino grounds are connected together. If the connections between them are long, use shielded cable for the digital input connection.
If stray EMI is a problem, the lower the better. The output is rated for 10 mA max sink current, so for 5V logic, 500 Ohms is the lowest pullup that meets specifications.