본문 바로가기

아두이노/아두이노 공부하기!

8. [Tutorial] 아두이노 아날로그 실습(가변저항)

이번에는 아날로그 실습에 대해 진행해보도록 하겠다.


아날로그에 대해 모르겠다면, 이전 포스팅했던 글을 참조바란다.

6. [Tutorial] 아두이노 아날로그 이론(ADC) - http://openstory.tistory.com/62


아날로그 실습은 가변저항이라는 것을 이용하여 진행하겠다.


가변저항(Potentiometer)은 사용자가 직접 저항값을 임의로 바꿀 수 있는 저항기를 말한다.

가변저항은 위 그림처럼 생겼다.

그리고 가변저항은 3개의 핀을 가진다. (1: VCC, 2: Vout, 3:GND)


가변저항은 왼쪽 그림의 2번핀을 기준으로 2번핀을 왼쪽으로 돌리냐 오른쪽에 돌리냐의 따라 저항 값이 변하게 된다.

가변저항의 전체저항을 RL이라고 하였을 때, 2번을 기준으로 왼쪽을 R1, 오른쪽을 R2이라고 부르겠다.

그림을 보면 알겠지만 가변저항은 저항 2개를 직렬로 연결한 것과 같다.

즉, 왼쪽의 가변저항의 동작방식과 오른쪽의 회로를 비교해보면 동일하다는 것을 알 수 있다. 

2번 Vout을 기준으로 R2와 R3의 저항값이 변하게 된다.


아두이노 우노는 5V로 동작한다. WizArduino는 3.3V로 동작한다.

여기에 가변저항은 전체 5K옴짜리라고 했을 때 (RL=5K옴)

위 회로를 보면 Vout을 기준으로 왼쪽으로 살짝 돌려서 R1의 저항 값이 2K, R2의 저항 값이 3K가 되었다고 해보자.

그러면 Vout은 3V의 출력 값을 갖게 된다.


 어떻게 ?? 직렬 저항 2개는 전압 분배 법칙 이라는 공식을 사용하면 쉽게 전압 값을 구할 수 있다.

이를 대입하여 계산을 해보면 !


위와 같이 사용할 수 있다 !!


그럼 이것을 아두이노로 실습을 진행해보자.


-------------------------------------------------------------------------------------

// Arduino Code

const int sensorPin = A0; // 가변 저항 A0 선언

const int ledPin = 13; // LED D13 선언     

int val = 0;  // 가변저항 값을 읽은값을 저장할 변수 선언


void setup() {

  pinMode(ledPin, OUTPUT); // LED 출력으로 지정

}


void loop() {

  val = analogRead(sensorPin); // 가변 저항 값 읽기

  if(val > 512){ // 읽은 값이 512보다 크면 LED OFF

    digitalWrite(ledPin, LOW); 

  }

  else{ // 읽은 값이 512보다 작으면 LED ON

    digitalWrite(ledPin, HIGH);

  } 

}


-------------------------------------------------------------------------------------

코드와 회로는 위와 같다. 회로를 보면 A0에 가변저항 10K옴을 부착했다.

그래서 const int sensorPin = A0; 로 선언한 것이다. 여기서 아날로그를 선언하려면 "A" 가 붙어야 한다.


그리고 이를 val = analogRead(sensorPin);  을 사용해서 A0의 값을 읽어와서 이를 그대로 val이라는 변수에 넣는다.

그리고 val 값이 512를 기준으로 LED를 ON/OFF 컨트롤하게 된다.

  if(val > 512){ // 읽은 값이 512보다 크면 LED OFF

    digitalWrite(ledPin, LOW); 

  }

  else// 읽은 값이 512보다 작으면 LED ON

    digitalWrite(ledPin, HIGH);

  } 


위 동영상은 동작 확인 영상 !!!!


-----------------------------------------------------------------------------------------------------------------------


왜 pinMode를 선언하고 digitalWrite를 사용하는지 궁금하면 아래 링크를 클릭 !!

4. [Tutorial] 아두이노 LED와 옴의법칙 동작 설명: http://openstory.tistory.com/60

여기까지가 아날로그 실습이다.

이를 이용하여 다른 센서도 구현이 가능하다.


다른 센서를 어떻게 구현하는지 알고 싶으면, 아래 링크를 확인 !!

아두이노를 이용한 Smart plant(farm) Part.2: http://openstory.tistory.com/54

여기서 수분 센서 및 레인센서를 확인하면 가변저항의 원리와 동일하게 센서를 제어한다.

다음은 PWM을 진행하겠다.