Working on an electromechanical project needing 3 axes of step motor drivers. I looked at the Arduino but was not impressed with the step motor driver shields that I saw. This project might wind up being battery powered at some point, so I wanted good control of motor current. I wanted to minimize the extra stuff in the system, so I added on-board switching regulators to power the CPU eval board and the local chips from the same 10-16VDC input supply. There are a number of setup paramters that need to be kept across power cycle events, so I put an I2C interfaced eeprom chip on the board as well. A level shifter to allow standard RS232 serial levels is included to make it easier to talk to over long cables.
The first part of the project was to see if I could get the ramped motion profiles out of the timers on the TM4C123GXL eval board. With a little work, I got a hybrid hardware / firmware step pulse generator running. This was also a test to see how usable the TI development environment was and the quality of the documentation, since this is the first project that I have done with a TI processor. The development environment is a pretty standard Eclipse setup, and the documentation is decent.
With the eval board choice vetted and knowing what pins would be needed for the step/direction drives to the motor driver chips, I started designing the driver board. The motor drive chips that I wanted to use (DRV8825) support several microstepping options and sleep modes, so it was apparent that I was going to run out of IO pins to the microcontroller. I used an I2C I/O expander chip to handle the "set once at powerup" inputs, and the microcontroller GPIO pins for the active stuff. A 4 channel DAC was chosen to drive the motor current control inputs to the motor driver chips. The DAC is also an I2C interfaced part. Limit switch inputs are filtered and ESD protection added before going to Schmidt trigger inputs to clean up slowly changing signals. The limit switch inputs are routed to GPIO inputs on the microcontroller since they may wind up being interrupt driven in the final software.
The first pass of the design is completed and the boards have been sent out for fabrication. Time to order the parts and wait for the boards to come back. A fair amount of extra software needs to get written to test the current control and microstep control hardware.