This paper describes the evolution of a graduate and advanced undergraduate mechanical engineering course on microcontrollers and electromechanical control systems. The course begins with developing an understanding of the architecture of the microcontroller, and low-level programming in assembly language. It then proceeds to working with various functions of the microcontroller, including serial communications, interrupts, analog to digital conversion, and digital to analog conversion. Finally, the students learn how to characterize first and second order systems, and develop and implement their own controllers for a variety of electromechanical systems. The course takes the uncommon approach of teaching assembly language programming to mechanical engineering students, with the students using assembly language programming for approximately half of the course and the remainder using the C programming language. The authors believe that this approach helps students develop a better understanding of the architecture of the microcontroller and low-level routines found in embedded control applications. The course provides a bridge between traditional mechatronics courses that focus on electronics and interfacing, and lab-based control courses that use turnkey data acquisition systems and graphical programming tools such as Simulink or LabVIEW. The course has existed for over two decades, using a variety of microprocessor and microcontroller platforms. After evaluating numerous alternatives, the course was recently updated to use a 32-bit ARM Cortex-M3 microcontroller evaluation board from STMicroelectronics paired with custom interfacing circuitry. This platform was chosen not only for more modern microcontroller technology, but also for the availability of free development tools and very inexpensive evaluation boards. This allows the students to write and test their programs outside of scheduled lab times, along with the ability to cost-effectively utilize microcontrollers in future projects.
Date of this Version