I've been diddling about with Arduino for some months, trying all sorts of daft ideas.
Trying to drive two dc-motors for a caterpillar-tracked vehicle, I made a separate driver-board. It uses an L298 chip (anywhere from 2 dollars to ten dollars, from your local electronics store if you are lucky), which takes two digital-signals on each of two channels and can handle 2 Amps from a 50~55 Volt supply. (See later.)
Since a bi-polar stepper-motor requires two-signal on each of two channels, I thought to try my driver with a stepper-motor. It works! OK, it has enough 'welly' for one axis of my pseudo mill. Let's make a second board. Ha! Now I have X- and Y-axis control.
Programming the beast is another matter. I tried sending my 'G-code' file via the USB port, i.e. read-a-bit, act-on-it, read-a-bit etc. with very spurious results. The problem (for me anyway) was to control the flow of data so the machine could execute long moves before reading the next chunk from the file.
Eventually, I could drive my table around a circular path - well, sort of, by some definition of the word circular.
Yesterday, I jury-rigged a tiddling ex-printer stepper to the long-axis of my lathe and, after some fiddling-about, got it machining the bore of a cylinder to a most beautiful finish. The Arduino didn't care, nor get impatient that the cut was taking fifty-minutes. Meantime, I got on with browsing the Internet.
As for power-supplies, I just use wall-warts at 12V, 1Amp.
Geoff