UNDERSTANDING THE 555 TIMER CHIP(S):
This is probably gonna be the hardest part of the whole entire experience, if you are following along. The 555 timer chips have two main duties; limiting your RoF (if you go Astable mode, which I'll explain in a bit) and controlling your Dwell (how long the valve stays open, the stock Impulse was able to be set between 4-14 ms). For this project, I will be using two of them, one to control the full-automatic fire (20 bps, with 9 ms dwell) and the other for single shot fire (also at 9 ms dwell). As you can already tell, the 555 timer is an
extremely useful and versatile chip: instead of buying two different chips, I can buy a couple of the exact same chip, figure out the resistance values, and change the bps and dwell! The best part is, these things are cheap (75 cents a piece on allelectronics.com, which is where I get most of my stuff that I don't get at Radio Shack) so you can buy a ton of them, mess with them, etc, and have no fear of breaking an expensive piece of equipment.
Now, on to the chip itself. Without going into too much detail (there are other places, like
wikepedia, that can explain all this better than I anyways), the 555 timer chip is a 8-pin chip that can, with careful planning of your resistors, time from nano-seconds up to days. Meaning, you could set it up to send out a pulse either once a second, twice a second, once a day, 18.6574 times a day, thrice a year...whatever you want. Like I said, the thing's versatile. It also has 4 different modes: Monostable, Astable, Bistable, and Edge Triggering. Since we are only using Mono and Astable modes (and since I don't yet fully understand the other two) we will focus on the Mono and Astable modes.
Monostable: this is your pretty basic, one-shot pulse. Very easy to set up, since all you have to worry about is your dwell, and not RoF (unless your fingers move hella fast, like 10,000 bps fast :P). The formula for figuring out your dwell on a monostable mode is:
T= R * C * ln(3); where T is your pulse width (dwell length, so for our application it would be .009 s), R is your resistance (potentiometers are best, I'll explain later) and C, which is your capacitor (a fixed, pre-chosen value).
Let's say for example we had a 1 uF capacitor and wanted to get a .009 s dwell out of a 555 timer.
T= R * C * ln(3); We know T, C, and ln(3) (1.098612289)
.009 = R * .000001 * 1.098612289; Divide both sides by our C value (.000001)
9000 = R * 1.098612289; Divide both sides by ln(3)
8192.153 = R
Now, we can get a 8K ohm resistor, or put an 8k and an 100 ohm resistor in series. Or, we could use a potentiometer, which is a variable resistor. Using your multimeter, you can dial your potentiometer in to about 8.1k ohms resistance. The reason I suggest using a potentiometer instead of a regular resistor is simply because of this; If you decide to upgrade your impulse in the future, your dwell setting might change. Instead of having to change your entire board, you would only have to dial in your potentiometer for the new values. For example, let's say you upgraded your gun, and now you only need a 6 ms dwell. The new value would be:
.006 = R * .000001 * 1.098612289
.00546 = R * .000001
5461.43 ohms = R
Which, by the way, is well within the range of a good, multi-turn 10k potentiometer. Again, these things are cheap (1.25 on allelectronics.com, bit more at the shack but you don't have to pay shipping :P) so there is no reason to
not use one instead.
Now that we know a bit about the Monostable mode, let's look at the Astable mode.
Astable mode is a bit trickier than Monostable mode, especially in this application, because instead of finding one variable with one equation, you have to find two different variables that fulfill a couple different equations. Before you can fully understand the Astable mode, you must first understand how the "pulses" come out. They do no make a sinusoidal wave :
But rather they make a square wave :
This is important to know for a couple reasons: one, you will either have an "on" (high wave) or "off" (low wave), but no states in between. IE, you will be seeing either (in this case) +9 volts or 0 volts, but nothing in between. Something else that is very key to the 555 timer is it's ability to "sink" or "source". When the timer is sourcing, it uses the high wave (9 volts) and when it's sinking, it uses the low wave (0 volts).
Now, why is this important to us, you may ask? Well, the 555 timer is only able to have a duty cycle of 50% or more if you are sourcing. Meaning,
the high wave cannot be less than the low wave. Before I go to further, we have to do some calculations. First, we need to determine at what interval our full auto must shoot to maintain a steady 20 balls per second.
This is a fairly easy formula: Cycle = 1/20 = 0.05
Meaning that the gun must shoot every .05 seconds to get 20 balls per second. Now, we know our dwell is .009 seconds, so out of every shot, the valve will stay open for .009 seconds and be closed for .041 seconds (0.05 - 0.009 = .041). The easiest way to do this is to have our .009 be our high wave, and our .041s be our low wave, and you would be able to fulfill both the .009 ms dwell and 20 ball per second speed. However, if we take a close look at our numbers, you will see that .009 is not more than .041, and in fact if you determine the duty cycle ( .009/ .05) you will get .18, or 18%. Considering your duty cycle must be above 50%, this is not an option (I
even tried to get our greater minds here at PBF to help out, but my stupidity stopped any advancement :P).
So, if your top cycle isn't at least equal to or greater than your bottom cycle, you have to switch the two. Now, with your top cycle being .041s, and your bottom cycle being .009, and your 555 timer chip sinking instead of sourcing, you get a duty cycle of 82% (.041 / .05), and your circuit still performs the same way with one exception; for the first shot, there will be a .041 s lag before the first shot, when the top of the first wave is "dissolving". Now that we have our frequency (20 bps), our capacitor (1 uF, or .000001 F), our duty cycle (.05 s) and both high and low waves (.041s and .009s, respectively), we can finally do some more math! Yay!
Formulas:
f = 1/(ln(2) * C * (R1+ 2R2))
high wave = (ln(2)) * (R1+R2) * C
low wave = ln(2) * R2 * C
Now of those three formulas, we need need to find both R1 and R2. Obviously, we are going to use formula three to solve for R2, then plug that into formula two to solve for R1, then plug both into formula one to check.
low wave = ln(2) * R2 * C
.009 = .6931471806 * R2 * .000001; Divide by ln(2)
.0129842554 = R2 * .000001; Divide by C
12984.25537 = R2
13000 = R2
Then, plug R2 (unrounded) into the second formula to solve for R1
high wave = ln(2) * (R1 + R2) * C
.041 = .6931471806 * (R1 + 12984.25537) * .000001; divide by ln(2)
.0591504967 = (R1 + 12984.25537) * .000001; Divide by C
59150.49668 = R1 + 12984.25537; subtract R2
46166.24131 = R1
46000 = R1
Now that we have R1 and R2, we can plug them into our frequency formula to check to see if they work.
f = 1/(ln(2) * C * (R1+ 2R2))
f = 1/( .6931471806 * .000001 (46000 + (2 * 13000))
f = 1/(.0000006931471806 (46000 + 26000))
f = 1/(.0000006931471806 (72000))
f = 1/(.049906597)
f = 20.037 bps
Which is very close to our goal of 20 bps. So, I've decided to use the rounded numbers: We still get a low wave of .00901 s and a frequency of 20.037 bps, but if it matters to you, you can use the unrounded numbers to get closer values (it's another reason we use the potentiometer, we can dial in numbers alot better than otherwise). The actual breadboarding is too difficult to describe right now, check out wiki again if you need to get that figured out. One thing you have to remember, though is that we are
sinking, not sourcing (that site describes it pretty well), so your schematic is gonna be slightly different than what is normal.

^^showing sinking (a), sourcing (b), and both sinking and sourcing at the same time (two different loads, one sinking, one sourcing). Basically, to sink you connect to the ground (0) wire, and to source you connect to your positive (9v) wire.