Instructors: Professor Jim Freudenberg
Professor Jeff Cook
There is a strong need in industry for students who are capable of working in the highly multi-disciplinary area of embedded control software development. The performance metrics of an embedded control system lie in the analog physical world, yet the performance limiting component of the system is often the embedded microprocessor. The standard college education does not produce students with expertise in both areas, and students with expertise in one area often do not possess the conceptual framework required to understand issues that arise in the other.
EECS 461: Embedded Control Systems is a senior/first year graduate level course in the subject that teaches students from diverse backgrounds the fundamentals of the subject. We use technology relevant to the local automotive industry, including the Freescale MPC 5553 microcontroller and a CAN network. We also use Mathworks tools, Matlab, Simulink, Stateflow, and Real Time Workshop for modeling, analysis, and (in the last stage of the course) autocode generation. We develop an embedded controller for a haptic interface, or force feedback system, built by Professor Brent Gillespie of the Mechanical Engineering Department at the University of Michigan.
During the first several weeks of the semester, the laboratory exercises will develop an embedded controller for a haptic interface. The software will be written in C. We will implement the controller over a CAN network to study performance degradation due to networking delay. We will then recreate our work using rapid prototyping tools to generate C code directly from a Simulink model of the haptic virtual world. We shall structure the generated code as task states in the OSEKTurbo real time operating system.
Each lab teaches a peripheral on the MPC5553, a signals and systems concept, Labs 1-7: program in C, and Lab 8: autocode generation.
Lab 1: Familiarization and digital I/O
Lab 2: Quadrature decoding using the eTPU
Lab 3: Queued A-D conversion
Lab 4: Pulse Width Modulation and virtual worlds without time
Lab 5: Interrupt timing and frequency analysis of PWM signals
Lab 6: Virtual worlds with time.
Lab 7: Controller Area Network (CAN)
Lab 8: Rapid Prototyping
The class has been featured in an article in the Mathworks
News and Notes and in a Mathworks
TEXTBOOK: There isn't a single textbook that covers all the topics of this course. We will provide
handouts on most topics of the class. A good review of hardware fundamentals, interrupts, and operating
systems is found in An Embedded Software Primer by David E. Simon, Addison Wesley, 1999, ISBN: 0-201-61569-X.
USEFUL REFERENCES: The following list of books provide useful background for various lecture topics:
J. Lemieux, Programming in the OSEK/VDX Environment, CMP Books, 2001.
D. Auslander and C. J. Kempf, Mechatronics: Mechanical Systems Interfacing, Prentice-Hall, 1996.
J. Ledin, Embedded Control Systems in C/C++, CMP Books, 2004.
R. Soja and M. Bannoura, MPC5554/MPC5553 Revealed, AMT Publishing, 2005.
A. Burns and A. J. Wellings, Real-time systems and programming languages, Pearson, 2001.
C. M. Krishna and K. G. Shin, Real-Time Systems, McGraw-Hill, 2001.
W. Wolf, High-Performance Embedded Computing: Architectures, Applications, and Methodologies,
Morgan Kauffman, 2007.
In addition, a very interesting and useful website is www.embedded.com. This site has many articles relevant
to the industry and this course.
The vast majority of microprocessors are not used in desktop or laptop computing applications. Instead, they are embedded in other technological systems, such as cell phones, appliances, and
automobiles. One unique feature of embedded applications is that the goal of the design is not directly related
to the performance of the microprocessor, but rather to the performance of the overall system. When
I drive my car, I don't care what kind of microprocessors (if any) are being used to control the engine,
transmission, and brakes; I only care that they work, and work reliably! When I make toast, I don't know or care what kind of microprocessor is in my toaster (it has one!) In EECS 461 you will learn how to use a microprocessor as a component of an embedded control system. The specific embedded system we will be working with is a haptic interface, which uses force feedback to enable a human to interact with a computer through the sense of touch. The skills we shall develop in doing so are applicable to a broad range of embedded system applications. There are many differences between programming a general purpose computer and programming for an embedded application. Among these is the fact that embedded computations must be synchronized with the evolution of a physical system. Embedded software is often safety critical, and thus cannot fail. There are also constraints on memory and power consumption not present in general purpose computing.
Position and Velocity Measurements. Encoders. Quadrature Decoding.
The MPC5553 Time Processing Unit (TPU) and its Quadrature Decoding function.
Pulse Width Modulation (PWM) Frequency response of PWM signals. DC motors. Amplifiers. Interface electronics.
Haptic interfaces. Virtual worlds. Human-computer interaction. Applications to games, manufacturing and robotics, drive-by-wire aircraft and automobiles, flight and surgery simulators, video editing. "Artifacts" due to microprocessor implementation of the virtual world,
Algorithms. Feedback systems. PID control. Logic control and finite state machines. Numerical integration. Implementing a virtual world on a microprocessor.
Real time computation. Rate monotonic scheduling.
Late in the semester we will complete a small project using the hardware, software, and haptic interfaces in the embedded systems laboratory. This semester's project will be to develop an adaptive cruise control system allowing different lab groups to interact over the network and receive both visual feedback from a computer monitor as well as haptic feedback.
(Select for large version)