You seem to be using analogWrite() in a strange way.
If you have 3 pumps why have you 6 analogWrite()s in setup() ?
Why have you any analogWrite()s in setup() ?
Why are you using TTCR0B?
Why not just use analogWrite() in the normal way?
Your arrangement for getting commands from the serial monitor is not robust. Look at how it is done in this demo. The data is wrapped within <> so the Arduino knows the start and the end, and all of the data is received before there is any attempt to analyse it.
Have you looked at the demo several things at a time
...R