Microstepping motor controller

with Deepansh Agrawal, & Arjun Sarwal under the guidance of Prof. Dhananjay V. Gadre

In a traditional microstepping motor controller, many parallel outputs of a microcontroller are used which are then converted to analog signals using a DAC and fed through a power amplifier to the motor coils. This approach is inefficient both in terms of the power consumed and the number of GPIO's used thus increasing the design complexity. Our system described herein is an efficient alternative using just two GPIO pads to carry out microstepping. As a result, the whole package fits into an 8 pin device and can be aptly called "The world's smallest Microstepping Motor Controller." The design utilizes the full power of the 8 pin, 8 bit AtTiny microcontroller providing features such as:

  • Communication through a half-duplex software emulated UART.
  • Upto seven different speed settings (each setting faster by a factor of 2) for rotating the stepper motor.
  • 64 microsteps/step (using 8 bit PWM, which can be expanded to 256 microsteps/step using 10 bit PWM)
  • Two "home position" pins, to which opto-couplers may be connected.

circuit diagram

I was primarily involved with the visualization of the idea and the electronic (hardware and embedded software) part of this project while Deepansh developed the UI in MS visual studio and assisted in writing the microcontroller code.

A short description of the project can be found here. The microcontroller source code is here and its documentation here.