This is a topic to continue @whiterose’s discussion of PWM implementation and rate control, with the goal of operating it under AOG.
I can tell you how it works on a commercial system using a hydraulically-driven centrifugal pump. A pressure transducer on the boom measures pressure. A PID loop controls the hydraulic flow to the pump and tries to maintain a pressure set point at the boom. As nozzles open up, the pressure will drop, and the PID loop will increase the pressure to compensate. This is a closed-loop system and depends on no other variables, nor does it care what the nozzle size you are using is. Although it might be possible to “prime” the PID loop with some of that information so that it settles in more quickly when you first start it up.
Rate control is done with a flow meter. This has its own PID loop. The input is the current flow rate, the set point is the desired flow rate (more on this below), and the output of the PID loop is the duty cycle of the nozzle solenoids. In other words if you want flow of 50 l/min, and the current flow rate is 40 l/min, then the PID loop will increase base duty cycle of the PWM nozzles. If the flow rate is too high, the base PWM duty cycle must be decreased.
The flow rate is calculated based on how many nozzles are open (the total coverage width of the open nozzles), the rate per area desired, and the travel speed.
Figuring out the PWM duty cycle for turn compensation is quite easy. If the center of the boom is the base PWM rate, the other nozzles are either plus or minus that base rate, depending on the distance from the center and the yaw (turning) rate.
The catch with turn compensation is calculating the flow rate needed for the above PID loop. That gets a little tricky. Or at least it means you have to start doing per-nozzle calculations to try to get the full flow rate. These calculations require knowledge of the calibrated flow rate of the nozzle. (Actually I’m not certain of that… it might not even require that information.)
I’ll try to post more actual numbers later. I’ll do some calculations.