Arduino의 아날로그 기능: 차후 설계에서의 사용 방법

작성자: Lee H. Goldberg

Electronic Products 제공


내장형 설계 전문가이든 초보 해커든 Arduino 개방형 하드웨어 플랫폼의 아날로그 입력 및 출력 채널을 통해 프로젝트에서 쉽게 '현실 세계'에 도달하고 접하게 될 것입니다. 콤팩트한 모듈은 전압을 모니터하고 광범위한 아날로그 센서 또는 샘플 파형을 읽는 데 사용되는 MCU의 다중 채널 입력에 쉬운 액세스를 제공합니다. 

MCU의 디지털 아날로그 컨버터는 분해능과 변환 속도에 있어서 비교적 양호하나, 조명 또는 모터 제어에서 증폭기의 이득 바이어스를 구동하는 데에 이르는 다양한 공통 응용 제품에는 매우 적합합니다. 이 기사에서는 Arduino의 아날로그 기능에 대한 기초를 형성하는 하드웨어 및 소프트웨어 리소스를 소개하고 차후 설계에서 그 기능을 사용하는 방법을 살펴볼 것입니다. 

Arduino가 생소하다면 TechZone 기사 '창의성을 일깨우는 Arduino 개방형 소스 플랫폼'을 참조하세요.

아날로그를 위해 탄생

디지털 기술을 현실 세계의 응용 제품에 쉽게 적용한다는 원칙에 따라 Arduino 하드웨어 플랫폼은 Atmel의 다목적 ATmega 8비트 MCU 제품군에 내장된 아날로그 기능을 최대한 활용하도록 설계되었습니다. Arduino 플랫폼에 사용되는 모든 Atmega 제품은 온칩, 다중 채널 아날로그 디지털 컨버터(ADC)를 갖추었습니다. ADC는 10비트 분해능을 가지며 0 ~ 1,023까지의 정수 형식으로 초당 최대 15,000개 샘플을 생성할 수 있습니다. AVR MCU는 대부분 6개의 아날로그 입력 채널을 지원하며 일부 변형 제품은 8개 및 16개의 입력을 지원합니다. 아날로그 핀의 주요 기능은 아날로그 입력을 읽기 위한 것이지만 아날로그 핀을 디지털 범용 입력/출력(GPIO) 핀으로도 구성할 수 있습니다. 필요한 경우 아날로그 핀은 선택 가능한 풀업 저항기를 가지는데, 이는 MCU의 디지털 핀 풀업과 동일한 방식으로 구성할 수 있습니다. 

일부 AVR MCU는 디지털 아날로그 컨버터(DAC)와 함께 제공되지만 현세대의 Arduino 기판 제품군 구성원은 펄스폭 변조(PWM) 신호를 생성하기 위해 디지털 I/O 핀을 빠르게 토글함으로써 아날로그 출력을 생성합니다. 각 PWM 출력의 약 490Hz 방형파의 듀티 사이클은 256, 2msec 증분으로 0V와 5V 간에 동등한 RMS 전압을 전달하도록 프로그래밍할 수 있습니다(그림 1). 기능이 제한적이기는 하지만 Arduino의 출력은 LED 구동 또는 모터 제어와 같은 다양한 작업에 사용할 수 있습니다.

Arduino의 디지털 GPIO 핀

그림 1: Arduino의 디지털 GPIO 핀은 펄스폭 변조(PWM) 기술을 사용하여 아날로그 출력으로 사용할 수 있습니다(Arduino.cc 제공). 

대부분의 Arduino 기판은 기판 모서리에 있는 핀(암) 커넥터를 통해 MCU의 아날로그 및 디지털 I/O 신호에 대한 쉬운 액세스를 제공합니다. 아날로그 채널 수 및 물리적 핀 할당은 사용되는 특정 MCU 및 기판의 폼 팩터에 따라 다양하지만, 많은 변형 제품은 Uno(그림 2), MegaNano와 같은 인기있는 '공식' 설계에 사용되는 핀아웃 관례를 따릅니다.

Arduino Uno(rev3) 기판

그림 2: Arduino Uno(rev3) 기판의 아날로그 입력(A0-A5) 및 아날로그 PWM 출력(디지털 3, 5, 6, 9, 10, 11)은 기판의 모서리에 있는 표준 헤더 핀을 통해 물리적으로 액세스됩니다(Arduino.cc 제공).

아날로그 I/O 기능을 갖춘 코드를 개발하는 것도 쉽습니다. 이는 Arduino IDE가 지원하는 프로그래밍 언어에 기존 아날로그 I/O 명령의 세트가 포함되어 있기 때문입니다. 이러한 지침을 사용하여 아날로그 입력을 읽고 아날로그(PWM) 출력을 생성하며 A/D 컨버터 레퍼런스 전압을 구성할 수 있습니다.

아날로그 입력 읽기

Arduino의 아날로그 입력을 현실 세계 응용 제품으로 끌어 올리는 것은 꽤 간단하지만 AVR의 A/D 컨버터에 적합한 전압 레퍼런스 소스를 선택하는 데 주의가 필요합니다. 이 제품은 최상의 입력 전압 범위를 결정하기 위해 DEFAULT, INTERNAL 또는 EXTERNAL 레퍼런스 전압을 사용할 수 있습니다. DEFAULT 모드에서 MCU는 기판 실장형 전원 공급 조정기의 출력을 레퍼런스로 사용합니다. 사용되는 특정 Arduino 기판에 따라 출력은 5V 또는 3.3V입니다.

INTERNAL 모드는 AVR의 온칩 정밀 레퍼런스 소스를 사용합니다. 소스의 전압은 특정 장치별로 다양하지만 일반적으로 1.1V(ATmega168 또는 ATmega328용) 또는 2.56V(ATmega8 및 Mega 계열 사용시)입니다. EXTERNAL 모드를 사용하면 5K 저항기를 통해 외부 레퍼런스 전압을 AREF 핀에 연결할 수 있습니다. AREF 핀은 외부 5K 저항기를 갖춘 전압 분배기처럼 작동하는 내부 32K 보호 저항기를 가집니다. 즉, 예를 들어 저항기를 통해 적용된 2.5V는 AREF 핀에서 2.5 * 32/(32 + 5) =  약 2.2V를 생성하게 됩니다.

Arduino 프로그래밍 언어를 사용하여 아날로그 전압을 읽으려면 analogReference(유형)를 사용하는 레퍼런스 소스를 선택한 다음 샘플링하고자 하는 헤더 핀 수를 표시하는 analogRead(핀) 읽기를 실행해야 합니다. 이 값들을 선택하면 레퍼런스 유형은 다르게 프로그래밍될 때까지 계속 남아 있습니다. AVR MCU는 초당 최대 15K개의 샘플 변환율을 지원하지만 Arduino 하드웨어/소프트웨어 환경은 보통 이를 초당 약 10K개 샘플로 제한합니다. 

PWM 아날로그 입력 생성

Arduino의 PWM 핀 중 하나에서 아날로그 전압을 생성하려면 pinMode(핀, 모드) 명령어를 사용하여 원하는 핀을 출력으로 구성한 다음 analogWrite(핀, 값)를 실행해야 합니다. 여기서 핀은 출력하고자 하는 헤더 핀을 나타내고 값은 생성할 레퍼런스 전압의 분수 값(1/255 증분 단위)을 나타냅니다. 값이 구성되면 핀은 다음 analogWrite() 호출 시까지(또는 동일한 핀에 대한 digitalRead() 또는 digitalWrite() 호출 시까지) 안정된 490Hz 방형파를 지정된 듀티 사이클로 생성합니다.

I/O 핀은 최대 40mA의 구동 전류를 지원할 수 있기 때문에 보통 크기의 LED 어레이를 직접 구동할 수 있습니다. 높은 구동 조명 또는 DC 모터의 경우 아날로그 출력을 전력 트랜지스터 또는 브리지 회로를 구성하는 데 사용할 수 있습니다. 더 까다로운 응용 제품의 경우 출력은 간단한 R/C 네트워크를 사용하여 필터링될 수 있고 증폭기 또는 전류 소스에 대한 제어 전압으로 사용할 수 있습니다. 

기타 아날로그 트릭

일부 AVR MCU(MEGA8MEGA168) 포함)는 다른 외부 입력, PWM 출력 중 하나로 생성된 전압 또는 레퍼런스 장치의 내부 레퍼런스 전압을 내부 전압과 비교할 수 있는 내부 비교기를 가집니다. 이 비교기의 출력은 폴링하거나 인터럽트를 트리거하는 데 사용할 수 있습니다. 더 많은 소프트웨어를 필요로 하지만, 인터럽트 주도의 배열은 프로세서가 반복적으로 아날로그 채널을 샘플링하지 않고도 저전압/과전압 조건을 감지할 수 있게 합니다. 이는 조정 가능 임계값 동작 감지기 및 충격 센서에서 생물의학 모니터링에 이르는 모든 것에 매우 유용합니다. 

내부 비교기가 없는 MCU를 가진 Arduino 기판의 경우 LM741, LM339N 또는 TLC3704와 같은 외부 장치를 일부 Arduino 기판이 제공하는 '클러지' 영역에 비교적 쉽게 추가할 수 있습니다. 플랫폼에 사용자 공급 회로망을 위한 장소가 부족한 경우 저렴한 차폐 카드 시제품 제작을 사용하여 추가할 수 있습니다(그림 3).

차폐 카드 시제품 제작

그림 3: 차폐 카드 시제품 제작을 통해 거의 모든 표준 Arduino 기판에 사용자의 아날로그(또는 디지털) I/O를 쉽게 추가할 수 있습니다(DigiKey 제공).

요약

Arduino은 가격이 저렴하고 다목적으로 사용할 수 있어 상업용 하드웨어 개발자들이 자주 찾습니다. Arduino 하드웨어 플랫폼은 Atmel의 ATmega 8비트 MCU 제품군에 내장된 아날로그 기능을 최대한 활용하도록 제작되었습니다. 이러한 MCU의 모든 변형 제품은 온칩 다중 채널 아날로그 디지털 컨버터(ADC)를 갖추었습니다. 이 기사는 Arduino의 아날로그 기능에 대한 기초를 형성하는 하드웨어 및 소프트웨어 리소스를 소개하고 차후 설계에 이러한 기능을 사용할 엔지니어들에게 시작점을 제공하기 위해 작성되었습니다. 그러한 측면에서 아날로그 입력을 읽고 PWM 아날로그 출력을 생성하며 외부 아날로그 I/O을 추가하는 것에 대해 살펴보았습니다. Arduino 관련 제품은 DigiKey 웹 사이트의 페이지에서 제공되는 링크를 통해 자세히 알아볼 수 있습니다. 
 

면책 조항: 이 웹 사이트에서 여러 작성자 및/또는 포럼 참가자가 명시한 의견, 생각 및 견해는 DigiKey의 의견, 생각 및 견해 또는 DigiKey의 공식 정책과 관련이 없습니다.

작성자 정보

Lee H. Goldberg

게시자 정보

Electronic Products

Electronic Products 잡지와 ElectronicProducts.com은 전자 장비와 시스템 설계를 담당하는 엔지니어와 엔지니어링 관리자를 대상으로 합니다.