일반적으로 아날로그 전압 출력을 할 수 있는 주변장치(Peripheral)는 고급 마이크로컨트롤러(MCU)나 특수 목적 용 MCU에 존재합니다. 아두이노는 아날로그 출력을 하기 위해 analogWrite() 함수를 지원합니다. 이 analongWrite() 함수는 아날로그 전압을 출력하는 것은 아니고, PWM(Pulse Width Modulation)으로 구형파(사각파)의 듀티비를 제어하는 방법으로 아날로그 전압 출력이 되는 것처럼 사용 가능합니다. 본 포스트에서는 PWM, 아두이노에서 아날로그 출력 방법 과 예제에 대해 작성하였습니다. PWMPWM은 Pulse Width Modulation으로 사각파의 펄스폭(듀티비) 변조를 의미 합니다. 이 PWM은 아래 그림과 같이 듀티비 조절로 평균값을 변화시켜 아날로그 전압처럼 사용할 수 있습니다. PWM 파형 이 PWM 파형이 LED 출력 회로에 연결 되면 아래 그림과 같이 LED
On, LED Off 시간을 조정하여 LED 의 밝기를 제어하는 용도로 사용될 수 있습니다. LED의 밝기는 듀티비에 의존하고, 이 듀티비는 디지털 파형의 평균 값과 동일합니다. 이와 같은 방법으로, DC 모터의 속도를 제어하거나, 조명장치의 밝기 조정 등 다양한 곳에 사용될 수 있습니다. PWM 파형과 LED 밝기 아두이노의 PWM 출력Hardware아두이노에서 PWM 출력이 가능한 핀은 정해져 있습니다. 보드 마다 다르지만, Arduino Uno 보드는 아래 그림에서 나타내는 핀이 PWM 출력이 가능한 핀입니다. 아두이노 보드에서 핀 번호 앞에 ~ 문자가 있는 핀이 PWM 이 출력 가능한 핀입니다. Arduino Uno 아날로그 출력핀 Software아두이노에서는 아날로그 출력(PWM 출력)으로 analogWrite() 함수를 지원 합니다. analogWrite() 함수 사용법은 아래와 같습니다. 아래 표는 Arduino Uno 보드 기준으로, 1다른 아두이노 보드를 사용하는 경우 지원하는 핀 번호와 PWM 주파수가 다르므로 확인이 필요합니다.
Parameters
Returns : 리턴 값 없음 Remark
Example
※ 아날로그 출력 모드로 사용될 핀은 analogWrite() 함수를 사전에 pinMode() 함수를 사용하여 출력핀으로 설정 되어야 합니다. PWM 출력 써먹어 보기예시2 : 보드 내장 LED Dimming아래 코드는 보드 내장 LED 의 밝기를 조정하는 예제입니다.
LED DImming 회로도 예제2 : 가변저항으로 LED Dimming아래 코드는 가변저항으로 LED 를 Dimming 하는 코드 입니다. 아날로그 입력으로 10kΩ 가변저항을 사용했습니다.
가변저항으로 LED DImming 회로도 마무리본 포스트에서는 PWM에 대한 설명과 analogWrite() 함수 출력 방법과 예제에 대해 작성하였습니다. 예제에 사용했던 GPIO 초기화 함수 또는 for문 사용법에 대한 내용을 모르시는 분은 아래의 이전 포스트를 참고부탁드립니다. 끝까지 읽어주셔서 감사합니다.^^ |