[Gene Buckle] built himself a nice custom cockpit for playing Flight Simulator, but during use he found that the gimbal he constructed for the pitch and roll controls was nearly unusable. He narrowed the problem down to the potentiometers he used to read the angle of the controls, so he set off to find a suitable and more stable replacement.
He figured that Hall effect sensors would be perfect for the job, so he picked up a pair of Allegro 1302 sensors and began fabricating his new control inputs. He mounted a small section of a pen into a bearing to use as an input shaft, attaching a small neodymium magnet to either side. Since he wanted to use these as a drop-in replacement for the pots, he had to fabricate a set of control arms to fit on the pen segments before installing them into his cockpit.
Once everything was set, he fired up his computer and started the Windows joystick calibration tool. His potentiometer-based controls used to show a constant jitter of +/- 200-400 at center, but now the utility displays a steady “0”. We consider that a pretty good result!
[Thanks, Keith]
It sounds like maybe he had a bad case of electrical noise… All video game controllers commonly use pots without issue.
Still, pots do suck pretty hard compared to this or an encoder, so huzzah.
The thing about pots, is that eventually, being mechanical, they wear. It starts at the point where they’re used the most: around the zero position. A better quality pot will take longer, perhaps, but eventually, the wear (and associated noise) will happen.
This solution isn’t just a replacement, it’s an improvement. Not a chance of wear. Ever.
Very nice! I have a USB flight yoke with the same problem, and I’ve been considering my options. I was thinking about adding a filter and/or a Schmitt trigger circuit, but if I could just replace a pot with a better sensor like he’s done here, that would be ideal!
how would a schmitt trigger help?
My thinking was that I would use them to set a certain threshold near the center to keep the signal locked at that level, effectively making it “snap” to center when it’s within that threshold. The hysteresis could be useful, but maybe it would be better to use a couple of simple comparators instead.
i don’t know why i can’t directly reply to nate’s reply. anywho.
The controller software should have a deadzone setting, and seem to me thatit would do exactly what you want to accomplish with a Schmidt trigger?
ahh, neat idea
Hang:
You were right! When I purchased the controller a few years ago, I didn’t find any deadzone settings in the software. But I just downloaded the newest version and had a look, and there was a configurable deadzone for each axis (along with other nice features, such as gain curves)!
So it looks like I won’t be doing any modifications after all. I would consider replacing the pots with sensors like Gene, but now that I have pulled the controller out of the closet, I remember that the yoke is somewhat mechanically imprecise, so it really wouldn’t do much good. Oh well.
looks like you meant to link http://www.simpits.org/geneb/?p=299
the existing link i think is a search, so things may drift off the page in-future (its already up to 109 results!)
Finally someone invents a quality joystick sensor. I think we can all agree that low quality pots are a pain in the rear.
I would have used a fine rotary encoder but this seems cooler and easier to implement.
You could probably do it optically with parts from a dirt-cheap mouse. Would require some clever coding to change it from relative to absolute positioning, but could be very simple mechanically.
If you did it optically, you’d use a LED and a phototransistor or an LDR, and a strip of paper with variable density black dots printed on it. Basically a reflectivity sensor.
That way it can be entirely analog.
With power-on autozeroing and a button to zero in the current position it could be perfect. Just start counting pulses from the zero position.
Yes, you could use optical encoders, but using the camera from an optical mouse would mean almost nothing mechanical, and doing it in 2D means not having to do anything to separate the two axes (three if you can do rotation of the stick, too). All you’d need is the joystick with some easily processable pattern on the bottom, essentially making it a 2D (again, 3D if you can do rotation) rotary encoder. Theoretically, this should be doable with extremely cheap, existing technology – all that would need to be different from an extremely cheap mouse is having the switches on longer wires, more cheap injection-moulded plastic, a spring, and different firmware.
didn’t the n64 use a couple rotary encoder on it’s stick instaead of pots?
http://www.mycockpit.org/forums/showthread.php/22267-Dead-simple-hall-effect-pot-replacement
It’s the same fellow I think, but with more pictures! Better detail. Sometimes a simple solution just works.
Yep, that’s Gene 🙂
Hall effect sensors have been used in flight simming for a long time… they were usually an aftermarket upgrade to existing hardware, thankfully, though, some of the new HOTAS controllers are coming with them already installed.
Great post, btw 🙂
Oh, and HOTAS stands for Hands On Throttle And Stick… a common flight controller configuration in aircraft.
Exactly, many people (including me) does this to their flight rig, because hall effect sensors are much more reliable and precise than pots.
When you train yourself to fly a real airplane it’s not the same to use a crappy joystick with a huge dead center, and noise beause of wear or dirt. If it’s only for entertainment i guess its ok to use pots.
The good news are that this can be done to cheap joysticks without too much hassle in most cases.
You should take a look at this Melexis sensor, looks pretty nifty.
http://www.melexis.com/Hall-Effect-Sensor-ICs/Triaxis%C2%AE-Hall-ICs/MLX90333-648.aspx
Mike’s Flight Deck has some info on DIY Linear Variable Differential Transformers:
http://www.mikesflightdeck.com/lvdts/lvdts.html
a good site if you’re building a simpit.
It blows my mind that not only did I make HaD, but I did it _twice_ in 7 days (or so).
BTW, the day the entry was posted, I had successful lung cancer surgery. \o/
g.