PICBall Machine

I designed an old-school pinball machine along with two other teammates, Andrew Tsai and Julia Ng, for my final project in ECE 4760: Designing with Microcontrollers. The pinball machine relied on a PIC32 MCU to register ball locations, keep score, display the score on a seven-segment display, and control the lights and sound. Through this project I was able to gain exposure to a variety of different design challenges the ranged from building mechanical structures with a limited budget to developing software on a constrained environment. My partners and I faced particular difficulty with designing safe and reliable circuitry that would provide the high power needed to control the paddle solenoids. Additionally, our firmware on the PIC32 had to be quite sophisticated since our seven-segment display dominated so much of the CPU time. We had to be quite clever in scheduling our direct digital synthesis routines to play game sound.

However, the most challenging aspect of our project was troubleshooting the massive EMI caused by the large current draw of the paddle solenoids. The EMI from the solenoids triggered a lot of the gameplay interrupts inadvertently and caused inaccurate game state. My partners and I attempted to solve this issue in a multitude of ways that included changing the internal pullup resistors to external pullup resistors and placing decoupling capacitors in various parts of our circuitry. But the solution that worked the best involved using a state machine inside of each of the interrupt handlers. This way, we could ignore the misfires of the interrupt due to the EMI while registering meaningful game events. Overall our project was incredibly successful and was even written about by Hackaday. To learn more about this project: please visit our project website. Here is a link to our project presentation on YouTube.


Close Project