Your frequency is way too high, or conversely, you are not waiting long enough between pulses. You should be sending a 1 to 2 ms pulse every 20 to 50 ms. Note that this means 50 Hz maximum.
Also, your "1.7 V offset" makes no sense. These pulses should generally be 0 to 5 V digital signals. I followed the link you provided, but that only goes to a product sell page not a datasheet, so we can't tell exactly what voltage levels the digital signal must be. When in doubt with hobby servo units, use 5 V logic.
Try a 1 ms pulse every 20 ms. That should send the arm to one end. Then try 2 ms every 20 ms. That should send the arm to the other end. Try it with the 3.3 V signal straight out of your processor and see if that works. If it doesn't, make it a 0-5 V signal instead. That really should work if everything else is hooked up right. If you don't have a level translator chip, you can rig up something with a NPN transistor and pullup resistor. That will invert, but just invert the processor output to compensate. A HCT (note the T) logic gate powered at 5 V can also be used as a 3.3 V to 5 V converter.
Are you sure the processor power is properly filtered so that the current spikes the motor draws doesn't effect it? A schematic and scope traces with a clear description of what happens in each case would help a lot.
Back-EMF. Remember the motor is also a generator. Except when it's stalled.
Why does the generated voltage have the same sign? The magnets are the same way round, the motor is rotating the same way, so the generated voltage will have the same sign.
Understand one important thing about an electric motor's operation : that back-EMF is always there when the motor is running. While Q1 is on it subtracts from Vmotor, so that the faster the motor is running the less voltage is applied across the windings, so it draws less current (and therefore power).
So as you slow the motor with your hand, the back EMF reduces, and the motor takes more current (and you can feel it making more torque from that current). Stall the motor and it will take surprisingly high current, and may eventually burn out.
As you say, Vwindings = Vmot - Vback_emf;
When you increase Vmot, Vback_emf stays the same so Vwindings increase. But the winding resistance is the same, so the current increases. This increases torque, so (normally) the motor speeds up. THEN Vback_emf increases with the speed, reducing Vwindings and current. So the motor regulates its power consumption at a given voltage, to suit the load (friction etc).
And while Q1 is off you can measure the voltage and it gives you a pretty good speed measurement.
Current will only flow through the diode when the diode is forward biased. Which it isn't because the generated voltage is < Vmotor.
However the diode certainly isn't wasted! Another property of the motor winding is its inductance. This doesn't matter when computing the motor's speed and power. However it matters when current stops flowing, due to either the switch Q1 turning off, or the commutator inside the motor breaking current flow.
Current through an inductor stores energy (making the magnetic field) and releasing that energy can create enormous voltages (you can maybe see the sparks inside the motor!) and these would pull Q1 collector up to several hundred volts and quickly destroy it. Unless you fit the diode, which turns on and safely conducts that energy to Vmotor instead of making HV spikes.
Best Answer
With more duty-cycle, the windings have more time to ramp up the current further, thus storing more energy.