본문 바로가기
전자공학/아두이노

아두이노 PWM 실습3: analogWrite() 실제 실험

by 블랜드 2022. 2. 10.
반응형

<analogWrite() 실제 실험 구성>

[왼쪽 그림: 6번 핀에 PWM 출력 구성도 / 오른쪽 그림: 실제 실험 구성]

  analogWrite(핀 번호, 아날로그 값) 함수에 입력한 아날로그 값에 따른 실제 출력 결과를 알아보기 위해 위와 같이 구성하였다. 왼쪽 그림 및 중간 그림은 회로 구성이 어떻게 되어있는지를 그림으로 표시한 것이다. 왼쪽 그림은 6번 핀에 계측기(멀티미터)를 연결한 경우이고, 오른쪽 그림은 실제 실험 구성을 보여준 것이다. 연결하는 핀은 Fast PWM을 사용하는 6번 핀과 Phase Correct PWM을 사용하는 9번 핀, 총 2개이다.

 

 실험 코드는 아래와 같다. analogWrite()의 핀 번호에는 5 또는 9 아날로그 값에는 0~255까지의 임의의 값을 넣어 실험하였다.

void setup()
{
  analogWrite(핀 번호, 아날로그 값);
}

void loop()
{

}

<6번 핀 analogWrite() 실험 결과>

 아래 그림은 아날로그 값이 127 및 128일 때의 실험 사진을 보여준 것이다. 각각 2.49V, 2.51V가 측정됨을 알 수 있다.

[왼쪽 그림: 아날로그 값=127 / 오른쪽 그림: 아날로그 값=128]

아래 표는 6번 핀에 anaolgWrite() 함수의 아날로그 값에 따라 PWM을 출력하면서 측정되는 값과 이론값을 비교하여 표로 정리한 것이다. 아날로그 값이 1, 2일 때 측정값이 이론값보다 1.5~2배 정도 크게 나오는 것을 볼 수 있다. 그 이유가 무엇이 무엇인지는 정확히 모르겠으나, 아마 아날로그 값이 작을 때는 ON 되어 있는 신호가 적어 노이즈의 영향을 크게 받기 때문으로 추정된다.

6번 핀
y=a+bx
아날로그 값(x) 이론값 측정값(y) 오차 오차율(%)
1 0.0195 0.038 -0.0185 -94.872
2 0.039 0.058 -0.019 -48.718
127 2.48 2.49 -0.01 -0.403
128 2.5 2.51 -0.01 -0.4
200 3.9 3.92 -0.02 -0.513
220 4.297 4.31 -0.013 -0.303
250 4.88 4.9 -0.02 -0.41

 

 위 그래프는 이론값 데이터와 측정값 데이터를 그래프를 표현한 것이다. 하늘색 직선은 측정값 데이터를 최소제곱직선(추체선)으로 표현한 것이다. 추세선 식 y=0.0195x+0.0164을 살펴보면 이론값인 평균전압 식 Vavg = x/256*5* = 0.0195*x과 거의 일치하는 것을 확인할 수 있다.

 


<9번 핀 analogWrite() 실험 결과>

 아래 표는 9번 핀에 anaolgWrite() 함수의 아날로그 값에 따라 PWM을 출력하면서 측정되는 값과 이론값을 비교하여 표로 정리한 것이다. 대부분의 아날로그 값에서 오차율이 아무리 커도 대략 3%대로 이론값과 거의 근사하게 나온 것을 확인할 수 있다. 

9번 핀 (Phase Correct PMW)
y=a+bx
아날로그 값(x) 이론값 측정값(y) 오차 오차율(%)
0 0 0 0 0
1 0.0196 0.019 0.0006 3.061
2 0.0392 0.038 0.0012 3.061
127 2.49 2.48 0.01 0.402
128 2.51 2.5 0.01 0.398
180 3.53 3.52 0.01 0.283
200 3.92 3.92 0 0
220 4.314 4.31 0.004 0.093
250 4.9 4.9 0 0

 

 위 그래프는 이론값 데이터와 측정값 데이터를 그래프를 표현한 것이다. 연두색 직선은 측정값 데이터를 최소제곱직선(추체선)으로 표현한 것이다. 추세선 식 y=0.0196x-0.0025을 살펴보면 이론값인 평균전압 식 Vavg = x/255*5* = 0.0196*x과 거의 일치하는 것을 확인할 수 있다.


<PWM 평균전압 변화 비교: 시뮬레이션 vs 실제 측정>

[왼쪽 그림: 9번 핀 아날로그 값 127 PWM 출력 시뮬레이션 / 오른쪽 그림: 9번 핀 아날로그 값 127 PWM 출력 실제 실험]

  위 사진들은 9번 핀에 analogWrite(9, 127) 함수를 써서 PWM 출력을 한 경우이다. 아두이노 서킷 시뮬레이션상에서는 측정되는 평균전압의 변동이 빠르고 크게 나타난다. 그러나 실제 현실에서 측정한 경우에는 오른쪽 사진과 같이 0.1V 단위만 변동이 있을뿐이다. 심지어 analogWrite(9, 1)과 같이 아날로그 값을 1로 설정하여 출력하여도 0.019V가 거의 변동 없이 출력된다. 이는 PWM을 이용하여 원하는 평균전압을 출력하고자 할 때 평균전압의 변동을 크게 신경 쓸 필요가 없다는 것을 의미한다. 따라서 PWM을 사용하면 원하는 평균전압을 거의 정적으로 출력이 가능하다.

 

 ※평균전압 변화가 생기는 이유는 PWM은 디지털 신호를 ON, OFF를 함으로써 평균전압을 나타내기 때문으로 생각된다. 그래서 평균전압으로 인식하는 총 신호 주기 중에 ON, OFF가 빠르게 더해짐으로써 평균전압 변동이 생기는 것으로 추정된다.

반응형

댓글