maandag 28 november 2016

Open Sourcing the SNES Controller

About two years ago, I published a precise 3d-model for the SNES controller on Thingiverse. Not long after this, when reading about the PCB Cyclone, a 3d-printed milling machine targeted towards PCB creation, I decided to build it at some point to be able to recreate the electronics (in style, that is..)

It took me a while to get the milling machine to work. More specifically, I couldn't get the auto-leveling to work reliably using the Marlin firmware. Precise auto-leveling is especially important when milling PCBs, as the copper layer is only about 0.04mm thick, and PCBs aren't usually very flat. I even tried a development branch which supposedly comes with mesh-based auto-leveling. Once I started to appreciate the more-or-less recommended bCNC software, I quickly got it to work pretty well. Perhaps it would be better if there were no Marlin branch for the Cyclone..

Getting the electronics right was also challenging, as there doesn't seem to be precise documentation online for building the electronics for a PAL controller. In the end it turned out I just needed to add a single resistor of a pretty specific value on just the clock input (467ohm in my case), and everything worked like a charm. If you are stuck building a PAL controller, where only the B button works, the solution may well lie in this direction..

The schematics which I used in the end come from Raphael Assenat. These schematics were the first I got working (IIRC without any pull-up resistor!), but I guess other schematics would work as well for a PAL controller, with the right pull-up resistors, and this might obviate the need for an inverter (chip). That would open up some space for a nice connector perhaps.

I still need to model the connector, print the flexible rubber parts using some flexible filament, and mill the two small PCBs for the L & R buttons, to be able to say the SNES controller is now fully open-source, but this should all be relatively simple. I may wait until my next printer to try flexible filament first, and if that results in working parts, I might well be motivated enough to go all the way.. I would also love to print the whole controller again using soluble support material..

During the process, I've become a big fan of both KiCad and FlatCAM. Using these, modeling the electronics, resp. converting them into gcode to send to the milling machine was a piece of cake. But bCNC is also rather great. One tip for using bCNC: make sure you get the Z height approximately correct, before doing anything else (so before any kind of probing), or your milling machine may be attempting harakiri..