Motor RPM measurement and PID control on same board

The overall scope of my project is a tennis ball machine. I've worked out the feasibility of most of what I need, and from what I can tell, I'll need more than one board. From what I have looked at, I plan on using a Mega (Or maybe a Due) for the display/user interface as well as controlling the horizontal/vertical angle with stepper motors over I2C and the tennis ball release, and then separate arduino boards (also talking to the Mega/Due over I2C) to measure the RPM and run PID control on them.

The question I have that I'm not sure of: Would measuring a single motor's RPM with the FreqPeriod or FreqMeasure library as well as running the PIDLibrary on the same Arduino Uno be too much for the microcontroller to handle? For reference, the theoretical maximum RPM of the motor would result in an input from the rotary encoder of ~666Hz, and I am planning on running the PID algorithm every 100ms. The only I2C communication I plan on having is the Mega/Due sending the setpoint value to the Uno controlling the motor, and feedback from the Uno to the Due indicating the current RPM every 100ms when the PID algorithm runs.

Let me know if I'm not providing enough detail.

One Uno is capable of doing every thing you have listed. Smaller is better in the world of electronics. and it's cheaper!

Mark

What mechanism are you going to use to throw balls?

I'll be using two wheels to launch the balls. Most machines tend to use that method, and by using different speeds on each wheel you can impart spin on the ball.