2

I am a control engineering student and I am studying the frequency response of a system, so the Laplace domain, the Bode plot, poles, zeros,etc. ... I have clear grasp of their meaning, but if I think about the practice it is hard to grasp, at least for me.

For example, I would like to study the frequency response of a DC motor with Arduino, but really don't know from where to start.

So, how do I study the frequency response of a physical system with Arduino? (for example a DC motor)

dcr
  • 23
  • 3

1 Answers1

2

The arduino does impose some limits. But a classical frequency identification is build from a few steps:

  1. As the other comments already suggest, the design of a suitable input. As mentioned, a sinusoidal input (I actually recommend multisine) is suitable to accurately identify the response of a few frequencies. White noise or band-limited white noise can identify an entire range of frequencies, but less accurate as the energy per frequency must be divided. The common sense here is that if you compute the frequency domain transformation of the input signal, the higher the magnitude at certain frequencies, the better the identification for these frequencies. On top of that, for physical reasons, I suggest to add a DC component (so a constant offset) to ensure the DC motor keeps spinning, this prevent you from measuring non-linear start-stop behaviour.
  2. Sampling rate. The maximum frequency you can possible identify is equal to the Nyquist frequency - half the sampling rate. With identification, getting the cut-off frequency / resonance frequency is essential, so make sure you can measure fast enough.
  3. Experiment duration. The longer you measure, the more detailled the frequency identification looks. This means you can identify lower frequencies, and have more point is the high frequency region.
  4. Choice of Window and whether windowing should be applied. Windowing allows to get a more detailed frequency identification, whilst cutting the total identification length. So low frequencies are not very accurate, while higher, more desired frequency regions are.

So that leaves us with the Arduino issues. Most notably, a problem between 2 and 3. I dont know which Arduino you use, but something like an Uno might be troublesome. See suppose you want to measure at 1kHz (which might be fair), the USB transfer protocols might harm this sampling rate and make it impossible to continuously send data. Therefore, it is advisable to store the data in the Arduino and send it afterwards. Which leaves us with point 3: memory. The arduino is fairly limited in memory so how long can you actually measure and still store it?

Hope these provided some insights. Any questions are always welcome.

Petrus1904
  • 1,099
  • 6
  • 5