Homebrew Pinball #3, Part 30

Cross posted from the original Pinside thread, this is one of many posts regarding my third homebrew pinball machine, creatively nicknamed 'P3'



Coded the basic structure of the skillshot. I'm pretty dissatisfied with most skillshots in games currently. Most seem to either be 'just plunge the lit lane', or plunge to a flipper and hit a lit shot. You don't really care about your plunge at all. Some games like Deadpool make it a bit more interesting by locking in your lane choice. Most games that actually require you to plunge to a specific spot (such as Taxi) just make you learn one or two plunger positions, which I think can get boring once you've learned them, since at that point you're just slowing down your game to squint at the plunger. My goal here is to have a lot of different places to plunge to, and have the context of the game make you change which one you're plunging to frequently.

There are seven different places to plunge to:

Red: plunge just far enough to clear the diverter. Diverter will close, leading ball to right inlane
Orange: plunge so that the ball hits the lower magnet switch, without hitting upper magnet switch. Magnet activates, pulling ball to the left and feeding upper right flipper (well, hopefully, if I ever get it working)
Yellow: if you plunge past the magnet and hit the upper magnet switch, you'll fall back down and feed the right inlane, similar to the red skillshot
Green: The lower 3 lanes. Not sure what will happen with each lane yet, maybe one will be lit as an extra target
Blue: Upper 3 lanes, same as green
Pink: plunge and fall into the upper eject which will then feed the upper left flipper. Really hard to do, worth the most
Purple: Hard plunge all the way around and feed the left inlane

The Pink and Purple skillshots are made harder since there's a one way gate to the left of the lanes, blocking them. Currently I have it timed so it's open for 2 seconds, then closed for 2, so you'll get redirected to the lanes or let through based on your timing.

Your current 'bet' amount is determined by where you plunge, so you can choose to bet a little or a lot while still keeping it 'pinball'. I'm thinking the bet amounts will be percentages of your total 'bank', so you'll be forced to bet more later in the game. You can return to the shooter lane at any point while playing your poker hand by shooting under the upper right flipper, so you can adjust your bet if your hand is looking better or worse.

In addition, there will be an award on each skillshot, that you can only get if you 'call' your shot by selecting that award with the flipper buttons. Currently it's just points, but I want to eventually put other stuff in there to mix stuff up. If it's only ever points, they'll either just be ignored, or they'll be so big they're unbalanced, so I like to put 'in game' effects into stuff wherever possible. But that will have to wait until I have more game coded to affect.

The graphics themselves on the screen are pretty basic right now, but serviceable. I kinda dread getting to the point where I actually need to make this stuff look nice somehow. Even for a simple screen like this, I think more code is dedicated to drawing and updating the screen than there is to the actual skillshot logic... It must have been nice in the DMD or alphanumeric games where you could often just slap some text up and be done with it

Posted Thursday, October 01, 2020
at 09:43 AM


Tags: Blog Post, Pinball, Project, P3,

Homebrew Pinball #3, Part 29

Cross posted from the original Pinside thread, this is one of many posts regarding my third homebrew pinball machine, creatively nicknamed 'P3'



I've spent a good amount of time playing with the upper magnet. It's positioned next to the shooter lane, right orbit, so that it can drop the ball to the upper right flipper.

The magnet had two use cases:
1. for the skillshot, if you plunge the ball up so that it stops next to the magnet, and then the magnet activates, pulling the ball sideways from the shooter lane to then release it to the flipper
2. to feed the upper flipper via left orbit shots. this is the main use case, with the skillshot just being a bonus. I didn't really forsee a problem with this while designing, but I've come to realize that this just isn't how magnets are normally used in machines. Games like Twilight Zone will stop a fast moving ball on an orbit, but they have the magnet directly under the ball's path. The magnet acts only as a ball grabber, not a diverter. Most cases I can find of magnets being used as diverters are things like TWD's crossbow, or WCS's lock. WCS is the closest to my use case, since it specifically grabs a moving ball, stops it, then drops it. But even WCS has issues grabbing a fast moving ball.

I quickly discovered that my original plan of wiring and mounting this magnet the same way the magna save is mounted just won't work. The magna save coil is being powered using 25V, while most newer games use 50V for their magnet. So I hooked up my 50V line to my magnet relay, instead of 25V, and... immediately fried my relay. The 50V is strong enough that, when the relay deactivates and its contacts move apart, the voltage will just arc across the gap and continue powering the magnet while melting the contacts. I had a similar issue with the 5-bank reset coil, and was able to fix it by adding a 10uF, 300V capacitor across the contacts. For some reason this doesn't work on the magnet. I wondered if the magnet was stronger, but the magnet actually has more resistance than the drop target coil. My random relay was only rated for 3A@25V though, so I ordered a really beefy relay, which was rated for 30A (!). I think my magnet should be drawing about 10-12A at 50V, so that should be plenty. But that relay also had constant arcing issues. I tried bigger snubber capacitors, other snubbing solutions, even disassembling the relay and physically bending it so the contacts are farther apart, and nothing helped.

It seems like switching 50V@10A just isn't reliable via a relay somehow, though I don't understand why. Modern games all control their magnets via transistors and mosfets, although I don't know if that is specifically to avoid this issue, or for other reasons. The problem is, I can't use those here, since my 50V has a separate ground from my 25V. My next plan is to get a TIP36C (which is what williams used for their 50V coils in the 90s), and then try to use a relay to switch the gate (instead of having a microcontroller switch it like normal) which feels like horrible overkill, but it may work. Even at that point, I'll still have issues because I can't PWM a relay, so I'll basically be running the magnet at full power. I'm not sure how long I can power the magnet like that, hopefully it's long enough to get the ball settled.

The magna save is also a completely 'below playfield' magnet, with no visible core. Adding a core that goes all the way through the playfield helps make the magnet stronger, and I assume that this is why games like TWD, which need to grab a ball shot at their wide bash toys, use an even bigger exposed magnet core. At first I figured I should just order one of those larger exposed cores, but they're incredibly expensive somehow (the large core costs more than the magnet itself!). Even a regular size core is expensive. I don't really want to spend that much money on something that may not even be useful, so for now I've just bought some 3/4" steel roundstock that I'll use to test the smaller exposed core. I can't find any info on how much stronger this make the magnet.

All this is still up in the air, too, as I don't know if the magnet will be able to grab the ball properly even with a large core and 50V, given the crazy speed my left orbit shot has. I've spent a lot of time trying just to get the 50V to work, and still haven't been able to even do a single test yet to see if the 50V can grab the ball since it keeps melting stuff

I'm also trying to consider other approaches, such as replacing the magnet with a physical diverter, but currently I can't find any good way to fit one in with my current constraints, and I would still need a magnet or an up post to hold the ball for a reliable side flipper shot after the diverter gets the ball to the flipper...

I may also try putting an up post in the shooter lane, specifically to stop the ball as it comes down the lane from the left orbit, and then using the magnet to pull the stopped ball over the flipper. I am running low on drivers for the coils though, so I want to avoid adding in more coils if possible...

Posted Tuesday, September 29, 2020
at 08:58 PM


Tags: Blog Post, Pinball, Project, P3,

Homebrew Pinball #3, Part 28

Cross posted from the original Pinside thread, this is one of many posts regarding my third homebrew pinball machine, creatively nicknamed 'P3'



Got the basic habitrail installed. Made a half height, low quality mount to hold the other end, which seems to work okay.

It looks like I can make the curve on the entry mount wider for a smoother feed. This is the original:

And here's my current iteration:

Mounting the entry mount was also an issue, since I didn't really plan for that. I ended up putting it on a standoff on top of one of the existing ramp's mounting holes, but I still only have one screw holding it. It seems to work okay, so I'll leave it for now. I could probably extend another support out to the posts behind the 2-bank if necessary, but I don't want to cover the playfield any more than necessary.

I also needed a place to mount the switch, so I stuck a microswitch through a small gap. To prevent airballs, I put holes on the top to screw a sheet of clear plastic into. Still need to figure out how to attach the plastic on the left side of the ramp. I don't understand how Mars never has airball issues on its ramp... seems hard to believe that they managed to make it the exact height needed for their flipper strength, especially since I'm using the same flippers!

This is my final entry design. Looks pretty weird, but it works. :

I had to add some side rails to keep the ball from falling off, especially at higher speeds. Lock post worked on my first try with a random guess for the pulse length, which surprised me.

While it's nice to know this works, I probably will avoid locking multiple balls this way, since I don't have any way to mount a switch behind it to know if it failed to release a ball due to the ramp positioning. Sadly, this was the only position I could fit the post mech in, so I'm a bit constrained here. I'mthinking I'm going to have most multiballs work by locking one ball on the ramp, and then you get a second ball to plunge, and the ramp ball is released once you hit a switch. Maybe there will also be something to let you short plunge and combo up the ramp to lock a second ball, for three ball, or a rule about locking both balls during MB to release a third. Since there's no auto plunger I can't really have a normal add a ball. I feel like multiballs lately have been a bit boring design wise, so I'm hoping to do more stuff with multiple phases like DE used to do, or maybe more advanced stuff like a special multiball that you can only work towards qualifying while you're already in another multiball, at the cost of ignoring the current multiball's jackpots to make that progress...

For normal ramp shots, I programmed the game to engage the post as soon as the ball makes the ramp, and then disengage once the inlane switch registers, but I had issues with the ball bouncing over the switch since it was just dropping off the end.Inspired by Metroid which I saw at Pintastic last year, I made this end cap for the rail to make the ball drop nicely.

It worked, but I didn't like how it looked, so I made this instead, which seems to work fine and looks more natural:

Posted Tuesday, September 29, 2020
at 06:30 PM


Tags: Blog Post, Pinball, Project, P3,

Homebrew Pinball #3, Part 27

Cross posted from the original Pinside thread, this is one of many posts regarding my third homebrew pinball machine, creatively nicknamed 'P3'



Here's a big case of 'wish I was using MPF'... Testing live on the machine was a pain since it was at the other end of the house from my regular computer. So I wanted to be able to easily test stuff virtually. MPF has a nice application for this. Lets you import a picture of your playfield, then drag and drop switches, lights onto it. Pretty handy, so I recreated it using my new rendering capabilities. Not a ton of work in the end, although mine lacks some polish...

Squares are switches. Red means closed, yellow/white means open. Left click to toggle open/shut, right click to quickly press the switch and release it again. Diamonds are coils, they turn red when energized. The white circle above the right inlane is a light, currently off, currently wired up as a 'lower ramp w/lit'.
Another in the left outlane will turn green when the mini-playfield is enabled, triggering the down post to let the ball in. Hopefully I can use this to get a slightly better feel for where lights will go.

I also added some code to do stuff like automatically opening the drop target switches when the bank resets, auto closing the shooter lane switch after a ball is released from the trough, etc. Stuff that would happen physically on a real machine. Otherwise it gets to be a pain to use, since the drop target coils would repeatedly fire until you remembered to click each switch again

Posted Tuesday, September 29, 2020
at 06:30 PM


Tags: Blog Post, Pinball, Project, P3,

Homebrew Pinball #3, Part 26

Cross posted from the original Pinside thread, this is one of many posts regarding my third homebrew pinball machine, creatively nicknamed 'P3'



Code can't get very far without some read-outs. I don't have any lights yet, so for now my 'screen' will have to do. Currently that 'screen' is a 50' HDMI cable running to my livingroom TV, but it'll do.... I spent a long time trying to find a good R-Pi compatible graphics library that would work with Typescript/Node. For some reason, everything seems to have been abandoned 2-3 years ago, and doesn't work with modern Pi operating systems. I'd be fine with even coding the graphics from scratch with a plain OpenGL context, but even a simple library to provide that seemed to be missing.

Eventually, I found a simple library that supported things like basic shapes, images, and text, that was designed specifically for RPi game dev, but had been abandoned partway through development. The author's last update said that they were working on keyboard/mouse support, since without that a game graphics library isn't very useful. Well, it's useful to me! no keyboards here...

Only problem was, it didn't work with the latest RPi OS, since they introduced a new graphics card driver, and it wasn't compatible with Windows (my dev OS). So I dug in, forked it, and made my own version with RPi 3 support, some features and bug fixes, and, with one late night hacking session, a shaky but usable windows port. Not too bad, all things considered. The nice thing about this, vs using an established library (if one had existed), is that if I find any other bugs or shortcomings, I can just easily add whatever I need, since I'm already maintaining my own fork.

With that out of the way, I got some initial status displays set up. Very rough currently; I am not in any way an artist. Hopefully I can work up something half decent for the screen at least, but actually doing some art for the playfield is probably beyond me... More mountains to climb down the road

I can add more cards from the drop targets

No scoring or ball logic hooked up yet though... I also need to figure out what exactly is actually going to happen once you complete a hand. To keep with the 'real poker' goal, technically you should have a final opportunity to bet before your opponent reveals their cards, so I figure you'll need to shoot a shot that can hold the ball to finally flip the cards and declare a winner. In this case, my only ball holds are the upper eject hole, the ramp, and the shooter lane, so I'll have to figure out some logic for that, as well as how exactly you can 'fold' if your hand is looking bad. I'd like it to be something on the playfield, vs some menu interaction, but it has to be something very hard to hit accidentally....

Current lines of code: 4,106

Posted Friday, September 25, 2020
at 10:25 AM


Tags: Blog Post, Pinball, Project, P3,

Homebrew Pinball #3, Part 25

Cross posted from the original Pinside thread, this is one of many posts regarding my third homebrew pinball machine, creatively nicknamed 'P3'



Began work on the habitrail for the ramp, to return the ball to the left inlane. I 3D printed some clips with flat bottoms to make it easy to hold the rails while I align them and work. The plan is eventually to either use some brass and solder it, or try to braze some steel, but for now, I'm using some easy to bend 1/8" copper wire (and cheap, since it's just on spools at Home Depot) to get it right and test things. I'm curious to see if the clips can hold up to soldering/welding, it'd be convenient.

The actual alignment is a bit iffy; since my ramp model didn't match the actual model that means the habitrail I drew won't line up with the physical ramp either. I tried to eye-ball adjust it to match where it looks like the ramp actually is, but we'll see how well that works.

The actual attachment to the ramp will also be weird. It was designed to connect to a plastic tube that goes across the playfield, and didn't have much flow. Originally I just sorta hand-waved this part as "I'll make something to hold the habitrail, can't be that bad", but now I'm at the part where I need to actually figure out how to connect a ramp whose shape I don't know to the habitrail I haven't built yet.... Here's my first attempt. I'll probably just have to print this a lot of times to get the fit right, assuming the basic shape even works.

Posted Thursday, September 24, 2020
at 10:36 PM


Tags: Blog Post, Pinball, Project, P3,

Homebrew Pinball #3, Part 24

Cross posted from the original Pinside thread, this is one of many posts regarding my third homebrew pinball machine, creatively nicknamed 'P3'



Earlier, I went searching for an LCD to put in the middle of the playfield. After a lot of digging, I ordered this 9" screen from AliExpress. Seems to have HDMI support and can be powered with my ATX power supply, but it's hard to tell for sure. There's a ton of different badly documented screens for sale, with conflicting information about what they support or how to drive them. It seems like there's really only two driver boards floating around, one with VGA support and one without, judging by the pictures, but some of the items for sale are clearly wrong about what they're offering. Lots of fun. But for ~$30, I'll take some gambles. Any screens for sale from more reputable US sources seem to be $100+ which is a bit ridiculous. Originally I planned to just buy a monitor and strip off the case, but it's hard to even find a 9" monitor, and the more common 10" won't fit my playfield.

Sadly it's been more than a month since I ordered the screen, and it still hasn't arrived. Tracking last showed it leaving China on 3/30, so not sure if it's gotten lost or just stuck in customs or something forever...

Not a super big deal, I guess, since I don't have any way to really mount it yet.

I'm investigating different options for plastic to cover the hole. Not sure what material is best as far as being pretty sturdy but also thin and scratch resistant. Based on the Voyager homebrew, I'm also wondering about just using a single large sheet of plastic for the playfield as opposed to recessing a smaller cover. I wouldn't have to worry about routing out the recess for the window, or about doing any inserts either, and no need to clearcoat. A lot of other possible issues arise though, so that'll need some more investigation. Once I can find better what material to use, I'll try to order some sheets for experimenting

Posted Thursday, September 24, 2020
at 10:35 PM


Tags: Blog Post, Pinball, Project, P3,

Homebrew Pinball #3, Part 23

Cross posted from the original Pinside thread, this is one of many posts regarding my third homebrew pinball machine, creatively nicknamed 'P3'



While getting some basic code running to reset the drop targets and eject the holes, I suddenly lost an entire bank of solenoids. Inspecting the board, I eventually figured out that the board had been repaired so many times as I modded it to test different things that one of the traces carrying the solenoid ground had just gotten ripped off completely. At this point it probably had 4 jumpers on it already, and multiple cut traces, plus some of the mosfets had been replaced three times, so I decided it was time to junk that pcb and build a new one.

One of the main issues that required all those modifications early on was my changing requirements for how the inputs would work. First I'd had them active high, then active low, and then I'd had to change which pin they were. Back when that happened, I redesigned the board to add some more configuration points, so each I/O could have a configurable pull up/down, as well as fix some other pain points. I added LED indicators that the fuses were good, test points for the voltages, and combined my 6/6/4 pin connectors into two 8 pin connectors. A big goal on these boards as I design them further is just making the connector count as small as possible, since they needed to get unplugged so often. I'd actually had the new PCBs on hand for months, but hadn't needed to actually use one yet, so I started assembling:

Sadly, I discovered an issue with my design early on: at some point I had mirrored some of the components. For the mosfets, that wasn't too bad; just turn them around, but I'd also mirrored one of my 16 pin chips, which resulted in the horrible hack of mounting the chip upside down:
Sigh. I guess another pass at the design will be needed down the line. It'll work for now though, just hard to mount

Posted Thursday, September 24, 2020
at 12:24 PM


Tags: Blog Post, Pinball, Project, P3,

Homebrew Pinball #3, Part 22

Cross posted from the original Pinside thread, this is one of many posts regarding my third homebrew pinball machine, creatively nicknamed 'P3'



Switch and coil wiring complete!

It's hard to really grasp it from the pictures, but for comparison, here's the relatively empty bottom right corner with a few switches wired from before:

And after:

This area can still use a bit of cleanup, but I ran out of my little metal strips for wiring support as well as the plastic ones.

Also visible here is my attempt to save some more solenoid drivers: two gottlieb pop bumper driver boards. These are wired up to the slingshots. It seems to work fine, and makes me curious why Gottlieb still used EM style driving for their slings while using driver boards for their pop bumpers. Eagle eyed readers will also note that one of those driver boards says NG on it. Surprise surprise, that board was... not good. Instantly locked on one of my slingshots. Genius. I also figured I could very simply enable/disable these by just hooking their logic ground to one of my driver mosfets, but it turns out that makes them glitch and fire randomly when you turn them on and off, so I reverted to doing what gottlieb did, and cutting the ground signal to the switches.

Some more wiring pics:

I was able to mostly follow my sketched wiring from earlier without issue. The one place where it got weird was the mini playfield at the bottom. Since there's no support rail out there, I ended up having to run the solenoid wiring along with the switch wiring around the right flipper to reach it. I'd planned on it going around the lower edge, or between the drops and the flipper mech to leave all the area between and above the flippers open for lights, but there just wasn't room

Out of 62 switches, I only had three wiring issues to fix on my first switch test pass, which is nice. Very glad I didn't mess up a whole column or anything. There doesn't seem to be any sure fire way to confirm that a matrix doesn't have any issues, but I knocked down lots of drops and hit lots of switches, and didn't get any incorrect readings.

With that out of the way, I was able to get to the most important part: getting something on the playfield to react!

Now I can start actually coding a few simple rules, and try to play some test games where I imagine different targets are lit and shoot at them to try to get an idea for how my rules to work, and I won't have to stop every 30 seconds to manually reset a bank of targets or eject the ball from a hole

Posted Wednesday, September 23, 2020
at 03:23 PM


Tags: Blog Post, Pinball, Project, P3,

Homebrew Pinball #3, Part 21

Cross posted from the original Pinside thread, this is one of many posts regarding my third homebrew pinball machine, creatively nicknamed 'P3'



In the midst of wiring, I've been taking some breaks to start on the code. Against my better judgement, I'm going to attempt to write all the game code in Typescript (a type safe superset of javascript), and run it via Node off the Raspberry Pi. I'm a bit worried about performance, but I figure I can always optimize it, shirk off some duties (such as video or sound) to a C backend, or upgrade to a Pi 4 or a x86 based board with a Pi compatible GPIO header at worst. Why Typescript? Because I've been using it at work for so long that trying to use most other languages is unbearable. Typescript is just so nice and developer friendly...

Hopefully this all makes vague sense to people who haven't coded a pinball machine before:

I also am going to try to take a different route from how (to my knowledge) all other pinball games are coded. I've worked with/explored a lot of systems (early williams/bally/gottlieb, wpc, MPF, skeleton game, etc) and they're all very much focused around a central concept: events come in (from switches, timers, etc), and then the code listens to those events, and sets some state (light on/off), fires some coils, etc. It seems to often lead to bugs where lamps get stuck on, balls get stuck in holes, etc, because there's state where there shouldn't be, or there isn't state where there should be.

For instance, on Demolition Man, when you collect the third claw award, it lights the 'car chase' inserts on both ramps. When you finish the mode, it turns them off again. But there's a bug where sometimes, if you drain while in car chase, on your next game, those lights will still be lit! Clearly, it's storing the 'state' of the lamp globally, and then forgetting to turn the state back to 'off' in some edge case. In my mind, that implies something wrong with the methodology they're structuring their code around. The lamp's state should be directly tied to being in car chase mode, it shouldn't be possible to 'forget' to turn if off. I'm sure there were tons more bugs like this that were found and fixed during development we never saw, if this one was able to get through multiple software revisions. I've even seen similar bugs on modern games, like Alice Cooper. On an older game like DM where they were writing in assembly and bytecode, and modes were a new concept, it's understandable that their handling of all this wasn't the cleanest, but with modern games where there can be tons of stacking going on, I want to come up with a cleaner solution for the lights.

Another example of the reverse case is something I've run into on my Taxi. In certain edge cases, the ball will go into one of the eject holes, and then won't kick back out. The game knows the ball is in there, since it registers in switch test, and it doesn't trigger ball search. Somewhere in the complex code surrounding the kickouts, there must be an edge case where it forgets to fire the eject coil. But again, that shouldn't be possible! We have a piece of set continuous 'state' here, which is that the ball is in the hole (the switch is closed), but its tied to a momentary input and output (the switch closing, and the solenoid firing). Since one of those momentary events was missed, the continuous state is now stuck.

In my mind, whenever possible, you want to match up these types of events/states. If a the eject switch is closed, the ball needs to be ejected. That's a 1 to 1 issue. The fact that sometimes, this might result in multiple momentary firings of the eject coil should be abstracted away. Similarly, imagine you had a shot where there's a down post and an opto. The game knows the ball is behind the post, since the opto is blocked, therefore it needs to release it. The same exact situation from a logical perspective: ball in hole/etc, ball needs to be released. But this time it's a down post, which isn't a momentary coil. You just need to energize the post until the ball leaves, no need to repeatedly fire the eject coil like in the first case. So I want to have a system where, in both cases, the game/mode's code is exactly the same. All it would say is something like "coil on if switch closed". Then a separate layer, which actually interacts with the hardware, can take care of things like, is this coil momentary? If so, fire it, then wait a bit. If the game is still requesting the coil to be on, fire it again. Increase the strength if necessary, or maybe trigger an operator alert if too many attempts have failed, etc.

With this in mind, my code works like this:
I have three layers: the game code, the machine driver code, and the actual hardware code. The game code is going to support stacking modes, sub-'modes', etc with their own priorities to override each other, etc. The machine driver code handles turning the 'wants' of the game code into commands for the hardware. In the simple cases this is just stuff like sending the 'turn on coil', 'turn off coil' commands to the hardware, but in cases of more complicated devices, it'll also manage that. For instance, my ramp has a switch to tell when it's up, and I put a switch underneath, to tell if a ball has gotten stuck under the ramp by rolling in from behind while it was down. The 'driver' will handle raising the ramp temporarily if it detects a stuck ball, or giving the lift coil another pulse if it detects the ramp has fallen down when it's supposed to be up. The hardware code will be very simple. It'll just handle reading the switch matrix, toggling IOs, etc, based on what the driver tells it to do.

The driver layer is going to have a list of every 'output' (coils, lamps, etc) the game has. Each mode will be able to specify its own values for any lamp or coil it wants to control. I'm then going to have a system that watches all the modes for when one of those values changes. It'll figure out which modes have priority, etc, and propagate the final value down to the driver. This way, I can have one mode say 'eject the ball from this scoop', but then, if needed, a sub mode that's playing an animation could say 'don't eject the ball right now', and block the coil from activating. When that sub-mode ends, the system will take care of automatically reverting all the outputs' values to remove any effects the sub-mode was having. In the case of lights, I'll also add support for combining values instead of overriding, so for instance I could have one mode say an arrow is green, and another say the arrow is white, but since they're stacked together at the same priority, the driver will take care of flashing the arrow green-white-green-white for them.

Hopefully this is all a good idea....

Posted Wednesday, September 23, 2020
at 09:39 AM


Tags: Blog Post, Pinball, Project, P3,

Homebrew Pinball #3, Part 20

Cross posted from the original Pinside thread, this is one of many posts regarding my third homebrew pinball machine, creatively nicknamed 'P3'



My ribbon cable connector idea has solidified into a small custom PCB. I would have liked to have this custom fabricated, but the turnaround time is long, and the board is simple. If I'd known exactly what I needed sooner, I would have ordered it with some other boards a few months ago, but oh well.


My MPU board has a slot for a 26 pin ribbon cable. 16 columns + 8 rows = 24, but 26 was cheaper. I just ran every wire from the playfield to this board, and soldered them to the pins:

Wouldn't have been too bad, except that, since I want to avoid having any left over wire hanging around, I need to be soldering it while it's within an inch or two of the playfield, sideways A lot of careful soldering, but luckily no issues

On a custom board I would have made all the wires come in one side, but with no room to route traces here, it still gets a bit messy. 3D printed some simple brackets and mounted it to the very back of the playfield, and it was good to go

Posted Tuesday, September 22, 2020
at 09:37 AM


Tags: Blog Post, Pinball, Project, P3,

Homebrew Pinball #3, Part 19

Cross posted from the original Pinside thread, this is one of many posts regarding my third homebrew pinball machine, creatively nicknamed 'P3'



Wiring is progressing, not a lot to show...

I'm ending up running two main bundles of wire, one along each outside edge of the playfield, for simplicity. It gets a bit hairy in a few places where mechs are near the edge of the playfield; I need to make sure the wires don't get caught on the cabinet's supports. I guess this is another reason to use a wpc or stern style mounting system... Maybe if I get to a point where I can say the construction is 'done' and I don't need to take the playfield out completely anymore, I'll try to convert. Assuming it fits my playfield...

Trying to keep the switch wiring high enough to clear the mechs, and any future lights that get installed, while also keeping it as far from the coil wiring on the support rails. These stern wiring supports are great, and cheap at PBL, but sadly I only have two on hand. Wasn't planning on getting this far when I did my last parts orders, or if these would be useful, and now we're in quarantine so I'm trying to avoid unneeded orders.

To work around that, I found some random strips of metal I had on hand, and bent them. Seems to work just as well, and probably cheaper too, but I'd probably still use the plastic if I had a choice, just to avoid having random metal things to possibly short stuff against.
This all looks a bit messy right now, but hopefully once I have all the wires in, and zip tied together into a harness, a lot of the slack will disappear and it'll look cleaner. I also have a lot of coil wiring (like that white loop) where I've had to repeatedly rewire stuff as coils get added or changed, resulting in extra too-long lengths and wire nuts that can be cleaned up eventually. The wiring is going pretty well, and is pretty easy as long as I can reach stuff. The biggest pain is doing the connectors for all the drop target mechs. part of me almost wishes I hadn't bothered with them, but I know I'd regret it down the line. They require a lot of extra planning since you need to have both wires ready ahead of time before crimping, and you need to make sure never to have three wires join at a connector, even though that'd be fine at a regular switch.

I'm also realizing another issue: since I salvaged most of my switches from a Gottlieb playfield, they don't have the third lug for the diode. Right now I'm just sticking a diode on one lug, with the other end hanging free, which hopefully doesn't come back to bite me down the road...

One other hurdle to figure out soon is how to actually hook all these wires to the MPU. Right now I'm just terminating everything in the upper left corner of the playfield, which is vaguely where I picture the switch wiring leaving the playfield, since all the coil wiring is on the right side. I'm hoping I can use a big ribbon cable to connect the playfield to the MPU, to avoid having to assemble more connectors and run a lot of extra wire, since my wire supplies are already running low.

Posted Monday, September 21, 2020
at 09:53 AM


Tags: Blog Post, Pinball, Project, P3,

Homebrew Pinball #3, Part 18

Cross posted from the original Pinside thread, this is one of many posts regarding my third homebrew pinball machine, creatively nicknamed 'P3'



Quoted from atum:

Great idea on the rig! What all colors can you do and mark? Are you limited to black stripe? Or can you put a green stripe on red, etc. to get more possible color combinations with fewer solid (base) wire colors?

I bought all the colors at my local staples: black, white, gold, red, and purple. Weird arrangement, but ok. I used black stripes for the rows, since it was a color I was sure could show up on every wire color I was using. For the columns, since there was so much wire, I just left them blank (the sixth stripe color, invisible). Depending on how I handle lights when I get to that point, maybe they'll use some of the other colors.

I've also been using it to mark some of the coil wires. I managed to get 10 feet x 10 colors of striped 18awg fire off ebay that I used first where possible, but 10 colors is much less than my current 27 coils, and it turns out that 10 feet isn't long enough to reach from the bottom of the playfield all the way to the boards, so I had to reserve the striped wire for only coils on the back third of the playfield. My coil drivers are arranged into 4x 8 pin connectors, so I made one of those with no stripe, one with gold stripe, etc and tried to always use the same color ordering for pins. My rows go red-orange-yellow...purple-pink-brown, and so do my coil connectors, minus the random pre-striped wire thrown in. I've got a giant spreadsheet of all my connector wiring, and also use upper case vs lower case to denote 18 vs 22awg wire, which will allow me to reuse my limited stripe options more.
Coils:
Switches:

Posted Sunday, September 20, 2020
at 10:50 AM


Tags: Blog Post, Pinball, Project, P3,

Homebrew Pinball #3, Part 17

Cross posted from the original Pinside thread, this is one of many posts regarding my third homebrew pinball machine, creatively nicknamed 'P3'



I populated the switch matrix components on the MPU board, and they seemed to test okay with any single switch. Still a bit worried about if the way I'm driving the switch matrix will work once I've got lots of switches down, but so far so good. Luckily, the actual wiring of a switch matrix doesn't really change regardless of how you connect to it, so even if my board ends up being bad, that won't mean rewiring the playfield. With that in mind, I started trying to plan out the matrix, which was surprisingly involved. Technically any switch could go in any position, so all that really mattered was what made wiring easier. I'd already wired up all the target banks as individual rows, so that constrained me somewhat, but beyond that I just tried to lay out all the other rows based on what groups of switches were closest together:

Doesn't look too bad so far!
Then I tried to connect up the columns...
That looks a bit worse. Then I realized I was going about this a bit wrong. No matter what, I was basically going to end up with two big bundles of wire going up each side of the playfield, and then joining at the back. So I need to re-order the rows in a way that will minimize how many rows/columns need to be run to the back, since that's where the most wire will be used. I also don't need the rows/columns to all connect together, since they'll join at the connector anyway, so I can simplify that a bit.
That left me with a new, more concrete wiring plan for the rows:
The columns, again, look a lot messier...

I feel like there must be a way to simplify this more, but I can't see any obvious major changes, and it doesn't look too bad overall. I'd love to see inside the mind of someone who designs the wiring harnesses for these games professionally.

I have nine colors of 22awg wire to work with, and the playfield itself uses 62 switches, which requires an 8x8 matrix. To keep things clean, I'd like to stripe the wires, so I can tell the rows and columns apart when working. Sadly I couldn't find any cheap sources of stranded wire online, so I came up with this:

Tried it first with a regular sharpie, but the ink would rub off quickly, so I got some oil based ones, which seem to stay on the wire well once they dry. Stick a marker in the top, pull your wire through the side, and you'll get a messy but usable stripe.

With that figured out, I started trying to assemble a minimal corner of the switch matrix for more testing, which ended up being the first three columns on one side of thee playfield, and two rows:

Switch matrix still checked out fine, so I'm going to go ahead and wire the rest of the switch matrix

Posted Saturday, September 19, 2020
at 03:05 PM


Tags: Blog Post, Pinball, Project, P3,

Homebrew Pinball #3, Part 16

Cross posted from the original Pinside thread, this is one of many posts regarding my third homebrew pinball machine, creatively nicknamed 'P3'



To control the magna save and the outlane saver, I needed my secondary flipper buttons. I took measurements of my Black Knight, WCS, and JM to find out what the spacing should be, and was surprised to find that they were all different! JM's secondary buttons are further back than BK's, while WCS is not only further back, but also isn't 'parallel' to the rail (it looks to be parallel to the bottom of the cabinet instead, which makes it way harder to hit 'in the moment'). Both JM and BK feel okay to me, so I copied BK's spacing.

Luckily, the depression for a williams flipper button seems to be the same diameter as a star rollover, so I was able to use my forstner bit here too.

After I installed these, I realized that, in order to use them, I sorta need a switch matrix! That will be my next step

Posted Friday, September 18, 2020
at 11:17 AM


Tags: Blog Post, Pinball, Project, P3,

Homebrew Pinball #3, Part 15

Cross posted from the original Pinside thread, this is one of many posts regarding my third homebrew pinball machine, creatively nicknamed 'P3'



Mounted the final mech today, the outlane saver. I'm having some trouble with its reliability currently. It keeps going up too high and getting stuck above the playfield. I added a bolt across the bottom to stop it from going too far, but then the bolt got stuck instead. So I added a spring to prevent the bolt from hitting the bottom of the coil so hard, but the spring reduced the travel enough to make the mechanism weak. I'll need to play some with adjusting the lengths of the parts in an attempt to lengthen the travel, or maybe make a custom bracket to allow everything to be longer (currently I'm just using a regular up-post/vuk bracket).

Here's a video of what the saver does when it doesn't get stuck or bottom out:

It's super strong and just sends the ball flying back onto the playfield if you time it right. I like having an outlane saver that doesn't save you completely, it just keeps the ball in play. The magna save does the same thing to a lesser extent, and the mini playfield shot between the flippers also manages pretty well, since your shot tends to go right into the right slingshot and out of control. This can be good or bad, depending on your playfield situation, since chances are once it gets bouncing around it's going to knock down a few drop targets, which will help you complete your hand, but they might not be the cards you want to make a good hand.

If you fire the popper too late though, you'll end up with a ball that, due to its left/down motion, leaves the metal guide sideways, and just flies off to the left. I've had it end up in the left inlane, the left outlane, all the way down in the mini playfield, and even somehow jumping backwards into the trough. I'll have to put up some air ball protection to make sure it always returns to the playfield somehow.

Posted Thursday, September 17, 2020
at 04:07 PM


Tags: Blog Post, Pinball, Project, P3,

Homebrew Pinball #3, Part 14

Cross posted from the original Pinside thread, this is one of many posts regarding my third homebrew pinball machine, creatively nicknamed 'P3'



Next step was adding the diverter to the shooter lane. I have a bally gate mech, but it's designed for low speed inlanes, not very flowy. So I 3d printed a much smoother gate:

This mostly works, but I had issues where very fast balls would somehow get too much horizontal force out of it and hit the top post of the slingshot instead of directing down into the inlane. So I had to take 3 iterations of straightening it and adjusting the curve to get it to a point where even the fastest ball I can manage still goes towards the inlane, while a slow ball that just drops from the end still has a good chance of getting to the inlane.
Original:
Final:
It's a fine line because it needs to be able to fit behind the right drop targets and not block the shooter lane, so it can't be too wide or too straight.

I also added a little guide on the slingshot to smooth the transition, since the ball tended to bounce back and forth before coming down to the flipper

With the diverter and the left inlane done, I now have two more shots I can test.

First, the spinner/orbit:

This works, although it's a bit clunkier than I'd like. The spinner eats up some of the energy from the ball. I'll have to do some more tests with the spinner removed to see if there's any geometry improvements I can do. My upper arch isn't optimally designed, since it has a large flat part, which gives the ball time to 'drop' at the top and not follow the other side curve smoothly. Plus, with the lanes on both sides of the playfield, the shots hit the side walls at a more oblique angle which is probably leading to a less smooth shot. Might need to get the camera in slo-mo to see for sure

Second, the under-ramp/orbit:
I was worried about this shot since the left side curve of the upper arch is tighter than the right due to the ramp and upper eject area being in the way, so the ball had a the potential to hit the wall and bounce off at a ~25 degree angle, missing the curve completely, but luckily this doesn't seem to be the case somehow. In fact, it's smooth. SUPER smooth. And ridiculously fast. I took 20 shots at it, and didn't manage to loop it even once due to the sheer speed of the ball coming down the inlane. But I'm also not very good at that type of repeating shot. Can't wait to get this flipping enough to see some better players take a crack at it.

Posted Thursday, September 17, 2020
at 03:23 PM


Tags: Blog Post, Pinball, Project, P3,

Homebrew Pinball #3, Part 13

Cross posted from the original Pinside thread, this is one of many posts regarding my third homebrew pinball machine, creatively nicknamed 'P3'



Printed some inlane guides, and made a one way gate for the left inverted inlane.

Had a lot of trouble getting the inverted inlane to work properly. I made it with slots so it could be adjusted up and down, but if I put it lower, than a ball that just dribbled into the lane above the separator wireform wouldn't manage to make it over the gap, and if I put it higher to save those balls, then a fast ball coming down from the top of the playfield would hit the back of the slingshot and drain. There was also a weird issue that I could never reproduce by hand where a ball dropped from a middling height would somehow rattle to a stop and then fall down the outlane.

I designed this little gate to make it work at any speed. It works surprisingly well, although I'm sure it's going to break sooner or later since it's quite flimsy. I'll have to come up with a more solid way to accomplish it..

Posted Wednesday, September 16, 2020
at 03:55 PM


Tags: Blog Post, Pinball, Project, P3,

Homebrew Pinball #3, Part 12

Cross posted from the original Pinside thread, this is one of many posts regarding my third homebrew pinball machine, creatively nicknamed 'P3'



Some more small build updates...

Made these little clips for the ball arch. They go on top of the side rails and clamp one long piece of stainless down to the playfield. Eventually I'll probably drill some holes through it to mount it, similar to how williams games do it, but for now this will allow some easy adjustment while I play with the curves

In the spirit of getting as much mounted as possible to figure out placement under the playfield, I started mounting all the rollover stars. Had to special order a 1-3/16 forstner bit (dang, these are expensive!) to cut these. Manually drilled down the proper distance to get them flush, was a big pain.

My biggest innovation yet, a target in front of the spinner wire instead of a mini post. Should be back handable from the right flipper

Threw together a 60 degree kicker for the upper eject hole as it was the only shape mech that would fit with the drop targets so close. Didn't want to pay for a full mech so I used a random plunger from a vuk or kickback, not sure. The plunger was too long, so I just put some 1/2" standoffs under the mech

Needed a down-post for the mini playfield diverter, so I 3D printed one. It just presses up against the bottom of the playfield to stop it at max height, and uses a plunger from a williams drop reset mech that has a built in thread on the end. I had problems with the rubber I put on it sticking in the hole of the playfield, and being too bouncy when up, so I switched later to just a straight plastic post on top.

Posted Monday, September 14, 2020
at 06:08 PM


Tags: Blog Post, Pinball, Project, P3,

Homebrew Pinball #3, Part 11

Cross posted from the original Pinside thread, this is one of many posts regarding my third homebrew pinball machine, creatively nicknamed 'P3'



Bottom of the playfield already getting pretty crowded...

Before I got much farther, I realized I'd forgotten to cut the magnet holes in the bottom. Those will need to be done with the router, which needs some space, so I'll need to remove all the mechs in the area and the support rails.

I very scientifically traced the magnet out, and routed out a depression:

I wanted to hook it up to test, but that meant installing the relay somewhere. When I was looking around for the best place to put it, I realized that this was a bit dangerous, as I didn't know where any of the lights, switches, or wiring was going to go. I tried to mark out roughly where I was picturing things, and that actually left me with no safe spaces to put the relay! I'm sure once it's all done there'll be room, especially in the middle of the upper playfield area, but I have no idea what sort of lights are going to be up there now, so I want to avoid mounting anything there. Then, I realized the one area I knew was safe...

Posted Monday, September 14, 2020
at 09:39 AM


Tags: Blog Post, Pinball, Project, P3,

Homebrew Pinball #3, Part 10

Cross posted from the original Pinside thread, this is one of many posts regarding my third homebrew pinball machine, creatively nicknamed 'P3'



In order to get the sequenced firing working to test the 5 bank, I had to get some more control going on. Previously when testing the flippers I was just editing the driver board firmware manually to configure coils. I made a custom MPU board with hookup for up to 8 external driver boards for solenoids, lights, displays, etc. It's powered via a raspberry pi for simplicity, and also has support for an 8x16 switch matrix. Here's my first test setup, with the two boards just screwed to a spare piece of foam core.

The driver board can have each solenoid configured with a default pulse time, a maximum on time, and PWM duty cycle. The switch matrix and board I/O are handled via a small Java app for now, which can be connected to via a socket to send commands. The game code will eventually send those commands, but for now it makes for easy testing to just connect directly to the socket via PuTTY and type them in. To fire the 5 bank, I just made a quick bash script to send six commands in a loop with some pauses in between.

Posted Sunday, September 13, 2020
at 11:22 PM


Tags: Blog Post, Pinball, Project, P3,

Homebrew Pinball #3, Part 9

Cross posted from the original Pinside thread, this is one of many posts regarding my third homebrew pinball machine, creatively nicknamed 'P3'



Started wiring all my drop target banks at my workbench. Each will have a connector for easy removal. Not going to bother with that on every mech, since most are pretty simple and either serviceable from the playfield or unlikely to need service, but drop targets and pop bumpers are another story.

Realized I'd made a big mistake during initial planning... Most of my banks are williams or gottlieb, which is fine, but the 5 bank on the right is a bally, which I chose because they have thicker targets, which will make shooting past them into the shooter lane smoother, and they had 'memory', so I could knock them down with code if needed to make the shooter lane shot easier. Problem is, Bally used 50V coils, while gottlieb and williams used 25V, and I'm using a Gottlieb transformer. A quick test revealed that, of course, the giant 50V reset coil on this bank doesn't even move when you apply 25V to it. I dug through my spare mechs box, but the only other 5 bank I had wouldn't fit due to space issues with the flipper mech immediately above it.

So I needed to get creative. How do I get 50V when my transformer only puts out 25V? With a voltage doubler! Here was my simple test setup to see if this would even work:

Basically, creative insertion of two big capacitors in the middle of a half bridge rectifier allows each to be charged by half the AC circuit to 25V. But they're wired in series, so that combines to 50V (technically, I guess it's -25V and 25V compared to the rest of the voltages in the system). Those TO-220 transistor looking things are actually just really big diodes, I think 10A each? I overspecced this thing for sure, since I couldn't find exact details on what tolerances were needed. And it worked! Bank resets just fine. You can't energize anything continuously with it since the caps will empty pretty quick, but it also recharges within a second, which is good enough for resetting one drop target bank. I got a new PCB made for this, with even more fuses (again, wasn't sure where to fuse, so I just fused everything), and a bleeder resistor so the 50V (actually, it reads as 80V for whatever reason) doesn't sit around after the machine is powered off

The issue with this of course is that, since it's operating off its own rectifier with a weird half-ground system, I can't control it via the MOSFETs on my driver boards, since they don't share a common ground. For the reset, this isn't a big deal; I can just add a relay in to control it. But I also have the 5 knock down coils. I don't want to have to wire up 6 relays for this bank. Luckily, since the knock down coils are so small, I find that they can be moved via 25V. But not enough to actually knock the target down. So I added a 4700uF cap onto my 25VDC rectifier, similar to what gottlieb did on games like Black Hole to give the kickers more juice. That gives enough strength for the knock down coils to operate 90% of the time, and I can just code them to try again if they don't detect the switch closing to handle the other 10%.

Posted Sunday, September 13, 2020
at 12:46 PM


Tags: Blog Post, Pinball, Project, P3,

Homebrew Pinball #3, Part 8

Cross posted from the original Pinside thread, this is one of many posts regarding my third homebrew pinball machine, creatively nicknamed 'P3'



From thinking about the idea of the jump from a flipper behind the main playfield, the idea turned into: what if you shot the ball up between the flippers?

It's a tough shot, but it is possible!

But, if you drain the ball from that flipper, how does it get to the outhole? Originally I wondered about doing this with a newer style below-playfield trough, so I could try to gravity feed it, but from my issues with the reverse outlane ramp, I was wary of any slopes going against the playfield slope.

I really hoped this worked when I drew it up in CAD, but wasn't sure how it would go. So many variables. I tried to leave some room to maneuver the kicker arm around to get different angles if needed, but my guess for an initial angle that I drew a line for turned out to work. I had to use a gottlieb kicker arm due to the clearances needed.

With that proof of concept looking promising, I decided to make a whole mini playfield out of it

There was not much room to work at all down there. I positioned the flipper mechas low as it could go, which resulted in this angled mech, with it pressing right up against the bottom and left side of the playfield. I couldn't put it any more to the right or else the angle for the eject would be too steep. That limited the place where the drop targets could fit. I needed to use a williams mech since they're the only style that has the coil mounted in front of the mech instead of to the side, since I had mechs to both side. And since those have a bit base plate in front of them, I couldn't put it any lower since the flipper mech was in the way, and I couldn't put it any higher and still have room for the ball to roll under the main flipper. I wanted to make sure I could disable the mini playfield area during multiball, etc to prevent anything getting stuck down there, so it needed to still have the standard outlane path. I put a down-post at the entrance to redirect balls away from the mini playfield. No room for a rubber band behind the drops either, so I figured I'd have a metal wall with some of that blue rubber sheet behind it for minimal thickness. No room for any standups to the left either since the drop mech was underneath. I also wanted to put the flipper at as low an angle as possible so that it could make the shot back between the flippers, but at the same time I wanted it to go up at least to 'level' so theoretically you could cradle the ball.

I needed to make a custom one way gate for the exit since it's so wide. I reused the little gottlieb spinner mounts from the mars playfield to mount it since there were no brackets that length either. While i was doing that I got the idea to just also put one of those behind the drop targets. Minimal width, and now I get to use the back side of the main flipper as a rebound rubber. If you knock down the drops, there's also the possibility of shooting through them and getting into the outlane area and draining that way too. Hopefully I can make this mini area super valuable, to make you willing to risk going for the targets instead of going for the saving shot immediately, or maybe if you complete the whole bank you get a ball save? We'll see how the risk reward works once you get in there...

Posted Sunday, September 13, 2020
at 11:27 AM


Tags: Blog Post, Pinball, Project, P3,

Homebrew Pinball #3, Part 7

Cross posted from the original Pinside thread, this is one of many posts regarding my third homebrew pinball machine, creatively nicknamed 'P3'



In order to test the upper playfield shots, I needed some ball guides. The shot I was most worried about was the one behind the upper right drops, since the angles looked a bit weird.
I got some 1" stainless strips, and bent one to follow the path on the playfield. I also got some #4 hex button cap screws, since they're very low profile. I can mount them near the top/bottom of the guides, and the ball won't hit them.

Made a test jig using a spare block of wood and one of my big C clamps for a quick test:

Success! Now to mount it for real...
I've never found a good place to buy these premade, so I'm making my own L brackets to mount the guides. I got a strip of 1/2"x1/16" aluminum, and cut it into ~1.5" sections:
Bend it into an L using my vice:
then drill both ends, one for the #4 machine screw and one for a #6 wood screw
Then, mount it using the button head screw and a nylon lock nut on the back

In the back you can also see my next 'custom' mech, a controlled gate:

As is going to be common, I don't know the dimensions of a lot of the mechs available online from marco/pbl, and I don't want to spend $50 to find out if it fits, so I'm making a lot of this myself... This one is made from a normal one way gate, with a piece of slightly flexible thin metal rod (I think piano wire from a PBR kit) that I bent so that it sticks through the housing and when I pull down on it, holds the gate open. Then I used a spare slingshot bracket, a random coil, and a custom plunger I made from some round stock, with a hole through the top to stick the piano wire on, and a threaded hole on the side to clamp down on the wire. The wire's hole is pretty deep, allowing me to adjust the 'pull' of the mech, and the set screw also acts as a holder for the return spring. Luckily since the piano wire is so flexible, the mech can be positioned pretty freely, as you can see here where the whole wire is going through the wood at an angle... I'll need to figure out exactly where this needs to go eventually, but for now it works.

Posted Saturday, September 12, 2020
at 10:49 AM


Tags: Blog Post, Pinball, Project, P3,

Homebrew Pinball #3, Part 6

Cross posted from the original Pinside thread, this is one of many posts regarding my third homebrew pinball machine, creatively nicknamed 'P3'



Now for the fun part: my first board!

I've been hoping to avoid FAST/PROC for cost reasons, and rolling my own sounded like fun, so I designed these. 2"x4", 16 drivers controlled by their own dedicated processor. 12 'high power' drivers using a step up chip to convert the CPU's 3V signals to 5V, 4 low power drivers for things like relays, which can also be configured as fast react inputs by replacing the mosfet (an IRL540N) with a jumper wire and all controllable via SPI. I'm hoping these can act as psuedo node boards spaced around the playfield to reduce wiring.

From prior experience making a homebrew 5 years ago, I know that direct high current switches can be a pain to deal with due to the arcing and EMI causing board resets, so my goal for this project is to have everything transistor controlled, but for initial testing, I'm going to leave the EOS switches on the flippers wired in.

I installed some low current stagable flipper buttons in the cabinet, wired them up to 3V, and ran a connector up to the playfield through zip ties on the support rails. Mounted my driver board under the trough for now, and hooked it to the lower flipper, and had my first flip! Success!

Well, until I hooked up the second flipper. Then both flippers flipped at once! A bit of troubleshooting narrowed this down. As should have been obvious, don't run your low voltage signals in the same bundle as your high voltage coil wiring! Basically, when I flipped one flipper, the first 3V pulse would go to the board fine, and it would engage that flipper. All the electrons flowing up the harness would create a magnetic field and induce enough current in the flipper button wires to be read as 3V, triggering the other flipper as well. I knew that generally, you want to keep those harnesses separate, but didn't expect to see that so soon, and so reliably.

Luckily, the next day I was at some friends' wedding, with a pinball machine in tow, and I got talking to another guest who was an electrician, who confirmed my issue, and told me that "about 6 inches" should be fine separation for the signals I'm dealing with, as well as the advice to try to cross high and low current at right angles when possible, which doesn't sound too bad. Since all the switches and lights will be close to the playfield anyway, I'm now planning on having two layers of wiring: one high current harness run through the rails, and one lower current one near the playfield. In the mean time for testing, I just run a separate wire down directly, bypassing the harness.

With that 'working', it was time to actually test the shots! Instead of moving the playfield in and out of the cabinet all the time, I found a two foot block of wood whose thickness would result in a 6.5 degree incline if I stuck it under the back end of the support rails, allowing me to play with the playfield sitting on a table next to the cabinet. This revealed that, despite me trying to account for it, my connector from playfield to power supply was too short! I spliced another 2 feet in for now. Lesson learned: always make your connectors way longer than they need to be, and then make them longer.

So I made my first shot, at the spinner, and actually hit it which was surprising considering that I was standing two feet to the left at the cabinet. However, it also illustrated a new issue: the ball didn't even reach the back of the playfield. I took another shot, avoiding the spinner so it couldn't steal any momentum, and was able to reach the top, but the power just wasn't there. It felt like playing a gottlieb EM with AC flippers. I tried playing with the pulse length, etc but nothing helped. To rule out the board, I tried manually grounding the flippers, and they were super strong! So the driver board was causing issues somehow...

I tried taking the CPU out of the equation by controlling the step up chip directly, no different. Tried sending 5V directly to the mosfet, no difference. I looked up the schematics for other games, since most modern games seem to use IRL540s, but couldn't see any difference. I tried driving the mosfet with 12v instead of 5V, since it technically can go that high, and the flipper seemed a bit stronger, but still not close to how it was when grounding it directly. Very confusing. I'm not sure if there's something else with this circuit I'm missing that's causing issues, but I think I eliminated every part of it being an issue. Maybe it's something with driving these very high power flipper coils on 25V (resulting in very high current), vs how modern games all use 50V with weaker coils? I also discovered that Stern node boards have special driver chips designed for mosfets, although they run them at just 6v, so those might be worth a try, but no other manufacturers use anything like that so it doesn't seem likely. The issue only seems apparent with flippers too; my drop target bank resets fine, the outlane saver is nice and strong. Both of those use a weaker coils though.

I'd love to figure out the answer to this, but for now I decide to work around it for testing, so I swap over to high current flipper contacts. I don't mind this too much really, since it's more like how the gottlieb games originally worked, and I love the feel of 80s gottlieb flippers. No need to spend time trying to get CPU controlled flippers working really nicely or anything, just do it old school. I'll have to add some arc suppression to the cabinet and eos switches, but that's not a big hurdle. I'm also gratified to see that my driver board seems to work fine (no resets) even without the arc suppression, so maybe my increased electronics knowledge is helping too.

With the directly controlled flippers, the game is nice and powerful. Perhaps too powerful! On my third shot I break off one of the drop targets on the center 3 bank. The spinner shot works well though, the ball makes it all the way around and comes down the left side. Will need to work on some inlane guides. I wish I had a laser cutter....

All the lower flipper shots seem at least makable. I would have liked the center bank to bit a bit more to the right, to make a shot from the right flipper to the upper playfield area easier, but with the clearance issues with the right bank I can't do too much. I played it a bit safe on the initial whitewood, so I'll adjust it a bit closer next time, but at most I'll gain half an inch.

Posted Thursday, September 10, 2020
at 07:37 PM


Tags: Blog Post, Pinball, Project, P3,

< Newer Posts
Older Posts >

Posts per page: 5 10 25 50 100