Raspberry Pi 는 전자 엔지니어 및 애호가를 위해 설계된 ARM 아키텍처 프로세서 기반 보드입니다. PI는 현재 가장 신뢰할 수있는 프로젝트 개발 플랫폼 중 하나입니다. 더 높은 프로세서 속도와 1GB RAM을 갖춘 PI는 이미지 처리 및 사물 인터넷과 같은 많은 주요 프로젝트에 사용할 수 있습니다.
중요한 프로젝트를 수행하려면 PI의 기본 기능을 이해해야합니다. 이 튜토리얼 에서는 Raspberry Pi의 모든 기본 기능을 다룰 것 입니다. 각 튜토리얼에서 PI의 기능 중 하나에 대해 설명합니다. 튜토리얼 시리즈가 끝날 무렵에는 혼자서 유명한 프로젝트를 수행 할 수 있습니다. Raspberry Pi 및 Raspberry Pi 구성 시작하기를 확인하십시오.
이전 튜토리얼에서 LED Blinky, 버튼 인터페이스 및 PWM 생성에 대해 논의했습니다. 이 튜토리얼에서는 Raspberry Pi 및 PWM 기술을 사용하여 DC 모터의 속도를 제어합니다. PWM (Pulse Width Modulation)은 일정한 전원에서 가변 전압을 얻는 데 사용되는 방법입니다. 이전 튜토리얼에서 PWM에 대해 논의했습니다.
Raspberry Pi 2 에는 40 개의 GPIO 출력 핀이 있습니다. 그러나 40 개 중 26 개의 GPIO 핀 (GPIO2 ~ GPIO27) 만 프로그래밍 할 수 있습니다. 이러한 핀 중 일부는 몇 가지 특수 기능을 수행합니다. 특별한 GPIO를 제쳐두고 17 개의 GPIO가 남아 있습니다. GPIO 핀에 대해 자세히 알아 보려면 다음을 참조하십시오. Raspberry Pi로 LED 깜박임
이러한 17 개의 GPIO 핀은 각각 최대 15mA를 제공 할 수 있습니다. 그리고 모든 GPIO 핀의 전류 합은 50mA를 초과 할 수 없습니다. 따라서 각 GPIO 핀에서 평균적으로 최대 3mA를 끌어낼 수 있습니다. 따라서 당신이 무엇을하고 있는지 알지 못한다면 이러한 것들을 조작해서는 안됩니다.
거기 + 5V (핀 2 및 4) + 3.3V (핀 1 및 17) 출력 핀 다른 센서 모듈을 접속하기위한 보드는. 이 전원 레일은 프로세서 전원에 병렬로 연결됩니다. 따라서이 전원 레일에서 높은 전류를 끌어 오는 것은 프로세서에 영향을줍니다. PI 보드에는 고부하를 적용하면 트립되는 퓨즈가 있습니다. + 3.3V 레일 에서 안전하게 100mA를 끌어 올 수 있습니다. 우리는 여기서 이것에 대해 이야기하고 있습니다. DC 모터를 + 3.3V에 연결합니다. 전력 제한을 염두에두고 여기에는 저전력 모터 만 연결할 수 있습니다. 고출력 모터를 구동하려면 별도의 전원에서 전원을 공급하는 것이 좋습니다.
필요한 구성 요소:
여기 에서는 Raspbian Jessie OS와 함께 Raspberry Pi 2 Model B를 사용 하고 있습니다. 모든 기본 하드웨어 및 소프트웨어 요구 사항은 이전에 논의되었으며 필요한 것 외에 Raspberry Pi 소개에서 찾아 볼 수 있습니다.
- 연결 핀
- 220Ω 또는 1KΩ 저항기 (3)
- 소형 DC 모터
- 버튼 (2)
- 2N2222 트랜지스터
- 1N4007 다이오드
- 커패시터-1000uF
- 브레드 보드
회로 설명:
앞서 말했듯이 GPIO 핀에서 15mA 이상을 끌어낼 수 없으며 DC 모터는 15mA 이상을 끌어옵니다. 따라서 Raspberry Pi에서 생성 한 PWM은 DC 모터에 직접 공급할 수 없습니다. 따라서 속도 제어를 위해 모터를 PI에 직접 연결하면 보드가 영구적으로 손상 될 수 있습니다.
그래서 우리는 스위칭 장치로 NPN 트랜지스터 (2N2222) 를 사용할 것 입니다. 이 트랜지스터는 PI에서 PWM 신호를 받아 고전력 DC 모터를 구동합니다. 여기서 트랜지스터를 잘못 연결하면 보드에 과부하가 걸릴 수 있다는 점에주의해야합니다.
모터는 인덕션이므로 모터를 전환하는 동안 유도 스파이크를 경험합니다. 이 스파이 킹은 트랜지스터를 심하게 가열하므로 다이오드 (1N4007) 를 사용하여 유도 성 스파이 킹 으로부터 트랜지스터 를 보호 할 것 입니다.
위해서는 전압의 변동을 감소시키기 우리는 연결한다 1000uF의 커패시터 서킷 다이어그램에 도시 된 바와 같이 전원에 걸쳐있다.
작동 설명:
회로도에 따라 모든 것이 연결되면 PI를 켜서 프로그램을 PYHTON으로 작성할 수 있습니다.
우리는 PYHTON 프로그램 에서 사용할 몇 가지 명령에 대해 이야기 할 것 입니다.
라이브러리에서 GPIO 파일을 가져올 것입니다. 아래 기능을 사용하면 PI의 GPIO 핀을 프로그래밍 할 수 있습니다. 또한 "GPIO"의 이름을 "IO"로 변경하고 있으므로 프로그램에서 GPIO 핀을 참조 할 때마다 'IO'라는 단어를 사용합니다.
RPi.GPIO를 IO로 가져 오기
때때로 우리가 사용하려는 GPIO 핀이 다른 기능을 수행 할 때도 있습니다. 이 경우 프로그램을 실행하는 동안 경고를 받게됩니다. 아래 명령은 PI가 경고를 무시하고 프로그램을 진행하도록 지시합니다.
IO.setwarnings (False)
PI의 GPIO 핀을 보드의 핀 번호 또는 기능 번호로 참조 할 수 있습니다. 보드의 'PIN 35'와 같이 'GPIO19'입니다. 그래서 우리는 여기서 핀을 '35'또는 '19'로 나타낼 것이라고 말합니다.
IO.setmode (IO.BCM)
GPIO19 (또는 PIN35)를 출력 핀으로 설정하고 있습니다. 이 핀에서 PWM 출력을 얻습니다.
IO.setup (19, IO.IN)
핀을 출력으로 설정 한 후 핀을 PWM 출력 핀으로 설정해야합니다.
p = IO.PWM (출력 채널, PWM 신호의 주파수)
위의 명령은 채널을 설정하고 PWM 신호의 주파수를 설정하기위한 것입니다. 여기서 'p'는 무엇이든 될 수있는 변수입니다. PWM 출력 채널 로 GPIO19를 사용하고 있습니다. ' PWM 신호 의 주파수 '는 LED가 깜박이는 것을보고 싶지 않기 때문에 100을 선택했습니다.
아래 명령은 PWM 신호 생성을 시작하는데 사용되며, ' DUTYCYCLE '은 Turn On 비율 설정, 0은 LED가 0 % 시간 동안 켜짐을 의미, 30은 LED가 30 % 동안 켜짐을 의미, 100은 완전히 켜짐을 의미합니다..
p.start (듀티 사이클)
중괄호 안의 Condition이 참이면 루프 내부의 문이 한 번 실행됩니다. 따라서 GPIO 핀 26이 낮아지면 IF 루프 내부의 명령문이 한 번 실행됩니다. GPIO 핀 26이 로우가되지 않으면 IF 루프 내부의 명령문이 실행되지 않습니다.
if (IO.input (26) == False):
동안 1: 무한 루프에 사용됩니다. 이 명령을 사용하면이 루프 내의 명령문이 계속 실행됩니다.
우리는 이것으로 속도 제어를 달성하는 데 필요한 모든 명령을 가지고 있습니다.
프로그램을 작성하고 실행 한 후 남은 것은 컨트롤을 조작하는 것뿐입니다. PI에 연결된 두 개의 버튼이 있습니다. 하나 는 PWM 신호 의 듀티 사이클 을 증가시키기 위한 것이고 다른 하나 는 PWM 신호 의 듀티 사이클 을 감소시키기 위한 것 입니다. 하나의 버튼을 누르면 DC 모터의 속도가 증가하고 다른 버튼을 누르면 DC 모터의 속도가 감소합니다. 이를 통해 Raspberry Pi 의 DC 모터 속도 제어를 달성했습니다 .
또한 다음을 확인하십시오.
- DC 모터 속도 제어
- Arduino를 사용한 DC 모터 제어