[아두이노를 활용한 데이터 입출력] 1. 아두이노 아날로그 신호 처리 방법

1. ADC

아날로그 신호는 디지털 신호와 다르게 연속적이기 때문에

신호의 정보를 이용하기 위해서 디지털 신호로 바꾸어 주어야 한다.

 

아두이노에는 Analog-Digital Converter(ADC)가 내장되어있다.

ADC는 아날로그 전압값을 프로그램에서 사용할 수 있는 디지털 값으로 변환해주는 장치이다.

정확도는 해상도(비트 개수)로 결정되는데 아두이노는 10bit ADC를 사용하기 때문에 1024단계의 값의로 나타낼 수 있다.

기준전압 출력값
5V 1023
2.5V 512
0V 0

 

 

3bits ADC 변환 예시

아두이노 모델 ATmega2560은 16개의 채널을 갖고 있지만,

한 개의 ADC를 공유하기 때문에 동시에 여러 채널을 사용할 수 없다.

 

 

2. PWM

Pulse Width Modulation(PWM)은 펄스 폭 변조를 말한다.

아날로그 신호를 디지털 형태로 표현한 것으로 PWM을 사용하면 디지털 신호를 아날로그 신호와 비슷하게 만들 수 있다. 

아두이노에서 아날로그 데이터 출력이 불가능하므로 PWM신호를 이용해 아날로그 출력을 모방한다.

PWM은 신호 ON/OFF 방식으로 square-wave 의 듀티비(duty cycle)을 변조하여 사용한다.

  • 듀티비: 전체 주기에서 HIGH상태(5V)가 차지하는 비율

아두이노 ATmega2560은 16개의 PWM 출력이 가능하다.

 

 

3. 함수

int analogRead(unit8_t pin)

정해진 핀에 해당하는 장치에서 아날로그 신호를 읽어오는 함수

 

매개변수

pin: 핀 번호

 

반환값

0~1023 사이의 정수값

 

 

 

 

void analogWrite(uint8_t pin, int value)

정해진 핀에 아날로그 출력을 하는 함수

 

매개변수

pin: 핀번호

value: 듀티비 ,0~255사이의 값 (0 //항상 off, 255 //항상 ON)

 

반환값

-

 

value에 127을 지정하는 경우,

0V와 5V가 같은 비율로 매우 빠른 속도로 전환되어 출력 장치가 LED일 때 중간정도의 밝기로 보인다.

 

 

 

void analogReference(uint8_t type)

analogRead()함수는 0에서 1023사이의 정수값을 반환한다.

1023에 해당하는 기준 전압은 ATmega2560의 동작 전압인 5V가 일반적으로 사용되는데,

기준 전압을 변경할 수 있는 함수

 

매개변수

type: DEFAULT, INTERNAL, INTERNAL1V1, INTERNAL2V56, EXTERNAL 중 1

DEFAULT uC의 동작전압(5V)으로 설정
INTERNAL 내부 기준 전압(1.1V)으로 설정
ATmega2560 사용 불가
INTERNAL1V1 내부 1.1V로 설정
ATmega2560만 사용 가능
INTERNAL2V56 내부 2.56V로 설정
ATmega2560만 사용 가능
EXTERNAL  AREF 핀에 인가된 0~5V 사이 전압으로 설정

반환값

-

 

728x90