@rmwarren Agreed, and good luck!
One thing to pay attention to that can be tricky your fist time hashing through this, is the logic levels. SuperPID uses logic-low to represent enabled. (e.g., a ground signal is logically “true” or “on”, and a +5V signal is logically “false” or “off” – this can seem counter-intuitive at first.)
Also, if you want your router to turn on and off automatically with software, then you’ll need to re-upload grbl with some configuration changes to enable the RUN wire (labeled D13 on your Carbide Motion board), and to make it logic-low. (By default in grbl, PWM = 0 would imply stopped, but on the SuperPID, PWM=0 is 5,000 RPM. If you want your spindle to start and stop on command, you need to enable a RUN wire.)
In the GRBL config.h, uncomment (by removing the // in front of each line):
Then re-compile and upload.
If you just use a manual toggle switch to turn on and off your router, and only have the PC send RPM signals to your SuperPID, then no recompile / upload of grbl is necessary.
Also note that the Arduino boot loader on the ATmega micro-controller pulses the outputs at boot-up. This means that without any modifications, (only if you are using the RUN wire to have grbl control the on-off state of your spindle) your spindle will spin up very briefly when you turn on your S3!
I used an external programmer to re-flash my chip omitting the Arduino boot-loader, which prevents the outputs from pulsing at start-up.
There are other ways around it, and there are discussions on the forums here about it, just be aware of it and plan for it; make sure your spindle is clear the first time you power up the machine with the new configuration.