This module is designed to convert a classic GamePort PC joystick into control voltages and gate signals for use in a modular setup. I recently picked up a beautiful CH Products Mach III joystick and thought it would make an interesting control peripheral.
GamePort joysticks are quite simple internally. Two potentiometers for the X and Y directions and two push buttons. Initially, I thought that the pots were configured as voltage dividers and I could just use some op-amp buffers, but it turns out that the opposite leg of the pots are not connected to ground, so there is no voltage change exposed on the pins, just a change in resistance. The switches are just connected to ground:
The entry for the GamePort connector on pinouts.ru stated that the original PC interface used a 555 timer configured in monostable (one-shot) mode to read the change in resistance. The resistance value determines the the high time of the pulse when it’s triggered. The timer needs to be repeatedly triggered to provide a continuous output, so we can use another 555 timer configured in astable (oscillator) mode to provide a repeating trigger signal. A passive RC low-pass filter can then be used to convert the PWM output to an analog level. Schematic below.
Breadboarded it up and took some measurements and it looks good. The smoothed analog output is around 0-4V, so I’ll use some op-amps to boost it up to 5V and provide some buffering. I’ll also look into switching the direction of the Y direction to go high when the stick is pushed up. The schematic above currently does not represent this.
Video of oscilloscope readings. Part 1 is the clock signal and the PWM output of the 555 timer for the X direction. Part 2 shows the smoothed analog output for both directions.
Next steps for this module is to determine the values for the output op-amps (and try to figure out how to invert the response of the Y direction), and complete the PCB layout for the internals and the front panel. I’ll post updates to this thread as they come up. Let me know if you have any thoughts or suggestions, I’d love to hear it!!
EDIT: forgot to mention the buttons. Inside the joystick, they just connect to ground when pressed, so an external pullup resistor is needed. I’m planning to send these into a 40106 Schmitt trigger inverter to convert the active low signal into active high gate signals, as well as do some debouncing