Estimate any DC Motor Transfer Function

Çağlayan Şerbetçi
4 min readDec 2, 2018

--

Control theory is one of the most important topics in engineering field. It deals with the behavior of the dynamic systems with inputs and how their behaviors change with the feedback and controller. Laplace transform is the basic and powerful tool of the Control Theory.

If you are interested with a Control Theory, you have already heard the transfer functions. Transfer functions give the all outputs for all possible inputs for a system. I will not go further about the transfer functions, there are many online sources about them.

In this story, i will tell you how you can estimate the DC motor transfer function. Although the DC motor that is the topic of this story, there is no exception in general, suppose that it can be modelled by a transfer function

(a and b to be determined) in the operating regime of interest where Y (s) and X(s) are the Laplace transforms of the voltages corresponding to the rotation angle (θ) and the input voltage(v) of the DC motor, respectively.

DC Motor Diagram

One way to assume transfer function of the dc motor is determining the DC motor physical parameters. You can learn these parameters motor’s datasheet. After constructing the equations of motion of DC motor, you can determine the transfer function.However, the approach in this story is different. We do not need to specify all the DC Motor parameters.

Measurement Approach

In this approach you have to measure the output angle of DC motor.You can use an encoder for the recording the position or angular velocity of the motor. Also, some DC motor has the shaft encoders embedded on motor. Then you can use an ADC to grab data digitally from the encoder. An Arduino could be enough capability for this process. Also, MATLAB-Simulink offers some instruments (hardware) for real-time data recording.

PID controlled DC Motor with Arduino

According to motor datasheet, we can give a suitable step input to the motor. This step input may be 5 V.

After measurement inputs r(t) and outputs y(t), the corresponding graphs should be seen like this.

Output(rad) graph for 10 seconds y(t)
Input(Volt) graph for 10 seconds r(t)

With the 5 V input, the position output in the s domain is that:

After partial-fraction expansion;

Then, y(t) is inverse Laplace transform of the Y(s);

Then, we already have the input data array r(t) (voltage) and output data array y(t) (position) from the measurements. The y(t) has two unknowns which are a and b. Then we need two equation. We can easily construct two equation from our measured data arrays.

For example:

For t=1, r(1) = 5 and y(1) = 1.41, the equation 1 becomes:

Then, we can solve the equation 1 and 2 by using MATLAB solve.m function. According to measured y(t) and r(t), a becomes 1 and b becomes 2. Then the example transfer function becomes:

Thanks for reading.

--

--