The aim of this project is to create the hardware, the interface, to enable the control of a real pinball machine with a PC. The project was initiated on the French pinball forum, and detailed here : PIN˛ project.
To resume, we wanted to build a simple interface to enable a pinball fan to build his own machine, with a costless and very easy control solution. The choice to use a computer for the game control instead of programming an embedded µC simplifies the work needed, and doesn't need advanced skills in real time programming or embedded development. Moreover, it is very easy to display scores, and playing sounds. The second main advantage is the scalability of the hardware. Boards are minimalist, and can be chained to fit the needs.
Nonetheless, this solution has the drawback of latency, as an event is read by the interface, sent to the PC, processed, and sent back to the interface. This point must be well handled.
Let's see how it works !
Functional schematic of the first version
PC : a standard Personal Computer, running Windows (XP or later). The software is developed in C# with Microsoft Visual Studio and uses .Net framework.
Interface motherboard : this board is based on a 8bit Microchip PIC 16F877A microcontroller. It communicates with the PC thanks to a FTDI USB-serial interface, and with the rest of the hardware using an I˛C bus. It's role is to manage all the hardware, to monitor events, send them to the PC, receive the orders from the PC and forward them to the boards. As you can see, the switch matrix is connected to the motherboard. The microcontroller is in charge of scanning the switch matrix, and send any switch event (close to open or open to close) as fast as possible to the PC. Interrupts are used to minimize latency.
Lamp matrix board : based on two I/O expanders MCP23017 driving MOSFETs transistors, this board controls the lamp matrix of the pinball. Each IO expander offers 16 outputs, therefore a big (double) lamp matrix is implemented, with 8 columns and 16 rows! Lamp states are received from the motherboard through the I˛C bus. This board is very innovative because the lamp brightness can be tuned (on 4 states) and thanks to the double matrix, up to 128 independent lamps can be controlled. Usually, the legacy General Illumination circuit disappears at the advantage of this uniform solution.
Solenoid board : based on one I/O expander MCP23017, solenoids are fired on the order of the motherboard. Several solenoid boards can be chained to control all the solenoids of the playfield. We can note that flippers solenoids are also connected to this board.
Flash lamp board : same design as the solenoid board. The power supply voltage is lower than solenoid board, to meet flash lamps requirements.
Power supplies : logical power supply is a 5V/0.5A (fused) AC/DC converter. High power is sourced from two transformers : 43V/5A (fused) for solenoids, and 20V/3A (fused) for lamp matrix and flash lamps. Only 3 voltages are used on the interface, thus simplifying electronics and power supplies. To be compatible with the 20V, the lamp matrix operation is quite special and faster.
In a word, this is a simple, uniform, scalable, and easy to use Pinball PC Interface. Each board is dedicated to one task, and no special circuitry is needed ! The switch matrix is fast enough to detect flippers buttons, and the powerfull solenoid board can handle flippers solenoids.
Some photos of the boards :
Lamp matrix interface
Williams Time Warp playfield being wired to PIN˛ interface. (a discerning eye can see that the GI hasn't been modified yet!)
Based on this schematic, and using the boards presented, we succeeded to have a working playfield,
presented in Chailly-en-Bičre (France) in 2008 :
On the video, you can see lights blinking, and good working of solenoids. Bumpers and slingshots are responding well. The score is displayed on the screen, and all sounds are played from the computer. The drop targets banks, in the gameplay, was to reset if all targets was down. All the switches are sent to the computer for processing, and action to be taken sent back to the interface.
Due to lack of time, the project paused as is, but we're still getting
new ideas to improve responsiveness and miniaturizing the interface. We are currently working on a new type of power supply, and a new architecture to minimize wiring. Stay tuned !