Brushless pumps; tacho(speed)-signal problems

MarkT:
So you'll just back-power the pump from the schottky, pulling the 5V rail
higher than it should be in the process? No, high-side switching is needed,
or proper level-shifting/opto-isolation is needed in the tacho line I think.

...maybe there is a missunderstanding! I don't use pwm on the mosfet, I just switch it "on" at the beginning of the program and switch it off, when the user presses a button to stop all pumps. The speed of the seven pumps is controlled via seven lm317 which are accessed by the arduino as follows:

pwm -> TD62783AP (as level shifter) -> lowpass -> lm317

As the lm317 cannot be driven to 0V, I use the mosfet to be able to switch the power off completely!
The Tacho works as follows: When there is a HIGH on the tacho there is e.g. 12V at the diode, but it won't pass (because it's inverse direction). When the tacho is LOW the voltage sourced by the arduino input pin's pullup resistor will pass the diode and cause the input pin to go low! - and this works. I just created a program that controls the pump's speed just via tacho, so the individual pump is set to full speed when the tacho-signal length is higher than desired and is set to lowest possible speed when the tacho-signal length is lower than desired. Doing this with high frequency lets the pumps create a fountain height as desired.
The advantage of this compared to working with pwm values is that you can have higher dynamics, because the pumps are always fully on until they reach the desired tacho ( = speed = fountain height)!
The desired tacho-signal length (pump speed) is controlled by an animation sequence in an array. I wrote a pump (fountain) animation program with processing that creates the animation arrays.