My tweakers.net interview on the joystick project!
Categories for Development
In line with my previous board i’ve designed a custom breakout board for the HT16K33. Much inspired (cough) by Adafruit’s break out board, this design allows for oriented connectors and a I2C passthrough chainability. As an added benefit i have added mounting holes with the same dimension as my controller PCB so they can site next to eachother.
The HT16K33 is a very nice led driver chip that allows 128 individually addressable leds on a single I2C ID. These leds aren’t individually adjustable in brightness like the MCP7219 but for me that isn’t a requirement.
The board is primarily used to drive the throttle and joystick led effects. Currently it is a little mess with all the wires sticking out.
I just sent it off to the PCB maker, I’m guessing i’ll find a design flaw within the next 24 hours.
UPDATE: The PCB’s have arrived. You can tell they came from the other side of the planet because everything is upside down (bading tssss)
I keep forgetting how to properly orientate the magnets for my the hall effect sensors. Courtesy of Allegro (the maker of these fine sensors) I copy the significant bit of their application guide.
Operating Mode Enhancements: Compound Magnets
Because the active area of a Hall switch is close to the branded face of the package, it is usually operated by approaching this face with a magnetic south pole. It is also possible to operate a Hall switch by applying a magnetic north pole to the back side of the package. While a north pole alone is seldom used, the push-pull configuration (simultaneous application of a south pole to the branded side and a north pole to the back side) can give much greater field strengths than are possible with any single magnet (see figure 43). Perhaps more important, push-pull arrangements are quite insensitive to lateral motion and are worth considering if a loosely fitting mechanism is involved.Figure 43. Examples of compound magnet configurations (either the Hall device or the magnet assembly can be stationary), with a south pole toward the branded face and a north pole toward the back side: (left) push-pull head-on and (right) push-pull slide-by
Figure 44 shows the flux-density curve for an actual push-pull slide-by configuration that achieves a magnetic slope of about 315 G/mm.Figure 44. Example of magnetic flux characteristic in push-pull slide-by magnet configuration
Another possibility, a bipolar field with a fairly steep slope (which also is linear), can be created by using a push-push configuration in the head-on mode (see figure 45).Figure 45. Example of a push-push head-on compound magnet configuration (either the Hall device or the magnet assembly can be stationary), with south poles toward both the branded face and the back side
In the push-push, head-on mode configuration shown in figure 45, the magnetic fields cancel each other when the mechanism is centered, giving zero flux density at that position. Figure 46 shows the flux-density plot of such a configuration. The curve is linear and moderately steep at better than 315 G/mm. The mechanism is fairly insensitive to lateral motion.
Figure 46. Example of push-push head-on mode magnet configuration, in which the fields cancel in the middle of the travel range
As seen from the pilot chair, this is what I came up with for the left-hand side armrest. The orange second will be leather. The joypad section and the angled buttonpad will be blackened and backlit like the button panels in the previous posts. This design still needs work, for example: i need to find out how to make the components fit, through brackets, bolts and beams. Also i will have to finalize dimensions.
I’m finished soldering and wiring the throttle assembly. All the buttons work and are recognised in-game. All the leds work and all the animations a properly triggered.
No picture this time. I want to save them for when i’m done.
Today I finished the soldering of the prototype board and I am very much a happy camper now. Dropping the breadboard and switching to properly soldered wires made the whole contraption much more stable. The potentiometers have almost no jitter anymore even though there’s 2 meter of cable between the two modules. The data is looks pretty solid. The potentiometers I am using right now were taken from a scrapheap, but after I sprayed some ‘Kontakt’ contact spray into the potmeters they runs absolutely smooth and jitter-free.
I have a few more solder joints to do to finish up the lighting scheme for the throttle housing, and then I have a few lights left on the yoke (X/Y stage). This second module doesn’t have the throttle lighting bar so it hasn’t got as much leds as the other one.
All this means that i am close to finishing the project. I need to figure out a way to mount the modules to my desk or my chair. The modules aren’t heavy enough to sit solid on the desk. Some mounting fixture is needed and i’m not ready to drill holes in the desk just yet.
Today and yesterday was lighting day. I’ve been working on assembly a 32-digit multi-color led bar. Man this take a lot of time. Next time i’ll just buy the specific parts and design a PCB to mount them on. I’ve been soldering and stripping 64 wires and i’m barely halfway.
Yesterday I also received vinyl sheet for masking out the leds. This time it’ll be blacked out instead of the white you see in the video above.
The joystick itself is fine. I will have to do a lot of work on the stability of the base plate and the mounting because it feels a little loose (which wasn’t my plan at all). Also one of the hat switches broke down (already!). It may have something to do with me prying the button hat on and off and on and off a little too many times since the other one that i use most still feels solid.
Back to the picture, you see a lot of wires which is a lot because there are a lot of leds. By using the concept of multiplexing all those wires come down to 4 groups with 8 leds each where each led has 2 wires (red+green) which makes 64 pins. By switching the lights very very fast (several kHz or so) i only need 4 + 16 pins to drive 4×16 = 64 led pins
On top of the slightly basic handle I’m putting a ‘button block’. I have no other word for it yet but it sounds like a nice working title. The concept is that during this 1st prototype I am designing stuff one step at a time. Like little LEGO bricks I stick’em together until I’ve worked out a better solution.
So here are the bits that I’ve got working and finished:
- Throttle level mechanics
- Yoke mechanics (X/Y)
- Yoke spring centering mechanism
- Mounting plate
- Throttle centering latch
- Wiring board A (inside the yoke)
- Wiring board B (just a breakout board to connect all the wires to a detachable connector)
So today it’s down to the button mayhem. Even though I’ve written earlier about using motorcycle parts, i’m decided to drop that thought. After playing in SketchUp for like maybe 12 hours the solution struck me, and I may have come up with the most challenging SketchUp component of my entire life:
On the pictures you see the SketchUp design of the mounting head and the front plate for a thumb joystick sourced from an XBox360 controller. I chose a mounting head that allows me to try/attach different front/back plates. This allows me to use the same design for left and right but with different button layouts (probably just mirrored). On the rear side there is room to put trigger buttons or other index/middle finger functionality. There’s plenty of room and it looks pretty nice.
Yes, I need to do more sanding.
Because I found my current HOTAS controller inadequate I decided to design and build my own custom HOTAS. I have access to a 3D-printer at home, soldering skills and Arduino programming skills so it should be an easy project. One week into the project, I have never found such an amazing and interesting project! I hope you enjoy reading about my progress.
Today I refactored all the sizes for mounting holes and connections. These are the current dimensions (for reference)
- Mounting to panels, interconnections, etc: M3, ø3mm (1.5 radius)
- Handle mount ø14mm
- Centering disc inner diameter ø14.4mm (radius 7.2mm)
- Gimbal rotating connections are M4 mounts are obviously ø4mm, but holes that should allow movement are ø4.2mm
- The Potmeter side of the rotating connections are ø7.2mm for the fixed potmeter part (fixed with washer and screw), and ø6.2mm for the rotating shaft. Since the shaft is a very tight fit not further screws or fasteners are required.
- The Mounting bracket hole has a slanted hole, top size is ø38mm, lower hole is ø36mm. I advise a mounting plate of 3mm thickness with a ø40mm cutout to allow maximum range.
Notice that all the TIGHT connection that are screwed in are exactly the size of the bolt (m3 = ø3mm), while all holes that allow movement need another 0.2mm room (added 0.1mm towards the radius).
The controller bits are to be mounted on the back side of a panel, instead of on top of some sort of housing. This makes it possible to mount the controls on a flat surface. In this first picture you see the gimbal design and the centering disc which is used to have the controller return to the neutral position. The stiffness of the joystick is done by tightening the horizontal bolts (not shown), while the calibration can be done by slightly rotating the potmeters.
This second photo shows the throttle assembly with a center latch that will be held back by a simple spring to give at least some sort of feedback towards the neutral position.
With this basis design done I am free to design the actual controls without having to rely on some commercial system. I am very excited. I’ll planning on assembling this tomorrow and get my first basic flight within the game!
- Firmware based on a Teensy, including auto-calibration on the extremes. This works about detecting the maximum deflection, and automatically calculate the minimum and maximum values of the potentiometers.
- Gimbal and throttle mechanics design
- Parts ordered for mounting plates and electronics
Loads to do:
- print parts
- assemble the mechanical items
- design laser-cut 3mm mounting plates for left and righthand controller.
- design and print thumb controls like weapon fire, up/down/left/right thrusters, etc. I got everything in my mind already.
last couple of days I’ve been working on building my own HOTAS joystick and throttle setup. I haven’t got much to show but this is one super exciting project. Instead of being tied to all those super-expensive fighter yet Hotas’es around, i’m completely free to make up my own design.
I’m now working on the joystick gimbal mechanism. Here’s a little screenshot of the design:
The software was dead easy. I have a teensy 2.0 and that has a built-in ability to present itself as a HID joystick and mouse. Basically you need to upload a sketch and connect a few potentiometers and switches to the analog (and digital) inputs. So mucking about with resistors and such. This can also be done with the Arduino Leonardo and even the newer Pro Micro. These boards are based on the AtMega32U series that have their on-board USB capability, which is what makes this all so freaking easy.