Motor Controller for Senior Project Course

I designed the motor positioner shown in the image for my senior project in my electrical technology-Electronics AAS program at Corning Community College. Originally I was going to use a Microchip microcontroller (boo, hiss, right? HA! HA!) but C compilers for Microchip microcontrollers are very expensive so I used an Arduino instead (yeah Arduino and Wiring). A class mate of mine, Matt Putt, turned the whole class on to the Arduino and Wiring. There were a few people who based their senior project on the Arduino. My project uses the Arduino Mega microcontroller board. It has a 16-key, 4X4 keypad matrix, a 16X2 character LCD display with a contrast pot, and a stepper motor. Because I am using a 12volt 1amp wall-wart unregulated power supply, I designed a 10 volt regulated power supply to power the Arduino so that the Arduino's on-board regulator wouldn't get hot. The controller has 3 screens. The first and main screen is for positioning which displays the position to move to as entered from the keypad as well as the accumulated position. The second screen displays the motor speed which can be changed from the keypad. The third screen displays drive train reduction data. At present the data cannot be changed. A simple matter to implement as I have written the keypad handing, actually all of the software, in a modular fashion. I developed an algorithm to compensate for motor step resolution and drive train reduction if implemented. There are more features I would like to implement. During development I had an issue with the stepper library supplied with version 18 of Wiring. The stepper motor wouldn't commutate properly. I had to modify my local version of the stepper library to get the motor to commutate properly. Regarding the motor driver circuit, I used a ULN2003 darlington driver array driven direcly from Mega digital I/O. I used 4 pins (overloaded constructor) and full-step mode. The motor common is tied to +12vdc and the windings are tied to the outputs of the ULN2003. The motor I used is 4-Phase / 12 Volt Unipolar Stepper Motor #27964. I received an A for the course. :) /me