Raspberry Pi 는 전자 엔지니어 및 애호가를 위해 설계된 ARM 아키텍처 프로세서 기반 보드입니다. PI는 현재 가장 신뢰할 수있는 프로젝트 개발 플랫폼 중 하나입니다. 더 높은 프로세서 속도와 1GB RAM을 갖춘 PI는 이미지 처리 및 사물 인터넷과 같은 많은 주요 프로젝트에 사용할 수 있습니다.
중요한 프로젝트를 수행하려면 PI의 기본 기능을 이해해야합니다. 이 튜토리얼 에서는 Raspberry Pi의 모든 기본 기능을 다룰 것 입니다. 각 튜토리얼에서 PI의 기능 중 하나에 대해 설명합니다. 이 Raspberry Pi 튜토리얼 시리즈가 끝나면 혼자서 유명 프로젝트를 수행 할 수 있습니다. 아래 자습서를 살펴보십시오.
- Raspberry Pi 시작하기
- Raspberry Pi 구성
- LED 깜박임
- Raspberry Pi 버튼 인터페이스
- Raspberry Pi PWM 생성
- Raspberry Pi를 사용하여 DC 모터 제어
- Raspberry Pi를 사용한 스테퍼 모터 제어
- Raspberry Pi와 시프트 레지스터 인터페이스
- Raspberry Pi ADC 튜토리얼
이 튜토리얼에서는 Raspberry Pi로 서보 모터를 제어 합니다. 서보 모터를 제어하는 개념이 유래되었으므로 서보로 이동하기 전에 PWM에 대해 이야기 해 보겠습니다.
PWM (펄스 폭 변조):
우리는 이전에 PWM에 대해 ATmega32를 사용한 펄스 폭 변조, Arduino Uno를 사용한 PWM, 555 타이머 IC를 사용한 PWM 및 Arduino Due를 사용한 PWM에 대해 여러 번 이야기했습니다. PWM은 'Pulse Width Modulation'을 의미합니다. PWM은 안정적인 전원 공급 장치에서 가변 전압을 얻는 데 사용되는 방법입니다. PWM을 더 잘 이해하려면 아래 회로를 고려하십시오.
위 그림에서 일정 시간 동안 스위치가 계속 닫히면이 시간 동안 LED가 계속해서 'ON'됩니다. 스위치가 0.5 초 동안 닫혔다가 다음 0.5 초 동안 열리면 LED가 전반 초 동안 만 켜집니다. 이제 총 시간 동안 LED가 켜져있는 비율을 Duty Cycle 이라고 하며 다음과 같이 계산할 수 있습니다.
듀티 사이클 = Turn ON 시간 / (Turn ON 시간 + Turn OFF 시간)
듀티 사이클 = (0.5 / (0.5 + 0.5)) = 50 %
따라서 평균 출력 전압은 배터리 전압의 50 %가됩니다.
ON 및 OFF 속도를 한 수준까지 높이면 LED가 켜지고 꺼지는 대신 어두워지는 것을 볼 수 있습니다. 이는 우리 눈이 25Hz 이상의 주파수를 명확하게 포착 할 수 없기 때문입니다. 100ms주기, LED가 30msec 동안 꺼지고 70msec 동안 켜진다 고 가정합니다. 출력에서 70 %의 안정적인 전압을 가지므로 LED는 70 %의 강도로 계속해서 빛납니다.
Duty Ratio는 0에서 100까지입니다. '0'은 완전히 꺼짐을 의미하고 '100'은 완전히 켜짐을 의미합니다. 이 듀티 비는 서보 모터에 매우 중요합니다. 이 Duty Ratio에 의해 서보 모터의 위치가 결정됩니다. LED 및 Raspberry Pi를 사용한 PWM 데모를 확인하십시오.
서보 모터 및 PWM:
서보 모터는 DC 모터, 위치 제어 시스템 및 기어의 조합입니다. 서보는 현대 세계에서 많은 응용 분야를 가지고 있으며 다양한 모양과 크기로 제공됩니다. 우리가 사용하게 될 SG90 서보 모터를 이 튜토리얼에서, 그것은 인기와 저렴한 일 중 하나입니다. SG90은 180도 서보입니다. 따라서이 서보를 사용하여 축을 0-180도에서 배치 할 수 있습니다.
서보 모터는 주로 세 개의 전선이 있는데, 하나는 양극 전압 용이고 다른 하나는 접지 용이며 마지막 하나는 위치 설정 용입니다. 레드 와이어는 전원에 연결되어, 갈색 와이어는 접지에 접속되어 황색 선 (백색)의 신호에 접속된다.
서보에는 Signal 핀에서 PWM 신호를받는 제어 시스템이 있습니다. 신호를 디코딩하여 듀티 비를 얻습니다. 그 후 비율을 미리 정의 된 위치 값과 비교합니다. 값에 차이가 있으면 그에 따라 서보의 위치를 조정합니다. 따라서 서보 모터의 축 위치는 Signal 핀에서 PWM 신호의 듀티 비를 기반으로합니다.
PWM (Pulse Width Modulated) 신호의 주파수는 서보 모터 유형에 따라 달라질 수 있습니다. SG90의 경우 PWM 신호의 주파수는 50Hz 입니다. 서보의 작동 빈도를 알아 보려면 해당 특정 모델의 데이터 시트를 확인하십시오. 따라서 주파수가 선택되면 여기서 다른 중요한 것은 PWM 신호의 DUTY RATIO입니다.
아래 표는 특정 듀티 비율에 대한 서보 위치를 보여줍니다. 그에 따라 값을 선택하여 그 사이의 각도를 얻을 수 있습니다. 따라서 45º 서보의 경우 Duty Ratio는 '5'또는 5 % 여야합니다.
위치 |
의무 비율 |
0º |
2.5 |
90º |
7.5 |
180º |
12.5 |
서보 모터를 Raspberry Pi에 연결 하기 전에이 서보 모터 테스터 회로의 도움으로 서보를 테스트 할 수 있습니다. 아래의 서보 프로젝트도 확인하십시오.
- Arduino를 사용한 서보 모터 제어
- Arduino Due를 사용한 서보 모터 제어
- 8051 마이크로 컨트롤러와 인터페이싱하는 서보 모터
- MATLAB을 사용한 서보 모터 제어
- Flex 센서에 의한 서보 모터 제어
- 무게가있는 서보 위치 제어 (힘 센서)
필요한 구성 요소:
여기 에서는 Raspbian Jessie OS와 함께 Raspberry Pi 2 Model B를 사용 하고 있습니다. 모든 기본 하드웨어 및 소프트웨어 요구 사항은 이전에 논의되었으며 필요한 것 외에 Raspberry Pi 소개에서 찾아 볼 수 있습니다.
- 연결 핀
- 1000uF 커패시터
- SG90 서보 모터
- 브레드 보드
회로도:
A1000µF는 + 5V 전원 레일을 통해 연결되어야합니다. 그렇지 않으면 PI가 서보를 제어하는 동안 임의로 종료 될 수 있습니다.
작업 및 프로그래밍 설명:
회로도에 따라 모든 것이 연결되면 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)
PIN39 또는 GPIO19를 출력 핀으로 설정하고 있습니다. 이 핀에서 PWM 출력을 얻습니다.
IO.setup (19, IO.OUT)
출력 핀을 설정 한 후 핀을 PWM 출력 핀으로 설정해야합니다.
p = IO.PWM (출력 채널, PWM 신호의 주파수)
위의 명령은 채널 설정 및 채널 주파수 설정을위한 것입니다. 여기서 'p'는 무엇이든 될 수있는 변수입니다. PWM "출력 채널로 GPIO19를 사용하고 있습니다. “PWM 신호의 주파수”는 SG90 작동 주파수가 50Hz이므로 50을 선택합니다.
아래 명령은 PWM 신호 생성을 시작하는 데 사용됩니다. ' DUTYCYCLE '은 앞에서 설명한대로 'Turn On'비율을 설정하기위한 것입니다.
p.start (듀티 사이클)
아래 명령은 forever 루프로 사용되며이 명령을 사용하면이 루프 내부의 명령문이 계속 실행됩니다.
동안 1:
여기에서 Raspberry Pi를 사용하여 서보 를 제어 하는 프로그램 은 GPIO19에서 PWM 신호를 제공합니다. PWM 신호의 Duty Ratio는 3 초 동안 세 값 사이에서 변경됩니다. 따라서 1 초마다 Servo는 Duty Ratio에 의해 결정된 위치로 회전합니다. 서보는 3 초 동안 0º, 90º 및 180º로 계속 회전합니다.