After struggling to keep the original design working, I finally decided to redesign the drive system of the feeder. This allowed me to consolidate the control system as well. The result is smaller footprint and a more reliable feeder.
The original drive system for the feeder was a lego NXT motor driven by an arduino with an NXT shield. I used reed switches and magnets to feedback to the controller when the system had indexed. This didn’t turn out to be the most reliable method because the components were so cheap. Additionally, I used a separate arduino to handle the communications, and housed everything in a separate enclosure away from the feeder itself.
I decided to go with a stepper motor and driver system from Pololu. The motor has 200 steps/rev, so instead of needing to provide feedback to the system, I just index the motor 25 steps for each feeding. I experimented with bipolar and unipolar wiring for the motor. I found that only bipolar wiring gives the motor enough torque to work well when the feeder is loaded with food. I believe this setup also allows the system to be much more accessible to anyone trying to build it. The new code can be found here.
Finally, I shortened the hopper and spinner a little bit and redesigned the base to house the stepper motor and controls. I no longer need a separate box for the controls. The new printer files are on my thingiverse site.