I’ve been pondering the mechanics/design of my custom HOTAS for a very long time now, and instead of just trying a design, see if it works and then improve upon it/switch to something else which is the sensible approach to these things I tried to engineer it perfectly in CAD first, then one day I was mounting a screen on a wall using a monitor arm, one of several I had laying around and it struck me.
That’s the perfect core mechanism of a throttle, it’s solid steel, you can adjust how much force is needed to move it by adjusting the tightness of the nylon locking nut. Added some drops of oil to make the motion even smoother and voila, all it needs is sensors to read it’s angle, some way to constrain it’s motion to the range I want (180~ is way too much to use comfortably) and a handle on top. Along with the electronics for the sensors, buttons, etc.
First step: measure and model in CAD
After a lot of time with some calipers.
Then after that start adding the needed components around the base mechanism.
A hall effect sensor and 2 10mm diam 5mm tall neodymium magnets. Round plate attached the to the magnets centered on the axis of rotation. Analog thumb-stick at the top. Blue pieces will be 3d printed in ABS.
Switched from blue to the color I’m actually going to print it, white. Quick mockup of a handle on top (it’s just a cylinder, I need to design mounts etc still), fleshed out design for a way to mount the magnet holder on the monitor arm, a collar with a split on both sides screws tighten together to lock the collar in place using friction, collar and magnet holder are seperate parts screwed together to allow more optimal orientation of the pieces when 3d printed, and makes it more modular, can swap pieces individually if something doesn’t work etc. Hall effect sensor mounted to a swiveling base holding a 3 pin dupont connector.
Time to try it, and it works, on the left is an Arduino Micro turned upsidedown to use in a breadboard (on a uno shield, smallest breadboard I had handy, glued to the shield). Analog thumb-stick module on a PCB, weirdly enough the holes on the throttle and PCB are only 0.2mm away from the same distance, close enough to screw into for testing (and possibly permanently). This version had some flaws and was incomplete in various ways (no angle stop, if I wasn’t careful I’d break the hall effect sensor if I moved it too far) the plastic pieces looked larger in my head and zoomed way into a CAD program so I made them about 2x bigger in most dimensions in the next iteration. I went for a +/- 25 degree angle on the throttle stroke and found it a bit short, it’s longer than my x55 but I still want it a bit longer, so I adjusted the magnet holders to give me +/- 35 degrees in the next version.
This is the main strength of 3d printing, iterative design, you can make something fairly quickly from a 3D model, see if it works or not, if not or you want some modifications it’s easy to modify the model and print again. And when designing something for 3d printing it’s a good idea to design separate parts you later join using screws, lets you design a part while printing the previous, designing something very big and complicated means you can’t start printing as quickly and means you need to re-print something much larger if it fails or doesn’t work.
Early outline for a “angle stop” on the other side of the throttle from the sensor, basically the pacman shaped upper bit moves with the throttle and lower rectangular bit doesn’t, constraining the motion, later refined to actually mount to the collar and base obviously.
The angle stop in place, big circular part closest to the camera with a divot in the side is designed to accept a round piece pushed against it to make a “tick” when the stick is centered, for space games where you can fly forwards and backwards and use the whole range of the throttle’s motion to do that it’s nice having a tick at the center to feel when you’ve moved the stick to where you’re not moving backwards of forwards. Collar and magnets holders are rev2, beefier and magnet holders adjusted to give longer travel. Rectangle to stop the movement not installed yet, was printing when I took this picture. Angle stop very beefy and set between 2 big tabs on the collar for strength, since if you slam the throttle to min/max you’re exerting quite a lot of force on the mechanism, magnet holder not as beefy since it doesn’t experience that force.
Sorry about the picture quality but photographing something painted black in a dark room late in the evening, there is only so much you can do.
Wider angle rev2 magnet holders, not sure how but the adjusted position made the 2 magnets push away each other, requiring adding a 3d printed cap held in place with hotglue (not the neatest solution in the world, but it works, already amended the design to include a mounting solution for the caps in rev3, probably will never get printed.
Non-ideal picture again, sorry, closeup of the angle stop, some foam rubber padding added and some double sided tape without the backing removed to make the stop more gradual and smooth instead of a plastic on plastic “clonk” also helps with durability, I can replace the rubber if needed much easier than replacing the mechanism. “Dent” in the round piece accepts a sprung pin to make a “tick” when centered.
Second test, more refined code and rev2 mechanics, LCD used for debugging, will not be used for that down the line, will instead have a menu to calibrate it, adjust settings and if possible display information from the game, but at this stage it’s very useful to have the raw values to check, you can do it over serial to the PC but this is nicer.
Values of the axis on the left, raw throttle data top right, values range between 0 and 1023 (10bit) (throttle doesn’t quite reach the ends, adjusted in software)
I’m doing some extra functionality for the throttle due to a limitation/bug with Star Citizen (the game I’ll primarily use the throttle for) but I can turn it off for games that doesn’t have this problem; in StarCitizen you can move forwards 2 different ways, using a throttle or using strafe forwards/back, I prefer strafe forwards/back because that lets you also go backwards using the same axis, which makes sense in a 6 degrees of freedom space game, but if you bind a throttle to strafe forwards/back StarCitizen does something pretty annoying, it occasionally sets the throttle on your behalf, like when you jump somewhere on arrival the game sets your throttle to 100%, with the throttle at 100% you have to slam into full reverse to come to a stop, can’t go backwards at all etc, one solution I’ve used until now is to have a button to set your throttle to 0 and tap that each time you jump somewhere, but this way I don’t have to. The game also sets your throttle to maintain your current speed after exiting decoupled mode.
I’ve basically turned the throttle into 2 virtual axis, “Throttle” goes from 0% to 100% between centered and all the way forwards, “Reverse” goes from 50% to 0% between centered and all the way backwards, because “Reverse” is bound to “strafe forwards/back” it effectively only strafes backwards since it never goes above 50%, throttle works as expected but it only applies to half the axis, set to 0 in the reverse half. It’s a somewhat convoluted solution to problem that shouldn’t exist, but it’ll save me headaches until CIG fixes the game. I got a toggle to turn that feature on/off for games that don’t require it (like Elite:Dangerous).
Render of 3d model with the center “tick” mechanism green cylinder represents a spring (compression kind) black cylinder on the far left is the screw head of a M3x25mm screw going into the plunger and seated inside with a threaded brass insert, well, rev1 of it, did the classic mistake everyone designing anything involving springs makes, got the direction reversed, spring in that position pulls on the plunger with the round tab, instead of pushes. Oops. Printed and tested it and figured out my mistake as I tightened the screw compressing the spring made the plunger move away from the wheel instead of towards it… Moving on.
Revised design using the same plunger but now puts the compression spring where it actually you know, gets compressed. Spring pushes against a washer on the left to avoid wear on the plastic, spring compressed with a nut on the right with a washer between it and the plunger with the tab pushing into the divot in the wheel.
Some more bad pictures showing how the “tick” mechanism works, Not happy with the hotglue mounting but I forgot to put a mounting point on the piece with the end-stop on it, fixed for rev3, probably won’t print rev3 though because while this doesn’t look nice up close, it works just fine. Picture shows the tab in the slot.
Tab out of slot, pushed towards the spring, tab wants to go back in the slot so when the wheel gets close to the right angle it’s pushed a bit towards correct angle and held there with a little bit of force.
Spring visible.