(Topic ID: 193721)

Fireball Home Arduino/Raspberry Pi Rebuild

By ThatOneDude

6 years ago


Topic Heartbeat

Topic Stats

You

Linked Games

Topic Gallery

View topic image gallery

20171223_160922 (resized).jpg
20171223_160931 (resized).jpg
new_board (resized).jpeg
20171207_003439 (resized).jpg
20171206_233618 (resized).jpg
20171202_105313 (resized).jpg
20171202_105304 (resized).jpg
20171123_125725 (resized).jpg
20171125_182839 (resized).jpg
20171119_222227 (resized).jpg
9EB1B69E-6E50-4E5A-872F-BEE3C6F773B6 (resized).jpeg
8C4C0984-E311-42DE-B6AF-BC69168BE771 (resized).jpeg
pasted_image (resized).png
150924085912258608167 (resized).jpg
20170831_002103 (resized).jpg
20170823_203350 (resized).jpg
There are 85 posts in this topic. You are on page 1 of 2.
#1 6 years ago

As I've mentioned in some other posts, I'm helping a high school engineering class with starting a group dedicated to designing and building pinball games. We're starting with a couple of rebuilds to show the kids the tech side of it.
With a small group over the summer, I'm rebuilding a Fireball home edition. Picked it up cut down to be a coffee table. No back box. At least the playfield wasn't butchered.
Anyway, the controller is being replaced by an Arduino mega feeding events to a Raspberry Pi running MPF.
First order of business: replacing a burnt flipper solenoid and resoldering some loose switches. We thought about ditching those big boards and mounting switches directly to the underside of the playfield, but it seems like overkill for this purpose.
Pro-tip: When soldering on the kitchen table, always cover the table with something to avoid spousal displeasure in the morning

20170712_234417 (resized).jpg20170712_234417 (resized).jpg
20170712_234508 (resized).jpg20170712_234508 (resized).jpg
20170718_000623 (resized).jpg20170718_000623 (resized).jpg
20170718_000615 (resized).jpg20170718_000615 (resized).jpg

#2 6 years ago

You may want to watch this guy's series of videos on his arduino Fireball:

#3 6 years ago

Yeah, I've seen his series of videos and read the blog. I'm going for something similar, with the caveat that my goal is an easily modified Arduino control system that the engineering students can implement on other games.
The second machine is a Zizzle PotC.
This is the Arduino based controller I'm using for this project:
ebay.com link: New Small Meduino Mega2560 R3 Pro Mini ATMEGA16U2 Female header for Arduino

It's more compact and, IMO, easier to work with(it doesn't have the weird pin spacing that makes a regular Mega such a pain).

The playfield has some damage from the screws. Since it's not actually plywood(just what looks like MDF with some thin veneers on the top and bottom), the screws created some compression damage. Also, the inserts aren't perfectly flush. I suspect that they never were. I'm going to grind out the damage with a dremel and fill it with epoxy putty. Still debating about a vinyl cover for the playfield, and then using a playfield protector rather than trying to clearcoat it.

In addition, I discovered that the lights are tied up to the switches directly. Since I'm switching to Neopixels, I'm just going to cut out most of the traces on the main boards and wire the switches up directly to a matrix.

#4 6 years ago

I love it, another arduino mega thread.

#5 6 years ago

Really looking forward to watching this progress! Hoping to do something similar.

1 week later
#6 6 years ago

A small update.
Got the final part to fix the flipper(replaced the plunger and crank assembly). It's now good to go.
Dropped the idea of a switch matrix. They always bugged me as being prone to error. It occurred to me that I had already solved this problem on an earlier project(a Z80 shield for an Arduino Mega). I used shift registers to read and write to the Z80 data bus. But there is no reason they can't be reading switches. So, last night, I acquired some SRs and started wire wrapping a board. I should be at a testable state for the registers tonight.
Didn't think about taking a pic, or I would show off my oddball way of prototyping boards. I'll take a couple tonight.

#7 6 years ago

I did something similar for a prototype:

10601787_307321446107805_216133638_n (resized).jpg10601787_307321446107805_216133638_n (resized).jpg

10597370_274310669443027_81401311_n (resized).jpg10597370_274310669443027_81401311_n (resized).jpg

#8 6 years ago

It's my preferred way to prototype boards. This is an early picture of my old Z80 board.

FB_IMG_1501008290194 (resized).jpgFB_IMG_1501008290194 (resized).jpg

#9 6 years ago

Switched gears a bit. Moved from wire wrapping to a regular protoboard after my new wire wrapper kept breaking wires. This will be cleaner anyway.
One step closer to a switch reading board...

20170727_012535 (resized).jpg20170727_012535 (resized).jpg

#10 6 years ago

Well, CAX slowed me down, but I can't bitch too much, since I also picked up a couple of populated playfields for (near) future projects(Williams "Flash" and Bally "Space Invaders").
I have also settled on a shift register approach to the solenoid driver board. Makes life simpler.

#11 6 years ago

Built the first of four interface boards for switches. Worked on the shift register board some more. I'll be testing the shift register code tomorrow evening.

20170802_010222 (resized).jpg20170802_010222 (resized).jpg

#12 6 years ago

And I'm rethinking the idea of shift registers for the solenoid board. While it makes the main software loop easier to grok, it would preclude easily adding PWM to allow for user settable power levels on the flippers. For a simple machine like this(or the Zizzle), it likely doesn't matter. But for something more complex, it could be an impediment. Also, I would have to have exceptions(like servos and steppers for playfield and backbox toys) to the driver config, so it doesn't make sense to lock it in.
Any thoughts on my rambling notions are welcome

#13 6 years ago

The shift register board worked the first time.
"I love it when a plan comes together!"
Not the prettiest wiring, but it works for a quick sanity check.
So close to reading the actual pinball switches that I can taste it

20170803_005454 (resized).jpg20170803_005454 (resized).jpg

#14 6 years ago

Finished the switch boards and started mounting them on the old PCBs. Cut the traces to isolate the switches from the lights.

20170806_232957 (resized).jpg20170806_232957 (resized).jpg

20170806_232900 (resized).jpg20170806_232900 (resized).jpg

20170806_232912 (resized).jpg20170806_232912 (resized).jpg

#15 6 years ago

So, some explanation of the last pics.
The Fireball Home machine ties lights directly to switch activation. So, there is no way to independently activate lights on this machine. I used a dremel and cut the traces, isolating the switches. I have noticed that the switches are not always responsive. I may end up drilling out the rivets to disassemble and clean them, since finding this particular type of contact switch is a bit hard(unless someone is parting one of these out anyway....).
I mounted the interface boards a bit high, but it was the place that was least likely to damage other things on the PCB. I ran out of standoffs, so I opted to stop measuring and soldering until I had more.
The little red board is a MOSFET driver. There will be one per solenoid, mounted close to each one.
I've opted for two separate power supplies, a 24V for the solenoids(this was originally a 22V system), and a standard ATX PC supply for the 5V that will power the Arduino, the switch boards and the Raspberry Pi. I'm looking for one of those power strips that have a switch separate from the body, so that I can just plug them in and mount the switch to be accessible from the back of the machine.
If nothing goes horrible, I should be able to flip on this beast tomorrow night.

#16 6 years ago

Well, nothing horrible happened except that I opted to sleep last night instead of work on this.
Anyway, got the big switch board assembled, with the interface boards wired on. These will handle half of the switches. I need mount and connect the second board now.Also got the little power distribution board done.

20170809_002422 (resized).jpg20170809_002422 (resized).jpg

#17 6 years ago

Nice work! Keep it up.

#18 6 years ago

Yup, really looking good man.

#19 6 years ago

Took some time from circuit design.
I got my Neopixel clones in the mail today, and used OpenSCAD to whip up a widget to attach them to the playfield in place of lamps. The first pass was a little too tight to fit right. I'll fix it and reprint tomorrow. Gotta love having a 3D printer for parts like this

20170815_232101 (resized).jpg20170815_232101 (resized).jpg

20170815_232031 (resized).jpg20170815_232031 (resized).jpg

20170815_233144 (resized).jpg20170815_233144 (resized).jpg

#20 6 years ago

In case anyone was interested, this is the rendering from OpenSCAD. I like designing objects programmatically instead of visually, so it works well for me. Once I have it refined a bit, I'll post the SCAD code and a link to an .stl file, in case someone else wants to play with it.

led_holderv0.5 (resized).pngled_holderv0.5 (resized).png

#21 6 years ago

Been following, pretty neat stuff your doing.
-Mike

#22 6 years ago

I think I have a head for this would be glad to donate it lmk mike 3306183141 with glass too actually plastic

#23 6 years ago

Cool stuff! Wish I was in your class.

#24 6 years ago
Quoted from mikepin:

I think I have a head for this would be glad to donate it lmk mike 3306183141 with glass too actually plastic

That would be awesome! I'll ping you after work! Thanks!

#25 6 years ago
Quoted from Topher5000:

Cool stuff! Wish I was in your class.

I'm just a parent who went nuts when the teacher asked for help.
But, I hear ya. I wish I had had something like this when I was in school. Or college, for that matter.

#26 6 years ago
Quoted from Grizlyrig:

Been following, pretty neat stuff your doing.

Thanks!

#27 6 years ago

Very cool with the LED mount; however, I'm betting you'll find if you recess the LED that deep into the insert, you will end up with a bright spot in the center of the insert, rather than an evenly-lit insert.
I think you need to take the LED out of the mount, screw the mount in oriented as you do in picture 2, and then attach the LED to the mount. (essentially moving the LED itself away from the insert lens that extra distance... allowing the LED light to spread out filling all the insert.
(not sure if any of that made sense)

#28 6 years ago
Quoted from Timerider:

Very cool with the LED mount; however, I'm betting you'll find if you recess the LED that deep into the insert, you will end up with a bright spot in the center of the insert, rather than an evenly-lit insert.
I think you need to take the LED out of the mount, screw the mount in oriented as you do in picture 2, and then attach the LED to the mount. (essentially moving the LED itself away from the insert lens that extra distance... allowing the LED light to spread out filling all the insert.
(not sure if any of that made sense)

Makes total sense. I'm thinking of making the Neopixel hole a cone shape, so that I'm not blocking light on the sides. I'll play with it some more tonight. Thanks for the suggestion!

#29 6 years ago

Another thing that might work is to add a little bit of cotton ball to diffuse the light. I've always wanted to try it, but never got around to it.

#30 6 years ago

I wonder if you could 3d print a little defuser that snapped into your widget.

#31 6 years ago

Looks similair to the ws2812 led holders I designed - also in openscad. They are made in several sizes for the various diameter inserts. Not long ago I printed about 100 of them for a pinball machine.
For more details see http://3dwingmaster.blogspot.com.au/2015/06/lights.html. That blog is long due for some updates.

PM me if like the STL of it.

tn_IMAG1885_thumb[1] (resized).jpgtn_IMAG1885_thumb[1] (resized).jpg
insert_ledholder_thumb[1] (resized).pnginsert_ledholder_thumb[1] (resized).png

#32 6 years ago
Quoted from DDDwingmaster:

Looks similair to the ws2812 led holders I designed - also in openscad. They are made in several sizes for the various diameter inserts.

Very cool! Those LEDs are pretty much the same as I am using. I'd love to check out the STL.

#33 6 years ago

Cleaning up the playfield, removing extraneous wiring and getting the switches mounted on the cabinet connected to the switch boards. I was angry I couldn't find spacers anywhere, so I just used some 3mm bolts as spacers.
So, TODO to wrap this up enough for the kids:
1) Mount MOSFET boards for flippers
2) Mount Arduino and the shift register boards to the playfield. Run wiring between them and the switch boards.
3) Finish Arduino code, and get it talking to the Raspberry PI(basic ruleset)

After that, I'll pass it back to the class, and help get that project kicked off again.

playfield_cleanup (resized).jpgplayfield_cleanup (resized).jpg

#34 6 years ago

While waiting to experiment with DDDwingmaster's holder, I went searching for non printed devices, after I was inspired by his design to rethink my design. I ended up with a bunch of possible solutions, with the best being....plastic covered jumbo paperclips. The LED clips right in, and the covering prevents shorts.
It seems to work well, and hold the LED just at the edge of the hole, making for a nice even light spread with no spotlight effect:

20170820_234713 (resized).jpg20170820_234713 (resized).jpg

#35 6 years ago

Finally had a chance to start wiring the LEDs. Wired three, then hooked them onto the top of the playfield to run the Adafruit strandtest example. Works great.

20170823_203350 (resized).jpg20170823_203350 (resized).jpg

#36 6 years ago

No pictures today, just text.
I've decided not to finish wiring the full LED set. The kids can finish that.
I reattached the old PCBs, and all of the new boards. I tested a new 24V PSU. Worked like a charm, and it was nice to watch a pop bumper firing. I didn't want to cut up the larger Antec PSU I'm using for 12V and 5V. Instead, I cut up some of 4 pin Molex extension cords and made power adapters for the LED strand and the Arudino Mega. Since the new Raspberry Pi only uses a micro-USB for power, I need to dig up a cord to butcher to splice into the 5V.
To get power to all of this(and to a hypothetical VGA monitor to act as an LCD), I'm using a 4 outlet power strip with an external button, which makes it easy to power the whole thing on at once, with a single button.
I dug up an old Arduino Pro micro. I'm considering it for running the lights. That leaves the Mega with 3 functions:
1) Shift Register reading
2) Solenoid firing
3) Serial communication

The Pro Micro will deal with:
1) NeoPixel lighting
2) Serial Communication

Really, if I don't see any serious lag with the shift registers once the game is looping in real time, I could downsize the Mega to a smaller device.

Both will be present as a new platform under MPF.

Now, it's mostly down to finishing up the Arduino code. And documentation. Lots of documentation. *sigh*

#37 6 years ago

Worked more on the wiring.
All the solenoids are connected. All the switches are wired in. Discovered that the tilt bob doesn't have great connectivity. I might need to polish it or solder a wire directly to the arm.
Flipped the playfield over and ran my LED test. Looks better.


Almost ready for the kids.

20170831_002103 (resized).jpg20170831_002103 (resized).jpg

#38 6 years ago

Coming along nicely!

#39 6 years ago

It needs some wire ties.

#40 6 years ago
Quoted from KenLayton:

It needs some wire ties.

That is the truth. It gets messy fast. I'm still working on a couple of routing issues.

1 month later
#41 6 years ago

Real life intruded on my project. Mostly buying a new car because my son got into a fender bender and took out my little Toyota. Alas...
So, my earlier choices have caused an issue. Driving the solenoids from individual MOSFET boards is great from a conceptual point of view(I think it's easier to understand from the kid's point of view), but sucks from a wiring point of view, because now I have 21 wires to run instead of 14. I built some secondary power supply boards to minimize the length of the wire runs as much as possible, but it is still messy. Lesson learned. If I go this route again, I'll build a single driver board and just run a single line to the solenoids.
So, I'm down to the solenoid power and signals. I also sketched out a design for a parallel shift register controller. Not sure if it is necessary yet, but I've got it in my back pocket as a possible method of speeding up the main loop.

#42 6 years ago
Quoted from ThatOneDude:

I have 21 wires to run instead of 14.

I don't quite get that. Can you still daisy chain the power to the solenoids and the ground returns from the solenoid boards? While it is still a little bit more wiring, you shouldn't have to drag all of those wires back to the power supply or individually run each of those wires. (Take this with a grain of salt because I have no idea what solenoid boards you are using.) My guess is that each of the solenoid boards need the following wires at a minimum: signal to turn MOSFET on/off, drain attached to the solenoid, and source attached to ground of high current power supply. (This assumes logic ground and high current ground are attached somewhere) The wires attached to the sources can all be daisy chained together until you get to the one that is closest to the power supply. The power going to the "top" of the solenoid can be similarly daisy chained together. With that arrangement you should have the absolute minimum amount of wiring because you have the most distributed pinball system of all time.

#43 6 years ago

Bummer about the car but keep up the good work!

I acccomplised parallel reading of our registers (8) by routing them all to a single port on the arduino and using port reading instead of pin reading. But I initially started out with all registers on a shared clock and latch.

All in all really happy... 10 pins to read 64 switches. Need to take some measurements with code running either way to see if it was worthwhile but it was certainly fun!

#44 6 years ago
Quoted from openpinballproj:

I don't quite get that. Can you still daisy chain the power to the solenoids and the ground returns from the solenoid boards?

I attached a pic of the driver boards I used. In addition to the main power, which I did daisy chain, each one has a +5, signal and ground for the low power side. So, really, each solenoid requires 5 inputs(+24v, grd x 2, and +5v and signal). If I had instead built a single board, all of the switching would have happened on the board, only requiring +24v and grd for each. Bad design on my part, trying to keep the component as discrete as possible for easy instruction.
In retrospect, I should have ditched the original PCBs, direct mounted switches and done a centralized driver board. Live and learn.

150924085912258608167 (resized).jpg150924085912258608167 (resized).jpg

#45 6 years ago

Nasty documentation, but I finally found what I was looking for with an example. The V+ and Vin seemed to be attached on the board. So that connection can be simplified by sending the power directly to the high side of the solenoid. The V- is the low side of the solenoid so that must be connected. Then the high current grounds (gnd with the screw connector) can be daisy chained back to the supply. I can't find a schematic that I trust, but quickly using a voltmeter you should be able to see if the two grounds are connected on the board (hopefully not). If not, ground is needed to pull down the signal before the the arduino is up and running to make sure you don't get a fire on initialization. (The VCC signal would only be useful if you want to default solenoid to "on" which would not be a good idea).

Promotion for MezelMods, so ignore if not interested: If you wanted have a 4 solenoid board, you could have just bought a solenoid wing board https://mezelmods.com/collections/open-pinball-project-parts/products/open-pinball-project-solenoid-driver-board, populated just the MOSFET part, and saved yourself some money. In that picture, pins 5-8 are the signal pins for turning the MOSFETs on/off. All the high power connections go to the Molex connector and they are attached together.

pasted_image (resized).pngpasted_image (resized).png

#46 6 years ago

Took some measurements today on my Arduino project. Minimizing the code to basically just reading, and keeping with digitalWrite for clock and latch measured the following approximate times for reading all 8 registers or 64 switch inputs (measured the time the latch was low since that's the time the Arduino is reading from the registers):

Using port read: 60us (0.06ms)
Using digital read (pins): 325us (0.325ms)

I imagine if I actually knew what I was doing that could probably be made faster somehow but i think for running a pinball machine I’m happy with that.

Need to finish up wiring the input board... i think I will be printing a PCB for the coil driver board since there will be a lot more components involved. My plan there will be similar but in reverse... port write to shift out registers to tip’s... probably going to include flyback protection on board as well.

8C4C0984-E311-42DE-B6AF-BC69168BE771 (resized).jpeg8C4C0984-E311-42DE-B6AF-BC69168BE771 (resized).jpeg

#47 6 years ago

Well, a short somewhere in the 24V section fried a MOSFET board. I discovered this after trying to test a single solenoid, getting one bump and not realizing until the magic smoke was coming out that the coil was still firing.
Not a big deal in the grand scheme of things, but it is disheartening. I'm contemplating ripping the thing apart, throwing away the PCBs, mounting switches directly to the playfield and wiring it the way I'm already using for my next project. I think I'll sleep on it before doing anything rash.

#48 6 years ago

Update on timing for reading from registers... switched to port writing for the clock and latch.... 6x speed increase!

Reading is the clock running for a read of all 64 switch inputs... that will do.

9EB1B69E-6E50-4E5A-872F-BEE3C6F773B6 (resized).jpeg9EB1B69E-6E50-4E5A-872F-BEE3C6F773B6 (resized).jpeg

#50 6 years ago

'Dude;
You know, this is something that's needed doing for quite a while. I wonder, once the design is 'completed' (are they ever REALLY complete), would you be interested in working out a deal to put your system into production? Maybe something along the lines of royalty / licensing payments going to a school club or science department, or something of that nature? Since it's your own complete design, and I'm assuming your own code, there wouldn't be any outside licencing issues to worry about.

There are 85 posts in this topic. You are on page 1 of 2.

Reply

Wanna join the discussion? Please sign in to reply to this topic.

Hey there! Welcome to Pinside!

Donate to Pinside

Great to see you're enjoying Pinside! Did you know Pinside is able to run without any 3rd-party banners or ads, thanks to the support from our visitors? Please consider a donation to Pinside and get anext to your username to show for it! Or better yet, subscribe to Pinside+!


This page was printed from https://pinside.com/pinball/forum/topic/fireball-home-arduinoraspberry-pi-rebuild and we tried optimising it for printing. Some page elements may have been deliberately hidden.

Scan the QR code on the left to jump to the URL this document was printed from.