Saturday, April 2, 2011

Getting the Xbox Rapid Fire Mod To Work

Our previous work on the Xbox rapid fire button was disappointing ... it just didn't work. The circuit didn't make much sense to me, as I couldn't see how the LED would properly drive the trigger control to make it pulse quickly.

Searching on the web turned up this modification, which looked more promising. It uses a 555 timer chip to generate pulses, and then switches the trigger signal when the button is pressed. That made sense, the clock signal would act like someone pressing the button rapidly.

With some guidance, S built the circuit on an old Heathkit prototyping breadboard unit. This little unit has a power supply and circuit building area, and is perfect for experimenting:


We followed the circuit diagram and it is pretty easy to plug in wires and components to make the circuit, and there was plenty of room to work in. After turning on the power, I showed S how to look at the output of the 555 chip with an oscilloscope. It was making a perfect square wave, just like we wanted:


Then S built the transistor interface to the Xbox controller, which was a simple resistor and transistor. We wired it to the controller and tried it out:



No joy, and no rapid fire. It was time for some trouble shooting.

I measured the voltage levels at the Xbox controller and they just didn't make sense. Finally I realized that the ground hookup wasn't correct ... the connection at the top wire of the trigger potentiometer wasn't really ground. Once that was hooked up to the negative side at the power pack, how the trigger works began to make sense.

In the Xbox controller, the trigger is connected to a potentiometer (a resistor that changes values, just like a volume control). The potentiometer has three connections - a high voltage, a low voltage, and a middle voltage somewhere in between based on how far the trigger is pressed. When the trigger is totally out, there is low voltage on the center connector of the potentiometer. Push in the trigger, and the voltage rises until the button is all the way in.

Since the trigger signal was normally low and rose when the button is pushed, it needs to be pulled up to a higher voltage and then dropped back down to low voltage to imitate the button going in and out.
The original circuit had a transistor that acted as a switch, but didn't do what we wanted.

With a bit of experimenting, we came up with a circuit that works great. The 555 still generates a square wave signal on pin 3, the output. The new rapid fire button connects this to the trigger potentiometer through a resistor and diode.

When the rapid fire button is open, the circuit isn't connected and the trigger voltage is the normal low value. By pressing the rapid fire button, this signal is connected to the trigger. The high parts of the pulse pass through the diode and drive the trigger signal to high voltage - just as if the normal trigger button was pressed in. When the clock pulse goes low, the diode blocks the 555 from pulling the trigger signal to ground, and it thus returns to the normal voltage level with the trigger button unpressed. As a result, the controller thinks the trigger is being pressed and release rapidly - exactly what we want.

My revised circuit looks like this:

S removed the transistor from the prototype, replaced it with the diode, and we experimented with resistor values until we had something that swung the signal to the same levels as if someone was pressing the usual trigger. It worked!

With hindsight, I can see one little modification that would eliminate a wire ... the resistor and diode going to the trigger can be moved between the 555 chip and the rapid fire button. This means the wire would go from our circuit board to the button, then from the button to the trigger potentiometer, making the installation a little cleaner.

In the next step of the project, the boys will build this circuit on a little board that can be stuffed inside the Xbox controller. It turns out this packaging is another set of challenges to meet, but we now have something that promises to work.



No comments:

Post a Comment