Raspberry Pi 는 전자 엔지니어 및 애호가를 위해 설계된 ARM 아키텍처 프로세서 기반 보드입니다. PI는 현재 가장 신뢰할 수있는 프로젝트 개발 플랫폼 중 하나입니다. 더 높은 프로세서 속도와 1GB RAM을 갖춘 PI는 이미지 처리 및 사물 인터넷과 같은 많은 주요 프로젝트에 사용할 수 있습니다.
중요한 프로젝트를 수행하려면 PI의 기본 기능을 이해해야합니다. 이 튜토리얼 에서는 Raspberry Pi의 모든 기본 기능을 다룰 것 입니다. 각 튜토리얼에서 PI의 기능 중 하나에 대해 설명합니다. 이 라즈베리 파이 튜토리얼 시리즈 가 끝날 무렵, 당신은 혼자서 유명한 프로젝트를 할 수 있습니다. 아래 자습서를 살펴보십시오.
- Raspberry Pi 시작하기
- Raspberry Pi 구성
- LED 깜박임
- Raspberry Pi 버튼 인터페이스
- Raspberry Pi PWM 생성
- Raspberry Pi를 사용하여 DC 모터 제어
- Raspberry Pi를 사용한 스테퍼 모터 제어
- Raspberry Pi와 시프트 레지스터 인터페이스
이 튜토리얼에서는 ADC (Analog to Digital Conversion) 칩을 Raspberry Pi에 인터페이스합니다. 우리는 아날로그의 모든 매개 변수를 알고 있으며 시간이 지남에 따라 지속적으로 변한다는 것을 의미합니다. 예를 들어 실내 온도를 예로 들면 실내 온도는 시간에 따라 지속적으로 변합니다. 이 온도는 십진수로 제공됩니다. 하지만 디지털 세계에서는 십진수가 없으므로 Analog 값을 Digital 값 으로 변환 해야 합니다. 이 변환 프로세스는 ADC 기술에 의해 수행됩니다. 여기에서 ADC에 대해 자세히 알아보십시오. ADC0804 소개
ADC0804 및 Raspberry Pi:
일반 컨트롤러에는 ADC 채널이 있지만 PI의 경우 내부적으로 제공되는 ADC 채널이 없습니다. 따라서 아날로그 센서를 인터페이스하려면 ADC 변환 장치가 필요합니다. 그래서 그 목적을 위해 우리는 Raspberry Pi와 ADC0804 인터페이스를 할 것 입니다.
ADC0804는 아날로그 신호를 8 비트 디지털 데이터로 변환하도록 설계된 칩입니다. 이 칩은 인기있는 ADC 시리즈 중 하나입니다. 8 비트 변환 단위이므로 값 또는 0 ~ 255 값이 있습니다. 최대 5V의 측정 전압으로 19.5mV마다 변경됩니다. 아래는 ADC0804 의 핀아웃입니다.
여기서 또 다른 중요한 점은 ADC0804가 5V에서 작동 하므로 5V 논리 신호로 출력을 제공한다는 것입니다. 8 핀 출력 (8 비트를 나타냄)에서 모든 핀은 로직 '1'을 나타내는 + 5V 출력을 제공합니다. 따라서 문제는 PI 로직이 + 3.3v이므로 PI의 + 3.3V GPIO 핀에 + 5V 로직을 제공 할 수 없다는 것입니다. PI의 GPIO 핀에 + 5V를 주면 보드가 손상됩니다.
따라서 + 5V에서 로직 레벨을 강압하려면 전압 분배기 회로를 사용합니다. 우리는 전압 분배기 회로에 대해 이전에 더 자세한 설명을 위해 살펴 보았습니다. 우리가 할 일은 두 개의 저항을 사용하여 + 5V 로직을 2 * 2.5V 로직으로 나누는 것입니다. 그래서 나눗셈 후에 우리는 PI에 + 2.5v 로직을 줄 것입니다. 따라서 ADC0804에 의해 로직 '1'이 표시 될 때마다 PI GPIO 핀에서 + 5V 대신 + 2.5V가 표시됩니다.
여기에서 Raspberry Pi의 GPIO 핀에 대해 자세히 알아보고 이전 자습서를 살펴보십시오.
필요한 구성 요소:
여기 에서는 Raspbian Jessie OS와 함께 Raspberry Pi 2 Model B를 사용 하고 있습니다. 모든 기본 하드웨어 및 소프트웨어 요구 사항은 이전에 논의되었으며 필요한 것 외에 Raspberry Pi 소개에서 찾아 볼 수 있습니다.
- 연결 핀
- 220Ω 또는 1KΩ 저항기 (17 개)
- 10K 냄비
- 0.1µF 커패시터 (2 개)
- ADC0804 IC
- 브레드 보드
회로 설명:
+ 5v의 공급 전압에서 작동하며 0-5V 범위에서 가변 전압 범위를 측정 할 수 있습니다.
라즈베리 PI에 ADC0804를 인터페이스하기위한 연결을 상기 회로도에 나타낸다.
ADC에는 항상 많은 노이즈가 있으며이 노이즈는 성능에 큰 영향을 미칠 수 있으므로 노이즈 필터링에 0.1uF 커패시터를 사용 합니다. 이것이 없으면 출력에 많은 변동이있을 것입니다.
이 칩은 RC (Resistor-Capacitor) 발진기 클록에서 작동합니다. 회로도에서 볼 수 있듯이 C2와 R20은 Clock을 형성합니다. 여기서 기억해야 할 중요한 점은 커패시터 C2를 더 높은 ADC 변환 속도를 위해 더 낮은 값으로 변경할 수 있다는 것입니다. 그러나 속도가 빠를수록 정확도가 떨어집니다. 따라서 애플리케이션에 더 높은 정확도가 필요한 경우 더 높은 값의 커패시터를 선택하고 더 높은 속도의 경우 더 낮은 값의 커패시터를 선택하십시오.
프로그래밍 설명:
회로도에 따라 모든 것이 연결되면 PI를 켜서 프로그램을 PYHTON으로 작성할 수 있습니다.
PYHTON 프로그램에서 사용할 몇 가지 명령에 대해 이야기하겠습니다.
라이브러리에서 GPIO 파일을 가져올 것입니다. 아래 기능을 사용하면 PI의 GPIO 핀을 프로그래밍 할 수 있습니다. 또한 "GPIO"의 이름을 "IO"로 변경하고 있으므로 프로그램에서 GPIO 핀을 참조 할 때마다 'IO'라는 단어를 사용합니다.
RPi.GPIO를 IO로 가져 오기
때때로 우리가 사용하려는 GPIO 핀이 다른 기능을 수행 할 때도 있습니다. 이 경우 프로그램을 실행하는 동안 경고를 받게됩니다. 아래 명령은 PI가 경고를 무시하고 프로그램을 진행하도록 지시합니다.
IO.setwarnings (False)
PI의 GPIO 핀을 보드의 핀 번호 또는 기능 번호로 참조 할 수 있습니다. 보드의 'PIN 29'와 마찬가지로 'GPIO5'입니다. 그래서 우리는 여기서 핀을 '29'또는 '5'로 나타낼 것이라고 말합니다.
IO.setmode (IO.BCM)
8 개의 핀을 입력 핀으로 설정하고 있습니다. 이 핀으로 8 비트 ADC 데이터를 감지합니다.
IO.setup (4, IO.IN) IO.setup (17, IO.IN) IO.setup (27, IO.IN) IO.setup (22, IO.IN) IO.setup (5, IO.IN) IO.setup (6, IO.IN) IO.setup (13, IO.IN) IO.setup (19, IO.IN)
중괄호 안의 조건이 참이면 루프 내부의 문이 한 번 실행됩니다. 따라서 GPIO 핀 19가 하이가되면 IF 루프 내부의 명령문이 한 번 실행됩니다. GPIO 핀 19가 하이가되지 않으면 IF 루프 내부의 명령문이 실행되지 않습니다.
if (IO.input (19) == True):
아래 명령은 forever 루프로 사용되며이 명령을 사용하면이 루프 내부의 명령문이 계속 실행됩니다.
동안 1:
프로그램에 대한 자세한 설명은 아래 코드 섹션에 나와 있습니다.
일:
프로그램을 작성하고 실행하면 화면에 '0'이 표시됩니다. '0'은 입력에서 0 볼트를 의미합니다.
칩에 연결된 10K 포트를 조정하면 화면에서 값의 변화를 볼 수 있습니다. 화면의 값은 계속 스크롤되며 PI에서 읽은 디지털 값입니다.
포트가 중간 지점에 도달하면 ADC0804 입력에 + 2.5V가 있다고 가정합니다. 따라서 아래와 같이 화면에 128이 표시됩니다.
+ 5V 아날로그 값의 경우 255가됩니다.
따라서 포트를 변경하여 ADC0804 입력에서 전압을 0에서 + 5V로 변경합니다. 이 PI로 0-255의 값을 읽습니다. 값이 화면에 인쇄됩니다.
그래서 우리는 ADC0804를 Raspberry Pi에 인터페이스했습니다.