새로운 배움 — Lock-in Amplifier를 제대로 사용하기 — Part 2

배우는 자(Learner Of Life)
11 min readApr 14, 2024

--

PID 제어(PID Control)

Lock-in Amplifier로 부릴 수 있는 마법에는 어떤 것들이 있을까?(1)

지난 글부터 Lock-in Amplifier를 제대로 활용하는 방법에 대해 알아보는 시리즈를 시작했다. 지난 글에서는 Lock-in Amplifier와 컴퓨터를 연결하고, 운영체제에 따라서 그 연결방식이 어떻게 다른지, 또 LabOne 소프트웨어는 운영체제에 따라 어떻게 설치하고 외부 인터페이스인 GUI/API에 대해 알아보았다.

그렇다면 이 장비를 본격적으로 활용해서 무엇을 할 수 있을까? 이번 글에서는 Lock-in Amplifier가 지원하는 기능 중 하나인 PID 제어기에 대해 알아본다.

Lock-in Amplifier 활용 예제

PID 제어기(PID Controller)

PID 제어기는 일상생활의 많은 제어가 필요한 분야에서 활용된다. 예를 들어 달리는 차량의 속도 제어, 식물을 기르는 온실내 온도 제어 등이 대표적이다.

제어가 필요한 시스템을 상상해본다. 여기서 출력 부분(y(t))과 우리가 원하는 특정 부분(r(t))에서의 출력 차이를 최소화하는 것을 목표로한다. PID 제어기는 궁극적으로 이 두 부분 사이의 차이를 유동적으로 최소화할 수 있는 제어 신호(u(t))를 생성하는 것이다. 이런 방식으로 시스템을 안정화 시킬 수 있기 때문이다.

PID 제어기를 통해 특정 지점과 출력 지점에서의 차이를 최소화하는 것이 목표다(2).
  1. 먼저 시스템의 출력 부분이 선택된 부분과 얼마나 차이가 있는지 비교하는 Comparator를 적용한다. 여기서 두 부분에서 나온 신호의 차이는 에러 신호가 될 것이다. 바로 이 에러 신호가 정밀한 제어를 하는데 있어 매우 중요한 재료가 된다.
  2. 에러 신호는 이후 Loop Filter에 의해 제어 신호를 생성하는데 활용되고, 여기서 생성된 신호가 출력 신호를 생성하는 부분에 전달되는 것이다. 이러한 구조로 Closed-Loop가 완성되어 피드백이 지속적으로 주입되는 시스템이 만들어진다. 즉, 출력과 선택된 부분의 차이를 지속적으로 계산해 필터에 피드하고, 이를 통해 만들어진 제어 신호 역시 지속적으로 출력에 전달된다는 것이다.
출력 신호와 입력 신호 상의 차를 구해 이를 바탕으로 피드백 시스템이 구성된다(2).

위 원리로 시스템은 에러를 최소화한다. 에러는 시간에 비례하는 함수로 정의될 수 있다. 현재 시점의 에러 뿐 아니라 과거의 정보를 포함하는 이전까지의 에러(그래프 상에서 해당 지점까지의 에러 적분), 미래 정보이자 앞으로의 에러 경향을 예측할 수 있게 해주는 에러 기울기(현 시점의 에러에서의 미분)역시 중요한 정보이다.

이전까지의 에러(현 시점까지의 적분)과 이후의 에러 정보(현 시점에서의 미분)(2)

에러 최적화는 Loop Filter내 3가지 주요 컴포넌트를 통해 이루어진다.

  • P: 에러 비율 정보
  • I: 에러 적분 정보
  • D: 에러 미분 정보

수학적으로는 아래와 같이 표현된다. 각 컴포넌트의 Gain과 에러 함수를 곱한 값이, 최종적으로 합해져 출력 부분에 전달되는 제어 신호가 되는 것이다. Kp는 단순히 에러 함수와 곱해지고, Ki는 적분 답게 에러 함수의 현 시점까지의 적분과 곱해진다. Kd 역시 미분 답게, 에러 함수의 해당 시점의 미분과 함께 곱해진다.

P, I, D의 부분과 각 부분의 Gain의 합을 통해 제어 신호를 계산한다(2).

시스템에 따라서 위 3가지 컴포넌트 중 1개나 2개를 고려하거나, 모두다 고려할 수도 있다. 이 경우, 사용하지 않는 컴포넌트는 0으로 간주하여 계산하게된다.

P(Proportional) 컴포넌트

그렇다면 이 3가지 컴포넌트는 어떤 의미인지 알아보자. 먼저 P는 특정 시점의 에러의 진폭에 따라 변화하는 교정값을 말한다. 이 경우, 에러가 클수록, P에 적용되는 교정값이 커진다. P는 출력을 위해 항상 0이 아닌 값이어야하므로, 그 자체로 에러를 완전히 없애는 것은 불가능하다.

아래 그림과 같이 점선으로 표현된 에러 입력값에 대해서 Kp의 값을 1, 5, 10으로 각각 다르게 적용했을 경우, 점점 더 에러에 가까워지지만, 어느 순간 부터는 더 이상 입력 값과 가까워지지 않는 것을 볼 수 있다. Steady-state 프로세스 상태에 다다랐을 때에는 평형(Equilibrium)상태가되어 Steady-State Offset을 포함하게된다.

Kp의 값을 높일수록 입력 신호와 가까워지지만, Steady-State에서는 평형 상태가 된다(2).

I(Integral) 컴포넌트

I는 특정 시점까지의 에러 적분에 따른 교정값을 말한다. 예를 들어 에러가 시간에 따라 큰 변화가 없다면, 적분은 계속 증가할 것이다. 이 경우, 시스템에 적용되는 교정값이 증가한다. 이는 제어기로 하여금 에러가 0인 시점에서도 0이 아닌 제어 신호를 생성할 수 있도록 해준다. 따라서 제어기로 하여금 P값만을 적용했을 때보다 훨씬 입력 신호에 더 가깝게 다가갈 수 있도록 해준다. 그러나 I값을 너무 높게 잡으면 필요 이상의 에러를 합산하는 결과가 될 수 있으므로 주의한다.

아래 그림은 시간에 따라 Ki의 값을 각각 0.1, 0.5, 1.0으로 변화시켜 본 후 나오는 결과를 보여준다. 보이는 것처럼, 0.1에서 0.5로 변화시켰을 때, 입력신호와 같은 진폭 수준으로 수렴하는 것을 볼 수 있다. 그러나 1.0 정도로 매우 큰 값을 주었을 때는 원하는 지점 보다 높아지는 Overshoot 효과와 지점을 계속적으로 벗어나는 진동(oscillation)효과를 초래할 수 있으므로 주의한다.

Offset 없이 입력 신호의 진폭에 다가갈 수 있으나, Overshoot과 진동이 일어나지 않도록 주의한다(2).

D(Derivative) 컴포넌트

D는 현재 시점에서 미분에 따른 교정값을 말한다. 이는 앞으로 에러가 어떠한 경향을 보일지를 예측하는데 활용된다. 다음 에러가 누적(Integral)되거나 안정화(Proportional)되기를 기다리기전에, 미분이 보여주는 기울기를 바탕으로 미래의 에러를 보상한다.

현실에서는 D가 쓰이지 않는 곳도 많은데, 입력 신호, 특히 고주파 잡음에 매우 민감하게 반응할 수 있기 때문이다. 때문에 D값을 적용하기 전, 에러 신호를 안정화 시키기위해 LPF(Lowpass-Filter)를 적용하는 경우가 많다.

D값이 특히 고주파에서 잡음에 매우 민감할 수 있어, 신호 안정화를 위해 LPF로 먼저 필터링하는 경우도 많다(2).

만약 D값이 적절하게 교정되고, 프로세스 자체도 잡음에 크게 영향을 받지 않게된다면, 이 미분값은 제어 성능에 매우 결정적인 영향을 줄 수 있다. 아래 그림은 입력 신호에 대해서 Kd값을 0.0과 2.0로 각각 적용했을 때의 효과를 보여준다. 이전 P와 I를 적용했을 때보다도 더 입력신호의 성질에 가까워 진 것을 볼 수 있다. Kd = 0.0일때 약간의 진동(Oscillation)과 Overshoot이 일어나지만 곧바로 안정되고, Kd = 2.0일때는 그러한 부작용없이 입력 신호의 진폭레벨로 안정화되는 것을 볼 수 있다.

D값은 제대로 입력된다면 제어 신호의 이상적인 형태와 상당히 비슷해 질 수 있게 해준다(2),

LabOne 소프트웨어에서 이러한 디지털 PID 제어기를 모델링할 수 있다. 아래 그림은 MFLI Lock-in Amplifier내에서 PID 제어기가 어떻게 구성되어있는지를 보여준다. 위에서 확인한 구조처럼 입출력 신호의 차를 구해서 계산된 에러 신호를 활용해 PID 제어값을 적용하여 이를 출력 신호에 전달하는 구조이고, 이 것이 Closed-Loop로써 연속적으로 연산이 이루어지도록 구성되었다.

입력 신호에는 진폭(R), 위상(Theta), 허수(Y), 실수(X), Boxcar 평균기, 기타 PID 제어기, Auxilary Channel 및 다른 신호들이 활용될 수 있다. 출력 신호에는 진폭, 주파수, 위상 Offset, 타 PID 제어기의 에러값 및 피드백 신호, 그리고 Auxilary Output인 Bias 전압 등이 있을 수 있다. 다양한 입출력 신호를 지원하기에 사용자의 필요에 맞게끔 실험을 구성하는데 효율적이다.

다양한 입출력 신호를 활용해 PID 제어기 시스템을 구성할 수 있다(2).

PID 제어기의 성능을 높이는 법

복조된 신호를 입력 신호로 전달

이전 글에서 복조(Demodulation)과정에 대해 다루어보았다. 요약하자면 참조 신호를 바탕으로 Mixing 및 Filtering 과정을 통해 노이즈안에서 입력 신호의 정보를 정확하게 추출하는 기법이다. 이러한 복조의 과정을 거친 신호도 PID 제어기의 입력 신호로 활용될 수 있는데, 이렇게 할 경우 더 효율적인 신호 대 잡음비(SNR)과 안정성을 얻을 수 있다. 복조과정이 원하지 않는 부분의 신호를 제거하고 잡음도 효과적으로 제거하기 때문에 더 깔끔한 입력 신호를 제어기에 제공할 수 있기 때문이다. 깔끔한 입력 신호를 PID 제어기에 전달할 수록 더 정밀하고 정확한 시스템 출력 값을 얻을 수 있기 때문에, 제어 성능도 더 높아진다.

또한 Lock-in Detection 기법을 통해 약한 신호를 증폭시켜 더 정밀한 조정이 가능하고, PID 제어기로 하여금 작은 변화에도 민감하게 반응할 수 있도록한다.

복조된 신호를 입력 신호로 사용하면 PID 제어기의 성능을 높일 수 있다(2).

또한 복조를 통해 Filtering 과정을 거치면 원하지 않는 부분의 주파수 컴포넌트를 제거할 수 있는데, 이 역시 성능 향상에 도움이 된다. 필터링 과정을 통해 선택된 복조 주파수를 기준으로 특정 범위내의 주파수 컴포넌트만 남기고 제거할 수 있는데, 이를 통해서 PID 제어기가 원래 신호가 가지고 있던 정보만을 최대한 활용하여 더 정확하고 효율적인 제어를 할 수 있게된다.

복조 과정을 통해 원하는 주파수 컴포넌트만 남긴 신호를 PID 제어기에 입력하므로 더 좋은 제어 성능을 얻을 수 있다(2).

여러 PID를 연결해 사용하기

여러 개의 PID 제어기를 Cascading하는 방식으로 활용가능하다. 복조과정에서 여러개의 RC Filter를 Cascading하여 조금 더 정확한 결과를 얻을 수 있는 것처럼, PID 제어기 역시 직렬(Sequential)혹은 병렬(Parallel)로 여러 개를 연결하여 더 탄력적으로 필요에 맞게끔 실험을 구성할 수 있고 더 높은 성능을 얻을 수 있다.

PID 제어기 여러개를 순차적으로 직렬 연결한 모습(2)
PID 제어기 여러개를 병렬로 연결한 모습(2)

소프트웨어의 기능 활용

LabOne 소프트웨어가 제공하는 기능을 추가적으로 활용하여 성능을 개선할 수도 있다. Sweeper, PID Advisor, Autotune과 같은 기능들을 활용하여 Bandwidth, 속력, 초기 튜닝 파라미터 등을 조정할 수 있다.

아래와 같이 Sweeper를 통해 테스트할 장비(DUT)의 Open-Loop Response 정보를 얻거나, PID Advisor를 통해 Sweeper에서 측정한 Open-Loop Response 및 내부 모델의 전달 함수(Transfer Function)을 활용하여 최초 피드백 Gain 파라미터 값을 계산할 수 있다. 이렇게 계산된 파라미터값은 Closed Loop 동작을 시작하는데 활용할 수 있고, 이후에도 PID 제어기를 실행하는 도중 발생하는 에러를 실시간으로 모니터링 하는데에도 활용할 수 있다.

Sweeper를 통해 DUT의 Open-Loop Response를 알 수 있다.
PID Advisor로 최초 피드백 파라미터 값을 계산할 수 있다(2).

참조:

(1) https://pixabay.com/vectors/magic-wand-hat-sorcerer-magician-154526/

(2) https://www.youtube.com/watch?v=ZxoguZcmnT0&list=PLjxUCNDRYw8kxOZkD9gTaEmXRFlqDr6Fw&index=2

--

--

배우는 자(Learner Of Life)
배우는 자(Learner Of Life)

Written by 배우는 자(Learner Of Life)

배움은 죽을 때까지 끝이 없다. 어쩌면 그게 우리가 살아있다는 증거일지도 모른다. 배움을 멈추는 순간, 혹은 배움의 기회가 더 이상 존재하지 않는 순간, 우리의 삶은 어쩌면 거기서 끝나는 것은 아닐까? 나는 배운다 그러므로 나는 존재한다. 배울 수 있음에, 그래서 살아 있음에 감사한다.

No responses yet