1. ADC
아날로그 신호는 디지털 신호와 다르게 연속적이기 때문에
신호의 정보를 이용하기 위해서 디지털 신호로 바꾸어 주어야 한다.
아두이노에는 Analog-Digital Converter(ADC)가 내장되어있다.
ADC는 아날로그 전압값을 프로그램에서 사용할 수 있는 디지털 값으로 변환해주는 장치이다.
정확도는 해상도(비트 개수)로 결정되는데 아두이노는 10bit ADC를 사용하기 때문에 1024단계의 값의로 나타낼 수 있다.
기준전압 | 출력값 |
5V | 1023 |
2.5V | 512 |
0V | 0 |
아두이노 모델 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 사이 전압으로 설정 |
반환값
-