11h.net

The blog of 11h

June 2nd, 2007

Phoenix: The Game Over Signal & Special Switches

In my Williams Phoenix pinball machine, there are two ‘kickers’ and three ‘pop/jet bumpers’. They are not completely under CPU control. Basically the way they work is the ball hits the (special) switch which goes to the driver board into an AND gate (shared with the CPU’s PIO output for that solenoid) which goes to a NOR gate that drives the transistor, thus actuating the solenoid. Each switch has a resistor & capacitor in series with eachother to create an RC time constant since the solenoid will push out on the ball very quickly. They allow the bumpers & kickers to extend fully before cutting power to the solenoid to retract them.

Also on the Driver board is a signal for “Game Up (0)” and “Game Over (1)”. It is tied together with the blanking signal into an AND Gate whose output goes directly to both inputs of a NOR gate (to invert the signal). From there, the Game Up/Over signal is tied into all the NOR gates whose outputs go to the solenoid’s transistors.

Basically, this all accomplishes letting both the CPU & special switches drive these solenoids, but only when blanking is active and the game is not in “Game Over” (or tilt) mode.

Here’s the sympoms of my game’s problems. The flippers and most of the special solenoids all worked in Game Over & Tilt mode (and now that I think about it, on power-up before the CPU booted — but not enough to blow the fuse). The Right-Kicker was the only one that was properly turned off in game over mode.

Also, the right-kicker, when lightly touched (i.e. by the ball in play) would “flutter” — i.e. the kicker as soon as it extended far enough to open the special switch would stop kicking. If you activated the switch manually (i.e. not thru the rubber), it kicked with a powerful force.

The first thing I did was check the resistor and capacitor attached to this kicker’s switch — since it was the only one “not working”. All checked out good. I even tried adjusting the capacitor’s value to try and extend the time constant, but nothing worked.

After studying the schematics, I started testing voltages on the Driver board with the CPU in “Solenoid Test” mode for the right kicker (without the solenoid fuse in). Check the special switch’s input to the AND gate — looks good. And its pulsing with the CPU too as it should be. The output of the AND gate looks just fine as well. Same with the NOR gate… its output changing as it should be.

Go back a little farther to the Game Over signal.  Looks good.  Go back a little farther to the AND Gate where the blanking signal and Game Over signal meet.  Both inputs high — output .. uhh. about 2 volts.  That doesn’t seem right.  Of course that was causing the NOR gate immediately after it to put out a low signal (Game Up Mode).  This sure explains a LOT!  All the solenoids & flippers always work cause it never sees “Game Over” mode.

But how does this affect that fluttering right kicker?  Well, the AND gate that was bad is on the same IC as the and gates to that particular flipper.  While the flippers AND gate worked, it was sinking too much current (or possibly had too much resistance/capacitance), causing the whole RC Time Constant on that special switch to have essentially zero time.

Off to Alphatronics in Tukwila (also an excellent store — formerly supertronix).  Pick up a bunch of 7408s, 7402s, and 7406s (heck, while i’m in there, might as replace them all).  After spending all afternoon soldering them, realizing I bought the wrong size IC Sockets, I put the Driver board back in the game.  Turn it on, go through my routine tests to make sure everything works … and it does!  The kicker is powerful!  I can now tilt and not have control over the ball and everything!

Who’da thought that a single bad AND gate would cause the flippers to stay enabled, a fuse to blow every once in a while,  the solenoids to stay enabled in game over & tilt, and a kicker to lose all its kicking power.  Granted, all these logic gates failing on me has me worried that there is a bigger problem at hand I haven’t discovered yet … (me thinks bad diode in the playfield somewhere?).

June 1st, 2007

Phoenix: Sound Board Woes

After all that work replacing the interboard connector on my Phoenix pinball machine, I’m now treated with problems from the sound board. I think this machine has it out for me: Quick drains on the balls in play, letting my girlfriend & her friend consistanty win over me. Its saying “Just put me out of my misery! Stop fixing me!”.

Anyway, the sound board in Phoenix is driven by what would be solenoid outputs from the driver board. However, instead of driving solenoids, they drive 5 input pins (left connector pictured above) to the sound board to trigger a particular sound to play. I’m not sure on the specifics of which combination of pins causes what sound to play.

The issue I had was the sound board decided to just start playing boring “tones” (single musical notes) instead of the “Cool” electronic sound effects (if you consider Phoenix’s weird startup sound “cool”, that is).

After reading thru the documentation, I see that the sound board has a little red toggle switch to change between “tones” and “effects”. Hmm… could I be so lucky? Did I just bump the switch while moving the unit? Of course not. The switch does nothing. What’s worse, is it will occasionaly play a sound effect, but not too often.

The first thing I check is all the old ’scanbe’ sockets on the board … thinking one was loose. Well, one was loose, I pushed it in, and tested every single connection to ensure the socket wasn’t (yet) defective. No go.

Since my game didn’t come with a manual, and the online “Phoenix” manual left out all the schematics, back to the internet I go to see how this thing works. Unfortunately, none of the troubleshooting guides I could find even described the problem I had. And most of the schematics and drawings of the sound board didn’t match the one in my system. I was able to find a schematic that was close enough to my sound board, but I couldn’t correlate the labels (IC3, etc) with the board since the board doesn’t even have them printed on it. Finally i find a screencap of the left half of the sound board that labeled the sockets and components. Its good enough to start debugging this beast.

At least luck was on my side — Starting from the Red Toggle Switch and working backwards, testing every component in its path, I found one thing that didn’t look right. The switch eventually goes to “IC9″ pins 4 (out) and 5 (in). IC9 is nothing more than a bunch of non-inverting buffers. Test the voltage on pin 5: 0 volts. Check. Test the voltage on Pin 4: about 2 volts… hmm… Change the switch. Pin 5: +5 V. Pin 4: About 2 volts. “Well there’s your problem!” Lucky for me (although a little scary) there were a few unused buffers on this IC. A simple matter (*cough*) of lifting the output-pin, and soldering jumpers to connect the switch to unused pins 2 & 3.

Bottom Side of IC Top side of IC

Left: Jumpers to switch the buffer used on the IC to an unused one. Right: Lifted (and broke) output of ‘dead’ buffer. Click to enlarge.

After making this change, I plugged the sound board back in, started a game … w00t again! Another mystery solved!

Update 2008-01-12:  After only a few months, the exact same thing happened again — only this time the unused buffer that I switched to failed in the exact same way.  After a quick trip to Alphatronics to buy a new 74HC4050 non-inverting hex-buffer, I’m in business again!

June 1st, 2007

Phoenix: The Lamp & Switch Matrix

My Williams Phoenix Pinball machine uses (roughly) 200+ Watts of power when on. Translated: Some components can get very hot. Especially if the pinball is left on 24/7 as it may be at an arcade or a bar.

To the right is a photo of some General Illumination power resistors (click to enlarge). As burned up as they look, they still work and still measure their correct resistance values. Also you can see it started to burn up the components directly above them (which go to the Switch Matrix).

Pinrepair.com had a brief suggestion of instead of replacing those resistors with higher-wattage ones… or to simply replace those drivers right next to them with MOSFETs, and ditch the resistors with zero-ohm jumpers. Since I had to order some replacement driver-board transistors (and an IC to fix the switch matrix), I decided to just order the 55-volt, 19Amp MOSFETs from digi-key (IRF9Z34NLPBF-ND $1.935 each). Works great! Just need to clean the circuit board a little better (pictured left).

While I had the driver board out, I also had to do some repairs to the Switch Matrix. The night while I was diagnosing the Solenoid Fuses, in the middle of a “game”, I noticed that it stopped scoring points for half of the switches. It didn’t even register the end of the ball in play anymore!

The pinball’s switch matrix works just like any other keypad-style encoder: It puts out a voltage on the “colums” and checks the voltage back from the “rows”. The Switch Matrix has 8 Column Drives (only the first 6 are used) and 8 Row Inputs going to two connectors on the driver board. After unplugging those connectors, I put the CPU in “Switch Test Mode” (which confusingly more only shows the last 4 “stuck” switches). The fact that it showed stuck switches with the connectors unplugged ruled out any shorted wires in the playfield. So one by one, I manually short the rows & columns together while reading the Test’s ‘last-pressed-switch-number’. When I’m finished, I learn that all of rows 5 thru 8 are stuck active.

Some schematics show that rows 5 thru 8 are all inverted by IC15 (visible in the power-resistor photo 2nd chip down from the top), an MN14049 Hex Inverter. Bringing up the datasheet of the chip to get the appropriate pins and testing with a multimeter shows the inverter is no longer inverting. 5 volts in and 5 volts out. Replaced it with an “MC14049UBCPGOS-ND” from digikey ($0.69). Worked like a charm.

June 1st, 2007

Phoenix: The Dreaded “Interboard Connector”

Williams pinball machines use several different circuit boards, all tied together in some way shape or form. In the back cabinet of Phoenix, there are three: The Power Supply Board (right), the CPU Board (left-top), and the Driver Board (left-bottom). Standard molex connectors are used throughout the game. Most are 9-pin connectors going from the outside edges of each board to whever else they need to go: Power supply, playfield, coin door, or just between boards.

But there is one more connector: The “Interboard Connector” (pictured below). This is a 40-pin connector used to transfer all the CPU’s address lines, data lines, and some misc. signals and power/ground rails between the CPU board and the Driver board.

The Interboard ConnectorAs mentioned in another post, I already had trouble with this connector in regards to the “Blanking” signal. The paperclip was obviously a temporary solution that worked for less than a day.

As it turns out, battery acid had leaked down onto this connector (among other things, luckily just missing the Flipper ROMs). Couple this with the sheer old age of this connector, and the fact that some of the female pins had just crumbled under me as I inserted & removed this board for other fixes, I knew it was time to just replace the whole connector.

Unfortunately, I did not have a working pinball (several address lines were not connected at this point), and didn’t want to wait a week to order new connectors. Off to Fry’s Electronics I go! I was shocked to find that they had (what I thought) were the right connectors! Long story short, I bring them home, pull the boards, and spend an agonizing time removing the existing connector trying not to damage the board… and find out the female pins I bought were “right-angle” style instead of “thru-PCB-Bottom” style. Dang.

So I take a trip to another electronic’s store I had just heard of (Vetco in Bellevue, WA — Awesome store!!). They didn’t have the molex connectors I needed either.

Well, I decided to just break down and replace this whole interconnection nightmare with two PC-style ATX connectors (20 pins each). Worked like a charm. All I had to do when I was done was move the CPU board up a few inches so the boards no longer overlap.

New

w00t! I move the pinball from the garage to inside the house, install the boards, turn it on — and … w00t again! CPU Booted up w/o a hitch! Go to start a game, launches the ball — no fuse blown — great!

Except the sound.

Ugh.

June 1st, 2007

Phoenix: The Blanking Signal

The day after I thought I had fixed my Phoenix Pinball’s problems and had a working machine, that solenoid fuse blew again.

This time, however, I could work around it by removing the fuse before I powered on the game, and only inserting it after powering it on.

Not having a clue as to how Williams pinballs work, I begin doing testing and a lot of internet research. I figured the fuse was blowing because all solenoids would lock on simultaneously at power-on. I remember reading at various places saying that running all the data & address lines over an ‘intraboard connector’ was a big design mistake by williams. I somehow got it into my head that another ‘design’ mistake was using a PIO that would actuate all the solenoids before the CPU gained control of them. I was looking in all the wrong places — I kept thinking the CPU was taking longer to boot than it should, allowing time for the fuse to blow. Could it be the crystal? The obsoleted & impossible to find clock & reset chip? The broken capacitor I found on the CPU board? Nope — all those things check out OK (after replacing the cap, of course).

Then it hits me — I recall reading about this “Blanking” signal. Not sure what exactly it does, I do find out it goes over the intraboard connector at pin 37. Whip out the DMM for a quick check … +5v on CPU board — check. +2v merely 2mm away on the driver board — WTF?

It turns out that even though the intraboard connector pins look like they were making contact, they weren’t.  I was able to get the signal to pass thru by shoving a paper-clip in the connector.

Anyway, here’s the logic behind this mysterious “blanking” signal… There is a 555 (actually 556) timer that acts as a watchdog timer for the CPU.  If the CPU stops ‘feeding’ this watchdog timer by sending consistant pulses to it, the timer expires and it is supposed to pull the blanking signal low.  This blanking signal goes into an AND gate with every solenoid cpu-driven PIO output before hitting the transistors to switch them on.  Basically, if blanking is low, no solenid can be actuated by the CPU.  It is used to prevent the solenoids from actuating before the CPU boots and to disable them if the CPU locks up.  Now what did we learn in basic digital circuits class?  That an “open” is commonly seen by logic gates as a “high”?  And a high-blanking signal means all the solenoids are under CPU control — but the CPU hasn’t actually booted yet.

Its clever in its own way — On one hand it does good to prevent burnt up coils from a CPU malfunction, on the other hand it becomes one of the single most important signals sent thru that inter-board connector…