Sunday, June 12, 2022

The Black Knight Rises - June 2022 Progress Update

A lot has happened since the last full project update.  The Black Knight Rises playfield build is completed, the electronics are all working, the cabinet switches were wired up, the playfield finally left the rotisserie and lives in the cabinet, and gameplay debug and multi-media development are under way.

The Black Knight Rises has risen!

When time has allowed, over the past 8 months I have troubleshot some build issues, swapped out some mechanical assemblies and switches, refined controller firmware, and did a ton of code development.

Except for a few small items, the physical build is essentially complete.  The main task that remains for me to complete is the actual game multi-media elements like sound effects, videos cut scenes, DMD animations, plus some enhanced game rules.

Click through for the full update.  There were a lot of lessons learned.

The Challenges of 3D Printed Pinball Parts

Life for parts inside a pinball machine is rough.  Literally.  Anything that comes into contact with a speeding ball of steel is in for some abuse.  Look at some of the metal components that have been in service for decades, and they will often be deformed or broken.  And even more destructive are the super powerful solenoids.

This makes life incredibly tough for 3D printed plastic pinball parts.  Is survival even an option?

Most of the 3D printed parts I've designed do not come under any direct stress.  Things like electrical connection mounting brackets, or decorative toys.

For example, here is a 3D printed Monty Python Black Knight toy on top of the upper playfield's shooter lane ball ramp.  I was finding that balls would bounce and get caught on the metal hood.  A 3D printed flat-topped cover solved that problem, and provided a perfect place to mount a toy.

A 3D printed cover (black) prevents balls from getting stuck, and made a perfect spot to mount a toy

But one of the 3D printed parts I designed for The Black Knight Rises are some drop  targets, to make an Alvin G drop target assembly cosmetically match the Williams drop target style.

Designing a drop target doppelgänger was easy.  Coming up with a design that would survive has been the real challenge.

My original prints were in ABS.  They broke.

I also tried PLA, which broke even faster.

I upgraded to PETG, which lasted longer, but also broke.

I modified the design to be more massive, in hopes of making it more robust.  And that broke even faster.

Original Alvin G drop target in white.  ABS red and PETG black design revisions all broke.

Surprisingly, the target head itself never broke, even though it takes direct hits from the pinballs.

Click through to learn the rest of the story.

Chameleon Power Driver v5 - It Works!

 This update should have been posted last October, but I got sidetracked.  Better late than never, eh?

My PCB order from JLCPCB arrived on October 1st, and luckily all boards looked perfect.  For this order, I had the PCB's panelized, so I could assemble them on my Pick'n'Place machine in batches of six.

The Chameleon Power Driver v5 PCB's waiting for assembly

I made a pretty cool video showing the PCB assembly and validation process - it's a surprising amount of work:  Chameleon Power Driver v5 Assembly

At the end of the video you can see a brief glimpse of my new testing jig.  I custom designed and 3D printed this jig to test each power driver.  There are spring loaded POGO pins inside that make contact with various test points on the PCB.  

Click through for the rest of the details.

Progress Update & Troubleshooting Power Driver Issues

I originally wrote this update back in September 2021, but I got sidetracked and it never got posted.  I'm posting it now, as a precursor to the follow-up posts that are coming soon.

Chameleon Pinball Engine Software Updates

Chameleon Pinball Engine software updates were more extensive than I expected, as I was in the middle of a massive rewrite 4 years ago when I took a break from the project.  It has taken a lot of effort to figure out what changes still had to be made.

This has actual been a source of disappointment for me.  In my head, I was remembering being much further along in my coding.  I had certainly brainstormed a lot of features, and even begun coding a few of them, but upon code examination I'm finding little of it complete.

A lot of the missing functionality has been in the playfield configuration section, which means I have to write new code to handle all the new features I've been planning for years.

The good news is that I've improved my coding skills over the past five years, and I'm a much better programmer than when I started the Chameleon Pinball Engine all those years ago.  The new features are coming along quite easily.

Another Chameleon Power Driver Flaw

Four years ago, in my runup to the 2017 Southern-Fried Gaming Expo, I was testing my Chameleon Power Driver v4.0 with a Magna-save electro-magnet, and it was working fantastically... until it wasn't.  I thought my new design was immune to Transient Voltage Spikes (TVS), as if somehow the laws of physics ceased to apply to my design.  Physics proved me wrong, and the power driver was easily fried when hundreds of volts rushed in from the collapsing magnetic field.

Click through for the rest of the story.

Tuesday, September 7, 2021

The Black Knight Rises - Progress Update

These past two weeks have been very productive, and I am getting closer and closer to firing up the solenoids.  There's so much to talk about.

In this post I cover my new 5v LED power supply (tweaked to 5.5v), measuring the Chameleon IO Controller's power consumption, updates to the ChameleonIOController.dll, a custom 3D printed wire connector bracket, wiring up main power and ground to the power drivers, a potential ChameLED v2 redesign, playing around with the IO controller's latency now that it's hooked up to the playfield, and beginning the Chameleon Pinball Engine's software updates.

Yeah, that's a lot to cover, so be sure to click through to read the whole post.

5.5v LED Power Supply
I picked up a new 5v 5A industrial power supply to handle the LED's.  With it hooked up to my voltage meter, I trimmed the potentiometer to set the output voltage to 5.5v, splitting the difference between my ChameLED's and the CoinTaker LED's voltage designs.

Powering up the LED's with this new power supply, the difference was night and day (or more like night turned into day, that's a lot of light!).  The 6.3v CoinTakers now look fantastic, nice and bright and with almost no flicker at all when PWM dimmed.  And of course the ChameLED's are still bright and beautiful with absolutely no flicker!  I'm not really sure why the CoinTakers has a minor bit of flicker, but I expect it is due to their fully-rectified AC/DC design, though it could be because I'm still slightly underpowering them.

I put my ammeter on the new power supply with all 76 LED's lit up, and I recorded 4.4A, so it's safely within the 5A capacity of this tiny power supply.  Looks like I got a winner.  This also means that, on average, I'm now pulling about 58mA per LED, though I haven't yet retested the ChameLED vs. the CoinTaker to see how each performs.

Tuesday, August 24, 2021

The Black Knight Rises - First Light

The Black Knight playfield, lit up for the first time with the Chameleon IO Controller and ChameLEDs

Assembling a new Chameleon IO Controller board
Over the weekend I assembled another Chameleon IO Controller board, and it came out much better.

For this attempt, I upgraded my Reflow Toaster Oven with two additional 320w heating elements that I scavenged from a spare oven, bumping output from 1500 watts to 2140 watts, and this greatly improved the oven's ability to follow the solder paste reflow profile.  Of course this meant it was now too powerful for a normal household 120v 15A circuit, and I've only got a single 20A outlet in the entire house.  Luckily it's in the perfect spot in the garage right next to the garage door, which I can open for fresh air during reflowing.

I also installed my 3D printed linear clamps on the stencil printer, which greatly improved solder paste alignment, preventing movement during swiping.  

I switched to some fresh solder paste, ChipQuik's Smooth Flow, and wow did it flow smoothly!  The deposited paste looked much thicker compared to my previous attempt which had sparse amounts of paste in a few spots.  I was actually worried it might be too thick, even though I only made a single swipe.  

Semi-pro stenciling tip: do NOT make multiple swipes, as with each swipe you force extra solder paste through the stencil and it builds up and leaks under the stencil, causing shorts during reflow. I made this mistake often in the beginning. Automated stenciling machines make a single quick swipe only, and you should replicate this method if doing it manually.  You have to trust the process, it works.

One additional tweak I made was simply working faster.  The last board I assembled took over 4 hours from stenciling paste to reflowing the board, and the solder paste I'm using only has a 4-hour working window.  This time I went from stenciling paste to reflowing in under 1 hour!  

Those 4 changes addressed the biggest issues I noted from my previous attempt, and they definitely helped a ton.

Unfortunately, a new issue cropped up.  Read on to learn more and see the First Light Video!

Sunday, August 15, 2021

Chameleon IO Controller - Adventures in Latency Testing

Chameleon IO Controller & Round-Trip Latency
One of my primary objectives when designing the Chameleon IO Controller was minimizing round-trip latency.  In mechanical games like pinball, lower latency improves game feel, by reducing the amount of time from pressing a cabinet button to a solenoid firing.  If latency is too great, you will notice a lag after pressing the button until the flipper fires, or after a ball hits a slingshot and the slingshot activates.

Unlike a typical pinball controller where the switch to fire a solenoid (i.e. a flipper) is directly connected to the solenoid, my design takes the button press and sends it over USB to the host PC, where my Chameleon Pinball Engine software processes the button press, and sends a command signal back over USB to turn on the solenoid.  

As the Chameleon IO Controller has both the gamepad buttons and LED outputs all on a single PCB, effectively the signal makes a round-trip from IO Controller to host PC and back to the IO Controller.

This design introduces latency at several distinct points.  There is the latency in the IO Controller to detect a button press and send the new button state info to the host PC.  There is latency in my pinball software to recognize and process the button press.  There is the latency in sending the new LED state back to the IO Controller.  And finally there is latency in the IO Controller to actually turn on the output.

My previous post detailed working on the Chameleon IO Controller's firmware to improve PWM performance, so of those four distinct points affected by latency, I've already addressed the last two.  My goal with this new round of testing is to work on the other two points.

Below a certain threshold, latency isn't an actual problem.  When you're playing video games, as long as latency from button pressed to pixels updating stays below 40ms, response feels instantaneous and you'll have a great experience.  But real world games like pinball are more demanding - physics waits for no-one - so latency needs to be even lower for good ball control.