아날로그-디지털 변환회로는 A/D 컨버터(Analog-to-digital converter) 또는 간단하게 ADC라 하며, 아날로그 전기 신호를 디지털 전기 신호로 변환하는 전자 회로이다. 이 ADC는 연속적인 아날로그 신호를 샘플링을 통해 디지털의 비연속적인 이산신호로 변환하고 변환된 이산신호를 가지고 원 아날로그 신호로 다시 복원에 대한 이해는 다양한 전자공학을 이해하는 기초개념이 될 것이다.

위의 그림처럼 연속신호를 샘플링을 통하여 변하는 관계식은 아래와 같다.

아래 그림처럼 홀드기법을 통해 디지털 신호를 아날로그 신호로 복원할 수 있다.

위의 그림들을 이해 할 수 없더라도 사실 별문제가 되지 않는다. 그냥 한번 눈으로 보는 것으로 만족하고 아래의 아두이노로 실습 후 또는 이해하거나 나중에 다시 읽게 된다면 그 의미를 알게 될 것이다.

 

아두이노에서는 이런 ADC 기능을 analogRead()라는 함수로 제공하며, 0~1023의 정수값으로 반환하는데 이는 0~5V의 전압에 선형적으로 비례한다. 따라서 반환된 정수값을 토대로 실제 핀에 들어오는 전압 값을 역산할 수 있다.  즉 0V ~ 5V 사이에서 변화하는데 이 값을 읽어서 입력 장치처럼 사용한다.

analogRead(pin)를 이용하면 아두이노의 아날로그 핀에서 0에서 5V 사이의 입력 전압을 0에서 1024 사이의 값으로 매핑하여 값을 읽을 수 있다. 즉 5볼트를 1024 급간으로 쪼개 읽는다. 즉 급간 단위는 .0049볼트(4.9mV)가 될 것이다. 아날로그의 선형적 전압값이 아래 그림처럼 디지털 값으로 매핑하여 값을 읽게 된다.

AnalogReadSerial

/*

AnalogReadSerial

  A0핀을 읽고, 시리얼 모니터에 결과를 출력r.

  위 그림은 Serial Plotter (Tools > Serial Plotter menu).를 이용

  가변저항기의 중앙핀을 A0, 붉은 리드선은 +5V 검은선은.GND에 연결

참고: http://www.arduino.cc/en/Tutorial/AnalogReadSerial

*/

 

void setup() {

Serial.begin(9600); // 9600 bps:

}

 

void loop() {

int sensorValue = analogRead(A0);

Serial.println(sensorValue); //A0값을 읽어 출력한다

  delay(1);        // delay 1

}

 

위 회로와 소스코드는 Serial monitor를 통해 가변저항의 값을 출력하는 부분을 제외하고는 실질적으로 핵심 코드는 int sensorValue = analogRead(A0);  “A0에서 센서값을 읽어라” 이다.

 

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

  • 내용 중 DIY 따라 하기가 잘 안 되거나 질문이나 아두이노 등 교구에 대한 문의가 있다면 직접crebizias@naver.com 로 질문하시면 답변 드리겠습니다.
  • 강좌를 위한 설문을 하고 있습니다. 설문(https://goo.gl/3S23du)에 참여하시면 기사에 수록하지 못한 자료와 연습문제, 오프라인 강좌정보를 보내 드리도록 하겠습니다.
저작권자 © 디트NEWS24 무단전재 및 재배포 금지