hey! i'm Richard from Romania. I'm posting here because I believe this is the best place to ask about the steps in designing a microstep (no pun intended) driver.
I've been playing for a while with a3977 and geckos, but I want to build my own microstep driver? The reasons are many: both are expensive to order in my country, i can get precise steps for motors with high nonlinearity, basically, i have complete control.

i have two approaches
1) using an atmega i will generate two PWM pulse trains that will control h-bridges (4 other uc outputs will control 8 transistors organized as 4 push-pull drivers). a custom PC software will do all the calculations for a given motor, if the motor is overvoltaged. This way, the RMS current through the motor can be calculated. Given this approach, as the motor gets more overvoltaged, my PWM resolution decreases, to the point where no sine/cosine microstepping will be possible.

2)
(image hotlinked from here)
The whole pwm can be fed into ACTIVATE SIGNAL.
I believe the transistor switch here will be extremely fast. This way, I can apply my PWM signal to the "ACTIVATE SIGNAL" input on the logic gate. As such, the PWM signal (probably 20 or 25khz) will be slow compared to the chopping speed.
There's still a problem here, I don't know how the values for the parts should be chosen, so the chopper will actually resonate, and not stall in one state or the other. The vref voltage will be configurable by myself, via a pot for example.
Another problem is that of the switch. Since the transistor is polarized, I'll need two of them, in anti parallel (but this will decrease speed) or maybe even a triac. But then again, speed will decrease and I want the PWM over audible range.

What I'm optimizing for is heat sinking and size. I don't want any, or if it is, it shouldn't be visible. Given high power mosfets, with fast switching times and low D-S resistance (take BUZ11 for instance) I believe handling 4-5Amps at several tens of volts would be fine (BUZ11 aims at 30A, 50V).

I'd like some ideas or tips here. I'd prefer hardware current reduction (like a chopping driver) but as long as the first method is feasible (with its inherent limitations, of course) I'd stick with that for the first model. Please don't point me to the LMD18245 or ICs of the like.