When I tried the 555 in the circuit simulator I got the impression that holding a 50% duty cycle at the right speed is not easy but if theres a good way of doing that it might be an option.
It depends how accurate you need the duty cycle to be. You can get close to 50% using a relatively low value resistor from pin 7 to VCC and a higher value for the other resistor.
Also you can take the feedback from pin 3 instead of pin 7 if there's a good symmetrical voltage swing at the output. The original 555 has an output stage that doesn't pull all the way to VCC, but various improved versions do, at the expense of having a lower output current rating. If it will only be driving transistors, it doesn't need a high drive capability.
But you still need an inversion stage. A Schmitt trigger oscillator using a CD40106 is probably the simplest option.
And as John says, you can use a flip-flop to divide the frequency by 2 and produce a perfect 50% duty cycle. But that requires an extra IC. It does produce true and complement outputs though, which is convenient. It's actually possible to make an oscillator with one half of a CD4013 dual D-type flip-flop IC, so you could actually generate the control signals with a single IC. That might be a good approach if you really need exactly 50% duty cycle.
I can make an oscillator with a single op-amp and a symmetrical supply but is it possible with a single supply?
Yes. The circuit uses three resistors to the non-inverting input - one from VCC, one from 0V, and one from the output - to create positive feedback and two different trigger points - a Schmitt trigger - and an R-C circuit from the output to the inverting input.
Putting a PNP on the common return is a good idea, whats the 0.1uF for?
To provide a low-impedance path to 0V for noise from the motor. It's not essential.
I was concerned about the reverse bias thing because I accidentally fried a couple of relatively expensive NPN's before by putting a 2200uF cap on the base it took a few minutes before the BJT shorted I only figured it out after frying a second one.
Yes, it's possible to fry them if you apply more than about 7V of reverse base-emitter bias. The magic smoke doesn't come out, but it loses its magical qualities.
The circuit simulator doesnt have a Schmitt so if I cant simulate it I wont be very confident with that idea.
You can be confident about a Schmitt trigger oscillator. And don't place too much confidence in any circuit simulator. Did it warn you that the emitter follower transistor would get hot?
After all that, the picaxe has ADC's that can be read as 8 or 10 bit,
so if I have a value between 0 and 1023 how do I use that to get a pause between 500 and 2000ms?
Various ways. This is how I would probably do it.
First calculate the amount of time that corresponds to an increment in the value from the ADC. I'll assume that your period range of 500~2000 ms relates to the whole cycle; you need to toggle the transistor control outputs twice in the cycle, so the period range you need is actually 250~1000 ms, because it is the period of a half-cycle.
An ADC value range of 1024 translates to a period range of (1000 - 250) = 750 ms. So an increment in the value from the ADC corresponds to (750 / 1024) = 0.732 ms. The base (minimum) period of 250 ms corresponds to an ADC value of (250 / 0.732) = 342 ADC counts. So start by adding 342 to the 10-bit value from the ADC. That gives you a value from 342 to (342 + 1023) = 1365. Each increment of that value corresponds to a time interval of 0.732 ms or 732 µs.
So you need to count off intervals of 732 µs. You need a counter variable that is set to (342 + ADC value) and you decrement it every 732 µs, using a timer as a reference. When it reaches zero, you toggle the outputs that control the transistors, re-initialise the counter, and go back to the wait loop.
Getting a 732 µs timebase from a timer can be done using an interrupt, or just by polling a timer in a loop. If your system clock is say 4 MHz and the timer has a divide-by-2 prescaler, the timer clock period is 0.5 µs, so you need to count (732 / 0.5) = 1464 counts. Exactly how you do this depends on which timer you're using. I can get into detail if you want.
Which option is best depends on your priorities. An MCU-based solution to generate the drive signals would be the most compact but it can be done fairly easily with CMOS logic, which gives you a wider supply voltage range and avoids the need for programming. A Schmitt trigger oscillator using a CD40106 is simple and generates both control signals, but doesn't guarantee exactly 50% duty cycle. You could reasonably expect 45~55% duty cycle, or as close as 48~52% with trimming (as long as the supply voltage is pretty constant). A CD4013-based design would provide exactly 50% duty cycle with five passive components. I think that's what I would go with personally.