DC Motor Position Control
August 2024 - December 2024
Introduction
My third major course at USNA was EW305H (Honors Linear Control Engineering). We learned the fundamentals of classical control engineering, to include mathematical modeling, time and frequency response analysis, and design of PID compensators.
The final project of the course was to design a DC motor position controller under high magnitudes of static friction.

Design Documentation
The following documentation provides a brief overview of the design process to create a controller within the project's specifications. It involved both a simulation under frictionless conditions as well as experimental trials under a high friction load.
System Identification
The first step in designing a controller is to identify the system. I used a step input of magnitude 3 volts to the motor and recorded the response. The data was then used to identify the transfer function of the system.
The DC motor transfer function from voltage to speed can be modeled as follows:
Where constants and can be estimated through time response analysis of the motor at the given step input voltage. My trials calculated and .
The DC motor transfer function from voltage to position can be modeled as follows:
As a result, we can model the DC motor's position transfer function as follows:
The design specifications was a overshoot with a settling time, , dependant on the chosen controller design and the constant .
Lead compensator
As the DC motor transfer function is Type-1, we can expect a zero steady state error. Therefore, a lead compensator would be a very simple approach to achieve the design specifications. The lead compensator transfer function is the following:
Where the zero, , and pole, , can be calculated via the Root Locus Method. A of 9.0915 and of 25.3115 with a gain value was calculated for the following controller function:
The Root Locus for the lead compensator is illustrated in Figure 1.

Figure 1
In order to discretize the lead compensator transfer function, Tustin approximation was implemented to transform the function into the z-domain:
Where is the sampling time of 0.01 seconds as the motor encoder samples at 100 Hz. Utlizing the time shift theorem to transform back into the time domain yields: