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.

Friday, August 13, 2021

The Black Knight Rises Project Update - It Lives!

 I can't believe it's been almost 4 years since the last project update here.  I'm sure everyone has assumed The Black Knight Rises is DOA.

I'm happy to say that not only is it not dead, but for the first time in a while, the project is  making great progress!

Yeah, this is a long post.  It's hard to wrap up 4 years in a couple paragraphs.


What Happened?

In the summer of 2017 I needed a break from working on the The Black Knight Rises.  Building a complete pinball machine from scratch, designing and assembling my own electronics, writing firmware, programming the pinball software, and troubleshooting issues coming from every direction - it was just all too much.

Click through below to follow along on the journey and see the great new developments!