Electronic – Using impulse response to control the system

controlcontrol systemconvolution

This post by Olin Lathrop is rather inspiring.

The system response is the convolution of the control input with this
impulse response, computed every control sample, which is every 500 ms
in this example. To make control system out of this you work it
backwards to determine the control input that results in the desired
system output.

How is this done exactly – this "work it backwards to determine the control input"? I'm not expecting a full systems control course here, just a general description and some pointers to start looking for. Some pseudocode would be a bonus.

Best Answer

You've entered into the wide and deep field of control theory. Here, Matlab with its comprehensive documentation will be your best guide. Matlab's help is a comprehensive compilation of many many textbooks. Where its help does not suffice, you can take a look at the references used to write the Help section you're interested in.

An impulse response is a unique way of describing a linear system. This means that two LTI systems with an identical impulse response can be judged to be mathematically identical - even if one is an automobile shock absorbeer and the other an electronic filter!

The impulse response is a useful way of testing the parameters of the system because it contains a wide range of frequencies. An ideal impulse contains ALL the frequencies from zero to infinity. In contrast, a sine wave has only a single frequency, so it's a very bad way of identifying a system. If your system is linear and time-invariant, a sinewave input will produce a sinewave on the output.

The problem you're describing is of a dual nature: you first identify a system. The knowledge of its parameters allows you to adjust the parameters of your controller. How do we work out these parameters? I recommend reading about System Identification in the Matlab Documentation. There are many textbooks on how to tackle this, but you're going to end up using a tool such as Matlab to learn this, anyway.

How do you adjust those control parameters? It's simpler than identifying a system, but there is a myriad of methods. There is no single way of doing this. There are dozens of controller topologies and many different ways of calculating the set of parameters that give you your desired response. For more information, read on about pole placement. There are many textbooks describing this. One of the best resources on this is the Matlab Control Toolbox Documentation.

For a simple SISO system you can derive the equations by hand. This tutorial explains more using a relatively simple example.

I hope this explains something.