It's not a very probable error, and the consistency of this "wrong" ID may be telling. Bad connections can cause some glitching, but usually in the form of lagging bits (i.e. showing values neighboring bits are), and 94 vs 90 doesn't look like that. Further, a quick search in avrdude's list of AVR IDs shows that the ID you get is that of an ATmega168, common on Arduino. Furthermore, the Arduino bootloader speaks the STK500 protocol, which your avrdude is using here, so the obvious question is what your programmer is?
I'd guess you may have something like an Arduino set up as a programmer to program other AVRs, and when it happens to be resetting (and thefore still in the bootloader, which has a timeout before starting the loaded program/"sketch") as avrdude is started, you get to reprogram that AVR instead of the next board.
My second guess, which would be the first without the above notes on Arduino behaviour, would be talking to another programmer unintentionally; that can be affected by simple things like the order they are connected to USB.
In either scenario, it's not actually an incorrect ID, but another AVR than intended responding. For the Arduino as programmer case, things can be complicated by automatic reset when you start a program to talk to the board; working around that might be a bit more complex, and my first guess would be something like (sleep 3 ; avrdude -P /dev/ttyUSB0 -c stk500 -p t13 -U ... ) < /dev/ttyUSB0
, which would ensure a delay between opening the serial port and running avrdude.
A properly designed chopper PWM current regulator will let you run the motors much faster while maintaining torque than other other solution.
As the rotation speed and thus commutation frequency of a stepper motor increases, the winding inductance begins to present a larger and larger reactance, and limit the current which will flow at rated voltage. The solution is to use a power supply much above the rated voltage, but use a chopper current regulator to prevent overheating the motor or damaging its permanent magnets from excessive field strength.
The power resistor and higher voltage supply method has enough advantage over "nothing" as to have been used in some large stepper motor systems before choppers became affordable, but is a far inferior solution to active current regulation.
In terms of available pins, remember that once you start putting any ICs on a board, putting an additional ATMEGA xx8 on a board becomes fairly economical, too - you don't need a whole Arduino, and the prices for what you do need range from about $2-$4. It's not uncommon if someone is going to the trouble of marketing a stepper power amplifier module for hobby/robots use to put a microcontroller on it and give it a serial command interface instead of raw step/direction per motor.
Best Answer
It's called a voltage divider. "The path" does not change. The current changes, because the total resistance
LDR1+R1
changes while the voltage applied remains fixed, so the voltage across R1 (which is what you are measuring at U1 pin 2) changes.