Learning Circuit Design

Prior to picking up the Boxster as a real track car, I built a pretty cool setup for sim racing.

I settled on using Forza Motorsport 3 with multiple Xbox 360's.  This game is neat in that it supports multiple monitors for a panoramic view.  In conjunction with the proper wheel, it also supports true clutch manual shifting action.

For the cockpit, the Obutto.  The steel frame cockpit is only 300 dollars … a relative bargain compared to all other cockpits.  It doesn't look quite as nice as some, but it functionally gets the job done, and it actually has a real car seat in it.

The steering wheel and pedals … Fanatec 911 Turbo S wheel and Clubsport pedals.  Much stronger force feedback than the Microsoft steering wheel, and, again, it supports a clutch.

Put it all together, and you have something like this.

The only problem was the shifter.  The Fanatec shifter is just terrible.  It attaches to the wheel, which puts it in entirely the wrong place.  It feels resistant, moves around when you shift, and wears out quickly.

Long story short, I decided to fix this myself.

First order of business … the Fanatec wheel.  Via some helpful reverse engineering, we discovered that the shifter position is represented to the wheel by variable voltages on an X-Y grid.  OK … now we know what needs to happen to create a replacement shifter.

LTSpice is an analog circuit design program.  I learned how to use it over Christmas break.  In the early 90's, we were putting together text files that described circuits.  Now, we have a graphical UI that honestly feels like it belongs back in Windows 3.1 … but I guess it gets the job done.

I used LTSpice to model the X and Y resistor chains that would produce the various voltages.  Some equation solving gave me the resistor values, and running the simulation in LTSpice verified the results.  See the following.

This was sufficient for modeling the analog behavior of the voltages.  It was entirely unhelpful for modeling the behavior of the circuit needed to control the voltages.

I took a gamble and purchased this SST Lightning shifter as the actual replacement.  The shifter is machined aluminum, mountable in several ways, and has 8 switches corresponding to different switch positions.  Based on the individual switch being activated, my circuit would need to do two things.  One, control the voltage being tapped out of each resistor chain.  And two, display an number on an LED representing the current shift position.

I went to work thinking through the design.  Looked at datasheets online over and over.  What a pain this must have been before the Internet!  I bought a bunch of parts from Anchor Electronics, and got to work.  Breadboarding the circuit took the entire MLK weekend.  I made a store run each day due to missing parts and equipment.  After numerous tries, I finally I ended up with this.

Soldering out the connections from the SST Lightning was pretty annoying, but doable. In the end, the circuit worked, but was easy to destroy with an errant step or hand, and messy as hell.  But it worked.


After a while, I thought there had to be a better way.  There was.  A printed circuit board.

I eventually descended on Eagle PCB as the design program after doing the requisite Googling.  Great choice, and free for projects below a certain size of board.

It takes a lot of time to figure out the exact parts in Eagle that correspond to the physical parts that you need to wire everything up correctly.  For some of the confusing parts, I used Sparkfun's part library and catalog of parts to make sure that everything would be consistent.

The really nice thing about EaglePCB is that the autorouting function it has automatically finds a way to path the traces between all the parts you have on the board.  For a project with as many chips as I had, it was an absolute necessity.

There is no way to simulate the design behavior in Eagle, just the schematic and layout.  Therefore you just look really hard and end up praying for the best.  I sent the design from EaglePCB off to batchpcb.com, which is an offshoot of Sparkfun that … you guessed it … prints circuit boards.  The lead times are long, but the prices are cheap.  Here's an example of what I sent.

Eventually, I got back my first PCB.  There were some flaws, but very minor ones.  I was able to patch the board with a couple of wires.  Voila … my first clean prototype!

The biggest problem I had at this point was that I had picked a rather poor enclosure, and I had also slightly mislaid the drill holes needed for the screw holes in the enclosure.  In addition, I hadn't placed a reasonable power connector on the board.  The current board would have been entirely sufficient as a one off, but, since the point to me was to learn something, I took a second pass.

I chose this clear enclosure from Sparkfun.  It was much larger than necessary, but it had a single large area for connectors. I also figured that, being vetted by Sparkfun, it would probably not have any odd issues with little things being in the way like the previous enclosure that I had ordered.  So I added a barrel power jack to the layout, fixed the couple of errors that I had made in the previous schematic, and redid the layout for the larger board format of the new enclosure.  Off to batchpcb.com again.

Here you can see the final results.  This time assembling everything worked perfectly from start to finish.  It's bigger, but it is also entirely self contained like any self respecting electronic gadget should be. More importantly, it worked immediately after all the parts were soldered to it.  No fixing up required.


So yeah, mission accomplished.  I can make printed circuits now from start to finish.  The funny thing is that I've spent far more time learning and doing all this stuff than I have actually playing Forza.  Go figure.

This entry was posted in Uncategorized and tagged , , , . Bookmark the permalink.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s