티스토리 뷰
안녕하세요 09Labs입니다.
최근 마이크로프로세서 과제로 Han-Carlson 16 bit Adder를 설계하라고 해서 굉장히 머리가 아프네요.
오늘은 아두이노 기초 2강 아두이노의 구조와 아두이노의 종류에 대해 알려드리겠습니다..
<그림 2-1 : 아두이노 GPIO 다이어그램>
위의 사진은 아두이노 PINOUT 다이어그램입니다. Atmega328 칩과 어떻게 연결되어있고 각 핀은 어떤 역할을 하는 지
아주 상세하게 나와있습니다. 먼저 아두이노 우측 핀부터 살펴볼까요?
우측 핀은 디지털 핀이라고 부르는 핀이 총 14개가 있습니다.
좌측 핀은 아날로그 핀 6개와 전원부+기타 핀이 8개 있습니다.
아날로그와 디지털을 왜 구분해놨을까요?
먼저 근본적인 이야기부터 시작하자면 아날로그는 우리가 현재 몸소 체험하고 있는 모든 현상을 말합니다.
디지털은 그 현상 중 아주 극소수 일부분을 떼서 본 한 순간이라고 할 수 있죠.
즉, 사진과 비디오에 비유를 한다면 디지털은 사진과 같고, 아날로그는 비디오 같다고 볼 수 있는 것입니다.
디지털과 아날로그를 구분해놓은 이유중 하나는 굳이 비싼 장비를 사용해가면서 아날로그 신호를 해석할 필요가 없다는 것입니다.
아날로그 신호를 해석하는 장비는 매우 비쌉니다. 반면에 디지털 신호를 해석하는 장비는 굉장히 저렴합니다.
왜그럴까요?
<그림 2-2 : 아날로그 / 디지털 신호>
위의 사진은 아날로그 / 디지털 신호의 차이를 나타낸 것입니다.
아날로그 신호는 원래 신호에 가까운 반면에, 디지털 신호는 사각형을 띄고 있습니다.
상당히 달라보이지만 사실 세가지 신호는 같은 신호입니다.
디지털 신호는 아까 말씀드렸다 싶이 한 순간만을 본다고 했죠? 즉 원래 신호의 한 부분 부분을 지정하여
수치를 근사화 시킨 것입니다. 만약 원래 신호가 0 ~ 5초 사이의 신호라고 봤을 때, 디지털 신호는
0.1초 단위로 쪼개서 0.1초 ~ 0.2초 사이 신호는 10dB이다! 라고 근사화 시킨 것이지요.
이렇게 잘게 쪼개는 능력을 분해능이라고 하는데, 분해능이 높은 Analog to Digital Converter일 수록 비쌉니다.
보통 분해능은 10bit, 12bit짜리를 사용합니다. 10bit짜리라고 해서 굉장히 낮은 수치라고 보일 수 있지만
10bit짜리 ADC는 0부터 1023까지 즉, 1024단계로 신호를 분해할 수 있습니다.
이것도 굉장히 미세한 단위까지 분해할 수 있을 것 같지만, LG G6에 탑재된 32bit Quad DAC는 엄청난 성능을 자랑합니다.
4,294,967,296 단계로 분해할 수 있으니... 당연히 고음질이 나올 수 밖에 없겠죠?
이제 아두이노 기본 스펙에 대해 알아보도록 하겠습니다.
www.arduino.cc 에 접속하면 현재까지 출시한 아두이노의 종류에 대해 볼 수 있으며, 구조가 어떻게 생겼는지 알 수 있으며
가격과 상세 스펙에 대해 알 수 있습니다. Arduino와 Genuino는 같은 모델이니 혼동하지 않길 바랍니다.
Genuino는 미국과 미국 외 지역에 판매하는 제품을 구분하기 위해 제뉴이노라는 브랜드를 설립했다고 합니다.
성능차이는 없으니 걱정안하셔도 됩니다.
Microcontroller | ATmega328P |
Operating Voltage | 5V |
Input Voltage (recommended) | 7-12V |
Input Voltage (limit) | 6-20V |
Digital I/O Pins | 14 (of which 6 provide PWM output) |
PWM Digital I/O Pins | 6 |
Analog Input Pins | 6 |
DC Current per I/O Pin | 20 mA |
DC Current for 3.3V Pin | 50 mA |
Flash Memory | 32 KB (ATmega328P) of which 0.5 KB used by bootloader |
SRAM | 2 KB (ATmega328P) |
EEPROM | 1 KB (ATmega328P) |
Clock Speed | 16 MHz |
LED_BUILTIN | 13 |
Length | 68.6 mm |
Width | 53.4 mm |
Weight | 25 g |
자 우선 기술적인 스펙입니다. 아두이노의 메인 컨트롤러인 ATmega328P는 5V에서 동작합니다.
근데 왜 입력전압을 7 ~ 12V로 권장하는 것일까요?
그 이유는 정전압 레귤레이터에서 이유를 찾을 수 있습니다.
<그림 2-3 : 아두이노 우노 회로도>
자 위의 회로도는 아두이노 우노의 회로도입니다. 잘 안보이겠지만 우측 상단에 보면 PWR-IN이라고 되어있는 부분이 있습니다.
즉, DC 잭에 전원을 인가하거나 Vin 핀에 전원을 인가하면 NCP1117ST50T3G 이라는 칩의 IN으로 들어가게 되고
OUT 핀에서 5V가 고정적으로 출력됩니다. 자 그럼 NCP1117ST50T3G라는 칩이 뭔지 살펴볼까요?
www.alldatasheet.co.kr에 들어가서 궁금한 칩 번호를 검색하면 데이터시트를 볼 수 있습니다.
<그림 2-4 : NCP1117ST50T3G 데이터시트 1>
네 영어로 되어있습니다. 괴랄맞게도...
차근차근 해석해봅시다. 우선 1A까지 흘릴 수 있는 정전압/가변 레귤레이터이며, 아두이노에 사용되는 모델은 5V로 고정출력을 내보냅니다.
최대 1.2V 전압강하가 일어난다고 되어있습니다.
<그림 2-4 : NCP1117ST50T3G 데이터시트 2>
두 번째 칸에서 5.0V부분을 찾아보니 최소 6.5V, 권장 7V를 권장하고 있네요.
여기까지 봤는데도 이해가 안간다면 다시 설명해드리겠습니다.
정전압 레귤레이터는 입력전압을 일정한 출력 전압으로 변환하는 칩입니다. 아두이노에서 메인 컨트롤러인
Atmega328P를 동작시키기 위해선 5V라는 전압이 필요하고요. 즉, 5V가 고정적으로 공급되기 위해서는 어쩔 수 없이
NCP1117ST50T3G라는 칩을 거치게 되므로 입력전압이 최소 6.5V, 권장 7V이상 입력되어야 정상적으로 동작한다는 뜻입니다.
실제로 테스트해본 결과 NCP1117ST50T3G에 5V를 입력에 넣게되면 출력전압은 최대 3.3V까지밖에 나오지 못합니다.
즉 권장전압 이하로 인가하게 되면 정상적으로 동작하지 않는 것입니다.
USB로 공급되는 전압은 5V이기 때문에 상관없지만 만약 Vin 핀이나 DC Jack에 플러그를 끼워서 사용한다면
최서 6.5V이상 입력해야하는 점 잊지마시길 바랍니다.
자 다음은 디지털핀인데요, PWM이라고 써있는 부분이 있습니다. 6개의 핀에 PWM기능을 사용할 수 있다고하네요.
PWM은 나중에 예제를 다룰 때 설명드리겠지만 Pulse Width Modulation의 약자로 펄스폭 변조를 뜻합니다.
일정 주기의 신호를 폭을 변조시켜서 원하는 신호로 변경하는 것입니다.
PWM의 개념은 나중에 잡도록 하겠습니다.
다음은 아날로그핀입니다. 아날로그핀은 총 6개입니다.
그렇담 여기서 퀴즈하나 내보겠습니다.
아날로그핀도 디지털로 사용할 수 있을까요?
....
정답은 O입니다. 아날로그 핀은 ADC라는 기능이 내장되어 아날로그 신호를 디지털로 변형할 수 있는 것입니다.
즉, ADC기능이 빠지게 되면 디지털핀과 다름없습니다. 실제로 아날로그핀에 디지털 출력을 내보내면 정상동작합니다.
예전에는 ADC 칩을 따로 사용하여 Parallel to Serial Converter나 Encorder를 사용해야했으나, 요즘은 기술이 좋아져
ADC를 따로 사지 않아도 됩니다. 다만 분해능이 높은 ADC를 원할 경우 별도로 구매해야겠죠?
나머지는 아직 중요하게 여기지 않아도 되는 부분이므로 넘어가겠습니다.
이제 마지막으로 아두이노 종류에 대해 설명드리겠습니다.
아두이노는 종류가 굉장히 많습니다. 우선 대표적인 몇 개만 보여드리도록 하겠습니다.
<그림 2-5 : 아두이노 우노>
아두이노 우노는 가장 많이 사용하며, 처음 사용하는 사람들이 가장 많이 접하는 모델이라고 볼 수 있습니다.
저도 맨 처음 아두이노를 시작할 때 우노를 시작으로 했던 기억이 나네요.
<그림 2-6 : 아두이노 레오나르도>
아두이노 레오나르도와 우노의 차이점이라고하면 USB TO SERIAL 컨버터가 없다는 점입니다.
아두이노 우노는 스케치에서 프로그래밍한 정보를 업로드하려면 USB TO SERIAL 컨버터를 거친 뒤 Atmega328 칩에 데이터가 들어갑니다.
때문에 대부분의 아두이노 보드에는 USB TO SERIAL 컨버터가 사용됩니다. 하지만 레오나르도는 Atmega328을 사용하지 않고
Atmega32u4를 사용합니다. Atmega32u4는 USB 컨트롤러가 내장되어있어 별도의 USB TO SERIAL 컨버터를 필요로 하지 않습니다.
<그림 2-7 : 아두이노 마이크로>
아두이노 마이크로 또한 레오나르도와 동일하게 Atmega32u4를 사용하는 아두이노입니다.
레오나르도와 가장 큰 차이점은 크기라고 볼 수 있습니다. 손바닥 크기인 아두이노 우노나 레오나르도는 소형화하기 어렵습니다.
때문에 Atmega328 칩만 따로 사서 소형화하는 경우가 있는데요, 마이크로는 이름답게 굉장히 소형입니다.
마이크로와 레오나르도의 특징이라고 하면 맥에서는 마이크로와 레오나르도를.키보드나 마우스로 인식합니다. 즉, 프로그래밍을 마우스나 키보드 명령을
수행할 수 있도록 넣어주면 키보드나 마우스로 사용할 수 있습니다. 때문에 레오나르도나 마이크로를 사용하여 기계식 키보드를 만드는 사람을 봤었습니다.
<그림 2-8 : 아두이노 나노>
아두이노 나노는 마이크로보다 더 작은 모델입니다. 기능은 우노와 동일합니다.
<그림 2-9 : 아두이노 미니(프로미니)>
프로미니는 현재 출시된 아두이노중에서 가장 작은 사이즈라고 볼 수 있습니다. (웨어러블 제외)
다만 나노나 마이크로와 달리 USB TO SERIAL 컨버터가 없기 때문에 프로그램을 업로드하려면 USB TO SERIAL 컨버터가 필요합니다.
<그림 2-10 : 아두이노 MEGA 2560>
아두이노 MEGA 2560은 Atmega2560을 사용한 모델로 GPIO가 아두이노 시리즈 중 가장 많은 모델입니다.
간혹 아두이노 우노보다 성능이 좋다고 생각하시는 분들이 있겠지만, 연산처리 성능은 동일합니다.
Atmega2560과 Atmega328은 둘 다 16Mhz로 동작하기 때문에 성능은 동일하지만 추가적인 기능이 더 많을 뿐입니다.
아두이노 우노는 UART 하드웨어가 1개, ADC가 6개, PWM 6개를 사용할 수 있지만
아두이노 메가는 UART 하드웨어가 4개, ADC는 16개, PWM은 12개 사용할 수 있습니다. 즉, 아두이노 우노보다
확장성이 2배 이상 좋다는 점입니다. 물론 확장성이 좋은 만큼 보드 크기도 커졌습니다.
Arduino MEGA ADK와 Arduino MEGA의 차이점은 USB Host Controller가 추가된 모델로
안드로이드 앱과 연동하여 아두이노를 제어할 수도 있으며, USB Host를 필요로 하는 기기들을 사용할 수 있습니다.
<그림 2-11 : 아두이노 제로>
아두이노 제로는 아두이노 시리즈에서 성능이 향상된 모델로, 32bit ARM Cortex M0+코어를 사용한 모델로
기존의 8bit MCU에 비해 성능이 월등히 향상된 것을 알 수 있습니다. 또한 Atmel의 내장 디비거를 지원하며
메인 프로세서인 SAMD21 칩은 USB 호스트와 디바이스모드를 모두 지원한다는 장점이 있습니다.
그래서 DC Jack 단자 바로 왼쪽의 Micro USB 단자는 USB 호스트와 디바이스모드를 사용하며, OTG 케이블을
활용하여 다른 디바이스를 연결할 수 있습니다.
<그림 2-12 : 아두이노 듀에>
Arduino DUE는 듀이 듀에 듀 다양하게 발음됩니다. 독일어로 숫자 2를 나타내는 단어이며
아두이노 듀에는 우노와 메가에 비해 굉장히 성능이 높습니다. 먼저 동작 클럭이 84MHz이며
인터럽트 핀이 총 4개, I2C 통신 핀이 2개, 심지어 DAC를 내장하고 있어 아날로그 출력도 가능합니다.
다만 동작전압이 3.3V이므로 GPIO 출력 전압도 3.3V입니다. 만약에 디지털 입력 또는 아날로그 입력을
사용할 때 동작전압이 5V인 칩을 사용하거나 핀에 5V를 인가하게 되면 망가지게 됩니다.
<그림 2-13 : 아두이노 윤>
아두이노 윤은 다른 아두이노와 달리 리눅스 환경과 아두이노 환경을 동시에 사용할 수 있는 아두이노입니다.
리눅스 환경과 아두이노 환경은 브릿지를 통하여 서로 통신할 수도 있으며, 이더넷 포트 또는 와이파이 모듈이
내장되어있어 무선인터넷을 연결하여 사용할 수도 있습니다. 다만 아두이노 윤은 10만원에 가까운 가격이기 때문에
리눅스와 아두이노를 동시에 사용한다는 장점을 제외하고는 상당히 비싼 가격이라고 생각됩니다.
오늘 강좌는 상당히 긴 내용이었는데 어렵진 않았나 싶네요 ㅎㅎ
다음 강좌는 아두이노 시작하기부터 Blink 예제까지 다뤄보겠습니다.
'Arduino > Arduino 강좌' 카테고리의 다른 글
[아두이노] 3. Blink 예제 (0) | 2020.01.12 |
---|---|
[아두이노] 1. 아두이노란? (0) | 2017.04.29 |
- Total
- Today
- Yesterday
- 퓨전360
- 리눅스
- 3D Printer
- Hypercube
- 자작
- 오픈소스
- 설계
- 라즈베리파이
- SQLITE3
- 3D 프린터
- ESP-IDF
- 코딩테스트
- 3d프린터
- IOT
- ESP
- 3D
- DIY
- 하드웨어
- Fusion 360
- C언어
- 프로젝트
- fusion360
- 아두이노
- C++
- esp32
- Arduino
- 해커랭크
- 프린터
- 오픈소스 하드웨어
- 쏘카
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |